LNMP下动静分离部署phpmyadmin软件包

本文详细介绍LNMP环境的搭建步骤,包括nginx、php-fpm和mariadb的配置,实现动静分离部署,并通过重写规则优化访问流程,无需添加index.php即可直接访问。

LNMP环境肯定是先要配置好的。可以参考我之前的博客。那我们直接进行配置,我这里使用了三台机器进行动静分离部署,第一台负责nginx反向代理,第二台负责php-fpm应用程序以及mariadb的服务器。第三台是静态网页存放站点。

1、首先是配置nginx。

server{
        listen 80;
        server_name www.lnmp.io;
        index index.php index.html;
        location / {
                proxy_pass http://172.16.0.53:80;
        }
        location ~* \.php$ {
                fastcgi_pass 172.16.0.58:9000;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME /data/nginx_php/$fastcgi_script_name;
        }
}

在上面的配置中,我们把访问动态php的网页去访问172.16.0.58:9000这个主机上。而把其他类的静态的图片放在172.16.0.53这个机器上。

2、动态机器上配置php-fpm和mairadb

listen = 172.16.0.58:9000
listen.allowed_clients = 172.16.0.57
user = nginx
group = nginx
pm.status_path = /status
ping.path = /ping
ping.response = pong
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session

还要对一下的创建目录,

mkdir -pv /var/lib/php/session
chown nginx:nginx /var/lib/php/session

3、配置mariadb。

直接创建一个用户,并赋予权限。

GRANT ALL PRIVILEGES ON *.* TO php@"localhost" IDENTIFIED BY "123456";
FLUSH PRIVILEGES;

重启mariadb和php-fpm

4、在安装有php-fpm的主机上创建工作目录

mkdir /data/nginx_php

5、在静态主机上安装nginx,这个nginx只是个web服务器。跟上面的哪个nginx的作用不一样。并创建静态文件存放的目录

mkdir /data/nginx/html

创建完之后,分别在这两个主机上,将phpmyadmin文件解压到这两个目录中。一模一样的存取两份。

还要修改静态主机的一个配置文件

要把root路径映射到我们的工作目录上才可以。最后重启nginx

6、基本上配置完成了。可以用了。

但是这样子会出现一个问题,我们每次访问时,必须要在域名结尾处加上index.php,才可以访问,否则不行。所以我花费了很长时间来解决,最后终于解决了。

修改nginx反向代理的那台主机。

 

server{
        listen 80;
        server_name www.lnmp.io;
        index index.php index.html;
        location / {
#               root /data/nginx/html;
                rewrite ^/$  /index.php last;
                proxy_pass http://172.16.0.53:80;
        }
        location ~* \.php$ {
                fastcgi_pass 172.16.0.58:9000;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME /data/nginx_php/$fastcgi_script_name;
        }
}

主要是加了红色字体的那一行。这是为什么呢?

主要是不加的话,我们直接访问www.lnmp.io域名时,它只能去匹配location后面的那个根,而不会去匹配那个正则表达式。不仅如此,它还会去那个根下寻找index.html。如果有index.html的话,他就会去匹配(这个过程是分两步完成,第一步是寻找根,第二步是去寻找index.html)。这就是为什么上面我们访问时必须在域名后面加上index.php来访问,让他一开始就去匹配带有php的那个location。但是这样子非常的麻烦,我们需要一种解决方法来。所以我们需要在第一步就阻止它去匹配只有根的哪个location。所以我们在里面重写规则,在第一步的时候就去阻止它继续访问,从而改变方向去访问。last表示重写完成后停止对当前URI在当前location中后续的其他重写操作,而后对新的URI启动新的一路重写检查;提前重启新一轮循环;符合我们的需求。

 这个时候我们再去访问:

无需再键入index.php后缀了,直接一个域名就可以访问,非常的方便。

转载于:https://www.cnblogs.com/FengGeBlog/p/10539898.html

