搭建 LNMP 网站服务环境教程

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数据。这里推荐大家购买腾讯云服务器前,领取新人2860元代金券礼包,购买时间越长,优惠力度越大,推荐大家到腾讯云官网购买一台云服务器

启动IIS服务

安装Nginx环境

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

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

sudo apt-get update
sudo apt-get install nginx

输入后你会看到如下输出

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,然后按下回车键,之后,你会看到类似如下输出:

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。

安装MySQL数据库服务

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

sudo apt-get install mysql-server

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

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用户的密码,如图。

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

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插件。使用下面的命令即可快速安装。

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/这个目录下。

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

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

sudo nano default.conf

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

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的文件。具体操作如下:

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

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

sudo service nginx restart

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

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

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

<?php phpinfo(); ?>

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

总结

这篇文章中,我们学会了搭建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 证书等便捷操作,即买即用,一站式完成应用的搭建。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

扫码关注云+社区

领取腾讯云代金券