在Linux中安装nginx-1.20.1+php-7.4.28(增加扩展)

Nginx+PHP安装在公网IP为x.x.x.x的服务器上

需要下载安装的软件版本:nginx-1.20.1+php-7.4.28

需要增加的PHP扩展如下:

在编译安装php-7.4.28时加上的pcntl;

单独下载安装的Wxwork_finance_sdk;(在编译安装php-7.4.28时加上--disable-intl)

单独下载安装的版本在4.5~5.0之间的Swoole;

单独下载安装的FFmpeg。

安装 N ginx

第一步,安装编译工具及库文件。

命令:yum -y install make automake autoconf libtool zlib zlib-devel gcc gcc-c++ openssl openssl-devel pcre pcre-devel

第二步,安装nginx。

下载Nginx

命令:cd /usr/local/src/

wget http://nginx.org/download/nginx-1.20.1.tar.gz

解压安装包

命令:tar zxvf nginx-1.20.1.tar.gz

编译安装

命令:cd nginx-1.20.1

./configure \

--prefix=/usr/local/nginx \

--sbin-path=/usr/sbin/nginx \

--conf-path=/etc/nginx/nginx.conf \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--pid-path=/var/run/nginx.pid \

--lock-path=/var/run/nginx.lock \

--http-client-body-temp-path=/var/tmp/nginx/client \

--http-proxy-temp-path=/var/tmp/nginx/proxy \

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \

--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

--http-scgi-temp-path=/var/tmp/nginx/scgi \

--with-pcre \

--with-http_v2_module \

--with-http_ssl_module \

--with-http_realip_module \

--with-http_addition_module \

--with-http_sub_module \

--with-http_dav_module \

--with-http_flv_module \

--with-http_mp4_module \

--with-http_gunzip_module \

--with-http_gzip_static_module \

--with-http_random_index_module \

--with-http_secure_link_module \

--with-http_stub_status_module \

--with-http_auth_request_module \

--with-mail \

--with-mail_ssl_module \

--with-file-aio \

--with-http_v2_module \

--with-threads \

--with-stream \

--with-stream_ssl_module

make && make install

查看nginx版本

命令:/usr/sbin/nginx -v

或 /usr/sbin/nginx -V

结果显示"nginx version: nginx-1.20.1",nginx就安装完成。

nginx 配置

第一步,创建 Nginx 运行使用的用户nginx。

命令:useradd nginx

或 useradd -s /sbin/nologin -M nginx

第二步,修改nginx.conf配置文件。

nginx.conf路径为/etc/nginx/nginx.conf。nginx.conf内容如下:

复制代码
user nginx nginx;  #用户名设置为刚刚创建的用户名

worker_processes  4; #允许生成的进程数,默认为1

worker_cpu_affinity 0001 0010 0100 1000;

error_log  /var/log/nginx/error.log info; #日志位置和级别

pid      /var/run/nginx.pid; #指定nginx进程运行文件存放地址

worker_rlimit_nofile 102400; #最大连接数,默认为512

events {

    use epoll; #事件驱动模型

    worker_connections 102400; #最大连接数,默认为512

    accept_mutex off; #设置网路连接序列化,防止惊群现象发生,默认为on

    multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off

}

http

