首页 » PHP教程 » centosphp源码技巧_WSL2子系统安装CentOS8及源码编译安装Nginx118PHP74MySql80

centosphp源码技巧_WSL2子系统安装CentOS8及源码编译安装Nginx118PHP74MySql80

访客 2024-11-02 0

扫一扫用手机浏览

文章目录 [+]

WSL2——Windows10 V2004版安装配置第二代Linux的Windows子系统

如文中所示,首先安装配置完成 WSL2,然后 Ubuntu20 等 Linux 发行版在 Windows 运用商店(store)中直接点击安装即可。
本人为了和线上做事器环境保持同等,想安装 CentOS8,但是 Windows 运用商店中却没有包含 CentOS。
那么在安装好 WSL 之后,如何不通过 store 而手动安装适配 WSL 的 Linux 发行版呢?

centosphp源码技巧_WSL2子系统安装CentOS8及源码编译安装Nginx118PHP74MySql80

1、安装 Chocolatey

centosphp源码技巧_WSL2子系统安装CentOS8及源码编译安装Nginx118PHP74MySql80
(图片来自网络侵删)

NuGet(读作New Get)是用于微软.NET开拓平台的软件包管理器,是一个Visual Studio的扩展。
Chocolatey 是基于 NuGet 的一个软件包管理器,就像 Linux 中的 yum 或 apt 一样,在 Windows10 中也可以用命令行安装程序了。

右键单击开始菜单,选择 Windows PowerShell(管理员),打开一个具有管理员权限的 PowerShell 窗口,输入命令并回车:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

完成后,输入命令:choco ,如果能精确显示版本号,解释安装成功。

官网文档:https://chocolatey.org/docs/installation

2、安装 LxRunOffline

LxRunOffline 是非常实用的 WSL 管理软件,可以备份、创建、规复、导出WSL子系统,也可以安装适配 WSL 的任何 Linux 发行版,可以将 WSL 子系统安装到任意目录中。

在 PowerShell 窗口中输入命令安装LxRunOffline,安装完成后重启 PowerShell。

choco install lxrunoffline -y

3、下载 CentOS 镜像

GitHub 上有开源的适用于 WSL 的 CentOS 系统安装镜像,打开项目页面,选择 CentOS8 分支,进入 docker 目录,下载文件 centos-8-x86_64.tar.xz ,如果下载后保存在 D 盘下。

https://github.com/CentOS/sig-cloud-instance-images/tree/CentOS-8-x86_64/dockergithub.com

4、安装 CentOS 镜像

安装WSL子系统的命令行格式为:

LxRunOffline install -n 自定义系统名称 -d 安装目录路径 -f 安装包路径.tar.xz

重新启动 PowerShell,输入命令安装 CentOS 镜像:

LxRunOffline install -n centos -d C:/centos -f D:\centos-8-x86_64.tar.xz

表示将 CentOS 系统安装到 C 盘的 centos 文件夹下,并且命名为 centos。
把稳:Windows 系统命令行中的文件路径和 Linux 系统不同,这里安装目录 C:/ 要用 Linux 办法的反斜线表示,是为了 WSL 利用;而安装包路径 D:\ 是为了 LxRunOffline 利用,是 Windows 下的路径。

查看所有已安装镜像,能够显示已安装的 centos ,表示安装成功。

LxRunOffline.exe list

如果安装失落败也会涌现 centos 目录,安装失落败重新安装时须要卸载镜像,其余安装目录在 C 盘在卸载时可能存在权限问题,卸载后如果目录没有删除可以手动删除目录。

卸载 WSL 系统镜像命令:

LxRunOffline.exe uninstall -n centos

5、升级为 WSL2

输入命令并回车,列出已经安装的 WSL 的信息

wsl -l -v

将对应的 WSL 发行版设为 WSL2,命令格式:

wsl --set-version <Distro> 2

个中<Distro>要和上面查询到的信息同等,本例中为 centos,输入以下命令并回车:

wsl --set-version centos 2

输入以下命令并回车,设置默认利用的发行版:

wsl -d centos

