介绍
LEMP软件是一组可用于为动态网页和Web应用程序提供服务的软件。 这是一个描述Linux操作系统的首字母缩写词,带有Nginx Web服务器。 后端数据存储在MySQL数据库中,动态处理由PHP处理。
在本指南中,您将使用操作系统提供的软件包在Debian服务器上安装LEMP。
先决条件
要完成本指南,您需要一台具有sudo
权限的非root用户的Debian 9服务器。 您可以在我们的初始服务器设置和Debian 9指南中设置具有这些权限的用户。
第1步 - 安装Nginx Web服务器
为了向我们的网站访问者显示网页,我们将采用现代高效的网络服务器Nginx。
我们将用于此过程的所有软件都将直接来自Debian的默认软件包存储库。 这意味着我们可以使用apt
包管理套件来完成安装。
由于这是我们第一次使用apt
进行此会话,因此我们应该从更新本地包索引开始。 然后我们可以安装服务器:
sudo apt update
sudo apt install nginx
在Debian 9上,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地址。 您可以在Web浏览器中依次尝试每个步骤。
键入您在Web浏览器中收到的地址之一。 它应该带你到Nginx的默认登陆页面:
http://your_domain_or_IP
如果您看到上面的页面,则表示您已成功安装Nginx。
第2步 - 安装MySQL以管理站点数据
现在我们有了一个Web服务器,我们需要安装MySQL,一个数据库管理系统,来存储和管理我们站点的数据。
您可以输入以下命令轻松安装:
sudo apt install mysql-server
注意:在Debian 9中,MySQL项目的社区分支--MariaDB - 被打包为默认的MySQL变体。 虽然MariaDB在大多数情况下运行良好,但如果您需要仅在Oracle的MySQL中找到的功能,则可以从MySQL开发人员维护的存储库中安装和使用软件包。 要安装官方MySQL服务器,请使用我们的教程如何在Debian 9上安装最新的MySQL 。
现在已安装MySQL数据库软件,但其配置不完整。
为了保护安装,我们可以运行一个安全脚本,询问我们是否要修改一些不安全的默认值。 键入以下命令开始脚本:
sudo mysql_secure_installation
系统将要求您输入MySQL root帐户的密码。 我们还没有设置它,所以只需按ENTER
。 然后,系统会询问您是否要设置该密码。 您应键入y
然后设置root密码。
对于脚本要求的其他问题,您应该按y
,然后在每个提示符处按ENTER
键。 这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即尊重您所做的更改。
此时,您的数据库系统现已设置并受到保护。 我们来设置PHP。
第3步 - 安装PHP进行处理
我们现在已经安装了Nginx以服务我们的页面和安装的MySQL来存储和管理我们的数据。 但是,我们仍然没有任何可以生成动态内容的内容。 这就是PHP的用武之地。
由于Nginx不像其他一些Web服务器那样包含本机PHP处理,因此我们需要安装fpm
,它代表“fastCGI进程管理器”。 我们将告诉Nginx将PHP请求传递给该软件进行处理。 我们还将安装一个额外的帮助程序包,允许PHP与我们的MySQL数据库后端进行通信。 安装将引入必要的PHP核心文件以使其工作。
然后安装php-fpm
和php-mysql
包:
sudo apt install php-fpm php-mysql
我们现在安装了PHP组件。 接下来我们将配置Nginx以使用它们。
第4步 - 配置Nginx以使用PHP处理器
现在我们已经安装了所有必需的组件。 我们仍然需要的唯一配置更改是告诉Nginx将我们的PHP处理器用于动态内容。
我们在服务器块级别执行此操作(服务器块类似于Apache的虚拟主机)。 我们将单独保留默认的Nginx配置,而是创建一个新的配置文件和新的Web根目录来保存我们的PHP文件。 我们将配置文件和目录命名为服务器应响应的域名或主机名。
首先,在/var/www
创建一个新目录来保存PHP站点:
sudo mkdir /var/www/your_domain
然后,在Nginx的sites-available
目录中打开一个新的配置文件:
sudo nano /etc/nginx/sites-available/your_domain
这将创建一个新的空白文件。 粘贴以下简单配置:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain;
index index.php index.html index.htm;
server_name your_domain;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}
这是一个非常基本的配置,它监听端口80并从我们刚创建的Web根目录提供文件。 它只会响应对server_name
之后提供的名称的请求,并且在Nginx将结果发送给用户之前,任何以.php
结尾的.php
都将由php-fpm
进程处理。
完成自定义后保存并关闭文件。
通过从Nginx的sites-enabled
目录链接到配置文件来激活您的配置:
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
这将告诉Nginx下次重新加载时使用配置。 首先,键入以下内容测试您的配置是否存在语法错
sudo nginx -t
如果报告了任何错误,请返回并重新检查您的文件,然后再继续。
准备好后,重新加载Nginx进行更改:
sudo systemctl reload nginx
接下来,我们将在新的Web根目录中创建一个文件来测试PHP处理。
第5步 - 创建PHP文件以测试配置
现在应该完全设置您的LEMP。 我们可以测试它以验证Nginx能否正确地将.php
文件.php
给我们的PHP处理器。
我们可以通过在文档根目录中创建测试PHP文件来完成此操作。 在文本编辑器中的文档根目录中打开一个名为info.php
的新文件:
sudo nano /var/www/your_domain/info.php
在新文件中键入或粘贴以下行。 这是有效的PHP代码,它将返回有关我们服务器的信息:
<?php
phpinfo();
?>
完成后,保存并关闭文件。
现在,您可以访问服务器的域名或公共IP地址,然后/info.php
,在Web浏览器中访问此页面:
http://your_domain/info.php
您应该看到PHP生成的网页,其中包含有关您的服务器的信息:
如果您看到一个看起来像这样的页面,那么您已成功使用Nginx设置PHP处理。
在验证Nginx正确呈现页面后,最好删除您创建的文件,因为它实际上可以向未经授权的用户提供有关您的配置的一些提示,这可能有助于他们尝试入侵。
现在,键入以下命令删除文件:
sudo rm /var/www/html/info.php
如果以后需要,您可以随时重新生成此文件。
结论
您现在应该在Debian服务器上配置LEMP。 这为您为访问者提供Web内容提供了非常灵活的基础。