{

    include mime.types;

    default_type application/octet-stream;

     client_max_body_size 20m;

    ...

    server

   {

        listen 80;  #监听端口

        server_name localhost;  #域名,当前ip地址

        location / {

             root   /usr/local/nginx/html;

             index  index.html index.htm;

        }

        ...

}

第三步,检查配置文件nginx.conf的正确性。

命令:/usr/sbin/nginx -t

若结果显示"nginx: [emerg] mkdir() "/var/tmp/nginx/client" failed (2: No such file or directory) nginx: configuration file /etc/nginx/nginx.conf test failed",则说明服务无法启动。可以使用命令"mkdir -p /var/tmp/nginx"创建目录,然后再次运行命令"/usr/sbin/nginx -t"就可以了。

若结果显示"nginx: configuration file /etc/nginx/nginx.conf test is successful",则说明nginx安装和配置成功。

nginx启动 和访问站点

第一步,启动nginx。

命令:/usr/sbin/nginx

第二步,检查是否已经启动。(查看是否有进程)

命令:ps -ef | grep nginx

结果的第一行显示"nginx:master process",nginx已经启动。

注意:nginx:master process后面有一个路径,这就是nginx的安装路径。

第三步,访问站点。

从浏览器访问已经配置好的站点IP,如果页面显示"Welcome to nginx!",则说明Nginx已经安装及配置好了。

nginx关闭和重启

第一步,关闭nginx。

命令:/usr/sbin/nginx -s stop

第二步,配置文件修改后,需要指定配置文件进行重启。

如果nginx服务已经停止,那就需要把nginx服务启动。

命令:/usr/sbin/nginx -c /etc/nginx/nginx.conf

重启nginx服务必须是在nginx服务已经启动的情况下进行,因为这时,/var/run中存在nginx.pid文件。

命令:/usr/sbin/nginx -s reload

不进入nginx根目录即可进行相应的操作

第一步,新建nginx启动脚本代码。

在文件夹/etc/init.d中新建名为nginx的文件,然后写入下面代码成为脚本文件。代码如下:

复制代码
#!/bin/bash

# nginx Startup script for the Nginx HTTP Server

# it is v.0.0.2 version.

# chkconfig: - 85 15

# description: Nginx is a high-performance web and proxy server.

#              It has a lot of features, but it's not for everyone.

# processname: nginx

# pidfile: /var/run/nginx.pid

# config: /usr/local/nginx/conf/nginx.conf

nginxd=/usr/sbin/nginx

nginx_config=/etc/nginx/nginx.conf

nginx_pid=/var/run/nginx.pid

RETVAL=0

prog="nginx"

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0

[ -x $nginxd ] || exit 0

# Start nginx daemons functions.

start() {

if [ -e $nginx_pid ];then

   echo "nginx already running...."

   exit 1

fi

   echo -n $"Starting $prog: "

   daemon $nginxd -c ${nginx_config}

   RETVAL=$?

   echo

   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx

   return $RETVAL

}

# Stop nginx daemons functions.

stop() {

        echo -n $"Stopping $prog: "

        killproc $nginxd

        RETVAL=$?

        echo

        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid

}

# reload nginx service functions.

reload() {

    echo -n $"Reloading $prog: "

    #kill -HUP `cat ${nginx_pid}`

    killproc $nginxd -HUP

    RETVAL=$?

    echo

}

# See how we were called.

case "$1" in

start)

        start

        ;;

stop)

        stop

        ;;

reload)

        reload

        ;;

restart)

        stop

        start

        ;;

status)

        status $prog

        RETVAL=$?

        ;;

*)

        echo $"Usage: $prog {start|stop|restart|reload|status|help}"

        exit 1

esac

exit $RETVAL

第二步,给予/etc/init.d/nginx文件权限。

命令:chmod +x /etc/init.d/nginx

设置开机自启

命令:chkconfig --add nginx

chkconfig nginx on

检查nginx命令

命令:service nginx

结果显示Usage: nginx {start|stop|restart|reload|status|help}

第三步,检查一下脚本是否有用。

命令:/sbin/chkconfig nginx on

sudo /sbin/chkconfig --list nginx

如果结果显示"nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off",则说明脚本文件有用。

第四步,服务器重启后,查看nginx是否成功自动启动。

与"nginx启动和访问站点"中的第二步和第三步一样操作。

命令:shutdown -r now #立刻重启

或 reboot #立刻重启

或 init 6 #立刻重启

或 shutdown -r 10 #过10分钟自动重启

第五步,nginx启动、关闭以及重启命令。

命令:ps -ef | grep nginx

systemctl start nginx

systemctl stop nginx

systemctl reload nginx

service nginx start

service nginx stop

service nginx reload

安装 PHP-7.4.28

第一步,添加 epel 源。

命令:rpm -Uvh ++++https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/e/epel-release-8-19.el8.noarch.rpm++++

若结果显示安装失败,则需要先检测系统是否自带安装epel。

命令:rpm -qa | grep epel

若结果显示类似"epel-aliyuncs-release-8-15.1.al8.noarch",则可以选择进行卸载。