此时,再次利用命令 wsl -l -v 查看,可以看到 centos 的 VERSION 已经变为 2,并且名称前加了号(即默认的WSL系统)。

6、WSL 子系统的启动与关闭

此时,输入命令 wsl -d centos 即可启动。

停滞WSL子系统命令:wsl --shutdown -n 系统名称,如果直接输入 wsl --shutdown ,会停滞所有已启动的 WSL 子系统。

在管理员权限的 PoweShell 中输入命令:net stop LxssManager ,也可以停滞 WSL 子系统。

7、利用 Windows Terminal

当然,为了更好的合营 WSL ,一定要安装 Windows Terminal。

Windows10 安装最新版 PowerShell 及 Windows Terminal 并美化

有了 Terminal ,可以直接打开所有已安装的 WSL 发行版:

Terminal 的配色方案,可以参考:https://iterm2colorschemes.com/

8、目录设置

在 WSL2 系统中可以直接访问 windows 磁盘文件,因此为了不增加 WSL系统 VHD 虚拟磁盘空间,我个人打算将一些安装软件包放在 F:\wsl 目录下,将网站web程序放在 E:\wwwroot 目录中。
而在 wsl 系统中的访问路径分别是 /mnt/f/wsl 和 /mnt/e/wwwroot ,当然 WSL 这样直接访问 windows 磁盘会有很大的性能问题。
后续利用中如果性能的降落超过了可忍受的程度,再考虑将这两个目录移动到 wsl 的虚拟磁盘。

打开 Windows 安全中央,病毒和威胁防护设置,管理设置,添加或删除打消项,添加打消项,将上述两个目录打消,这样会减少 windows 的系统性能占用。

二、centos8 基本配置

1、查看 centos 版本

uname -acat /proc/versioncat /etc/redhat-release

2、安装 wget vim 等工具

cd ~ #转到用户目录dnf -y install vim wgetdnf -y install net-tools #启用 ifconfig,netstat 等网络 命令

3、改换海内源

(1) 备份原始的yum源

cd /etc/yum.repos.dmv CentOS-Base.repo CentOS-Base.repo.bakmv CentOS-extras.repo CentOS-extras.repo.bakmv CentOS-centosplus.repo CentOS-centosplus.repo.bakmv CentOS-PowerTools.repo CentOS-PowerTools.repo.bakmv CentOS-AppStream.repo CentOS-AppStream.repo.bak

(2) 下载对应版本的repo文件

# wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repovim CentOS-Base.repo

可以看到 aliyun 的源包含的以下各项:[base] [extras] [centosplus] [PowerTools] [AppStream] ,因此前面对这些源都做了备份。

(3) 打消旧的缓存并天生新的缓存

# dnf clean all# dnf makecache

三、源码编译安装 Nginx

1、安装编译工具及库文件:

如果短缺某个库文件,在编译时会给出错误提示,可按提示安装缺失落的库文件,然后重新进行编译。

dnf -y install make gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

gcc 是是GNU开拓的C,C++和Java等多种措辞的编译器。

pcre pcre-devel 是一个 perl 库,包括 perl 兼容的正则表达式库,Nginx 的 Rewrite 模块和HTTP 核心模块会利用到 PCRE 来解析正则表达式语法。

zlib zlib-devel 库供应了很多种压缩和解压缩办法,Nginx 启用压缩功能后,将利用 zlib 对 http 包的内容进行 gzip 压缩。

openssl openssl-devel 是实现了SSL协议的开源项目,可以实现秘钥证书管理、对称加密和非对称加密 。
用 SSL 加密的安全数据传输通道,担保客户端和做事器之间数据的安全。
大略的说便是浏览器以 https 开头的网址访问网站,浏览器和做事器之间数据加密传输。
当 Nginx 开启SSL功能后须要此模块的支持。

2、下载并解压:

打开官网 nginx: download,可以看到当前最新版本是 nginx-1.19.1 ,下载 nginx-1.19.1.tar.gz 文件并解压。

cd /mnt/f/wsl #此目录是我个人存放各种安装包的目录,也便是 win10 的 F 盘 wsl 目录。
wget http://nginx.org/download/nginx-1.19.1.tar.gztar -zxvf nginx-1.19.1.tar.gz

