Introduction
LEMP Stack 是一组用来运行动态网站或者服务器的开源软件。它们是 Linux 操作系统,Nginx web服务器,后端数据存储在 MySQL 数据库,动态处理则是由 PHP 来完成。
这篇文章就是来说明如何在 Ubuntu 16.04 的服务器上安装 LEMP Stack。首先你需要有一个Ubuntu操作系统,然后我们来说明后面的部分如何完成。
Prerequisite
在完成这篇教程之前,你需要在你的服务器上有一个普通的、有sodu权限的非root用户账户。如果没有的话,就去看文末参考文献的第一篇教程吧。
然后,用此账户登陆你的服务器,就可以开始配置啦!
Step 1: Install the Nginx Web Server
首先通过 apt-get 命令安装Nginx:1
2sudo apt-get update
sudo apt-get install nginx
如果你后台有运行 ufw 防火墙的话,就执行以下命令将 Nginx 服务加入到防火墙的允许列表中:1sudo ufw allow 'Nginx HTTP'
通过命令来确认结果:1sudo ufw status
结果应该是:1
2
3
4
5
6
7
8Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
然后在你的浏览器中输入你的服务器地址,就可以看到 Nginx 的初始界面了:1http://server_domain_or_IP
Step 2: Install MySQL to Manage Site Data
可以简单的通过 apt-get 命令安装:1sudo apt-get install mysql-server
你将会被询问,要求提供一个root账户的密码用来登录MySQL。
通过以下命令在服务器上进入MySQL服务界面:1mysql -u root -p
输入root账户的密码后,即可进入MySQL交互式界面。
此外,你还可以安装 VALIDATE PASSWORD PLUGIN 插件:1sudo mysql_secure_installation
在此就不做过多的介绍了。
Step 3: Install PHP for Processing
我们需要PHP的服务来处理动态内容,所以我们需要安装 php-fpm (fastCGI process manager) ,还是通过apt-get命令安装:1sudo apt-get install php-fpm php-mysql
Configure the PHP Processor
现在php模块已经安装了,我们需要修改一点点配置来保证php服务的安全。打开配置文件:1sudo nano /etc/php/7.0/fpm/php.ini
我们找到设置 cgi.fix_pathinfo 参数的那一行,去掉注释的分号,并将它的值设置为0:1cgi.fix_pathinfo=0
关闭文件并保存。
现在,我们重启我们的PHP Processor:1sudo systemctl restart php7.0-fpm
这样我们的改动就会生效了。
Step 4: Configure Nginx to Use the PHP Processor
现在,我们已经安装了所有必须的模块,最后一项工作就是告诉 Nginx 使用 PHP processor 来处理动态内容。
打开默认的Nginx服务器配置文件:1sudo nano /etc/nginx/sites-available/default
除去所有的注释,这个文件的内容应是这样:1
2
3
4
5
6
7
8
9
10
11
12
13server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
我们需要针对我们的站点将其修改为如下内容:server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
保存并关闭文件。
可以通过命令来测试你的Nginx是否配置成功:1sudo nginx -t
如果没有Error,就说明你配置成功了,否则,就需要检测上一步是否有拼写错误之类的。
当你准备好了,就可以重新加载Nginx配置文件:1sudo systemctl reload nginx
Step 5: Create a PHP File to Test Configuration
你的 LEMP Stack 现在已经搭建完毕,我们可以做个简单的测试来看Nginx是否可以正确使用PHP processor来处理 .php 文件。
在我们的文件根目录(document root)下创建一个测试用的php文件,并命名为 info.php :1sudo nano /var/www/html/info.php
它的内容为:1
2phpinfo();
保存并关闭文件,这段代码将会显示我们服务器的信息。
现在,你可以在浏览器中输入你的服务器IP + /info.php 来访问这个网页:1http://server_domain_or_IP/info.php
你将会看到如下网页,显示的是你服务器的信息:
这代表着你的测试成功了。
Conclusion
现在,你在你的 Ubuntu 16.04 的服务器上成功配置了 LEMP Stack,可以在它上面部署你自己的web应用啦~!
PS: 本文来自 reference 的第二篇 Digital Ocean tutorial,粗略地翻译了一下,感觉好蛋疼。。。这么好的英文教程不应该被翻译成中文的。。。下次争取自己写一些英文的博文…TAT
Reference