在Debian 9上搭建LNMP/LEMP

今天填个坑,感觉自己有点懒,写篇文章打打精神~
上篇文章说了下Nginx服务器的安装,那只是搭建一个网页服务器的第一步。如果说,我的网页不需要实时更新,不需要动态交互,不需要这个那个的,那么这篇文章可以不用看了,做一堆HTML、CSS、JS等上传到网页路径就可以了。试想一下,建个网站,总要上传网页文件是有多麻烦,在线写文章、写评论、更新状态等是有多爽~!也有人说,“你就写文字什么的,干脆开个博客不得了!”,诶,这是服务器,有本质上的不同,在这里做的事情可以更多~!
作者用的服务器是Debian 9操作系统,所以下面的内容和Debian会非常相关,文档目录也根据Debian来写,不过和其他系统都是大同小异的。
一、LNMP/LEMP是什么东西?
LNMP和LEMP是一个东西,是Linux、Nginx、MySQL/MariaDB、PHP的四个词的首字母缩写。
那么这几个东西又是干什么的呢?
Linux——开源的类Unix操作系统为堆栈组件提供了基础。许多发行版都包括软件包管理系统,可以轻松安装所需的应用程序。可以选择的发行版有很多,例如Debian、Ubuntu、CentOS、Fedora、ArchLinux等。
Nginx——Nginx是一个用于HTTP,HTTPS,SMTP,POP3和IMAP协议的开源反向代理服务器。它还可用作负载平衡器,HTTP缓存和Web服务器(源服务器)。它非常注重高并发性,高性能和低内存使用率。由于Nginx的发音,我们使用LEMP: Engine-X(en-juhn-ecks)。此外,LEMP实际上是可发音的,听起来不像背诵字母表。
MySQL/MariaDB——MySQL是第二大使用最广泛的开源关系数据库管理系统。社区开发的分支,MariaDB,由原始开发人员领导。它的目标是成为替代品。
PHP——PHP是一种专为Web开发而设计的服务器端脚本语言。脚本也可以用Python和Perl等编写。
就介绍这么多吧,上面好多机翻的,看看得了。
二、LEMP在Debian 9上的安装
1、安装一个Debian 9,略。(用Linux的人知道自己在干嘛)
2、安装Nginx

sudo apt-get install nginx

后台运行Nginx并使能服务

sudo systemctl start nginx
sudo systemctl enable nginx

3、安装PHP-FPM
因为我们仅使用到Nginx的fastcgi功能,调用PHP来处理脚本,所以我们只安装php-fpm就可以了

sudo apt-get install php-fpm

Debian 9上安装php-fpm默认使用php7.0版本,所以执行以下命令运行并使能php-fpm服务

sudo systemctl start php7.0-fpm
sudo systemctl enable php7.0-fpm

4、安装MySQL(可选)
可选的原因是,后文中没涉及到该内容。
在这里因Debian软件源中MySQL版本较低,遂从MySQL官网提供的安装方法安装的MySQL 5.7版本
(1)下载MySQL软件源配置
从这里下载https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb,后安装软件包

sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb

安装过程中会提示选择版本,在这里作者选择了5.7,其他帮助参考 A Quick Guide to Using the MySQL APT Repository
(2)更新软件源

sudo apt-get update

(3)安装数据库服务器

sudo apt-get install mysql-server mysql-client

安装过程中会提示设置一个MySQL数据库root账户的密码,根据自己习惯设置一个即可
后台运行MySQL服务端并使能服务

sudo systemctl start mysql
sudo systemctl enable mysql

三、配置Nginx服务器
好了,上面的准备工作已经做完了,下面进行服务器配置。Debian 9的Nginx软件包很好,在安装完成之后,有一个默认的配置文件“/etc/nginx/nginx.conf”已经写好了文件包含关系,所以我们只需要修改“/etc/nginx/sites-enabled/”这个目录下的文件即可,默认文件为“/etc/nginx/sites-enabled/default”,用你熟悉的文本编辑器打开它。
在文档里找到如下内容:

# pass PHP scripts to FastCGI server
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}

在这里我们使用到了其中高亮的几行参数,第57行包含了一些Nginx中fastcgi的一些功能参数,第60行也相当关键,在这里设置了fastcgi的反向代理,指向了一个unix接口的路径,就是我们的php-fpm接口所在的位置。

# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}

去掉高亮行开始位置的#符号,将这部分内容改为上面所示的样子,保存关闭即可。回到控制台执行以下命令,让Nginx重新加载一次配置文件:

sudo nginx -s reload

四、测试PHP服务器
不出意外的话,在这个时候,打开电脑上的浏览器,访问“127.0.0.1”,已经可以显示Nginx的默认页面了。现在让我们测试一下PHP是否可用,新建一个文本文档命名为“index.php”,内容如下:

<?php
phpinfo();
?>

将“index.php”复制到“/var/www/html/”目录下,在浏览器地址栏中访问“127.0.0.1/index.php”,这时候不出意外即可显示PHP7.0的相关信息。
全文无图,要实际操作才会看到效果。