3、开始编译

cd nginx-1.19.1./configure

检讨系统环境是否符合编译安装的哀求,比如是否有gcc编译工具,是否支持编译参数当中的模块,并根据开启的参数等天生Makefile文件为下一步做准备。

make && make install

天生脚本及配置文件,根据Makefile文件天生相应的模块,安装,创建目录,并将天生的模块和文件复制到相应的目录。

4、等待安装完成

如果没有缺点提示,默认安装目录是:/usr/local/nginx,现在可以查看版本,能精确显示版本,解释安装完成。

/usr/local/nginx/sbin/nginx -V

5、添加软链接

由于 WSL 不能利用 systemd ,利用 service 时会涌现缺点提示,这里不注册为 service ,而是利用软链接的办法省略实行 nginx 命令的路径前缀。

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginxnginx #启动做事nginx -s reload #一直止做事重新载入配置文件nginx -s stop #停滞做事

6、配置

创建 Nginx 运行用户及用户组 www ,先停滞做事再编辑 nginx.conf 文件

groupadd wwwuseradd -g www wwwmkdir -p /data/wwwlogschown -R www:www /data/wwwlogsnginx -s stop #停滞做事vim /usr/local/nginx/conf/nginx.conf

参考了集成环境 OneinStack 中的配置。
默认 user 为 nobody ,修正为 www 。
将网站放在 /mnt/e/wwwroot 路径中,即 Win10 本地 E 盘 wwwroot 目录。

fastcgi_pass unix:/dev/shm/php-cgi.sock; 表示 Nginx 和 PHP-FPM 的进程间采取UNIX Domain Socket 办法通信,因此在 PHP-FPM 的配置文件中也要做相应的配置。

末了自动加载 vhost 目录中的配置文件,完全内容如下:

user www www;worker_processes auto;error_log /data/wwwlogs/error_nginx.log crit;pid /var/run/nginx.pid;worker_rlimit_nofile 51200;events { use epoll; worker_connections 51200; multi_accept on;}http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 1024m; client_body_buffer_size 10m; sendfile on; tcp_nopush on; keepalive_timeout 120; server_tokens off; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; fastcgi_intercept_errors on; #Gzip Compression gzip on; gzip_buffers 16 8k; gzip_comp_level 6; gzip_http_version 1.1; gzip_min_length 256; gzip_proxied any; gzip_vary on; gzip_types text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml text/javascript application/javascript application/x-javascript text/x-json application/json application/x-web-app-manifest+json text/css text/plain text/x-component font/opentype application/x-font-ttf application/vnd.ms-fontobject image/x-icon; gzip_disable "MSIE [1-6]\.(?!.SV1)";######################## default ############################ server { listen 80; server_name _; access_log /data/wwwlogs/access_nginx.log combined; root /mnt/e/wwwroot/default; index index.html index.htm index.php; #error_page 404 /404.html; #error_page 502 /502.html; #location /nginx_status { # stub_status on; # access_log off; # allow 127.0.0.1; # deny all; #} location ~ [^/]\.php(/|$) { #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; } location ~ .\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { expires 30d; access_log off; } location ~ .\.(js|css)?$ { expires 7d; access_log off; } location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) { deny all; } }########################## vhost ############################# include vhost/.conf;}

缺点提示:

unknown directive "stub_status" in /usr/local/nginx/conf/nginx.conf:64

stub_status模块紧张用于查看Nginx的一些状态信息,默认不会编译进Nginx,在配置文件中就不能有stub_status 干系配置信息。

7、测试

启动命令:nginx ,没有涌现任何提示。

查看端口做事是否开启

netstat -lnt|grep 80

打开浏览器

输入 http://localhost 或者 http://127.0.0.1,然后回车

如果涌现 Welcome to nginx! 页面,解释 WSL 及 Nginx 做事器运行正常。

四、源码安装 MySql8.0

1、下载 MySql8.0

打开mysql官网,社区版下载页,当前最新版本是 8.0.21,操作系统选择 Linux-Generic ,这里根据自己的系统选择下载文件:mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz,即 x86 架构 64位版本。

