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

相关推荐
荣--16 小时前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森17 小时前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜1 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB2 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode4 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220704 天前
如何搭建本地yum源(上)
运维
ping某6 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树887 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠7 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质7 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务