<think>嗯,用户想了解在CentOS上配置LNMP架构的动静分离方法。用户之前的问题是关于LNMP安装和Discuz部署的引用,但这次的重点是动静分离的实现。 用户可能是个运维人员或开发者,正在搭建需要处理高并发的网站。动静分离能显著提升网站性能,用户应该已经掌握了基础LNMP部署,现在想进一步优化架构。从引用看用户环境是CentOS 7.9,需要特别注意Nginx和PHP版本的兼容性。 动静分离的核心在于让Nginx直接处理静态请求,PHP-FPM只处理动态请求。关键配置点有三个:Nginx的location规则区分动静请求、静态资源目录权限设置、PHP-FPM的连接池优化。用户可能容易忽略的是缓存策略和连接超时设置,这些对性能影响很大。 需要特别提醒用户注意安全配置。静态目录如果权限设置不当可能导致源码泄露,动态请求的转发也要防止注入攻击。引用中提到的lnmp.sh脚本可能不包含动静分离配置,需要手动修改。 用户可能会遇到的典型问题包括:CSS/JS文件被错误缓存、PHP文件被当作静态文件处理、Nginx与PHP-FPM的socket连接失败。应该在回答中预先给出排查方法。 考虑到用户环境,给出具体配置示例时要用CentOS 7的默认路径,比如/etc/nginx而不是/etc/nginx/sites-enabled。对于Discuz这种常见应用,可以强调upload静态目录的特殊处理。</think>在 CentOS 系统中配置 LNMP 架构实现动静分离的核心思路是:**让 Nginx 直接处理静态资源请求,并将 PHP 动态请求转发给 PHP-FPM 处理**。这样可以显著提升网站性能和并发能力。以下是详细步骤: --- ### **一、环境准备** 1. **操作系统**:确保是 CentOS 7.x(推荐 7.9+)[^3] ```bash cat /etc/redhat-release # 确认系统版本 ``` 2. **安装基础依赖**: ```bash yum install -y epel-release && yum update -y yum install -y wget git gcc make pcre-devel zlib-devel openssl-devel ``` --- ### **二、安装与配置组件** #### 1. **安装 Nginx(处理静态请求与反向代理)** ```bash # 添加Nginx官方源 rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum install -y nginx systemctl start nginx && systemctl enable nginx ``` #### 2. **安装 MySQL/MariaDB(数据库)** ```bash yum install -y mariadb-server mariadb systemctl start mariadb && systemctl enable mariadb mysql_secure_installation # 运行安全配置向导 ``` #### 3. **安装 PHP-FPM(处理动态请求)** ```bash yum install -y php-fpm php-mysqlnd php-opcache php-gd php-mbstring systemctl start php-fpm && systemctl enable php-fpm ``` --- ### **三、配置动静分离** #### **关键步骤:修改 Nginx 配置** 编辑配置文件 `/etc/nginx/nginx.conf` 或 `/etc/nginx/conf.d/default.conf`: ```nginx server { listen 80; server_name your_domain.com; root /var/www/html; # 处理静态资源(图片/CSS/JS等) location ~* \.(jpg|jpeg|gif|png|css|js|ico|webp|svg)$ { expires 30d; # 缓存30天 access_log off; # 关闭日志减少IO try_files $uri =404; # 避免目录遍历 } # 处理动态请求(PHP文件) location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; # 转发给PHP-FPM fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 首页路由 location / { try_files $uri $uri/ /index.php?$query_string; } } ``` #### **验证配置并重启服务** ```bash nginx -t # 检查配置语法 systemctl restart nginx php-fpm # 重启服务 ``` --- ### **四、部署应用验证** 1. **创建测试文件**: ```bash echo "<?php phpinfo(); ?>" > /var/www/html/info.php echo "Static Content" > /var/www/html/test.html ``` 2. **访问测试**: - 静态资源:`http://your_domain.com/test.html` (由 Nginx 直接响应) - 动态请求:`http://your_domain.com/info.php` (由 PHP-FPM 处理后返回) --- ### **五、安全与优化建议** 1. **静态资源缓存**: 在 Nginx 的静态资源规则中添加 `add_header Cache-Control "public, max-age=2592000";` 提升加载速度。 2. **PHP-FPM 连接池**: 编辑 `/etc/php-fpm.d/www.conf`,优化进程管理: ```ini pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 3 pm.max_spare_servers = 10 ``` 3. **防火墙放行**: ```bash firewall-cmd --permanent --add-service={http,https} firewall-cmd --reload ``` --- ### **常见问题排查** - **静态文件返回 404**:检查 `root` 路径权限:`chown -R nginx:nginx /var/www/html` - **PHP 文件被下载而非执行**:确保 Nginx 的 `fastcgi_pass` 指向正确的 PHP-FPM 端口(默认 9000)。 - **数据库连接失败**:确认 `php-mysqlnd` 已安装,并在应用配置中填写正确的数据库凭据。 > **提示**:若需快速部署,可参考自动化脚本 [^2],但需手动调整 Nginx 配置以实现动静分离。 --- ### 相关问题 1. **动静分离后如何监控 Nginx 和 PHP-FPM 的性能?** 2. **如何为 LNMP 架构中的 MySQL 配置主从复制?** 3. **在云服务器上部署 LNMP 动静分离时需要注意哪些安全风险?** 4. **如何通过 CDN 进一步加速静态资源的访问?** [^1]: LNMP源码编译安装及一键部署LNMP架构 [^2]: CentOS7 LNMP架构部署+Discuz!论坛安装 [^3]: CentOS 7.9 系统环境确认
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值