【LNMP】网站架构分布式部署

发布于:2025-03-28 ⋅ 阅读:(27) ⋅ 点赞:(0)

一、安装Nginx服务

 1、关闭防火墙,将安装nginx所需软件包传到/opt目录下

systemctl stop ufw
systemctl disable ufw
apt update
apt install -y lrzsz

2、安装依赖包

        nginx的配置及运行需要pcre、zlib、openssl等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。
        build-essential: 包含编译工具如gcc、make等。
        libpcre3-dev: 用于正则表达式支持。
        zlib1g-dev: 用于压缩功能。
        libssl-dev: 提供SSL支持。

apt -y install libpcre3-dev zlib1g-dev libssl-dev build-essential

 3、创建运行用户、组

        Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限

useradd -M -s /sbin/nologin nginx

 4、编译安装Nginx

cd /opt
tar zxvf nginx-1.24.0.tar.gz

cd nginx-1.24.0/
./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_v2_module \
--with-http_sub_module \
--with-http_mp4_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

---------------------------------------------------------------------------------------
--prefix=/usr/local/nginx      
--user=nginx 和 --group=nginx   #指定了运行Nginx进程的用户和组。在这种情况下,它将是用户和组 nginx。
--with-http_ssl_module          #启用了对HTTP连接的SSL/TLS加密支持。
--with-http_v2_module           #启用了对HTTP2.0协议的支持。
--with-http_realip_module       #允许Nginx从X-Real-IP或X-Forwarded-For头部获取客户端的真实IP地址。
--with-http_stub_status_module  #启用了 stub_status 模块,提供了访问Nginx状态信息的方法。
--with-http_gzip_static_module  #启用了支持使用 .gz 扩展名提供预压缩文件的功能。
--with-pcre                     #启用了对Perl Compatible Regular Expressions(PCRE)库的支持。
--with-stream                   #启用了对TCP/UDP代理模块的支持。
--with-stream_ssl_module        #启用了对TCP/UDP连接的SSL/TLS加密支持。
--with-stream_realip_module     #允许Nginx从PROXY协议头部获取客户端的真实IP地址。

make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/		#让系统识别nginx的操作命令
chown -R nginx.nginx /usr/local/nginx

安装好后生成四个文件功能如下
        conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他的.conf文件则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件,配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。
        html:保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件是默认的错误页面提示页面。
        logs:保存nginx服务器的访问日志、错误日志等日志,logs目录可以放在其他路径,比如/var/logs/nginx里面。
        sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。

5、检查、启动、重启、停止 nginx服务

nginx -t                                #检查配置文件是否配置正确

启动

/usr/local/nginx/sbin/nginx                                    

二、安装 MySQL 服务

1、上传二进制压缩包并解压

tar xf mysql-8.0.41-linux-glibc2.28-x86_64.tar.xz -C /opt/
mv /opt/mysql-8.0.41-linux-glibc2.28-x86_64 /usr/local/mysql

2、创建运行用户

useradd -M -s /sbin/nologin  mysql

3、创建 mysql 配置文件

vim /etc/my.cnf
[client]
socket=/usr/local/mysql/mysql.sock
port = 3306

[mysql]
auto-rehash
prompt="\\u@\\h [\\d]> "