https://dev.mysql.com/downloads/mysql/dev.mysql.com

点击 Download 后,转到文件链接页,在 No thanks,just start my download. 上右键,选择复制链接,在 Centos 中下载链接文件:

cd /mnt/f/wsl #此目录是我个人存放各种安装包的目录,也便是 win10 的 F 盘 wsl 目录。
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz

2、解压并配置干系目录与权限

解压之后,将解压出的目录移动到 /usr/local/ 下并改名为 mysql,切换到 /usr/local/mysql 目录,创建 data 目录,再在根目录下创建 /data/mysql 目录。
目录路径可以按自己的须要创建。

tar -xvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xzmv mysql-8.0.21-linux-glibc2.12-x86_64 /usr/local/mysqlcd /usr/local/mysqlmkdir datamkdir -p /data/mysql

创建用户组 mysql ,给用户组添加用户 mysql,并给相应的目录权限。

groupadd mysqluseradd -g mysql mysqlchown -R mysql:mysql /usr/local/mysql/chown -R mysql:mysql /data/mysql

3、初始化 MySql

添加须要的库文件

dnf install libaio numactl initscripts -y

初始化,参数要和前面创建的用户及目录对应。

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

实行结束会天生数据库root用户密码,做好记录。
( A temporary password is generated for root@localhost: Zlg+oqdhy9i=)

如果实行失落败,须要删除 data 和 tmp 目录下所有内容,根据缺点提示,检讨配置后重新实行初始化。

4、创建并配置 my.cnf 文件

touch /etc/my.cnfvim /etc/my.cnf

my.cnf 参考了集成环境 OneinStack 中的配置,内容如下。
同样,my.cnf 配置文件中的目录路径也要和前面mysql初始化时的同等。

[client]port = 3306socket = /tmp/mysql.sockdefault-character-set = utf8mb4[mysql]prompt="MySQL [\d]> "no-auto-rehash[mysqld]port = 3306socket = /tmp/mysql.sockdefault_authentication_plugin = mysql_native_passwordbasedir = /usr/local/mysqldatadir = /usr/local/mysql/datapid-file = /data/mysql/mysql.piduser = mysqlbind-address = 0.0.0.0server-id = 1init-connect = 'SET NAMES utf8mb4'character-set-server = utf8mb4collation-server = utf8mb4_unicode_ciskip-name-resolve#skip-networkingback_log = 300max_connections = 1259max_connect_errors = 6000open_files_limit = 65535table_open_cache = 1024max_allowed_packet = 500Mbinlog_cache_size = 1Mmax_heap_table_size = 8Mtmp_table_size = 128Mread_buffer_size = 2Mread_rnd_buffer_size = 8Msort_buffer_size = 8Mjoin_buffer_size = 8Mkey_buffer_size = 256Mthread_cache_size = 64ft_min_word_len = 4log_bin = mysql-binbinlog_format = mixedbinlog_expire_logs_seconds = 604800log_error = /data/mysql/mysql-error.logslow_query_log = 1long_query_time = 1slow_query_log_file = /data/mysql/mysql-slow.logperformance_schema = 0explicit_defaults_for_timestamp#lower_case_table_names = 1skip-external-lockingdefault_storage_engine = InnoDB#default-storage-engine = MyISAMinnodb_file_per_table = 1innodb_open_files = 500innodb_buffer_pool_size = 1024Minnodb_write_io_threads = 4innodb_read_io_threads = 4innodb_thread_concurrency = 0innodb_purge_threads = 1innodb_flush_log_at_trx_commit = 2innodb_log_buffer_size = 2Minnodb_log_file_size = 32Minnodb_log_files_in_group = 3innodb_max_dirty_pages_pct = 90innodb_lock_wait_timeout = 120bulk_insert_buffer_size = 8Mmyisam_sort_buffer_size = 64Mmyisam_max_sort_file_size = 10Gmyisam_repair_threads = 1interactive_timeout = 28800wait_timeout = 28800[mysqldump]quickmax_allowed_packet = 500M[myisamchk]key_buffer_size = 256Msort_buffer_size = 8Mread_buffer = 4Mwrite_buffer = 4M

