操作场景

LNMP 环境是指在 Linux 系统下,由 Nginx + MySQL/MariaDB + PHP 组成的网站服务器架构。我们平常大部分的博客网站基本都是基于这个环境搭建运行的(另一种是LAMP)。

  • Linux:一类Unix计算机操作系统的统称,代表版本有:debian、centos、ubuntu、fedora、gentoo等
  • Nginx:一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器
  • Mysql:一个小型关系型数据库管理系统
  • PHP:一种在服务器端执行的嵌入HTML文档的脚本语言

平常网上各种教程都是让我们安装宝塔面板,然后使用它来一件部署环境,这个对纯新手确实好用,一开始我也是这么做的,不过随着用服务器越来越多,作为一个学计算机的人,还是想试着自己进行一次手动搭建 LNMP 环境,正好我也有系统纯净的云服务器,所以就顺手操作了一波。注意如果要尝试自己装,需要熟悉 Linux 命令,同时要对所装软件的使用及版本兼容性比较了解。

LNMP环境

软件版本

本文搭建的 LNMP 环境软件组成版本及说明如下:

  • Linux:Linux 操作系统,本文以 CentOS 8.0 为例。
  • Nginx:Web 服务器,本文以 Nginx 1.18.0 为例。
  • MySQL:数据库,本文以 MySQL 8.0.21 为例。
  • PHP:脚本语言,本文以 PHP 7.4.11 为例。

注:我是在云服务器下搭建的环境,所以本文不涉及如何安装 Linux 系统,如果是自己的实体服务器,可以去找找另外的教程。

操作步骤

以下步骤均要远程登录服务器来进行操作,我使用的是 Xshell 来连接,该软件的下载安装可以看这篇文章,这里就默认看文章的都会登录服务器(不懂应该也不来折腾这些hhh)

1.安装及配置 Nginx

本文以安装 Nginx 1.18.0 为例,也可以通过 Nginx 官方安装包 获取适用于 CentOS 8的更多版本

步骤1:执行以下命令,安装 Nginx,网速好的话3分钟左右就好,安装正常结束后会显示下图的信息

# 用dnf命令从对应网址下载安装安装Nginx
sudo dnf -y install http://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.18.0-1.el8.ngx.x86_64.rpm

Nginx安装结束

步骤2:输入以下命令,检查安装是否正确,如果返回类似下图的版本信息,则说明安装成功

# 查看Nginx版本
nginx -v

Nginx版本信息

