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

相关推荐
三十..1 天前
Ceph 三大存储接口深度实践与数据保护指南
运维·ceph
蝶豆花1 天前
基于商城系统的功能,自动化,性能-测试报告
运维·自动化
袋鼠云数栈1 天前
从前端到基础设施,ACOS 如何打通企业全链路可观测
运维·前端·人工智能·数据治理·数据智能
黎阳之光1 天前
视频孪生智护供水生命线:黎阳之光赋能医疗与园区水务高质量升级
运维·物联网·算法·安全·数字孪生
志栋智能1 天前
AI驱动无代码:降低巡检超自动化的门槛
大数据·运维·网络·人工智能·自动化
AOwhisky1 天前
Ceph系列第六期:Ceph 文件系统(CephFS)精讲
linux·运维·网络·笔记·ceph
Land03291 天前
RPA网页自动化:元素定位失效的7种根因与XPath鲁棒性改造方案
运维·selenium·自动化·rpa
zh_yt1 天前
auto-connect remote ssh server
运维·ssh
Lumbrologist1 天前
【零基础部署】Docker 部署 AutoGen 多 Agent 对话框架保姆级教程
运维·docker·容器
feng14561 天前
OpenSREClaw - AI 本体论思维
运维·人工智能