Techeek's Studio.

搭建 LNMP 网站服务环境

字数统计: 2.5k阅读时长: 9 min
2018/10/19

LNMP指的是一个基于CentOS/Debian编写的Nginx、PHP、MySQL一键安装包。可以在VPS、独立主机上轻松的安装LNMP生产环境。LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

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

这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。 本文将教你在腾讯云CVM服务器上搭建LNMP网站服务环境。分为四大部分,第一部分为安装Nginx,第二部分为安装MySQL数据库服务,第三部分为搭建PHP运行环境,第四部分配置使用Nginx代理转发PHP数据。想学习的同学可以去腾讯云开发者实验室免费领取主机进行在线手动实验。如果打算长期使用,也可以购买一台服务器。

安装Nginx环境

安装Nginx有两种方法,分别为使用apt包管理工具安装和使用编译方式进行安装。如果你使用的是Ubuntu系统,则可以按照本教程使用apt包管理工具进行安装。若是其他操作系统或想使用编译方式进行安装,请参考如何搭建 nginx 静态网站这篇文章。

首先,我们需要使用sudo apt-get update更新当前系统下apt包管理器的列表。然后使用sudo apt-get install nginx命令安装Nginx软件。

1
2
sudo apt-get update
sudo apt-get install nginx

输入后你会看到如下输出

1
2
3
4
5
6
7
8
9
ubuntu@VM-0-7-ubuntu:~$ sudo apt-get install nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
........
Need to get 2,857 kB of archives.
After this operation, 9,307 kB of additional disk space will be used.
Do you want to continue? [Y/n]

这里询问我们是否安装,我们按下键盘上的Y,然后按下回车键,之后,你会看到类似如下输出:

1
2
3
4
Get:1 http://mirrors.tencentyun.com/ubuntu xenial-security/main amd64 libjpeg-tu
.........
Processing triggers for ufw (0.35-0ubuntu2) ...
ubuntu@VM-0-7-ubuntu:~$

这时,你已经安装好了Nginx服务,尝试通过浏览器访问下你的服务器,在腾讯云控制台找到你服务器的公网IP,然后复制到浏览器打开,如果你看到如下输出,证明你已经成功安装Nginx。

img

安装MySQL数据库服务

我们已经安装了基础的Web服务软件Nginx了,接下来我们将要安装数据库服务,数据库有很多种选择,这里我们选择最常用的MySQL服务。和安装Nginx一样,我们只需输入sudo apt-get install mysql-server来安装MySQL服务。这里安装的MySQL版本是5.7版本。

1
sudo apt-get install mysql-server

输入完成后你会看到如下输出

1
2
3
4
5
6
7
8
9
10
ubuntu@VM-0-7-ubuntu:~$ sudo apt install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
........
0 upgraded, 21 newly installed, 0 to remove and 205 not upgraded.
Need to get 19.4 MB of archives.
After this operation, 162 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

请按下键盘上的Y然后回车继续。接下来,安装程序将要求你输入你的数据库root用户的密码,如图。

1539918014201

这里请输入你想为root用户设定的密码,我这里输入passwd为例。自己设置的时候请设置较复杂的密码。输入完成后按下回车,系统将要求你再次输入一遍刚才设定的密码,同样,输入完成后我们按下回车。接下来将进入漫长的安装过程,你会看到类似如下输出。

1
2
3
4
5
6
7
8
9
Do you want to continue? [Y/n] y
Get:1 http://mirrors.tencentyun.com/ubuntu xenial-security/main amd64 mysql-common all 5.7.23-0ubuntu0.16.04.1 [15.4 kB]
Get:2 http://mirrors.tencentyun.com/ubuntu xenial/main amd64 libaio1 amd64 0.3.110-2 [6,356 B]
..........
Setting up mysql-server (5.7.23-0ubuntu0.16.04.1) ...
Processing triggers for libc-bin (2.23-0ubuntu9) ...
Processing triggers for systemd (229-4ubuntu21.2) ...
Processing triggers for ureadahead (0.100.0-19) ...
ubuntu@VM-0-7-ubuntu:~$

接下来,我们将安装php环境。

安装PHP环境

同样简单,我们依然可以使用apt包管理器进行php的安装,不过这次我们不只要安装php本身,还要安装php-fpm,它是一个FastCGI管理器,可以有效控制内存和进程、可以平滑重载PHP配置。同样,为了连接数据库,我们还需要安装php-mysql插件。使用下面的命令即可快速安装。

1
2
3
sudo apt-get install php
sudo apt-get install php-fpm
sudo apt-get install php-mysql

