写在前面

之前写过Centos 7通过yum安装PHP+nginx的自动化安装脚本,最近尝试安装了一下华为的OpenEuler,打算进行运行环境的测试,但是之前的自动化脚本是针对于Centos7的,对OpenEuler不适用,所以这次使用yum安装nginx,编译安装PHP7.4,部分内容为之前自动化脚本内容,直接复制过来的

安装

首先安装需要的环境

yum install -y gcc make autoconf glibc glibc-devel pkgconfig zlib-develr

然后安装nginx

yum -y install nginx
#启动nginx
systemctl start nginx
#设置开机启动
systemctl enbale nginx

安装完成后对nginx进行优化

#创建相关目录
wwwroot="/opt/www/wwwroot"
nginxconfig="/opt/www/config"
nginxlog="/opt/www/nginx_log"

mkdir -p $wwwroot
mkdir -p $nginxconfig
mkdir -p $nginxlog

chown -R nginx.root $wwwroot
chown -R nginx.root $nginxlog

#拷贝配置文件
cp -f fastcgi.conf $nginxconfig
cp -f pathinfo.conf $nginxconfig
cp -f rewrite.conf $nginxconfig
cp -f nginx.conf /etc/nginx/
cp -f default.conf /etc/nginx/conf.d/

#优化nginx
CPU_COUNT=`nproc`
NGINX_WORK_PROCESS=`expr $CPU_COUNT \* 2`
sed -i "s/^worker_processes.*/worker_processes $NGINX_WORK_PROCESS;/g" /etc/nginx/nginx.conf

#添加自动化分割日志
cat > /etc/logrotate.d/nginx_vhost << EOF
$nginxlog/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 \`cat /var/run/nginx.pid\`
                fi
        endscript
}

EOF

重启nginx后,nginx从安装到优化就已经配置完成了

编译安装PHP

安装依赖环境

yum -y install cmake libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libzip libzip-devel libsodium sqlite sqlite-devel oniguruma oniguruma-devel libwebp-devel

下载并解压PHP源码文件

wget https://www.php.net/distributions/php-7.4.9.tar.gz
tar -xvf php-7.4.9.tar.gz 
cd php-7.4.9

配置config参数(可根据需求添加扩展)

./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/etc/php.d --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-gd  --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --with-zip --with-jpeg --with-webp --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-freetype --enable-opcache --disable-fileinfo

配置完成后会出现下面的提示

接着进行编译并安装

构建完成后会出现下面的提示

make && make install

构建完成后会出现下面的提示

创建PHP可执行文件的软连接并查看版本

ln -s /usr/local/php7/bin/php /usr/bin/php
php -v

配置php-fpm并设置开机启动

#复制php配置文件
cp php.ini-production /usr/local/php7/etc/php.ini
#进入配置目录
cd /usr/local/php7/etc
#复制fpm配置文件
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
#复制系统托管文件
cp /root/php-7.4.9/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
#给托管文件加可执行权限
chmod +x /etc/init.d/php-fpm
#添加开机启动
chkconfig --add php-fpm
chkconfig php-fpm on
#启动PHP-FPM
systemctl start php-fpm

查看启动状态

优化PHP-FPM

REMI_ROOT=/usr/local/php7
PHP_FPM_CONFIG_FILE=$REMI_ROOT/etc/php-fpm.d/www.conf

sed -i "s#^listen = 127.*#listen = /run/php-fpm.sock#g" $PHP_FPM_CONFIG_FILE
sed -i "s/^user = apache/user = nginx/g" $PHP_FPM_CONFIG_FILE
sed -i "s/^group = apache/group = nginx/g" $PHP_FPM_CONFIG_FILE
sed -i "s/^;listen.backlog.*/listen.backlog = -1/g" $PHP_FPM_CONFIG_FILE
sed -i "s/^;listen.owner =.*/listen.owner = nginx/g" $PHP_FPM_CONFIG_FILE
sed -i "s/^;listen.group =.*/listen.group = nginx/g" $PHP_FPM_CONFIG_FILE
sed -i "s/^;listen.mode =.*/listen.mode = 0660/g" $PHP_FPM_CONFIG_FILE
sed -i "s/^php_value/;php_value/g" $PHP_FPM_CONFIG_FILE

PHP_INI_CONFIG_FILE=$REMI_ROOT/etc/php.ini

sed -i "s/upload_max_filesize.*/upload_max_filesize = 12M/g" $PHP_INI_CONFIG_FILE
sed -i "s#^;date.timezone.*#date.timezone = 'Asia/Shanghai'#g" $PHP_INI_CONFIG_FILE
sed -i "s/expose_php =.*/expose_php = Off/" $PHP_INI_CONFIG_FILE

创建一个phpinfo文件测试是否可用

echo "<?php echo phpinfo();?>" > $wwwroot/index.php

通过浏览器访问,出现信息表示安装成功

到此为止在OpenEuler中搭建PHP7.4+Nginx的运行环境就已经配置完成了,还可以在主目录中添加user.ini文件,限制不可跳转出主目录

echo "open_basedir=$wwwroot/:/tmp/:/proc/" > $wwwroot/.user.ini

相关配置文件请到我之前写的PHP7.4自动安装脚本文章获取点我跳转