wordpress轻量应用服务器升级php版本
注意事项
- 建议使用默认的环境操作
- Wordpress镜像用的是4.8.1这个版本
安装依赖
yum install -y libxml2-devel openssl-devel curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel xslt libxslt-devel yum update -y curl curl-devel yum remove -y libzip
配置SWAP
如果内存是低于1GB的,则需要配置一下swap,编译过程需要依赖更多内存,内存太低会报错
dd if=/dev/zero of=/swap bs=1M count=2048 mkswap -f /swap swapon /swap
安装libzip
PHP7.3要求libzip版本大于0.11,但yum安装版本达不到要求,所以这里手动编译一下,该项不满足报错对应如下:checking for libzip... configure: error: system libzip must be upgraded to version >= 0.11
wget https://nih.at/libzip/libzip-1.2.0.tar.gz tar -zxvf libzip-1.2.0.tar.gz cd libzip-1.2.0 ./configure make && make install
编译好后还需要做一下软连接,否则会提示报错找不到zipconf.h文件
ln -s /usr/local/lib/libzip/include/zipconf.h /usr/local/include
编译安装PHP
wget https://www.php.net/distributions/php-7.3.9.tar.gz tar -xvf php-7.3.9.tar.gz cd php-7.3.9 ./configure --prefix=/usr/local/php73 --enable-soap --enable-cgi --with-mysql=/usr/local/mysql --with-mysqli=mysqlnd --with-gd --with-pdo-mysql=mysqlnd --with-zlib --enable-zip --enable-fpm --without-pear --disable-phar --with-openssl --enable-mbstring=all --with-jpeg-dir=/usr --with-png-dir=/usr --with-curl --with-freetype-dir=/usr --enable-gd-native-ttf --with-xsl=/usr --enable-calendar --enable-exif --enable-ftp --with-iconv --enable-bcmath --with-mcrypt=/usr/local/libmcrypt --enable-opcache make && make install
这个编译过程会比较长,编译完成后修改一下配置文件
# 将启动脚本复制到init.d中,${PHP73}对应是源码解压的目录 cp ${PHP73}/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm73 # 给启动脚本加上执行权限 chmod +x /etc/init.d/php-fpm73 # 将默认配置文件复制为.conf文件 cp /usr/local/php73/etc/php-fpm.conf.default ${PHP73_DIR}/etc/php-fpm.conf # 添加pool的配置 cat << EOF > /usr/local/php73/etc/php-fpm.d/www.conf [www] listen = /home/www/logs/php73-fpm.sock listen.mode = 0666 user = www group = www pm = dynamic pm.max_children = 128 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 15 pm.max_requests = 300 rlimit_files = 1024 slowlog = /home/www/logs/php73-fpm-slow.log EOF
至此PHP已经编译配置完成,接下来需要修改apache使用新版的php
修改apache
镜像中默认是用的php-fpm,使用的是socket方式的监听,Apache对应配置文件/usr/local/apache/conf/httpd.conf
,可以看到其中配置如下
我们只需要修改其中socket的文件路径指向到新版本的PHP就可以了,在/usr/local/php73/etc/php-fpm.d/www.conf
有指定,新的配置到/home/www/logs/php73-fpm.sock
即可,如图
重启服务
# 停止旧版本的PHP(实际不停止也不影响,停止可以减少一些系统资源占用) /etc/init.d/php-fpm stop # 启动新版PHP-FPM /etc/init.d/php-fpm73 start # 重启apache /etc/init.d/apachectl restart
验证
站点根目录是/home/www/htdocs/
,放入phpinfo探针即可检测PHP版本
至此轻量应用服务器wordpress镜像更新PHP版本操作已完成,可以愉快的更新wordpress到新版本了。为了操作更简单,这里总结成了一个脚本,可以复制到主机内一键执行
#!/bin/bash WORKDIR=/tmp/ PHP73_DIR=/usr/local/php73 DEFAULT_SWAP=0 createSwap(){ if [ `cat /proc/meminfo | grep SwapTotal | awk -F " " '{print $2}'` -ne 0 ] then return 0 fi if [ `cat /proc/meminfo | grep MemTotal | awk -F " " '{print $2}'` -le 1048576 ] then echo "Mem lower than 1GB,creating swap..." dd if=/dev/zero of=/swap bs=1M count=2048 mkswap -f /swap swapon /swap && echo "SWAP create success." DEFAULT_SWAP=1 fi } installDependence(){ yum install -y libxml2-devel openssl-devel curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel xslt libxslt-devel yum update -y curl curl-devel yum remove -y libzip } compileLibzip(){ echo "start install libzip." cd ${WORKDIR} if [ -f libzip-1.2.0.tar.gz ] then rm -rf libzip-1.2.0.tar.gz fi wget https://code.aliyun.com/yh11/download/raw/master/libzip-1.2.0.tar.gz tar -zxvf libzip-1.2.0.tar.gz cd libzip-1.2.0 ./configure make && make install if [ $? -ne 0 ] then echo "libzip install failed." exit 127 fi ln -s /usr/local/lib/libzip/include/zipconf.h /usr/local/include } installPHP(){ echo "Install PHP 7.3" cd ${WORKDIR} if [ -f php-7.3.9.tar.gz ] then rm -rf php-7.3.9.tar.gz fi wget https://code.aliyun.com/yh11/download/raw/master/php-7.3.9.tar.gz tar -xvf php-7.3.9.tar.gz cd php-7.3.9 ./configure --prefix=/usr/local/php73 --enable-soap --enable-cgi --with-mysql=/usr/local/mysql --with-mysqli=mysqlnd --with-gd --with-pdo-mysql=mysqlnd --with-zlib --enable-zip --enable-fpm --without-pear --disable-phar --with-openssl --enable-mbstring=all --with-jpeg-dir=/usr --with-png-dir=/usr --with-curl --with-freetype-dir=/usr --enable-gd-native-ttf --with-xsl=/usr --enable-calendar --enable-exif --enable-ftp --with-iconv --enable-bcmath --with-mcrypt=/usr/local/libmcrypt --enable-opcache make && make install if [ $? -ne 0 ] then echo "PHP install failed." exit 127 fi cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm73 cp ${PHP73_DIR}/etc/php-fpm.conf.default ${PHP73_DIR}/etc/php-fpm.conf chmod +x /etc/init.d/php-fpm73 } createConfig(){ cat << EOF > ${PHP73_DIR}/etc/php-fpm.d/www.conf [www] listen = /home/www/logs/php73-fpm.sock listen.mode = 0666 user = www group = www pm = dynamic pm.max_children = 128 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 15 pm.max_requests = 300 rlimit_files = 1024 slowlog = /home/www/logs/php73-fpm-slow.log EOF } modifyApache(){ sed -i 's#ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/home/www/logs/php-fpm.sock|fcgi://127.0.0.1/home/www/htdocs#ProxyPassMatch ^/(.*\\.php(/.*)?)$ unix:/home/www/logs/php73-fpm.sock|fcgi://127.0.0.1/home/www/htdocs#g' /usr/local/apache/conf/httpd.conf } restartService(){ chkconfig php-fpm off chkconfig php-fpm73 on /etc/init.d/php-fpm stop /etc/init.d/php-fpm73 start /etc/init.d/apachectl restart } delSwap(){ if [ ${DEFAULT_SWAP} -eq 1 ] then swapoff /swap rm -rf /swap fi } createSwap installDependence compileLibzip installPHP createConfig modifyApache restartService delSwap
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
关于表变动而导致的实体变动问题
因为表变动而导致的实体变动问题,出现这种情况较多的是版本迭代的时候。 项目开发初期,表变动导致的代码改动量相对较小,改动后出现的问题也比较少。而在项目迭代的过程中,因为项目已经成型,大部分代码的逻辑和用法都已固定。此时表变动将有可能导致大量业务逻辑代码不可用。 这篇文章就说说因为表变动而需要修改的代码部分。 在此之前先说两个修改代码的小诀窍。 修改代码的诀窍 诀窍一: 如果你用的开发工具是 IDEA 的话,你可以选中类名,然后按下 shift + F6 ,这时候会出现修改类名的对话框。在此处修改类名,将会把项目中有项目引用的地方一起修改。这个方法不仅方便,而且可以使你知道哪些地方的代码受到影响。 修改类名的对话框如下图: 诀窍二: 如果你用的开发工具是 IDEA 的话,当你删除类的时候会弹出如下对话框: 选择“Safe delete(with usa
- 下一篇
105道BAT最新Java面试题(MySQL+Redis+nginx+ookeeper+MongoDB)
MySQL面试题 主键 超键 候选键 外键2.数据库事务的四个特性及含义 视图的作用,视图可以更改么? drop,delete与truncate的区别 索引的工作原理及其种类 连接的种类 数据库范式 数据库优化的思路 存储过程与触发器的区别 Redis面试题 使用Redis有哪些好处? redis相比memcached有哪些优势? redis常见性能问题和解决方案4.MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据 5.Memcache与Redis的区别都有哪些? Redis 常见的性能问题都有哪些?如何解决? redis 最适合的场景 Redis的同步机制了解么? 是否使用过Redis集群,集群的原理是什么? redis集群如何保证一致性? nginx面试题 1.请解释一下什么是Nginx? 请列举Nginx的一些特性?3.请列举Nginx和Apache 之间的不同点? 请解释Nginx如何处理HTTP请求。 在Nginx中,如何使用未定义的服务器名称来阻止处理请求? 使用“反向代理服务器”的优点是什么? 请列举Nginx服务器的最佳...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6