介绍

LEMP是一套为动态网站和网页应用服务的软件包。这四个字母是一个缩写,包括了Linux操作系统(L),Nginx网站服务器(N),后端的数据储存在Mysql中,以及用PHP对网站实行动态处理。

在这个教程中我们将解释如何在ubuntu 14.04 server 中 安装LEMP。

预备条件

在你完成这个教程之前,你应该在你的服务器或者本地机器上有一个普通的,非管理员的,但是带sudo 权限的的帐号。

如果你是在ubuntu server 上面安装LEMP,你应该先用上面的的帐号登陆你的服务器,然后就可以愉快的进行这个教程了。

  • 1.安装Nginx 网站服务器

    为了给我们的浏览者可以展示我们的网站,我们即将使用一个高效率的现代化的网站服务器——Nginx。

    所有我们在这个程序中会用到的软件都可以直接重Ubuntu 自带的默认封装库中找到,这就意味着我们可以直接使用apt包管理器去完成我们安装。

    因为这是我们第一次使用apt来安装软件,我们首先应该先更新我们本地的包(package),然后我们再安装Nginx:

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

在ubuntu 14.04中,Nginx在运行上面的安装命令的时候,已经配置好了。
你可以通过在浏览器中访问你的服务器的域名或者IP地址(本地为localhost)来验证你的Nginx是否已经开启并且在运行当中。

如果你没有指向你的服务器的域名或者没有公网IP地址,你也可以通过下面的方法来验证你的Nginx是否正确运行。



在终端里面输入下面两行代码中的其中一行:

1
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

1
2
111.111.111.111
fe80::601:17ff:fe61:9801



又或者你可以尝试使用:

1
curl http://icanhazip.com

121.8.210.44


在你的浏览器的url中输入

1
http://server_domain_name_or_IP

就可以看到Ngxin的欢迎页
Alt text

2.安装MySql去管理网站的数据

现在我们已经有了一个网站的服务器,现在我们现在需要安装一个数据库管理系统——MySql,去储存和管理我们网站的数据

我们可以很容易地通过下面的命令安装MySql:

1
sudo apt-get install mysql-server

在安装过程中你可能会被要求在你的MySql中设置一个管理员(root)密码。


那么现在MySql数据库已经安装完成了,但是他的配置并没有完成。


首先,我们地告诉MySql去生成目录结构,它需要储存数据库和信息,我们可以通过下面的命令实现:

1
sudo mysql_install_db

接下来,您将想要运行一个会提示你修改不安全的预设值的简单的安全的脚本,若要开启这个脚本,你只要输入:

1
sudo mysql_secure_installation

在安装过程中,你需要输入MySql系统管理员密码。

接下来,它会问你是否改变密码。如果你对目前的root的密码感到满意,直接输入“N”,不更改密码,如果需要更改密码,按下ENTER键,然后,系统将提示您删除一些测试用户和数据。你只需要根据提示按下ENTER键去消除不安全的默认设置就可以了。


一旦运行脚本结束,MySQL是准备好了!

3.安装PHP

目前,我们已经有Nginx可以服务我们网站,有MySql去处理和储存数据,但是我们仍然需要一些东西去链接这两块,去构建一个动态的网站。PHP做得就是这个事情。


自从Nginx不像其他web服务器一样支持原生PHP后,我们需要安装php5-fpm来替代fastCGI process manager我们将告诉Nginx通过PHP请求这个软件进行处理。


我们除了会安装这个模块以外,我们还会顺带攫取一些允许PHP与我们的数据库后端通信的附加助手包。这个安装过程会引入必要的PHP核心文件。
使用下面的命令进行安装:

1
sudo apt-get install php5-fpm php5-mysql

配置PHP处理器

刚刚我们已经成功安装了PHP组件,但是我们需要做一个小小的配置,来使到我们的PHP设置更加安全。

使用root权限打开主php5-fpm配置文件(使用了nano编辑器)

1
sudo nano /etc/php5/fpm/php.ini

我们要在这个配置文件中找到cgi.fix_pathinfo,它时被用分号(;)注释掉的,默认值是“1”。
这是一个非常不安全的设置,因为它告诉PHP如果一个PHP文件不完全匹配,它将尝试执行它能找到的最近的文件,这将允许用户通过“精心准备”的PHP请求的方式让他们执行本来他们不能执行的文件。


我们即将通过去 掉;注释,并且把默认值设置为”0“的方式改变这两个条件。
就像这样:

1
cgi.fix_pathinfo=0



当你完成了这些配置的时候,保存并且退出文件。



现在我们只需要重新启动我们的PHP处理器就行了。

1
sudo service php5-fpm restart

这将实现改变。
sudo service nginx restart

4.配置Nginx使PHP能够正确运行

现在,我们已经安装了所有必需的组件,现在我们唯一要配置的是告诉Nginx利用PHP去处理动态的内容。



我们将修改服务器消息块(server block)(这就像Apache上面的虚拟主机),打开默认Nginx服务器配置文件:

1
sudo nano /etc/nginx/sites-available/default

现在,删除注释以后,Nginx默认服务器配置文件看起来是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.html index.htm;

server_name localhost;

location / {
try_files $uri $uri/ =404;
}
}

我们需要为适配我们的网站。对这个文件做出修改:

  • 首先,我们需要在index指令中增加一个index.php选项,来使到我们的PHP索引页可以在有请求的情况下被解析。
  • 我们同样需要修改server_name这个指令,使到它能能够指向我们服务器的域名或者公网IP地址。
  • 实际的配置文件中还包含了一些定义了错误处理例程的指令,但是他们被注释了,我们应该把我们需要的功能取消注释。
  • 在实际PHP处理过程中,我们需要对一段的一部分取消注释。同时,我们还需要增加一个try_files避免Nginx发送一些错误的请求给PHP。

修改了以后大概就像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.php index.html index.htm;

server_name server_domain_name_or_IP;

location / {
try_files $uri $uri/ =404;
}

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

当你完成了上面的修改,你就可以保存然后关闭这个文件了。
然后重启Nginx使到这个文件生效。

1
sudo service nginx restart

5.创建一个PHP文件来测试配置

你的LEMP环境理论上应该已经搭建好了,我们还应该测试以确保Nginx可以正确的处理.php文件。
我们可以在网站的根目录创建一个PHP文件来测试。在网站的根目录创建一个叫做info.php的文件。

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

我们可以输入下面的内容到新文件中,这是有效的PHP代码,可以返回关于这个服务器的格式化的信息。

1
2
3
<?php
phpinfo();
?>

当你完成了上面的修改,你就可以保存然后关闭这个文件了。


然后在浏览器中输入:

1
http://server_domain_name_or_IP/info.php

你可以看到一个使用php来生成的网站,其中包含了您的服务器信息。
enter image description here

如果你看到一个页面,是这样的,你就已经成功配置PHPNginx了。
你测试结束后,最好删除刚刚创建的文件 info.php,因为上面会暴露你的服务器的一些敏感信息,使到别人很容易黑进来。如果你需要的话,也可以很快地创建回来。
现在,通过下面命令删除文件:

1
sudo rm /usr/share/nginx/html/info.php

结论

你现在已经拥有LEMP环境在你的 Ubuntu 14.04 上面啦,这为你的网站应用带来了一个非常灵活的基础。去开发更有意思的东西吧!