普通删除模式

rpm -e epel-aliyuncs-release-8-15.1.al8.noarch

如果使用普通删除模式命令删除时,提示有依赖的其它文件,则用强力删除模式命令对其进行强力删除

rpm -e --nodeps epel-aliyuncs-release-8-15.1.al8.noarch

第二步,安装编译工具及库文件。

命令:yum -y install bzip2-devel bison-devel cmake curl-devel e2fsprogs-devel epel-release freetype-devel gcc gcc-c++ glibc-devel glib2-devel gmp-devel krb5-devel libcurl-devel libedit-devel libicu-devel libidn-devel libjpeg-devel libmcrypt-devel libpng-devel libxml2-devel libxslt-devel libzip-devel mhash-devel ncurses-devel net-snmp-devel oniguruma-devel openldap openldap-devel openssl-devel readline-devel sqlite-devel uuid libuuid-devel zlib-devel

把libldap*复制到/usr/lib文件夹

命令:cp -frp /usr/lib64/libldap* /usr/lib/

第三步,下载 php-7.4.28。

登录网址:PHP: Releases下载php-7.4.28.tar.gz安装包。也可以使用wget命令下载。

命令:cd /usr/local/src

wget https://www.php.net/releases/php-7.4.28.tar.gz

第四步,解压及编译安装 php-7.4.28。

解压php-7.4.28.tar.gz

命令:cd /usr/local/src

tar zxvf php-7.4.28.tar.gz

进入解压后的文件夹配置php-7.4.28.tar.gz

命令:cd /usr/local/src/php-7.4.28

./configure \

--prefix=/usr/local/php7.4 \

--with-config-file-path=/etc \

--with-fpm-user=nginx \

--with-fpm-group=nginx \

--with-openssl \

--with-pdo-mysql \

--with-mysqli \

--with-iconv-dir \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir \

--with-pcntl \

--with-zlib \

--with-libxml-dir \

--with-curl \

--with-mcrypt \

--with-libmbfl \

--with-mhash \

--with-xmlrpc \

--with-gettext \

--with-pear \

--with-ldap=shared \

--disable-rpath \

--disable-fileinfo \

--disable-intl \

--enable-fpm \

--enable-mysqlnd \

--enable-xml \

--enable-bcmath \

--enable-shmop \

--enable-sysvsem \

--enable-inline-optimization \

--enable-mysqlnd-compression-support \

--enable-mbregex \

--enable-mbstring \

--enable-ftp \

--enable-gd-jis-conv \

--enable-gd-native-ttf \

--enable-pcntl \

--enable-sockets \

--enable-zip \

--enable-soap \

--enable-opcache \

--enable-maintainer-zts \

--enable-gd \

--with-jpeg \

--with-freetype

若结果显示"Thank you for using PHP.",则说明PHP配置成功。

编译安装php-7.4.28.tar.gz,make需要花费较长时间(10~20min)

命令:make && make install

若结果显示"Build complete. Don't forget to run 'make test'.",则说明PHP编译安装成功。

命令:make test

第五步,查看环境变量和php版本。

命令:/usr/local/php7.4/sbin/php-fpm -v

第六步,配置php-fpm。

命令:cd /usr/local/src/php-7.4.28/

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

cd /usr/local/php7.4/etc/

cp php-fpm.conf.default php-fpm.conf

cd /usr/local/php7.4/etc/php-fpm.d/

cp www.conf.default www.conf

第七步,编辑php-fpm.conf和php.ini文件。

编辑/usr/local/php7.4/etc/php-fpm.conf文件时,需要修改成

"pid = /usr/local/php7.4/var/run/php-fpm.pid",取消前面的分号。

编辑/etc/php.ini文件时,需要修改成

"cgi.fix_pathinfo=0

max_execution_time = 0

max_input_time = 600

post_max_size = 200M

upload_max_filesize = 200M

date.timezone = PRC",取消前面的分号。

第八步,设置php-fpm开机启动。

命令:cd /usr/local/src/php-7.4.28/sapi/fpm/

cp init.d.php-fpm /etc/init.d/php7.4-fpm

