Linux服务器技术教程之五部署LNMP

举报
tea_year 发表于 2025/01/13 15:47:02 2025/01/13
【摘要】 LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。Web服务器性能:Nginx通常在处理高并发连接和静态内容时表现更优,而Apache在处理复杂的动态配置和模块化方面有优势。 资源消耗:Nginx设计得更加轻量级,内存和CPU使用率较低,适合大规模部署和资源敏感的应用。配置与灵活性:LNMP中的Nginx配置相对灵活,特别是在反向代理、负载均衡方面的设置更为强大.

LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。

  1. LNMP介绍

  LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

  Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。

  Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好

  MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。MySQL不仅是开放源代码的,也因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

  PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。因为PHP的开源性、免费性、快捷性等特点使其成为目前最流行的编程语言。

  2. 优点

  四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

  Nginx使用更少的资源,支持更多的并发连接,体现更高的效率。

  Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务。

  Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

LNMP优势

  • 1、LNMP方式的优点:占用VPS资源较少,Nginx配置起来也比较简单,利用fast-cgi的方式动态解析PHP脚本。缺点:php-fpm组件的负载能力有限,在访问量巨大的时候,php-fpm进程容易僵死,容易发生502 bad gateway错误。

  • 2、基于 LAMP 架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是 Web 网络应用和环境的优秀组合。若是服务器配置比较低的个人网站,当然首选 LNMP 架构。当然,在大流量的时候。把Apache和Nginx结合起来使用,也不失为一个不错选择。

Nginx 特性

Nginx 性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。

  • 1、相比 Apache,用 Nginx 作为 Web 服务器:使用资源更少,支持更多并发连接,效率更高。

  • 2、作为负载均衡服务器:Nginx 既可在内部直接支持 Rails 和 PHP,也可支持作为 HTTP 代理服务器对外进行服务。Nginx 用 C 编写而成, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

  • 3、作为邮件代理服务器:Nginx 同时也是一款非常优秀的邮件代理服务器(最早开发这个产品的目的之一,是作为邮件代理服务器)。

  • 4、反向代理可以根据url将请求转向于不同用途的集群,比如图片请求,转向图片服务器集群;视频请求,转身视频服务器集群。nginx是一款轻量级的web服务器/反向代理服务器/电子邮件代理服务器,安装非常简单,配置文件也很简洁(还支持 perl 语法)。Nginx 支持平滑加载新配置,还能够在不间断服务的情况下进行软件版本升级。

LNMP原理

  1. 用户在浏览器输入域名或者IP访问网站
  2.  用户在访问网站的时候,向web服务器发出http request请求,服务器响应并处理web请求,返回静态网页资源,如CSS、picture、video等,然后缓存在用户主机上。
  3.  服务器调用动态资源,PHP脚本调用fastCGI传输给php-fpm,然后php-fpm调用PHP解释器进程解析PHP脚本。
  4.  出现大流量高并发情况,PHP解析器也可以开启多进程处理高并发,将解析后的脚本返回给php-fpm,然后php-fpm再调给fast-cgi将脚本解析信息传送给nginx,服务器再通过http response传送给用户浏览器。
  5. 浏览器再将服务器传送的信息进行解析与渲染,呈现给用户。

操作步骤

Linux+Nginx+Mysql+Php

1.1 数据库服务器搭建

Mysql数据库的安装

Mariadb数据库的安装

1.2 Php安装

nginx 是 web 服务器, php-fpm 是一个 PHP FastCGI 进程管理器,两者遵循 fastcgi 的协议进行通信, nginx 负责静态类似 html 文件的处理, php-fpm 负责 php 脚本语言的执行,这么设计的目的是为了解耦(耦合)前端 nginx 和后端的 php ,不至于让容易出问题的 php 脚本堵塞整个 nginx 的业务处理,影响用户体验.

#安装php-fpm,主要是"php-fpm",dnf也是一个包管理工具,yum install dnf
yum install php php-fpm php-mysqlnd php-opcache php-gd php-json php-mbstring php-xml php-zip
​
#启动服务nginx,php-fp
systemctl start php-fpm
systemctl enable php-fpm
systemctl status php-fpm
​
#检查
[root@web01 ~]# ss -lntup |grep php 
tcp    LISTEN     0      128    127.0.0.1:9000                  *:*
#查看进程
ps -ef |grep php

启动php,查看php服务的状态

1723687392659.png

注意需要更改用户权限,然后重启php-fpm服务