步骤3:输入以下命令查看 Nginx 配置文件路径,如下图 include 配置项的 /etc/nginx/conf.d/*.conf 即为 Nginx 配置文件的默认路径

# 查看文件路径
cat /etc/nginx/nginx.conf

Nginx配置文件路径

步骤4:依次执行以下命令,在配置文件默认路径下进行备份

# 进入路径 /etc/nginx/conf.d
cd /etc/nginx/conf.d
# 复制 default.conf 并把新文件命名为 default.conf.bak
cp default.conf default.conf.bak

步骤5:用 vim 打开配置文件 default.conf,按 i 切换到编辑模式,并进行下面的修改,编辑完后按 Esc,输入 :wq 保存文件返回

# 用vim打开文件
vim default.conf
  1. location 的 index 项中添加 index.php ,如下图所示
    更改location
  2. 删除 location ~ \.php$ 大括号前的所有 #,并修改以下配置项:

    • 修改root为网站根目录,即 location 中的 root 项,本文以 /usr/share/nginx/html; 为例
    • 修改 fastcgi_pass 项为 unix:/run/php-fpm/www.sock; ,Nginx 通过 UNIX 套接字与 PHP-FPM 建立联系,该配置与 /etc/php-fpm.d/www.conf 文件内的 listen 配置一致。
    • 将 fastcgi_param SCRIPT_FILENAME 后的 /scripts$fastcgi_script_name; 替换为 $document_root$fastcgi_script_name;
      更改location ~ .php$

步骤6:依次执行以下命令,启动 Nginx 并设置为开机自启动

# 启动Nginx
systemctl start nginx
# 设置开机自启动
systemctl enable nginx

启动Nginx

2.安装及配置 MySQL

步骤1:输入以下命令安装MySQL,正常情况下2分钟左右就好

# 安装mysql及相关依赖
sudo dnf -y install @mysql

MySQL安装结束

步骤2:输入以下命令查看MySQL版本,显示如下图则说明安装正确

# 查看mysql版本
mysql -V

MySQL版本

步骤3:依次执行以下命令,启动 MySQL 并设置为开机自启动

# 设置开机自启动并启动MySQL
systemctl enable --now mysqld
# 查看MySQL状态
systemctl status mysqld

启动MySQL

步骤4:执行以下命令,执行 MySQL 安全性操作并设置密码

# MySQL安全性操作
mysql_secure_installation

按照以下步骤,执行对应操作:

  1. 输入 y 并按 Enter 开始相关配置
  2. 选择密码验证策略强度,建议选择高强度的密码验证策略。输入 2 并按 Enter(2的密码要求大小写字母,数字,字符)
    请输入图片描述
  3. 设置 MySQL 密码并按 Enter ,输入密码默认不显示
  4. 再次输入密码并按 Enter,输入 y 确认设置该密码,注意如果密码不符合安全策略,会让重新创建密码
    设置密码
  5. 输入 y 并按 Enter,移除匿名用户
    移除匿名用户
  6. 设置是否禁止远程连接 MySQL

    • 禁止远程连接:输入 y 并按 Enter
    • 允许远程连接:输入 n 并按 Enter
  7. 输入 y 并按 Enter,删除 test 库及对 test 库的访问权限
    删除test库
  8. 输入 y 并按 Enter,重新加载授权表,显示 Success 即可

该部分仅登录用户可见

3.安装及配置 PHP

步骤1:依次执行以下命令,添加并更新 epel 源,正常1分钟即可完成

# 添加epel源
sudo dnf -y install epel-release
# 更新epel源
sudo dnf update epel-release

添加epel源

步骤2:依次执行以下命令,删除缓存的无用软件包并更新软件源

# 清除缓存
sudo dnf clean all
# 更新软件源
sudo dnf makecache

更新软件源

步骤3:执行以下命令,安装 remi 源

安装 PHP 7.4.11 需安装 remi 源,请对应实际安装的 PHP 版本执行此命令

# 安装remi源
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

安装remi源

步骤4:执行以下命令,启动 PHP 7.4 模块,过程中需要决定的项都输入 y 就好,根据网速不同,安装需要时间不同

# 启动 PHP7.4 模块
sudo dnf module install php:remi-7.4

步骤5:执行以下命令,安装所需 PHP 对应模块

# 安装php相关包
sudo dnf install php php-curl php-dom php-exif php-fileinfo php-fpm php-gd php-hash php-json php-mbstring php-mysqli php-openssl php-pcre php-xml libsodium

php安装结束

步骤6:执行以下命令,查看 PHP 版本,返回下图信息证明安装成功

# 查看php版本
php -V

php版本

步骤7:执行以下命令,打开 www.conf 文件,按 i 切换至编辑模式,编辑 www.conf 文件

# 用vim打开www.conf文件
vim /etc/php-fpm.d/www.conf

步骤8:将 user = apache 及 group = apache 修改为 user = nginx 及 group = nginx ,如下图所示,改完后按 Esc,输入 :wq,保存文件并返回
修改php配置文件

步骤9:依次执行以下命令,启动 PHP-FPM 并设置为开机自启动

# 启动php
systemctl start php-fpm
# 设置php开机自启动
systemctl enable php-fpm

启动PHP

4.验证环境配置

步骤1:执行以下命令,创建测试文件

/usr/share/nginx/html 为您在 Nginx 中已配置的网站根目录,本文以该目录为例。

echo "<?php phpinfo(); ?>" >> /usr/share/nginx/html/index.php

步骤2:在本地浏览器中访问如下地址,查看环境配置是否成功,显示如下图则证明配置成功

http://云服务器实例的公网 IP/index.php

LNMP环境配置成功

感想

自己亲手配置了一遍LNMP,感觉确实是不一样,亲手搭环境必须了解各种软件的版本以及之间的兼容性,而且安装结束后还得进行各种配置,安装过程中保不准还会有各种各样的坑,确实非常的考验耐心与技术。作为纯手动搭建和宝塔面板都用过的人,我觉得两种方法各有好处,如果是刚入门的新手,面对如此多的软件以及各种命令,确实容易一脸懵逼,宝塔面板算是为新手降低了一点门槛,给予了他们正常的“游戏体验”,不至于一入门就劝退。但如果本身就是计算机专业的,我认为在熟悉了各种操作后,还是要自己亲自动手搭一遍环境,把理论转化为实践,这样才能更好的巩固专业知识。

参考资料

最后修改:2021 年 01 月 13 日 10 : 43 PM
如果觉得我的文章对你有用,请随意赞赏