今日有小伙伴找到老季,说想要把aws云ec2服务器WordPress网站环境从php7.3升级到php7.4的版本,我们这里也记录一下这个的更新过程。
服务器情况
无法连接aws的ec2服务器
登录上aws也经历了一些波折,发现登录服务器,老是无法连接。要不就是卡住了一样。之后就没有反应了。
要么就是提示:
毫无办法,按理来说aws不可能会有这种,控制台都无法连接ec2服务器的问题。之后我们终于查到了问题,由于系统安装的是ubuntu,所以我们用终端连接时,需要使用ubuntu用户进行连接,具体如下图所示:
Run As : ubuntu
这就是重点了,如果是centos、debian等发型版用root即可。
之后重新使用”会话管理器”菜单就可以连接了。
已安装的环境bitnami套件
登录上服务器,发现服务器使用的是/opt/bitnami/ctlscript.sh命令,所以断定是bitnami的套件,而官网并没有给出详细的套件,这里我们只能自己编译了。
编译php7.4.33
安装必要的环境包
请先直接切换到root用户,然后使用如下命令进行批量下载并安装必要的包
sudo su //直接回车
wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar -xvf php-7.4.33.tar.gz
apt-get update
apt-get install -y libxml2-dev libssl-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype6-dev zlib1g-dev libzip-dev libsqlite3-dev libonig-dev
No package ‘libxml-2.0’ found
hecking for libxml-2.0 >= 2.7.6… no configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met: No package ‘libxml-2.0’ found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBXML_CFLAGS and LIBXML_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
但我们已经安装了libxml而且是最新的版本,在终端中指定一下路径:
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
No package ‘sqlite3’ found
configure: error: Package requirements (sqlite3 > 3.7.4) were not met: No package ‘sqlite3’ found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables SQLITE_CFLAGS and SQLITE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
apt-get install libsqlite3-dev
No package ‘oniguruma’ found
configure: error: Package requirements (oniguruma) were not met: No package ‘oniguruma’ found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables ONIG_CFLAGS and ONIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
apt-get install libonig-dev
配置PHP
cd php-7.4.33
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-mbstring --with-curl --with-openssl --with-zlib --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-opcache --enable-xml --enable-intl --with-gd --with-jpeg --with-freetype --with-mysqli --with-pdo-mysql
Your PHP installation appears to be missing the MySQL extension which is required by WordPress.
一开始出现了Your PHP installation appears to be missing the MySQL extension which is required by WordPress.错误,是我们没有带上mysql的扩展--with-mysqli --with-pdo-mysql
,以上编译时,我们已经带上了。
编译和安装PHP7.4.33
make
sudo make install
配置php.ini
sudo cp php.ini-development /usr/local/php7/etc/php.ini
编辑 /usr/local/php7/etc/php.ini
找到mysqli.default_socket
及pdo_mysql.default_socket
的配置区,将其设置成/opt/bitnami/mysql/tmp/mysql.sock
mysqli.default_socket = "/opt/bitnami/mysql/tmp/mysql.sock"
pdo_mysql.default_socket = "/opt/bitnami/mysql/tmp/mysql.sock"
如不配置则会出现:Error establishing a database connection
导致WordPress的运行php环境找不到mysql的链接方法
配置php-fpm.conf
编辑/usr/local/php7/etc/php-fpm.conf
文件
sudo vi /usr/local/php7/etc/php-fpm.conf
内容如下:
[global]
pid = /run/php-fpm.pid
error_log = /var/log/php-fpm/error.log
[my_pool]
user = daemon
group = daemon
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock
listen.owner = daemon
listen.group = daemon
pm = dynamic
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pm.max_children = 12
这里我们使用的用户及用户组都是daemon
跟bitnami套件中apache设置的是一样的权限。
检查一下/var/run/这个目录是否存在,不存在则需要创建。
启动php-fpm
/usr/local/php7/sbin/php-fpm
可以通过 ps aux | grep php-fpm
命令查看我们的php是否允许成功
如果有/usr/local/php7/etc/php-fpm.conf
的配置在运行说明已成功。
配置apache2
修改/opt/bitnami/apache2/conf/php-fpm-apache.conf
,修改前记得备份!!!
修改配置前请确保:/usr/local/php7/etc/php-fpm.conf的php-fpm已在运行。
将/opt/bitnami/apache2/conf/php-fpm-apache.conf
改为以下内容
<IfDefine USE_PHP_FPM>
<Proxy "unix:/var/run/php-fpm.sock|fcgi://www-fpm" timeout=300>
</Proxy>
<FilesMatch \.php$>
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:fcgi://www-fpm"
</If>
</FilesMatch>
</IfDefine>
此处Proxy需要跟上面的php-fpm.conf配置的listen一致,否则apache2无法链接到php-fpm。
重启bitnami的apache服务
/opt/bitnami/ctlscript.sh restart apache
检查php版本是否成功
我们在网站目录中新建一个info.php内容如下
<?php phpinfo();
之后通过网址打开 http://域名/info.php
检查一下,php版本是否是7.4.33
错误日志
我们的配置过程中出现了一些未知错误,还好有日志可以查询,下面我们指一下日志位置,有需要的小伙伴可能会用到。
tail -n 20 /opt/bitnami/apache2/logs/error_log
至此,教程结束,可能不算十分完整,但大概过程就是这样的。请小伙伴们指正~