某客户实际部署需要内网离线部署LNMP环境
环境版本
PHP 8.1
MySQL 5.7
NGINX 1.22
Redis 7.2
需要在有网络的同系统电脑上下载rpm包,复制到离线环境的服务器上进行安装rpm。
操作系统Cent OS 7.9 x64
端口放行
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
启用 EPEL 仓库
yum install epel-release
添加用户组www
groupadd www
添加用户 www
useradd -m -g www www
# useradd -m -g 组名 新建用户名
创建环境的相关目录
mkdir -p /www/server/tmp
下载相关的包
yumdownloader --resolve --destdir /www/server/tmp gcc gcc-c++ libxml2 libxml2-devel autoconf openssl-devel sqlite-devel libcurl-devel libpng-devel libjpeg-devel freetype-devel oniguruma-devel
安装下载的RPM包
rpm -ivh --force --nodeps /www/server/tmp/*.rpm
安装PHP8.1
配置PHP8.1和编译PHP8.1
PHP源码下载
https://www.php.net/downloads.php#v8.1.27
创建PHP最终生成目录
mkdir -p /www/server/php/81
配置各种选项
./configure -prefix=/www/server/php/81 -enable-fpm -with-fpm-user=www -with-fpm-group=www -enable-mysqlnd -with-mysqli=mysqlnd -with-pdo-mysql=mysqlnd -with-iconv-dir -with-freetype -with-jpeg -with-zlib -with-libxml-dir=/usr -enable-xml -disable-rpath -enable-bcmath -enable-shmop -enable-sysvsem -enable-inline-optimization -enable-mbregex -enable-mbstring -enable-pcntl -enable-ftp -enable-gd -with-mhash -enable-pcntl -enable-sockets -with-xmlrpc -enable-soap -with-gettext -disable-fileinfo -enable-opcache -with-openssl -with-curl
编译并安装
make -j 8 && make install
创建php的配置目录
mkdir -p /usr/local/php/
mkdir -p /usr/local/etc/php-fpm.d
将PHP源码目录内的配置文件复制出来
cp /www/server/tmp/php-8.1.27/php.ini-development /www/server/php/81/lib/php.ini
cp /www/server/php/81/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
cp /www/server/php/81/sbin/php-fpm /usr/local/bin
修改配置文件
vim /www/server/php/81/lib/php.ini
把cgi.fix_pathinfo启用并改为0
cgi.fix_pathinfo=0
创建log目录
mkdir -p /www/server/php/81/var/log
创建日志文件
touch /www/server/php/81/var/log/php-fpm.log
创建run目录
mkdir -p /www/server/php/81/var/run
创建php-fpm.conf
vim /www/server/php/81/etc/php-fpm.conf
填入以下内容
[global] pid = /www/server/php/81/var/run/php-fpm.pid error_log = /www/server/php/81/var/log/php-fpm.log log_level = notice [www] listen = /tmp/php-cgi-81.sock listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www pm = dynamic pm.status_path = /phpfpm_81_status pm.max_children = 30 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10 request_terminate_timeout = 100 request_slowlog_timeout = 30 slowlog = var/log/slow.log
启动fpm没有报错就说明配置文件已经配置正确
/www/server/php/81/sbin/php-fpm -y /www/server/php/81/etc/php-fpm.conf
PHP拓展安装
安装Swoole 5.0
源码下载
https://pecl.php.net/get/swoole-5.0.3.tgz
解压
tar zxvf swoole-5.0.3.tgz
配置、编译、安装
/www/server/php/81/bin/phpize && ./configure --with-php-config=/www/server/php/81/bin/php-config
make && make install
把swoole.so拓展加入到php.ini文件
vim /www/server/php/81/lib/php.ini
加一句
extension=swoole.so
重启PHP,在PHP Info能看到Swoole就说明安装成功
安装Redis拓展
下载地址
https://github.com/phpredis/phpredis/archive/refs/tags/6.0.2.tar.gz
解压
tar zxvf phpredis-6.0.2.tar.gz
配置、编译、安装
/www/server/php/81/bin/phpize && ./configure --with-php-config=/www/server/php/81/bin/php-config
make -j 8 && make install
把redis.so拓展加入到php.ini文件
vim /www/server/php/81/lib/php.ini
加一句
extension=redis.so
重启PHP,在PHP Info能看到Redis就说明安装成功
MySQL 5.7安装(RPM方式)
下载地址
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar
CentOS 7默认数据库是MariaDB,需要卸载
先查询
rpm -qa | grep mariadb
卸载MariaDB
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
安装MySQL,注意RPM是有安装顺序的
rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm rpm -ivh mysql-community-devel-5.7.44-1.el7.x86_64.rpm
启动MySQL
service mysqld start
查看管理员默认密码
grep 'temporary password' /var/log/mysqld.log
登录进去
mysql -uroot -p'iXrgg&Ps-2YT'
修改ROOT账户的密码(注意这里需要大小写字母数字和符号)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'CQSqy@123';
配置远程连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'CQSqy@123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Redis安装
创建目录
mkdir -p /www/server/redis
下载地址
https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.2.4
解压
tar zxvf redis-7.2.4.tar.gz
编译并安装
make && make install
启动Redis
redis-server
启动Redis(后台启动)
redis-server -daemonize yes
Nginx 1.22安装
下载地址
https://nginx.org/download/nginx-1.22.1.tar.gz
Nginx所需要的依赖
yumdownloader --resolve --destdir /www/server/tmp libtermcap-devel ncurses-devel libevent-devel readline-devel libuuid-devel gd gd-devel
创建NGINX的目录
mkdir -p /www/server/nginx
配置
./configure --user=www --group=www --prefix=/www/server/nginx --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt="-Wl,-E" --with-cc-opt="-Wno-error"
编译并安装
make && make install
配合PHP使得Nginx和PHP能联合使用
nginx使用nginx.conf启动
/www/server/nginx/sbin/nginx -c /www/server/nginx/conf/nginx.conf
php-fpm使用php-fpm.conf启动
/www/server/php/81/sbin/php-fpm -y /www/server/php/81/etc/php-fpm.conf