以下是为您提供的在LNMP平台中部署Web应用及LNAMP架构部署的详细指南。我将逐步解释每个步骤,确保结构清晰、内容可靠。部署过程基于Linux系统(如CentOS或Fedora),使用命令行操作。所有命令和配置均以代码块形式展示,便于复制执行。
一、在LNMP平台中部署Web应用
LNMP是Linux + Nginx + MySQL + PHP的架构,常用于部署Web应用。以下是完整步骤:
1. 编译安装 Nginx
Nginx作为Web服务器,需编译安装以优化性能。
(1) 用dnf安装支持软件
首先,安装编译所需的依赖包:
bash
dnf install -y gcc make openssl-devel pcre-devel zlib-devel
(2) 创建运行用户、组和日志目录
为Nginx创建专用用户和日志目录,提升安全性:
bash
useradd -r nginx
mkdir -p /var/log/nginx
chown nginx:nginx /var/log/nginx
(3) 编译安装Nginx
下载Nginx源码(如版本1.24.0),编译并安装:
bash
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
make
make install
(4) 添加 Nginx 系统服务
创建systemd服务文件,便于管理:
bash
cat > /etc/systemd/system/nginx.service <<EOF
[Unit]
Description=Nginx Web Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start nginx
systemctl enable nginx
2. 安装mysql服务
MySQL作为数据库服务,推荐使用dnf安装:
bash
dnf install -y mysql-server
systemctl start mysqld
systemctl enable mysqld
mysql_secure_installation # 运行安全脚本,设置root密码
3. 安装php-fpm服务
PHP-FPM处理PHP脚本,需编译安装以支持扩展。
(1) 依赖环境安装
安装PHP编译依赖:
bash
dnf install -y libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel
(2) 编译安装php
下载PHP源码(如版本8.1),编译并安装:
bash
wget https://www.php.net/distributions/php-8.1.0.tar.gz
tar zxvf php-8.1.0.tar.gz
cd php-8.1.0
./configure --prefix=/usr/local/php --enable-fpm --with-mysqli --with-openssl
make
make install
(3) 编写php-fpm启动脚本
创建systemd服务文件:
bash
cat > /etc/systemd/system/php-fpm.service <<EOF
[Unit]
Description=PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start php-fpm
systemctl enable php-fpm
(4) php-fpm参数优化
编辑配置文件以优化性能:
bash
vi /usr/local/php/etc/php-fpm.conf
# 修改参数,例如:
# pm = dynamic
# pm.max_children = 50
# pm.start_servers = 10
systemctl restart php-fpm
4. 测试LNMP协同工作
验证Nginx、MySQL和PHP-FPM是否能协同工作:
- 创建测试PHP文件:
bash
echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/info.php
- 在浏览器访问
http://服务器IP/info.php,应显示PHP信息页面。 - 测试MySQL连接:创建PHP脚本连接数据库,确保无错误。
5. 部署discuz论坛
Discuz是一个流行的PHP论坛系统:
- 下载Discuz源码:
bash
wget https://download.comsenz.com/DiscuzX/3.5/Discuz_X3.5_SC_UTF8.zip
unzip Discuz_X3.5_SC_UTF8.zip -d /usr/local/nginx/html/discuz
- 设置权限:
bash
chown -R nginx:nginx /usr/local/nginx/html/discuz
- 在浏览器访问
http://服务器IP/discuz,按向导安装,输入MySQL数据库信息。
二、LNAMP架构部署和实验
LNAMP(Linux + Nginx + Apache + MySQL + PHP)使用Nginx作为反向代理处理静态资源,Apache处理动态内容,实现动静分离。
1. Nginx反向代理配置
修改Nginx配置,作为反向代理指向Apache:
nginx
# 编辑 /usr/local/nginx/conf/nginx.conf
http {
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8080; # 指向Apache
proxy_set_header Host $host;
}
location ~ \.(jpg|png|css|js)$ {
root /usr/local/nginx/static; # 静态资源目录
expires 30d;
}
}
}
systemctl restart nginx
2. Nginx创建静态资源目录
创建并设置静态资源目录:
bash
mkdir -p /usr/local/nginx/static
chown nginx:nginx /usr/local/nginx/static
3. 搭建LAMP环境并验证
安装Apache和PHP模块:
bash
dnf install -y httpd php
systemctl start httpd
systemctl enable httpd
配置Apache监听8080端口:
bash
vi /etc/httpd/conf/httpd.conf
# 修改 Listen 8080
systemctl restart httpd
验证:访问 http://服务器IP:8080,应显示Apache默认页面。
4. 编写PHP动态页面
创建动态PHP文件测试:
bash
echo "<?php echo '动态内容: ' . date('Y-m-d H:i:s'); ?>" > /var/www/html/dynamic.php
访问 http://服务器IP/dynamic.php(通过Nginx代理),应显示当前时间。
5. 创建测试数据库
在MySQL中创建数据库和用户:
sql
CREATE DATABASE testdb;
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;
6. 验证动静分离效果
- 静态资源测试 :在
/usr/local/nginx/static放置图片(如test.jpg),访问http://服务器IP/test.jpg,应直接由Nginx提供。 - 动态内容测试 :访问
http://服务器IP/dynamic.php,应由Apache处理。 - 使用工具(如
curl)检查响应头,确认静态资源由Nginx服务,动态内容由Apache服务。
通过以上步骤,您已成功部署LNMP和LNAMP架构。部署过程需根据实际环境调整路径和参数。如果遇到问题,请检查日志(如 /var/log/nginx/error.log)进行调试。