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 服务器 https://cloud.tencent.com/product/cvm 上搭建 LNMP 网站服务环境. 分为四大部分, 第一部分为安装 Nginx, 第二部分为安装 MySQL 数据库服务, 第三部分为搭建 PHP 运行环境, 第四部分配置使用 Nginx 代理转发 PHP 数据. 想学习的同学可以去腾讯云开发者实验室 https://cloud.tencent.com/developer/labs/lab/10029 免费领取主机进行在线手动实验. 如果打算长期使用, 也可以购买 https://buy.cloud.tencent.com/cvm 一台服务器.
安装 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 服务更换为腾讯云的关系型数据库 https://cloud.tencent.com/product/cdb-overview 进行配置, 云关系型数据库是一种高度可用的托管服务, 提供容灾, 备份, 恢复, 监控, 迁移等数据库运维全套解决方案, 可将您从耗时的 Discuz!! 数据库管理任务中解放出来, 让您有更多时间专注于您的应用和业务.
或使用腾讯云的建站主机 https://cloud.tencent.com/product/lh 进行快速配置, 独享 CPU, 内存, 带宽, 硬盘等资源, 拥有独立 IP 和超大空间, 预装网站开发所需的应用环境, 并且提供域名绑定, 部署 SSL 证书等便捷操作, 即买即用, 一站式完成应用的搭建.
来源: https://www.qcloud.com/developer/article/1355808