5、启动 MySql

/usr/local/mysql/support-files/mysql.server start

只创建软链接,不配置环境变量。
由于利用 mysql 命令登录数据库,或利用 mysqldump 命令备份数据库,都不常用,要用的时候直策应用绝对路径。

ln -s /usr/local/mysql/support-files/mysql.server /usr/bin/mysqldmysqld start #启动mysqlmysqld stop #停滞mysqlnetstat -lnt #查看已开放的端口

查看所有可用的命令参数

mysqld --helpUsage: mysqld {start|stop|restart|reload|force-reload|status} [ MySQL server options ]

6、修正密码

/usr/local/mysql/bin/mysql -uroot -p#输入初始化时记录的密码#登录后在命令提示符 MySQL [(none)]> 后,输入如下语句并回车#(MySql语句要以;结束,password 修正本钱身的新密码)alter user 'root'@'localhost' identified by 'password';exit #退出

7、安装过程中的报错及处理方法

/etc/redhat-lsb/lsb_log_message: line 3: /etc/init.d/functions: No such file or directory

办理方法是安装initscripts:dnf -y install initscripts

报错:

mysqld_safe error: log-error set to '/data/mysql/mysql-error.log', however file don't exists. Create writable for user 'mysql'.

办理方法是:创建此文件并给予 mysql 组和用户权限

echo "" > /data/mysql/mysql-error.logchown -R mysql:mysql /data/mysql/mysql-error.log

如下报错也可以考试测验用此方法办理

The server quit without updating PID file (/data/mysql/mysql.pid)

五、源码编译安装 php7.4

1、下载

打开PHP官网,看到当前最新版本是 7.4.9,由于官网海内下载很慢,找到一个souhu 的库,下载源码文件。
Index of /php/

cd /mnt/f/wsl #此目录是我个人存放各种安装包的目录,也便是 win10 的 F 盘 wsl 目录。
wget http://mirrors.sohu.com/php/php-7.4.9.tar.xz

2、安装编译工具和库

dnf -y install make gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

在安装 Nginx 时就已经安装过编译工具和库,在检讨配置编译参数时,提示短缺哪个就安装哪个库。

3、创建用户组和用户

如果在安装 Nginx 时已经创建过,就不用再重复创建了。

groupadd wwwuseradd -g www www

4、配置编译

解压缩,移动到 /usr/local/ 目录并重命名为 php,切换到 /usr/local/php 目录。

tar -xvf php-7.4.9.tar.xzmv php-7.4.9 /usr/local/php

查看已安装的 php 编译参数命令是:

php -i|grep configure

以下编译参数来源于 oneinstack 集成包,复制以下所有内容到 CentOS 命令行窗口,回车,开始检讨配置。

./configure --prefix=/usr/local/php \--with-config-file-path=/usr/local/php/etc \--with-config-file-scan-dir=/usr/local/php/etc/php.d \--with-fpm-user=www \--with-fpm-group=www \--enable-fpm \--enable-opcache \--disable-fileinfo \--enable-mysqlnd \--with-mysqli=mysqlnd \--with-pdo-mysql=mysqlnd \--with-iconv-dir=/usr/local/libiconv \--with-freetype \--with-jpeg \--with-zlib \--enable-xml \--disable-rpath \--enable-bcmath \--enable-shmop \--enable-exif \--enable-sysvsem \--enable-inline-optimization \--with-curl=/usr/local/curl \--enable-mbregex \--enable-mbstring \--with-password-argon2 \--with-sodium=/usr/local \--enable-gd \--with-openssl=/usr/local/openssl \--with-mhash \--enable-pcntl \--enable-sockets \--with-xmlrpc \--enable-ftp \--enable-intl \--with-xsl \--with-gettext \--with-zip=/usr/local \--enable-soap \--disable-debug \PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:

一遍遍实行上述检讨配置,根据报错 error 或类似 not found 类,办理缺点。
直到涌现如下所示:Thank you for using PHP

5、安装完成