为php7.4-fpm添加执行权限

命令:chmod +x /etc/init.d/php7.4-fpm

设置开机启动

命令:chkconfig php7.4-fpm on

第九步,配置nginx支持php。

编辑/etc/nginx/nginx.conf文件,做出如下修改:

复制代码
server {

        listen       80;

        server_name  localhost;

        location / {

            root   /usr/local/nginx/html;

            index  index.html index.htm index.php;

        }

        location ~ \.php$ {

            root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;

            include        fastcgi_params;

        }

}

第十步,启动php7.4-fpm。

启动php7.4-fpm

命令:service php7.4-fpm start

或 /etc/init.d/php7.4-fpm start

关闭php7.4-fpm

命令:service php7.4-fpm stop

或 /etc/init.d/php7.4-fpm stop

重启php7.4-fpm

命令:service php7.4-fpm restart

或 /etc/init.d/php7.4-fpm restart

第十一步,查看php7.4-fpm是否启动成功。

命令:lsof -i:9000

lsof -i:80

查看php进程

ps -ef | grep php

第十二步,在/usr/local/nginx/html下创建phpinfo.php文件。

在/usr/local/nginx/html/phpinfo.php中写入下面的代码:

复制代码
<?php

phpinfo();

第十三步,访问。

在浏览器中登录网址:http://x.x.x.x/phpinfo.php,若页面出现"PHP Version 7.4.28"等信息,则说明PHP配置成功。

安装Wxwork_finance_sdk

第一步,下载Wxwork_finance_sdk。

登录地址:https://github.com/pangdahua/php7-wxwork-finance-sdk/releases/tag/1.2.0下载安装包php7-wxwork-finance-sdk-1.2.0.tar.gz。然后使用WinSCP将安装包上传到文件夹/usr/local/src中。使用wget命令下载sdk_20201116.rar。

命令:cd /usr/local/src/

wget https://wwcdn.weixin.qq.com/node/wework/images/sdk_20201116.rar

第二步,安装可以解压.rar文件的软件。

下载

命令:cd /usr/local/src/

wget https://www.rarlab.com/rar/rarlinux-x64-612.tar.gz

解压

命令:tar -xzpvf rarlinux-x64-612.tar.gz

安装

命令:cd /usr/local/src/rar

make

第三步,解压Wxwork_finance_sdk安装包。

命令:cd /usr/local/src/

tar -zxvf php7-wxwork-finance-sdk-1.2.0.tar.gz

rar x sdk_20201116.rar

第四步,复制sdk_20201116/C_sdk中的文件到php7-wxwork-finance-sdk-1.2.0文件夹中。

命令:cd /usr/local/src/sdk_20201116/C_sdk/

cp libWeWorkFinanceSdk_C.so /usr/local/src/php7-wxwork-finance-sdk-1.2.0

cp WeWorkFinanceSdk_C.h /usr/local/src/php7-wxwork-finance-sdk-1.2.0

第五步,查找phpize和php-config,这两个文件在同一目录下。

命令:find / -name phpize

find / -name php-config

第六步,执行phpize。

命令:cd /usr/local/src/php7-wxwork-finance-sdk-1.2.0/

/usr/local/php7.4/bin/phpize

第七步,编译安装Wxwork_finance_sdk。

命令:cd /usr/local/src/php7-wxwork-finance-sdk-1.2.0/

./configure \

--with-php-config=/usr/local/php7.4/bin/php-config \

--with-wxwork-finance-sdk=/usr/local/src/php7-wxwork-finance-sdk-1.2.0

make && make install

若结果显示"Build complete. Don't forget to run 'make test'.",则说明Wxwork_finance_sdk编译安装成功。

命令:make test

第八步,查看扩展。

根据编译安装完成后,结果提示编译后扩展的位置,切换到给出的目录,查看扩展是否已经生成

命令:cd /usr/local/php7.4/lib/php/extensions/no-debug-zts-20190902/

ls

若该目录存在"wxwork_finance_sdk.so",则说明扩展编译成功。

第九步,配置/etc/php.ini文件。

编辑/etc/php.ini文件时,需要修改成

";extension=ffi

