LNMP 架构部署

目录

一、基于授权的访问控制

(一)功能简介

(二)配置步骤

二、基于客户端的访问控制

(一)功能简介

(二)配置步骤

[三、Nginx 虚拟主机](#三、Nginx 虚拟主机)

(一)基于域名的虚拟主机

[(二)基于 IP 的虚拟主机](#(二)基于 IP 的虚拟主机)

(三)基于端口的虚拟主机

[四、LNMP 架构部署](#四、LNMP 架构部署)

[(一)编译安装 MySQL](#(一)编译安装 MySQL)

[(二)安装 PHP 解析环境](#(二)安装 PHP 解析环境)

[(三)配置 Nginx 支持 PHP](#(三)配置 Nginx 支持 PHP)

[(四)部署 Web 应用(以 Discuz 为例)](#(四)部署 Web 应用(以 Discuz 为例))

总结


一、基于授权的访问控制

(一)功能简介

Nginx 支持通过用户名和密码对访问特定目录或网站的客户端进行认证,配置逻辑与 Apache 相似,核心步骤包括生成认证文件、修改配置和重启服务。

(二)配置步骤
  1. 生成用户密码认证文件
  • 首先安装 ​httpd-tools​(包含 ​htpasswd​ 工具):

    yum -y install httpd-tools

  • 创建认证文件并添加用户(​-c​ 表示首次创建文件,路径为 ​/usr/local/nginx/passwd.db​,用户名为 ​test​):

    htpasswd -c /usr/local/nginx/passwd.db test

  1. 设置文件权限与所有者
  • 确保只有 Nginx 运行用户可读取文件(假设 Nginx 用户为 ​nginx​):

    chmod 400 /usr/local/nginx/passwd.db # 只读权限
    chown nginx /usr/local/nginx/passwd.db # 所有者设为 nginx

  1. 修改 Nginx 主配置文件
    编辑 ​nginx.conf​,在目标 ​location​ 块中添加认证配置:

    server {
    listen 80;
    server_name localhost;

    复制代码
     location / {
         root html;
         index index.html index.htm;
         
         auth_basic "secret";  # 认证提示信息
         auth_basic_user_file /usr/local/nginx/passwd.db;  # 认证文件路径
     }

    }

  2. 验证配置并重启服务

    nginx -t # 检测语法正确性
    systemctl restart nginx # 重启 Nginx 使配置生效

  3. 访问测试 浏览器输入服务器 IP(如 ​http://192.168.10.101​),会弹出登录框,输入正确用户名密码即可访问。

二、基于客户端的访问控制

(一)功能简介

通过 ​​deny​​​ 和 ​​allow​​ 规则,根据客户端 IP 或 IP 段控制访问,规则按顺序执行,匹配即停止。

(二)配置步骤

在 ​​location​​​ 块中添加 IP 过滤规则(示例:拒绝 ​​192.168.10.3​​,允许其他所有 IP):

复制代码
location / {
    root html;
    index index.html index.htm;
    
    deny 192.168.10.3;  # 拒绝单个 IP
    allow all;  # 允许所有 IP(需放在拒绝规则之后)
}

保存配置后,执行 ​​nginx -t​​​ 和 ​​systemctl restart nginx​​ 生效。

三、Nginx 虚拟主机

(一)基于域名的虚拟主机
  1. 客户端域名解析
    修改本地 ​hosts​ 文件(Windows 在 ​C:\Windows\System32\drivers\etc\hosts​,Linux 在 ​/etc/hosts​),添加:

    192.168.10.101 www.benet.com
    192.168.10.101 www.accp.com

  2. 准备网站目录与测试页面

    mkdir -p /var/www/html/benet /var/www/html/accp # 创建站点目录
    echo "www.aaaaaaaa.com" > /var/www/html/benet/index.html # 生成测试首页
    echo "www.bbbbbbbbb.com" > /var/www/html/accp/index.html

  3. 配置 Nginx 虚拟主机
    ​nginx.conf​ 中添加两个 ​server​ 块,分别绑定不同域名和根目录:

    server {
    listen 80;
    server_name www.benet.com;
    access_log logs/www.benet.com.access.log;
    charset utf-8;

    复制代码
     location / {
         root /var/www/html/benet;
         index index.html;
     }

    }

    server {
    listen 80;
    server_name www.accp.com;
    access_log logs/www.accp.com.access.log;
    charset utf-8;

    复制代码
     location / {
         root /var/www/html/accp;
         index index.html;
     }

    }

  4. 测试访问 浏览器输入 ​http://www.benet.com​​http://www.accp.com​,应显示对应站点内容。

(二)基于 IP 的虚拟主机
  1. 添加虚拟 IP 地址
    通过复制网卡配置文件创建虚拟网卡(以 ​ens33​ 为例):

    cd /etc/sysconfig/network-scripts/
    cp ifcfg-ens33 ifcfg-ens33:0 # 创建第一个虚拟 IP 配置
    cp ifcfg-ens33 ifcfg-ens33:1 # 创建第二个虚拟 IP 配置

编辑 ​​ifcfg-ens33:0​​​ 和 ​​ifcfg-ens33:1​​​,分别设置 ​​IPADDR​​​ 为 ​​192.168.10.151​​​ 和 ​​192.168.10.152​​​,其他参数保持一致(如网关、DNS)。

重启网络服务使配置生效:

复制代码
nmcli connection reload
nmcli connection up ens33
  1. 配置 Nginx 绑定 IP
    ​nginx.conf​ 中为每个 IP 绑定独立的 ​server​ 块:

    server {
    listen 192.168.10.151:80;
    server_name www.benet.com;
    # 其他配置(如 root 目录)
    }

    server {
    listen 192.168.10.152:80;
    server_name www.accp.com;
    # 其他配置
    }

(三)基于端口的虚拟主机

在 ​​nginx.conf​​ 中为同一 IP 分配不同端口(如 8080 和 8888):

复制代码
server {
    listen 192.168.10.101:8080;
    server_name www.benet.com;
    # 端口 8080 站点配置
}

server {
    listen 192.168.10.101:8888;
    server_name www.accp.com;
    # 端口 8888 站点配置
}

访问时需在 URL 中添加端口(如 ​​http://192.168.10.101:8080​​)。

四、LNMP 架构部署

(一)编译安装 MySQL
  1. 准备依赖环境

    yum install -y autoconf ncurses-devel gcc-c++ perl-Module-Install cmake

  2. 解压并编译 MySQL

    tar -zxvf mysql-5.6.36.tar.gz
    cd mysql-5.6.36
    cmake
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
    -DDEFAULT_CHARSET=utf8
    -DDEFAULT_COLLATION=utf8_general_ci
    -DWITH_EXTRA_CHARSETS=all
    -DSYSCONFDIR=/etc
    make && make install

  3. 初始化与配置

    cp support-files/my-default.cnf /etc/my.cnf # 复制配置文件
    cp support-files/mysql.server /etc/init.d/mysqld # 添加服务脚本
    chmod +x /etc/init.d/mysqld
    chkconfig --add mysqld && chkconfig mysqld on # 加入系统服务
    echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile # 添加环境变量
    . /etc/profile # 立即生效

  4. 创建用户与初始化数据库

    groupadd mysql && useradd -M -s /sbin/nologin mysql -g mysql
    chown -R mysql:mysql /usr/local/mysql
    /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
    systemctl start mysqld # 启动服务
    mysqladmin -u root password '123.com' # 设置 root 密码

(二)安装 PHP 解析环境
  1. 安装依赖库

    yum -y install gd libxml2-devel libjpeg-devel libpng-devel zlib-devel

  2. 编译 PHP

    tar -zxvf php-5.5.38.tar.gz
    cd php-5.5.38
    ./configure
    --prefix=/usr/local/php5
    --with-gd
    --with-zlib
    --with-mysql=/usr/local/mysql
    --with-mysqli=/usr/local/mysql/bin/mysql_config
    --with-config-file-path=/usr/local/php5
    --enable-mbstring
    --enable-fpm
    --with-jpeg-dir=/usr/lib
    make && make install

(三)配置 Nginx 支持 PHP
  1. 启动 php-fpm 服务

    cd /usr/local/php5/etc/
    cp php-fpm.conf.default php-fpm.conf # 复制配置模板
    useradd -M -s /sbin/nologin php # 创建 php 专用用户
    vim php-fpm.conf # 修改用户、进程数等配置(如 user=php, group=php)
    /usr/local/sbin/php-fpm # 启动服务

  2. Nginx 配置 PHP 解析
    ​server​ 块中添加 PHP 解析规则(匹配 ​.php​ 文件):

    location ~ .php$ {
    root /var/www/html;
    fastcgi_pass 127.0.0.1:9000; # 指向 php-fpm 监听端口
    fastcgi_index index.php;
    include fastcgi.conf;
    }

  3. 测试 PHP 页面
    创建测试文件 ​test1.php​(输出 PHP 信息)和 ​test2.php​(测试数据库连接),访问 ​http://服务器 IP/test1.php​ 应显示 PHP 环境信息。

(四)部署 Web 应用(以 Discuz 为例)
  1. 准备程序文件

    yum -y install unzip
    unzip Discuz_X3.3_SC_UTF8.zip
    mkdir -p /var/www/html/bbs && mv upload/* /var/www/html/bbs
    chown -R php:php /var/www/html/bbs # 赋予 php 用户权限

  2. 创建数据库

    mysql -uroot -p # 登录 MySQL
    create database bbs; # 创建数据库
    grant all on bbs.* to runbbs@'127.0.0.1' identified by 'bbs123'; # 授权本地访问
    grant all on bbs.* to runbbs@'localhost' identified by 'bbs123';

  3. 初始化安装 浏览器访问 ​http://服务器 IP/bbs/install/index.php​,按向导完成安装,配置数据库信息即可。

总结

本文详细介绍了 Nginx 的两种访问控制机制(用户认证与 IP 过滤)、三种虚拟主机配置(域名、IP、端口)以及 LNMP 架构的完整部署流程。通过这些配置,可实现服务器资源的安全控制、多站点高效管理及动态 Web 应用的稳定运行。实际应用中,需根据业务需求调整参数(如并发连接数、缓存策略),并定期更新组件以保障安全性和性能。

相关推荐
wusam6 天前
Linux系统管理与编程23:巧用git资源一键部署LAMP
linux·运维·git·shell·lamp
ZZDICT1 年前
续篇——源码部署LAMP环境上线项目——禅道项目
apache·lamp·liunx·禅道项目
RememberLey1 年前
【Linux】阿里云ECS搭建lnmp和lamp集群
linux·运维·阿里云·lnmp·lamp
我什么什么都不会2 年前
Dockerfile快速搭建自己专属的LAMP环境
docker·lamp