make && make install

6、报错及办理

报错

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

办理方法:

dnf -y install glibc-headers gcc-c++报错:

Package 'libxml-2.0', required by 'virtual:world', not foundPackage 'sqlite3', required by 'virtual:world', not foundPackage 'libcurl', required by 'virtual:world', not foundPackage 'libpng', required by 'virtual:world', not foundPackage 'libjpeg', required by 'virtual:world', not foundPackage 'freetype', required by 'virtual:world', not foundPackage 'icu-uc', required by 'virtual:world', not foundPackage 'libsodium', required by 'virtual:world', not found

办理方法:

dnf -y install libxml2-devel sqlite-devel libcurl-devel libpng-devel libjpeg-devel freetype-devel libicu-devel报错:

Package 'oniguruma', required by 'virtual:world', not found

oniguruma是一个处理正则表达式的库

办理方法:

wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gztar -zxvf oniguruma-6.9.4.tar.gzcd oniguruma-6.9.4/./autogen.sh && ./configure --prefix=/usr

报错

Generating autotools files../autogen.sh: line 6: autoreconf: command not found

办理方法:

dnf -y install autoconf automake libtool

再次检讨配置,没有问题了,再天生脚本及配置文件,安装。

./autogen.sh && ./configure --prefix=/usrmake && make install报错:

configure: error: Package requirements (libsodium >= 1.0.8) were not met:Package 'libsodium', required by 'virtual:world', not found

办理方法:

Sodium 是一个全新而且易用的加密库,用于加密、解密、署名和天生密码哈希等等。

wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable.tar.gztar -zxf libsodium-1.0.18-stable.tar.gzcd libsodium-stable./configure --prefix=/usrmake && make installldconfig报错:

checking for Argon2 library... not foundconfigure: error: Please ensure the argon2 header and library are installed

办理方法:

打开 https://pkgs.org/ ,查找 libargon2 ,找到 centos8 的rpm包,下载安装。

wget https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/l/libargon2-20171227-3.el8.x86_64.rpmwget https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/l/libargon2-devel-20171227-3.el8.x86_64.rpmrpm -Uvh libargon2-20171227-3.el8.x86_64.rpmrpm -Uvh libargon2-devel-20171227-3.el8.x86_64.rpmdnf -y install libargon2 libargon2-devel报错:

configure: error: Package requirements (libxslt >= 1.1.0) were not met:Package 'libxslt', required by 'virtual:world', not found

办理方法:

dnf -y install libxslt libxslt-devel报错:

Failed to set locale, defaulting to C.UTF-8error: rpmdb: BDB2034 unable to allocate memory for mutex; resize mutex regionerror: cannot open Packages index using db5 - Cannot allocate memory (12)error: cannot open Packages database in /var/lib/rpmError: Error: rpmdb open failed

办理方法:

一样平常是由于rpm本地数据库破坏导致的。

cd /var/lib/rpm # rpm db所在目录ls | grep 'db.' # 列出干系rpm db文件rm -f __db. # 打消原rpmdb文件rpm --rebuilddb # 重修rpm数据库yum clean alldnf makecache报错:

Package 'libzip', required by 'virtual:world', not found

办理方法:

打开 https://pkgs.org/ ,查找 libzip 及 libzip-devel,找到 centos8 的rpm包,下载安装。

wget http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/libzip-1.5.2-1.module_el8.2.0+314+53b99e08.x86_64.rpmwget http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/libzip-devel-1.5.2-1.module_el8.2.0+314+53b99e08.x86_64.rpmrpm -Uvh libzip-1.5.2-1.module_el8.2.0+314+53b99e08.x86_64.rpmrpm -Uvh libzip-devel-1.5.2-1.module_el8.2.0+314+53b99e08.x86_64.rpmdnf -y install libzip libzip-devel

7、配置

天生 php 配置文件

cp php.ini-production /usr/local/php/etc/php.ini

在编译时启用了参数:--enable-opcache ,查找 opcache.so模块文件所在路径。

find /usr -name opcache.so###输出###/usr/local/php/ext/opcache/.libs/opcache.so/usr/local/php/lib/php/extensions/debug-non-zts-20190902/opcache.so/usr/local/php/modules/opcache.so

