阿里云的服务器到期,需要把服务器迁移到腾讯云,需要在腾讯云上重新部署一套LNMP,秉承着用新不用旧的原则,就采用目前比较新的LNMP版本搭建系统
旧版阿里云环境:centos7,nginx1.4,php7.13,mysql5.7
新版腾讯云环境:centos7,nginx1.7 php7.4 mysql8
在部署环境时,版本的升级造成了一系列的问题,记录一下。
nginx安装配置
nginx安装没有什么变化,依然是解决第三方依赖的问题,然后编译安装三步走就行。
nginx1.7 配置中需要安解决openssl , pcre , zlib 库等,pcre目前是手动安装,下载包编译安装三步走,其他的库包可以通过yum install命令安装, 遇到提示缺少的按照就好,没有出现安装的库包版本不兼容情况,需要手动升级的情况。
nginx的依赖问题:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 先解决部分依赖问题
安装 PCRE
去pcre官网http://www.pcre.org/下载合适版本
cd /usr/local/src/ wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz tar zxvf pcre-8.44.tar.gz cd pcre-8.44 ./configure make && make install pcre-config --version 至此,pcre安装成功
安装nginx
cd /usr/local/src/ wget http://nginx.org/download/nginx-1.17.10.tar.gz tar -zxvf nginx-1.17.10.tar.gz ./configure --sbin-path=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.44 make make install nginx安装成功,进入nginx安装目录启动后 ./nginx -v 查看nginx安装版本 ./nginx 启动服务,通过ip查看基本的欢迎界面 ./nginx -s reload 重载配置文件 ./nginx -s reopen 重启 ./nginx -s stop 关闭
nginx安装基本配置信息 ./configure --sbin-path=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.44 --with-zlib=../zlib-1.2.1 配置文件不能换行,需要空格隔开,pcre需要指定安装的位置 按照的pcre zlib 需要设置为安装的实际路径和版本
nginx下转发php设置
安装好nginx后,进入nginx的路径,启动nginx,能够通过浏览器访问服务器即为按照成功。
安装好nginx后,需要修改nginx.conf文件,来处理php。nginx的php模块默认没有开启,在.conf中开启功能。
php安装
在安装php7.4时出现的问题比较大,主要是由于php7.3版本以后,对编译的参数调整很,造成编译时很多库包不存在、版本不兼容的情况。秉承遇到问题解决问题的原则,没有采用安装php旧版本
./configure –prefix=/usr/local/php –enable-fpm –with-pdo-mysql –with-mysqli –enable-mbstring –disable-pdo –with-curl –disable-debug –disable-rpath –enable-inline-optimization –with-bz2 –with-zlib –enable-sockets –enable-sysvsem –enable-sysvshm –enable-pcntl –enable-mbregex –with-mhash –enable-zip –with-pcre-regex –with-gd –with-jpeg-dir –with-openssl –enable-opcache=no –enable-pdo
注:以上编译配置设置在php7.4中,有些项目已经调整,需要查看最./configure –help 查看升级后的设置,如 –with-gd 在新版本中,升级为–enable-gd
php在./configure时出现问题,编译不通过,提示缺少库文件支持,libxml2-devel
configure: error: Please reinstall the BZip2 distribution
解决办法 yum -y install bzip2-devel
No package ‘libcurl’ found
yum -y install libcurl
yum -y install sqlite-devel
No package ‘libpng’ found
yum -y install libpng-devel
./configure不通过的问题比较多,用yum安装好第三方依赖后,还会遇到yum安装的版本低于php4要求的版本,yum直接安装的依赖不能使用,需要去相应官网下载对应的指定以上版本,具体都升级了哪些库当时安装没有一一记录,以libzip为例吧:
不同版本的php,在./configure编译时,支持的参数不一样,需要根据版本信息指定如,php7.4版本时,之前版本的参数 –enable-zip已经不再支持,改为–with-zip,同时,需要安装 libzip库 ,
yum -y install libzip-devel 后,编译安装提示equested ‘libzip >= 0.11’ but version of libzip is 0.10.1,当前yum系统安装的版本低于要求版本,自动安装版本过低,需要手动安装
yum -y remove libzip 先卸载系统安装的低版本
依赖库libzip安装
20年3月libzip官方版本发布了1.6版本,看网上博客,libzip1.5以上版本,在编译安装时和旧版本已经不一样,新版需求mkdir build,使用cmake编译安装,由于直接使用的是1.6版本,没有使用15之前的版本,就不做说明,了解就好
去libzip官网,找到最新的安装包,下载解压,mkdir cmake等待
wget https://libzip.org/download/libzip-1.6.1.tar.gz
tar zxvf libzip-1.6.1.tar.gz
cd libzip-1.6.1/
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/libzip .. 或者 直接 cmake ..
cmake版本过低
在运行cmake时,提示没有cmake命令,yum install -y cmake, 用cmake ..时,提示cmake版本过低 ,用yum 安装的是cmake2.8, 而要求cmake版本是3.0网上,因此yum 安装的cmake不能使用,又去官网下载cmake最新的版本,下载cmake3.17是二进制版本,不用编译,解压缩后可以直接运行,需要将bin路径配置在环境变量中,插曲就不在描述,cmake解决后,继续执行
make && make install
完成安装libzip模块
no 模块 oniguruma 问题
php7.4版本、coetos7.5版本时,编译php,开启 –enable-mbstring 模块时 提示没有oniguruma报错,当前环境下yum源还不能使用yum install自动安装,需要手动安装
wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz tar -zxvf oniguruma-6.9.4.tar.gz cd oniguruma-6.9.4/ ./autogen.sh #注,按官方说明需要执行后才有configure文件 ./configure --prefix=/usr --libdir=/lib64 # 需要有--libdir=/lib64参数,不添加编译php时依然不通过 make make install
LNMP配置文件配置
php.配置文件,需要在php/etc文件夹下,复制php-fpm.conf.default 成php-fpm.conf,在php-fpm.d文件夹中,www.conf.default复制一个www.conf文件,才能启动php-fpm
启动php.fpm后,需要配置nginx文件,将php请求转发到php-fpm处理,需要开启nginx.conf中的php模块
后记,这博客采用WordPress源码,在设置站点图标时,php7.4版本一直提示编辑报错,网上说是gd模块,依然没有解决,本身对php不熟悉,又不想花时间去研究,就认输了。索性将php的版本降到7.1.3,解决了问题,有时候一味追求新版不一定最好,还是旧版本熟悉些。
php8的编译参数
yum install libxml2-devel.x86_64
yum install sqlite-devel.x86_64
yum install libpng-devel
yum install oniguruma-devel
./configure –prefix=/usr/local/php8
–with-config-file-path=/usr/local/php8
–enable-mbstring
–enable-ftp
–enable-gd
–enable-gd-jis-conv
–enable-mysqlnd
–enable-pdo
–enable-sockets
–enable-fpm
–enable-xml
–enable-soap
–enable-pcntl
–enable-cli
–with-mysqli=mysqlnd
–with-pdo-mysql=mysqlnd
–with-pear
–with-zlib
–with-iconv
–enable-opcache