extension=wxwork_finance_sdk.so"。

第十步,重启php7.4-fpm。

命令:service php7.4-fpm restart

或 /etc/init.d/php7.4-fpm restart

若结果显示"free(): invalid pointer Aborted (core dumped)",则需要先确认是否由于intl导致的扩展冲突,然后确认wxwork_finance_sdk是否与swoole冲突。

建议在编译安装php-7.4.28时加上"--disable-intl",去掉"--enable-intl",然后优先安装wxwork_finance_sdk,再安装swoole。

第十一步,查看列出的扩展是否存在wxwork_finance_sdk。

命令:/usr/local/php7.4/sbin/php-fpm -m

若结果显示存在"wxwork_finance_sdk"扩展且没有报错,则说明wxwork_finance_sdk拓展安装配置成功。

第十二步,访问。

在浏览器中登录网址:http://x.x.x.x/phpinfo.php,若页面出现"wxwork_finance_sdk"信息,则说明wxwork_finance_sdk拓展安装配置成功。

安装Swoole

第一步,下载Swoole。

登录地址:https://pecl.php.net/package/swoole下载安装包swoole-4.6.2.tgz。然后使用WinSCP将安装包上传到文件夹/usr/local/src中。也可以使用wget命令下载。

命令:cd /usr/local/src/

wget https://pecl.php.net/get/swoole-4.6.2.tgz

第二步,解压Swoole安装包。

命令:cd /usr/local/src/

tar -zxvf swoole-4.6.2.tgz

第三步,查找phpize和php-config,这两个文件在同一目录下。

命令:find / -name phpize

find / -name php-config

第四步,执行phpize。

命令:cd /usr/local/src/swoole-4.6.2/

/usr/local/php7.4/bin/phpize

第五步,编译安装Swoole。

命令:cd /usr/local/src/swoole-4.6.2/

./configure \

--with-php-config=/usr/local/php7.4/bin/php-config

make && make install

若结果显示"Build complete. Don't forget to run 'make test'.",则说明Swoole编译安装成功。

命令:make test

第六步,配置/etc/php.ini文件。

编辑/etc/php.ini文件时,需要修改成

";extension=ffi

extension=swoole.so"。

第七步,重启php7.4-fpm。

命令:service php7.4-fpm restart

或 /etc/init.d/php7.4-fpm restart

第八步,访问。

在浏览器中登录网址:http://x.x.x.x/phpinfo.php,若页面出现"swoole"信息,则说明swoole拓展安装配置成功。

安装FFmpeg

第一步,下载FFmpeg。

登录地址:John Van Sickle - FFmpeg Static Builds下载安装包ffmpeg-git-amd64-static.tar.xz。然后使用WinSCP将安装包上传到文件夹/usr/local/src中。也可以使用wget命令下载。

命令:cd /usr/local/src/

wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz

第二步,解压FFmpeg安装包。

命令:cd /usr/local/src/

tar -xvf ffmpeg-git-amd64-static.tar.xz

mv ffmpeg-git-20230915-amd64-static ffmpeg-git-amd64

第三步,编译安装FFmpeg。

命令:cd /usr/local/src/ffmpeg-git-amd64/

./ffmpeg

若结果显示"Hyper fast Audio and Video encoder",则说明FFmpeg编译安装成功。

相关推荐
幻雨様2 小时前
UE5多人MOBA+GAS 45、制作冲刺技能
android·ue5
Jerry说前后端3 小时前
Android 数据可视化开发:从技术选型到性能优化
android·信息可视化·性能优化
Meteors.4 小时前
Android约束布局(ConstraintLayout)常用属性
android
alexhilton5 小时前
玩转Shader之学会如何变形画布
android·kotlin·android jetpack
whysqwhw9 小时前
安卓图片性能优化技巧
android
风往哪边走9 小时前
自定义底部筛选弹框
android
Yyyy48210 小时前
MyCAT基础概念
android
Android轮子哥10 小时前
尝试解决 Android 适配最后一公里
android
雨白11 小时前
OkHttp 源码解析:enqueue 非同步流程与 Dispatcher 调度
android
风往哪边走12 小时前
自定义仿日历组件弹框
android