编辑 php.ini 文件,在末端添加如下内容,开启 OPcache 扩展

[opcache]zend_extension=/usr/local/php/modules/opcache.soopcache.enable=1opcache.enable_cli=1opcache.memory_consumption=128opcache.interned_strings_buffer=8opcache.max_accelerated_files=10000opcache.revalidate_freq=60opcache.file_cache=/tmp/opcache

天生 php-fpm 配置文件并编辑。

cd /usr/local/php/etccp php-fpm.conf.default php-fpm.confvim php-fpm.conf

这里还是参考 OneInStack 集成环境包中的配置,清空 php-fpm.conf 内容,修正如下:

;;;;;;;;;;;;;;;;;;;;;; FPM Configuration ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Global Options ;;;;;;;;;;;;;;;;;;;[global]pid = run/php-fpm.piderror_log = log/php-fpm.loglog_level = warningemergency_restart_threshold = 30emergency_restart_interval = 60sprocess_control_timeout = 5sdaemonize = yes;;;;;;;;;;;;;;;;;;;;; Pool Definitions ;;;;;;;;;;;;;;;;;;;;;[www]listen = /dev/shm/php-cgi.socklisten.backlog = -1listen.allowed_clients = 127.0.0.1listen.owner = wwwlisten.group = wwwlisten.mode = 0666user = wwwgroup = wwwpm = dynamicpm.max_children = 50pm.start_servers = 30pm.min_spare_servers = 20pm.max_spare_servers = 50pm.max_requests = 2048pm.process_idle_timeout = 10srequest_terminate_timeout = 120request_slowlog_timeout = 0pm.status_path = /php-fpm_statusslowlog = var/log/slow.logrlimit_files = 51200rlimit_core = 0catch_workers_output = yes;env[HOSTNAME] = aliyun-wxyenv[PATH] = /usr/local/bin:/usr/bin:/binenv[TMP] = /tmpenv[TMPDIR] = /tmpenv[TEMP] = /tmp

本配置文件指定了 PHP-FPM 进程通信办法:listen = /dev/shm/php-cgi.sock,和 Nginx 的配置保持了同等。

天生 php-fpm 做事启动文件:(新的文件名不能有 - 字符)

cp /usr/local/php/sapi/fpm/init.d.php-fpm /usr/bin/phpfpmchmod 740 /usr/bin/phpfpm

测试启动php-fpm

phpfpm startphpfpm restartphpfpm stop

查看 php 已启用的模块:

php -m

查看 php 版本

/usr/local/php/bin/php -vphp -v

8、安装配置 Xdebug

OPcache 扩展是 PHP7.X 自带的,只要在编译时开启,就可以配置利用。
而 Xdebug 须要其余安装。
参考官网:https://xdebug.org/docs/install

yum install -y gitgit clone git://github.com/xdebug/xdebug.gitcd xdebugphpize./configure --enable-xdebugmake && make install

Xdebug编译完成后显示扩展文件目录、提示将扩展添加到 php.ini文件

编辑 php.ini ,在末端增加 xdebug.so扩展。

vim /usr/local/php/etc/php.ini####增加xdebug.so扩展###zend_extension="/usr/local/php/lib/php/extensions/debug-non-zts-20190902/xdebug.so"

重启 php-fpm ,检讨 php 扩展

/usr/bin/php-fpm restartphp -m

六、LNMP 环境测试

1、Nginx 和 PHP-FPM 的合营

Nginx 和 PHP-FPM 的进程间通信有两种办法,一种是TCP,另一种是 UNIX Domain Socket。

个中 TCP 办法是 IP 加端口,可以跨做事器。
而 UNIX Domain Socket 不经由网络,只能用于Nginx 跟 PHP-FPM 都在同一做事器的场景。
不管用哪种办法在 Nginx 和 PHP-FPM 配置时要统一。

办法1: TCP

php-fpm.conf 文件配置: listen = 127.0.0.1:9000nginx.conf 文件配置: fastcgi_pass 127.0.0.1:9000;

