介绍
LEMP软件是一组可用于提供动态网页和Web应用程序的软件。这是一个描述具有Nginx Web服务器的Linux操作系统的首字母缩略词。后端数据存储在MySQL中,动态处理由PHP处理。 在本指南中,我们将演示如何在Ubuntu 14.04服务器上安装LEMP。 Ubuntu操作系统负责处理第一个需求。我们将描述如何使其余组件运行。
注:LEMP可以自动在你的Droplet通过添加安装这个脚本启动时,它的用户数据。 查看本教程以了解更多有关Droplet的用户数据。
先决条件
在你完成本教程,你应该有你的服务器定期,非root用户帐户
sudo
权限。 你可以学习如何通过完成第1步-4在我们建立这种类型的帐户
的Ubuntu 14.04服务器初始设置 。 在您的帐户可用后,使用该用户名登录您的服务器。您现在可以开始本指南中概述的步骤。
1.安装Nginx Web服务器
为了向我们的网站访问者显示网页,我们将使用Nginx,一个现代化,高效的网络服务器。 所有我们将得到的这个过程的软件将直接来自Ubuntu的默认软件包存储库。这意味着我们可以用
apt
的包管理套件来完成安装。 由于这是用我们的第一次
apt
本次会议,我们应该通过更新本地软件包索引开始。然后我们可以安装服务器:
sudo apt-get update
sudo apt-get install nginx
在Ubuntu 14.04中,Nginx配置为在安装时开始运行。 您可以通过在Web浏览器中访问服务器的域名或公共IP地址来测试服务器是否已启动并正在运行。 如果您没有指向您的服务器的域名,并且您不知道您的服务器的公共IP地址,您可以通过在终端中键入以下内容之一找到它:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
111.111.111.111
fe80::601:17ff:fe61:9801
或者你可以尝试使用:
curl http://icanhazip.com
111.111.111.111
尝试在Web浏览器中收到的其中一行。它应该带你到Nginx的默认着陆页:
http://server_domain_name_or_IP
如果你看到上面的页面,你已经成功安装了Nginx。
2.安装MySQL以管理站点数据
现在我们有一个Web服务器,我们需要安装MySQL,一个数据库管理系统,以存储和管理我们的网站的数据。 您可以通过键入以下内容轻松安装:
sudo apt-get install mysql-server
您将被要求提供root(管理)密码以在MySQL系统中使用。 MySQL数据库软件现已安装,但其配置尚未完全完成。 首先,我们需要告诉MySQL生成存储其数据库和信息所需的目录结构。我们可以通过键入:
sudo mysql_install_db
接下来,您将需要运行一个简单的安全脚本,该脚本将提示您修改一些不安全的默认值。通过键入以下内容开始脚本:
sudo mysql_secure_installation
您将需要输入您在安装期间选择的MySQL root密码。 接下来,它会询问您是否要更改该密码。如果您对MySQL root密码感到满意,请输入“N”表示否,然后按“ENTER”。之后,系统将提示您删除一些测试用户和数据库。您应该通过这些提示按“ENTER”删除不安全的默认设置。 一旦脚本运行,MySQL就准备好了。
3.安装PHP进行处理
现在我们安装了Nginx来为我们的页面和MySQL安装存储和管理我们的数据,但我们仍然需要一些东西连接这两个部分,并生成动态内容。我们可以使用PHP。 由于Nginx的不包含像其他一些Web服务器PHP原生处理,我们需要安装
php5-fpm
,主张“FastCGI进程管理器”。我们将告诉Nginx将PHP请求传递给这个软件进行处理。 我们可以安装这个模块,并且还将获得一个额外的帮助包,它将允许PHP与我们的数据库后端进行通信。安装将提取必要的PHP核心文件。通过键入以下内容执行此操作:
sudo apt-get install php5-fpm php5-mysql
配置PHP处理器
我们现在已经安装了我们的PHP组件,但我们需要进行一些小的配置更改,以使我们的设置更安全。 打开主
php5-fpm
具有root权限的配置文件:
sudo nano /etc/php5/fpm/php.ini
我们在该文件中寻找的是,设置参数
cgi.fix_pathinfo
。这将使用分号(;)注释掉,默认设置为“1”。 这是一个非常不安全的设置,因为它告诉PHP尝试执行最接近的文件,如果PHP文件不完全匹配可以找到。这基本上将允许用户以允许他们执行他们不应该被允许执行的脚本的方式来制作PHP请求。 我们将通过取消注释行并将其设置为“0”来更改这两个条件,如下所示:
cgi.fix_pathinfo=0
保存并在完成后关闭文件。 现在,我们只需要重新启动我们的PHP处理器,输入:
sudo service php5-fpm restart
这将实施我们所做的改变。
4.配置Nginx使用我们的PHP处理器
现在,我们安装了所有必需的组件。唯一的配置更改我们仍然需要做的是告诉Nginx使用我们的PHP处理器的动态内容。 我们在服务器块级别上执行此操作(服务器块类似于Apache的虚拟主机)。通过键入以下内容打开默认的Nginx服务器块配置文件:
sudo nano /etc/nginx/sites-available/default
目前,删除注释,Nginx默认服务器块文件看起来像这样:
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.php
选择,因为我们的第一个值index
指令允许当请求目录送达PHP索引文件。
- 我们还需要修改
server_name
以指向我们的服务器的域名或公网IP地址。
- 实际的配置文件包括一些注释掉的行,定义错误处理例程。我们将取消注释这些功能。
- 对于实际的PHP处理,我们需要取消注释另一个部分的一部分。我们还需要添加一个
try_files
指令,以确保Nginx的不传递不良请求到我们的PHP处理器。
您需要进行的更改在下面的文本中是红色的:
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进行必要的更改:
sudo service nginx restart
5.创建一个PHP文件以测试配置
您的LEMP现在应该完全设置。我们还应该测试,以确保Nginx的可以正确手
.php
文件从我们的PHP处理器。 我们可以通过在我们的文档根中创建一个测试PHP文件来实现。打开一个名为新文件
info.php
在文本编辑器文档根目录中:
sudo nano /usr/share/nginx/html/info.php
我们可以将其输入到新文件中。这是有效的PHP代码,将返回关于我们的服务器的格式化信息:
<?php
phpinfo();
?>
完成后,保存并关闭文件。 现在,你可以通过访问您的服务器的域名或公网IP地址,然后在Web浏览器中访问此页面
/info.php
:
http://server_domain_name_or_IP/info.php
您应该看到一个由PHP生成的网页,其中包含有关您的服务器的信息:
如果你看到一个类似这样的页面,你已经成功地设置了PHP处理Nginx。 测试完这之后,最好删除您创建的文件,因为它实际上可能会向未经授权的用户提供有关您的配置的一些提示,这可能有助于他们尝试插入。如果以后需要,您可以随时重新生成此文件。 现在,通过键入以下内容删除该文件:
sudo rm /usr/share/nginx/html/info.php
结论
您现在应该已经在您的Ubuntu 14.04服务器上配置了一个LEMP。这为您向访问者提供Web内容提供了非常灵活的基础。