#需要更改一下用户权限
egrep -n '^user|^group' /etc/php-fpm.d/www.conf
​
vim +39 /etc/php-fpm.d/www.conf 
#修改为下面格式
39:user = nginx
41:group = nginx
​
#完毕之后重启php-fpm服务

1.3 Nginx设置

      为了设置网站的动静分离,需要在linux服务器下,设置nginx的子配置文件,本案例以blog.cn.conf为基准设置。

server{
          listen 80;
          server_name blog.cn;
          #root /var/www/html;
          root /app/code/blog;
          error_log /var/log/nginx/blog-error.log notice ; 
          access_log /var/log/nginx/blog-access.log main;
          
          location / {
                index  index.php;
          }
        #这个location的目的是把请求的php文件的绝对路径找出来交给php处理
          location ~*  \.php$ {
                #传递给php
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                #下面内容需要修改
                #fastcgi_param  SCRIPT_FILENAME  /app/code/blog$fastcgi_script_name;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params; 
 
          }
}

补充:

fastcgi_param: 内置变量需要存放php文件的绝对路径

$document_root: 站点目录,代表的是root目录,变更,

$fastcgi_script_name: 请求中的uri

#在/app/code/blog下创建一个index.php测试页面,同上次LAMP的操作;

linux服务器检查nginx语法格式,然后重启nginx服务器

1723688582470.png

在浏览器商输入blog.cn,查看php测试页已经成功运行起来,表示php服务安装完毕。

image-20240814225642462.png

WordPress是一款广泛使用的开源内容管理系统(CMS),因其强大的自定义功能和用户友好的界面而受到全球用户的青睐。通过简单的设置步骤,用户可以迅速搭建并运行自己的网站。无论是个人博客、商业网站还是电子商务平台,WordPress都能提供丰富的主题和插件库,满足不同需求的用户。本文将详细介绍WordPress的关键设置步骤,包括常规设置、撰写设置、阅读设置、讨论设置、多媒体设置、固定链接设置以及隐私设置,旨在帮助初学者快速上手并优化自己的WordPress网站。

部署Wordpress

解压wordpress压缩包到/app/code目录下

[root@web01 ~]# unzip wordpress-6.1.1.zip -d /app/code/
[root@web01 ~]# cd /app/code/[root@web01 ~]# mv wordpress/  blog/
[root@web01 ~]# chown -R nginx.nginx blog/


数据库测试

#测试数据库是否可以连接成功
<meta charset='utf-8'/>
<?php
//数据库地址,自己改!!!
$db_host='172.16.1.51';
//数据库用户名
$db_user='root';
$db_pass='123456';
//数据库名字
$db_name='test';
 
$link_id=mysqli_connect($db_host,$db_user,$db_pass,$db_name);
if($link_id){
  echo "mysql successful! 数据库名字:$db_name 数据库用户:$db_user 数据库密码:$db_pass" ;
}else{
        echo "connection failed!\n" ;
}
?>


wordpress初始化功能设置,用于设置数据库名、数据库用户名、数据库密码、数据库主机和数据库表前缀等信息

image-20240814231550666.png

nginx服务器的conf的配置文件限制设置

##一般会在conf自配置文件中加上限制
location ~* (testinfo|testmysq).php$ {
   allow 192.168.174.0/24;
   allow 172.16.1.0/24;
   deny all;
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
}
 

php博客的中文字体设置

image-20240814231704020.png

如果有问题,按照下面的提示,进行配置设置,即手动配置wp-config.php文件。

image-20240814231845017.png


#故障1:如果出现上面的情况,是忽略了设置权限 ;
[root@web01 ~]# chown -R nginx.nginx blog/

image-20240814231939632.png

image-20240814232010095.png

假设我登录了,发现登录之后,出问题了!!!!,因为之前的数据库记录了192.168.174.7:88端口!!!

1723689152226.png

*在网站左上角转圈的过程,就是数据库初始化!!!create table ....sql

#上述故障,是已经安装过的wordpress数据库 。#删除库中的表,再次做安装即可!!!

image-20240814232758443.png

总结

部署过程中涉及到的每个步骤都有其特定的作用:

1.清理现有的项目和软件,确保新部署不受旧环境的影响。

2.安装和配置Nginx、PHP和MySQL,建立起Web服务器和数据库的基础环境。

3.克隆项目代码并设置权限,使得Web服务器可以访问和执行项目代码。

4.创建Nginx配置文件,定义Web服务器的行为,包括请求处理和静态资源缓存。

5.初始化和配置MySQL数据库,导入项目所需的数据库结构和初始数据。

6.配置防火墙,确保服务器对外部HTTP请求的访问。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。