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)进行调试。

相关推荐
有毒的教程5 小时前
Ubuntu 虚拟机磁盘空间不足完整解决教程
linux·运维·ubuntu
geNE GENT5 小时前
Nginx WebSocket 长连接及数据容量配置
运维·websocket·nginx
Cx330❀7 小时前
一文吃透Linux System V共享内存:原理+实操+避坑指南
大数据·linux·运维·服务器·人工智能
薛定谔的悦7 小时前
储能系统(EMS)核心架构解析:充放电控制、防逆流、防过载与 PID 调节
linux·运维·架构
志栋智能7 小时前
超自动化运维的终极目标:让系统自治运行
运维·网络·人工智能·安全·自动化
阿 才7 小时前
WSL2 + TFTP + 网络启动(Linux开发板与WSL2建立网络连接)
linux·运维·网络
Benszen8 小时前
Docker容器化技术全解析
运维·docker·容器
IMPYLH8 小时前
Linux 的 false 命令
linux·运维·服务器·bash
小江的记录本8 小时前
【Linux】《Linux常用命令汇总表》
linux·运维·服务器·前端·windows·后端·macos
小百菜8 小时前
Keepalived + Nginx 实现高可用
nginx·keepalived