介绍
LEMP软件是一组可用于提供动态网页和Web应用程序的软件。这是一个描述具有Nginx Web服务器的Linux操作系统的首字母缩略词。后端数据存储在MySQL数据库中,动态处理由PHP处理。 在本指南中,您将使用操作系统提供的软件包在Debian服务器上安装LEMP。先决条件
要完成本指南,您需要:- 一个Debian 8服务器与非root用户
sudo
权限。 您可以设置这些权限的用户在我们与Debian 8 初始服务器设置指南。
第1步 - 安装Nginx Web服务器
为了向我们的网站访问者显示网页,我们将使用Nginx,一个现代化,高效的网络服务器。 我们将用于此过程的所有软件将直接来自Debian的默认软件包存储库。这意味着我们可以用apt
的包管理套件来完成安装。 由于这是用我们的第一次
apt
本次会议,我们应该通过更新本地软件包索引开始。然后我们可以安装服务器:
sudo apt-get update
sudo apt-get install nginx
在Debian 8上,Nginx配置为在安装时开始运行。 如果你有
ufw
防火墙运行,您将需要允许Nginx的连接。 您应该启用仍然允许所需流量的限制最严格的配置文件。 因为我们没有为我们的服务器配置SSL然而,在本指南中,我们将只需要允许端口流量
80
。 您可以通过键入以下内容来启用:
sudo ufw allow 'Nginx HTTP'
您可以通过键入以下内容验证更改:
sudo ufw status
您应该在显示的输出中看到允许的HTTP流量:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
现在,通过在Web浏览器中访问服务器的域名或公共IP地址,测试服务器是否已启动并运行。如果您没有指向您的服务器的域名,并且您不知道您的服务器的公共IP地址,您可以通过在终端中键入以下内容之一找到它:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
这将打印出几个IP地址。您可以在您的网络浏览器中依次尝试每个。 或者,您可以检查从互联网上的其他位置查看哪个IP地址可访问:
curl -4 icanhazip.com
键入您在Web浏览器中收到的一个地址。它应该带你到Nginx的默认着陆页:
http://server_domain_or_IP
如果你看到上面的页面,你已经成功安装了Nginx。
第2步 - 安装MySQL以管理站点数据
现在我们有一个Web服务器,我们需要安装MySQL,一个数据库管理系统,以存储和管理我们的网站的数据。 您可以通过键入以下内容轻松安装:sudo apt-get install mysql-server
您将被要求提供一个root(管理)密码以在MySQL系统中使用,您需要确认该密码。 MySQL数据库软件现已安装,但其配置尚未完全完成。 为了确保安装,我们可以运行一个简单的安全脚本,询问我们是否要修改一些不安全的默认值。通过键入以下内容开始脚本:
sudo mysql_secure_installation
你会被要求输入你MySQL的
root帐户设置密码。 然后会询问您是否要更改该密码。 如果你很高兴与您当前密码,输入
N
为“无”的提示:
Using existing password for root.
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] n
... skipping.
对于脚本提出的问题的休息,你应该按
Y
,其次
ENTER
在每个提示键。这将删除一些匿名用户和测试数据库,禁用远程根登录,并加载这些新规则,以便MySQL立即尊重您所做的更改。 此时,您的数据库系统现在已设置和保护。让我们设置PHP。
第3步 - 安装PHP进行处理
我们现在安装了Nginx来为我们的页面和MySQL安装存储和管理我们的数据。但是,我们还没有任何可以生成动态内容的东西。这就是PHP的地方。 由于Nginx的不包含像其他一些Web服务器PHP原生处理,我们需要安装fpm
,主张“FastCGI进程管理器”。我们将告诉Nginx将PHP请求传递给这个软件进行处理。我们还将安装一个额外的帮助程序包,它将允许PHP与我们的MySQL数据库后端进行通信。安装将拉入必要的PHP核心文件,使其工作。 由于许可问题,这些软件包在默认存储库中不可用,因此我们必须修改存储库源以将它们引入。 打开
/etc/apt/sources.list
在文本编辑器:
sudo nano /etc/apt/sources.list
然后,对于每个源,追加
contrib
和
non-free
库每个源。完成这些更改后,您的文件应如下所示:
/etc/apt/sources.list
...
deb http://mirrors.digitalocean.com/debian jessie main contrib non-free
deb-src http://mirrors.digitalocean.com/debian jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
# jessie-updates, previously known as 'volatile'
deb http://mirrors.digitalocean.com/debian jessie-updates main contrib non-free
deb-src http://mirrors.digitalocean.com/debian jessie-updates main contrib non-free
保存并退出文件。然后更新您的来源:
sudo apt-get update
然后安装
php5-fpm
和
php5-mysql
模块:
sudo apt-get install php5-fpm php5-mysql
我们现在已经安装了我们的PHP组件,但我们需要进行一些小的配置更改,以使我们的设置更安全。 打开主
php-fpm
具有root权限的配置文件:
sudo nano /etc/php5/fpm/php.ini
寻找那些设置参数文件中
cgi.fix_pathinfo
。这将使用分号(;)注释掉,默认设置为“1”。 这是一个非常不安全的设置,因为它告诉PHP尝试执行最近的文件,如果找不到请求的PHP文件,它可以找到。这基本上将允许用户以允许他们执行他们不应该被允许执行的脚本的方式来制作PHP请求。 我们将通过取消注释行并将其设置为“0”来更改这两个条件,如下所示:
/etc/php5/fpm/php.ini
cgi.fix_pathinfo=0
保存并在完成后关闭文件。 现在,我们只需要重新启动我们的PHP处理器,输入:
sudo systemctl restart php5-fpm
这将实施我们所做的改变。
第4步 - 配置Nginx使用PHP处理器
现在,我们安装了所有必需的组件。唯一的配置更改我们仍然需要是告诉Nginx使用我们的PHP处理器的动态内容。 我们在服务器块级别上执行此操作(服务器块类似于Apache的虚拟主机)。通过键入以下内容打开默认的Nginx服务器块配置文件:sudo nano /etc/nginx/sites-available/default
目前,删除注释,Nginx默认服务器块文件看起来像这样:
/ etc / nginx / sites-available / default
server {
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;
}
}
我们需要对我们网站的此文件进行一些更改。
- 首先,我们需要添加
index.php
作为我们的第一个值index
的指令,这样命名的文件index.php
供应,如果有的话,当请求目录。 - 我们可以修改
server_name
以指向我们的服务器的域名或公网IP地址。 - 对于实际的PHP处理,我们只需要取消注释处理PHP请求的文件的一段。这将是
location ~\.php$
定位块,附带fastcgi-php.conf
片段,并与相关的socketphp-fpm
。 - 我们也将取消注释位置块处理
.htaccess
文件。 Nginx不处理这些文件。如果任何这些文件碰巧进入文档根目录,则不应将其提供给访问者。
/ etc / nginx / sites-available / default
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 your_server_ip;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
进行上述更改后,您可以保存并关闭文件。 键入以下内容以测试配置文件是否有语法错误:
sudo nginx -t
如果报告了任何错误,请返回并重新检查您的文件,然后继续。 当你准备好,重新加载Nginx进行必要的更改:
sudo systemctl reload nginx
第5步 - 创建一个PHP文件以测试配置
您的LEMP现在应该完全设置。我们可以测试来验证Nginx的可以正确手.php
文件从我们的PHP处理器。 我们可以通过在我们的文档根中创建一个测试PHP文件来实现。打开一个名为新文件
info.php
在文本编辑器文档根目录中:
sudo nano /var/www/html/info.php
在新文件中键入或粘贴以下行。这是有效的PHP代码,将返回有关我们的服务器的信息:
/var/www/html/info.php
<?php
phpinfo();
?>
完成后,保存并关闭文件。 现在,你可以通过访问您的服务器的域名或公网IP地址,然后在Web浏览器中访问此页面
/info.php
:
http://server_domain_or_IP/info.php
您应该看到一个由PHP生成的网页,其中包含有关您的服务器的信息:
如果你看到一个类似这样的页面,你已经成功地设置了PHP处理Nginx。 验证Nginx正确呈现页面后,最好删除您创建的文件,因为它实际上可以向未经授权的用户提供有关您的配置的一些提示,可能有助于他们尝试插入。 现在,通过键入以下内容删除该文件:
sudo rm /var/www/html/info.php
如果以后需要,您可以随时重新生成此文件。