[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
character-set-server=utf8mb4
pid-file=/usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip_name_resolve=1
max_connections=1000
default-storage-engine=INNODB
max_allowed_packet=32M
server-id=1
default_authentication_plugin=mysql_native_password
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT

4、更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

 5、设置路径环境变量

echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile	
source /etc/profile

6、初始化数据库  

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

 7、添加mysqld系统服务

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld

 8、修改mysql 的登录密码

mysqladmin -u root password "abc123"

9、授权远程登录

mysql -u root -pabc123

#创建用户并设置密码:
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'abc123';

#赋予远程连接的权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' with grant option;

#刷新生效
mysql> flush privileges;

 

三、安装配置 PHP 解析环境

1、安装环境依赖包

apt install -y libgd-dev libjpeg8-dev libpng-dev libfreetype6-dev libxml2-dev zlib1g-dev libcurl4-openssl-dev libssl-dev libonig-dev libsqlite3-dev

2、编译安装

cd /opt 
tar xf php-8.3.16.tar.gz -C /opt/

cd /opt/php-8.3.16 
./configure \ 
--prefix=/usr/local/php \ 
--with-mysql-sock=/usr/local/mysql/mysql.sock \ 
--with-mysqli \ 
--with-pdo-mysql \ 
--with-zlib \ 
--with-curl \ 
--with-openssl \ 
--enable-fpm \ 
--enable-mbstring \ 
--enable-xml \ 
--enable-session \ 
--enable-ftp \ 
--enable-pdo \ 
--enable-tokenizer \


#--prefix=/usr/local/php: 指定PHP的安装目录为/usr/local/php。
#--with-mysql-sock=/usr/local/mysql/mysql.sock: 指定MySQL的Unix socket文件路径,用于与MySQL数据库建立连接。
#--with-mysqli: 启用MySQLi扩展,用于支持MySQL数据库。
#--with-zlib: 启用Zlib库,用于压缩和解压缩数据。
#--with-curl: 启用cURL库,用于支持对URL的操作,如下载文件等。
#--with-openssl: 启用OpenSSL库,用于支持SSL加密和HTTPS协议。
#--enable-fpm: 启用PHP-FPM(FastCGI Process Manager),用于提供更高效的PHP进程管理和请求处理。
#--enable-mbstring: 启用多字节字符串支持,用于处理多字节字符集的操作。
#--enable-xml: 启用XML支持,用于处理XML文档和数据。
#--enable-session: 启用会话支持,用于在不同页面间保持用户会话状态。
#--enable-ftp: 启用FTP支持,用于对FTP服务器进行操作。
#--enable-pdo: 启用PDO(PHP Data Objects),用于支持数据库访问的统一接口。
#--enable-tokenizer: 启用Tokenizer扩展,用于对字符串进行分词处理。

make && make install

3、路径优化

chown -R nginx:nginx /usr/local/php 
ln -s /usr/local/php/bin/* /usr/local/bin/ 
ln -s /usr/local/php/sbin/* /usr/local/sbin/

#验证命令 
php -m 
php --ini

4、调整PHP配置文件

php有三个配置文件:

php.ini php 

主配置文件
php-fpm.conf php-fpm 进程服务配置文件
www.conf php-fpm 扩展配置文件
#调整主配置文件:

cp /opt/php-8.3.16/php.ini-development /usr/local/php/lib/php.ini

vim /usr/local/php/lib/php.ini 
--987行--取消注释,修改 date.timezone = Asia/Shanghai 
--1196行--修改 mysqli.default_socket = /usr/local/mysql/mysql.sock

#调整进程服务配置文件:
cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf

vim php-fpm.conf
--17行--去掉";"注释
pid = run/php-fpm.pid

 

#调整扩展配置文件:
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

vim www.conf
--28行--修改
user = nginx
group = nginx
--41行--
listen = 127.0.0.1:9000

 

5、启动php-fpm
        PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。

cd /opt/php-8.3.16/sapi/fpm cp php-fpm.service /usr/lib/systemd/system/php-fpm.service

vim /usr/lib/systemd/system/php-fpm.service ProtectSystem=false

#当这个值为true的时候,php-fpm进程将以只读的方式挂载 /usr 目录

systemctl daemon-reload
systemctl start php-fpm.service
systemctl enable php-fpm.service

ss -lnpt | grep 9000

 6、配置 Nginx 支持 PHP 解析

vim /usr/local/nginx/conf/nginx.conf

location / {
      root   html;
      index  index.php index.html index.htm;
  }
--65行--取消注释,修改
  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;	 #将 /scripts 修改为nginx的网页目录
    #fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;          #$document_root 代表当前请求在root指令中指定的值
  	include        fastcgi_params;
  }

systemctl restart nginx.service

 

7、验证PHP 信息页

vim /usr/local/nginx/html/info.php
<?php
phpinfo();
?>

浏览器访问
http://本机IP/info.php

 

8、验证数据库工作是否正常

mysql -u root -p
CREATE DATABASE bbs;
create user 'bbsuser'@'localhost' identified by 'admin123';
create user 'bbsuser'@'%' identified by 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'%';
GRANT all ON bbs.* TO 'bbsuser'@'localhost';
flush privileges;

vim /usr/local/nginx/html/test.php      		#替换原来的测试页内容
<?php
$link=mysqli_connect('192.168.80.20','bbsuser','admin123');
if($link) echo "Success!!";
else echo "Fail!!";
?>

 

浏览器访问
http://本机地址/test.php

四、部署 Discuz!社区论坛 Web 应用

1、准备部署文件 

cd /opt

apt install -y unzip

unzip Discuz_X3.5_SC_UTF8.zip  -d /opt/bbs
cd /opt/dis/dir_SC_UTF8/config
cp config_global_default.php config_global.php
cp config_ucenter_default.php config_ucenter.php

cd /opt/bbs/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs

2、调整论坛目录的权限

cd /usr/local/nginx/html/

chown -R nginx:nginx bbs/

论坛页面访问

http://本机IP地址/bbs/install/index.php
数据库服务器:localhost     ###本地架设就用localhost或127.0.0.1,如果不是在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123
管理员账号:admin
管理员密码:admin123

访问论坛页面:

http://本机地址/bbs/index.php
http://本机地址/bbs/admin.php

 

fpm参数优化
Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整
根据服务器的内存与服务负载,调整FPM模块参数

vim /usr/local/php/etc/php-fpm.conf 
pid = run/php-fpm.pid

vim /usr/local/php/etc/php-fpm.d/www.conf
--96行--
pm = dynamic				#fpm进程启动方式,动态的
--107行--
pm.max_children=20			#fpm进程启动的最大进程数
--112行--
pm.start_servers = 5		#动态方式下启动时默认开启的进程数,在最小和最大之间
--117行--
pm.min_spare_servers = 2	#动态方式下最小空闲进程数
--122行--
pm.max_spare_servers = 8	#动态方式下最大空闲进程数

systemctl restart php-fpm.service
ps -elf | grep php-fpm