LNAMP 网站架构与部署

以下是为您提供的在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)进行调试。

相关推荐
linux修理工2 小时前
下载亚马逊Corretto 17的方法(OpenJDK 17发行版)
java·运维·服务器
gbling2 小时前
网页多次重定向问题
运维·nginx
Xi-Xu2 小时前
在云服务器上安全运行 OpenClaw:从安装到加固的完整指南
运维·服务器·人工智能·安全
孫治AllenSun2 小时前
【Linux】配置服务自启动
linux·运维·服务器
海特伟业3 小时前
隧道调频广播覆盖-隧道调频广播无线覆盖系统建设要点、难点分析与解决应对
运维·设计模式
中国IT3 小时前
第3章:Docker与传统虚拟化比较
运维·docker·容器
洛菡夕3 小时前
nginx核心功能
linux·nginx
九硕智慧建筑一体化厂家3 小时前
DDC:看似普通的存在,在楼宇自控系统中却主宰智能建筑高效运行?
大数据·运维·人工智能·网络协议·制造·设计规范
原来是猿3 小时前
Linux - 基础IO【下】
linux·运维·服务器