输入完这三个命令后,系统同样会输出一大堆内容,我们只需要耐心等待即可。值得注意的是,我的系统版本是Ubuntu server 16.04.1 LTS,默认安装的是PHP 7.0版本。PHP-FPM 默认监听 9000 端口。

配置Nginx代理PHP程序

我们已经安装完了Nginx、PHP及MySQL,但是这套服务暂时还不能使用,我们需要将Nginx和PHP通过配置链接起来。具体操作如下,首先我们需要进入Nginx配置目录。在/etc/nginx/conf.d/这个目录下。

1
2
ubuntu@VM-0-7-ubuntu:~$ cd /etc/nginx/conf.d/
ubuntu@VM-0-7-ubuntu:/etc/nginx/conf.d$

接下来我们要新建一个名为default.conf的配置文件,你可以使用任意编辑器来编写,这里我使用nano编辑器进行编写,可以使用下面的命令。

1
sudo nano default.conf

然后复制下面的配置到编辑器

1
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
root /usr/share/nginx/html;
location ~ .php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
# 如果你的php版本低于7.0,请将unix:/run/php/php7.0-fpm.sock;替换为127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

然后按下键盘上的Ctrl+O键然后按下回车保存,然后按下Ctrl+W退出。接下来我们需要删除nginx默认的配置文件,不然我们定义的这个文件运行会报错。首先打开/etc/nginx/sites-available目录,然后删除默认的default的文件。具体操作如下:

1
2
cd /etc/nginx/sites-available
sudo rm default

然后我们需要重启nginx以确保其正常运行,可以使用sudo service nginx restart这个命令。

1
sudo service nginx restart

没有报错证明系统一切正常,我们可以测试我们的php是否正常运行了。测试之前我们需要准备测试脚本,这里我们新建一个名为info.php的文件,这个文件一定要放在我们上面写的default.conf里面的root行后面指向的目录,本文配置是/usr/share/nginx/html目录,具体操作如下。

1
2
cd /usr/share/nginx/html
sudo nano info.php

然后在编辑器里面写下如下代码

1
<?php phpinfo(); ?>

然后按下键盘上的Ctrl+O键然后按下回车保存,然后按下Ctrl+W退出。接下来,通过浏览器访问http://你的服务器的公网IP地址/info.php,如果你看到如图结果,证明一切正常,赶快开始部署你喜爱的程序吧!

1539926316350

总结

这篇文章中,我们学会了搭建LNMP网站服务环境。通过这个环境,你可以部署很多基于PHP语言的网站,如果你想搭建WordPress博客或Discuz!论坛,可以参考如何搭建 WordPress 博客如何快速搭建 Discuz! 论坛这两篇文章。

当然,搭建LNMP过程中难免会遇到一些莫名其妙的问题,在这里我总结几点,希望对你有帮助。

Q:启动Nginx过程中总是报“Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.”错误。

A:请检查Nginx配置文件,确保其格式正确,如果太长,请分离开一段一段检查。

Q:配置完成并重启Nginx无效,访问服务器IP还是默认的页面。

A:请检查/etc/nginx/sites-available/etc/nginx/conf.d是否有其他文件冲突,若有冲突请删除多余文件。

Q:访问info.php文件报502错误

A:首先检查php-fpm服务是否启动,可以使用sudo service php-fpm start命令启动,若还是报错,请检查你的php版本,低于7.0版本请将nginx配置文件中的fastcgi_pass行改为127.0.0.1:9000;

Q:php版本是7.0,已经启动php-fpm服务,还是报错502。

A:打开/run/php/目录,寻找以.sock结尾的文件,并以绝对路径方式替换配置中的/run/php/php7.0-fpm.sock

这是目前使用Ubuntu Server 16.04.1系统,php7.0版本可能会遇到的问题,其他遇到的BUG欢迎大家评论反馈。

如果你的LNMP环境打算长期使用,我推荐你将文中的MySQL服务更换为腾讯云的关系型数据库进行配置,云关系型数据库是一种高度可用的托管服务,提供容灾、备份、恢复、监控、迁移等数据库运维全套解决方案,可将您从耗时的Discuz!数据库管理任务中解放出来,让您有更多时间专注于您的应用和业务。

或使用腾讯云的建站主机进行快速配置,独享 CPU、内存、带宽、硬盘等资源,拥有独立 IP 和超大空间,预装网站开发所需的应用环境,并且提供域名绑定、部署 SSL 证书等便捷操作,即买即用,一站式完成应用的搭建。

CATALOG
  1. 1. 安装Nginx环境
  2. 2. 安装MySQL数据库服务
  3. 3. 安装PHP环境
  4. 4. 配置Nginx代理PHP程序
  5. 5. 总结