办法2: UNIX Domain Socket

php-fpm.conf 文件配置: listen = /tmp/php-fpm.socknginx.conf 文件配置: fastcgi_pass unix:/tmp/php-fpm.sock;

个中 php-fpm.sock 是一个文件,由 php-fpm 天生,如果在 php-fpm.conf 配置文件中指定的用户和组是 www ,确保 /tmp/php-fpm.sock 的权限是 www:www。

2、测试 phpinfo 文件

在浏览器中打开内容为 phpinfo() 函数的 PHP 文件,如果 nginx 涌现缺点,则解释 php 无法合营 Nginx 运行, 请查看 nginx 缺点日志。

vim /data/wwwlogs/error_nginx.log

phpinfo 显示了编译参数、 php.ini 的文件位置、已开启OPcache 及 Xdebug 扩展等信息

3、phpMyAdmin

下载 phpMyAdmin 并解压到 /mnt/e/wwwroot/default 目录,即 Nginx 配置文件中指定的默认网站目录。
在浏览器中打开 http://localhost/phpMyAdmin/ ,如果能顺利登录数据库,则解释不但 Nginx 和 php 没有问题,而且 Mysql 也没有问题。
至此,Nginx php Mysql 已经完备能合营运行了。

4、关于开机自动启动做事

常日在 Linux 中开机启动可以通过编辑/etc/rc.loacl 文件、在/etc/init.d/ 下添加启动脚本或者配置systemd 实现,但是关于由于 WSL 架构的分外性,并且不支持 systemd ,这几种办法在 WSL 子系统中无法利用。
而在 Windows 中用 VBS 脚本结合 WSL 命令的实现开机启动的办法彷佛存在不能利用 LocalHost 地址访问子系统的问题。
总之,暂时还是手动启动吧。

如前述,已安装的 Nginx、PHP、MySql 启动及停滞命令总结如下:

nginx #启动nginx做事phpfpm start #启动php-fpm做事mysqld start #启动mysqlnginx -s reload #一直止做事重新载入配置文件nginx -s stop #停滞做事phpfpm restartphpfpm stopmysqld restart #重启mysqlmysqld stop #停滞mysql

参考资料:

Windows Terminal + WSL2 + CENTOS 配置Windows命令终端https://www.tinychen.com/200512-windowsterminal-wsl2-centos/https://github.com/CentOS/sig-cloud-instance-images

LxRunOffline 利用教程 - WSL 自定义安装、备份 https://p3terx.com/archives/manage-wsl-with-lxrunoffline.html

https://chocolatey.org/docs/installationhttps://blog.csdn.net/hiqiming/article/details/105244147

http://nginx.org/https://www.cnblogs.com/zhang-shijie/p/5294162.html

https://www.cnblogs.com/pp-yang/p/12595387.html

https://www.jianshu.com/p/64e12bea3d49

Linux安装mysql8.0(踩坑实况) https://blog.csdn.net/LittleSeedling/article/details/105851113

https://www.cnblogs.com/cxyyh/p/12431424.htmlIndex of /php/

centos8安装php7.4 https://www.cnblogs.com/architectforest/p/12433541.html

https://www.cnblogs.com/alliancehacker/p/12255445.html

标签:

相关文章

Java代码虚拟化保护技术与应用前景

软件应用的需求日益增长,软件开发过程中对代码的保护成为了一个重要议题。Java作为一种广泛应用于企业级应用的编程语言,其代码虚拟化...

PHP教程 2025-03-02 阅读1 评论0

CAD插件错误代码与应对步骤

CAD(计算机辅助设计)软件在工程设计领域得到了广泛应用。CAD插件作为提升设计效率的重要工具,在提高设计师工作效率的也带来了一定...

PHP教程 2025-03-02 阅读1 评论0

上古卷轴代码规则大全游戏背后的编程奥秘

《上古卷轴》作为一款深受玩家喜爱的角色扮演游戏,自问世以来便以其丰富的世界观、独特的游戏体验和深厚的文化底蕴吸引了无数玩家。在这款...

PHP教程 2025-03-02 阅读1 评论0