介绍
LEMP软件堆栈是一组软件,可用于服务动态网页和Web应用程序. 这是描述Linux操作系统的缩写,具有NginxWeb服务器。
在本指南中,您将使用操作系统提供的包在 Debian 服务器上安装 LEMP 堆栈。
前提条件
要完成本指南,您将需要一个 Debian 9 服务器,具有sudo
特权的非根用户,您可以在我们的 Debian 9 初始服务器设置指南中设置具有这些特权的用户。
步骤1:安装 Nginx Web 服务器
为了向我们的网站访问者显示网页,我们将使用现代、高效的网页服务器 Nginx。
我们将使用的所有软件将直接来自 Debian 的默认包存库,这意味着我们可以使用apt
包管理套件来完成安装。
由于这是我们第一次在这个会话中使用apt
,我们应该从更新本地包索引开始,然后我们可以安装服务器:
1sudo apt update
2sudo apt install nginx
在 Debian 9 上, Nginx 配置为在安装时启动。
如果你有ufw
防火墙运行,你需要允许连接到 Nginx. 你应该启用最限制的配置文件,仍然允许你想要的流量. 由于我们尚未为我们的服务器配置SSL,在本指南中,我们只需要允许80
端口的流量。
你可以通过键入来实现这一点:
1sudo ufw allow 'Nginx HTTP'
您可以通过键入检查更改:
1sudo ufw status
您应该在显示的输出中看到允许的 HTTP 流量:
1[secondary_label Output]
2Status: active
3
4To Action From
5-- ------ ----
6OpenSSH ALLOW Anywhere
7Nginx HTTP ALLOW Anywhere
8OpenSSH (v6) ALLOW Anywhere (v6)
9Nginx HTTP (v6) ALLOW Anywhere (v6)
现在,通过访问您的服务器的域名或公共 IP 地址在您的 Web 浏览器中测试服务器是否正在运行. 如果您没有域名指向您的服务器,并且您不知道您的服务器的公共 IP 地址,您可以通过在您的终端中键入以下之一来找到它:
1ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
這將打印出幾個IP地址,您可以在您的網頁瀏覽器中嘗試每一個。
输入您在 Web 浏览器中接收的地址之一. 它应该带您到 Nginx 的默认定位页面:
1http://your_domain_or_IP
如果您看到上面的页面,您已经成功安装了 Nginx。
步骤2:安装MySQL来管理网站数据
现在我们有一个Web服务器,我们需要安装MySQL,一个数据库管理系统,以存储和管理我们网站的数据。
您可以通过键入轻松安装:
1sudo apt install mysql-server
<$>[注] 注: 在 Debian 9 中,一个 MySQL 项目的社区叉子 - MariaDB - 被包装为默认的 MySQL 变体. 虽然 MariaDB 在大多数情况下工作得很好,如果您只需要在 Oracle 的 MySQL 中找到的功能,您可以安装和使用由 MySQL 开发人员维护的存储库中的包。
MySQL 数据库软件已安装,但其配置尚未完成。
为了确保安装,我们可以运行一个安全脚本,它会问我们是否想要修改一些不安全的默认设置。
1sudo mysql_secure_installation
您将被要求输入MySQL root 帐户的密码,我们还没有设置这个,所以只需点击ENTER
。然后您将被问及是否要设置该密码。
对于脚本提出的其他问题,您应该按y
,然后按ENTER
键在每个提示中。这将删除一些匿名用户和测试数据库,禁用远程根登录,并加载这些新规则,以便MySQL立即尊重您所做的更改。
此时,您的数据库系统已设置和安全,让我们设置PHP。
步骤 3 – 安装 PHP 来处理
我们现在安装了 Nginx 来服务我们的页面,安装了 MySQL 来存储和管理我们的数据,但是,我们仍然没有任何可以生成动态内容的东西。
由于 Nginx 不会像其他一些 Web 服务器那样包含原生 PHP 处理,所以我们需要安装 fpm,即fastCGI 流程管理器
。我们会告诉 Nginx 将 PHP 请求传递给该软件进行处理,我们还会安装一个额外的辅助包,允许 PHP 与我们的 MySQL 数据库备份进行通信。
然后安装php-fpm
和php-mysql
包:
1sudo apt install php-fpm php-mysql
现在我们已经安装了 PHP 组件,接下来我们将配置 Nginx 来使用它们。
步骤 4 — 配置 Nginx 以使用 PHP 处理器
现在我们已经安装了所有所需的组件,我们唯一需要的配置更改是告诉 Nginx 使用我们的 PHP 处理器进行动态内容。
我们在服务器块级别上做这件事(服务器块类似于Apache的虚拟主机)。我们将单独留下默认的Nginx配置,而不是创建一个新的配置文件和新的Web根目录来保留我们的PHP文件。
首先,在 /var/www
中创建一个新目录,以保持 PHP 网站:
1sudo mkdir /var/www/your_domain
然后,在 Nginx 的可用网站
目录中打开一个新的配置文件:
1sudo nano /etc/nginx/sites-available/your_domain
这将创建一个新的空格文件. 粘贴到以下裸骨配置:
1[label /etc/nginx/sites-available/your_domain]
2server {
3 listen 80;
4 listen [::]:80;
5
6 root /var/www/your_domain;
7 index index.php index.html index.htm;
8
9 server_name your_domain;
10
11 location / {
12 try_files $uri $uri/ =404;
13 }
14
15 location ~ \.php$ {
16 include snippets/fastcgi-php.conf;
17 fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
18 }
19}
这是一个非常基本的配置,它在端口80上收听并服务于我们刚刚创建的网页根的文件,它只会响应在server_name
之后提供的名称请求,并且在php
结束的任何文件将在php-fpm
过程中处理,然后Nginx将结果发送给用户。
保存和关闭文件,当你完成了定制它。
通过从 Nginx 的网站启用
目录链接到配置文件来激活您的配置:
1sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
这将告诉 Nginx下次重新加载时使用配置,首先通过键入来测试您的配置语法错误:
1sudo nginx -t
如果报告了任何错误,请返回并重新检查您的文件,然后继续。
当你准备好时,重新加载 Nginx 以进行更改:
1sudo systemctl reload nginx
接下来,我们将在我们的新网页根目录中创建一个文件,以测试PHP处理。
步骤 5 — 创建一个 PHP 文件来测试配置
我们可以测试它来验证 Nginx 是否能正确地将.php 文件发送给我们的 PHP 处理器。
我们可以通过在我们的文档根中创建测试PHP文件来做到这一点,在文档根中打开一个名为info.php
的新文件:
1sudo nano /var/www/your_domain/info.php
输入或粘贴下列行到新文件. 这是有效的PHP代码,将返回有关我们的服务器的信息:
1[label /var/www/your_domain/info.php]
2<?php
3 phpinfo();
4?>
完成后,保存并关闭文件。
现在,您可以通过访问您的服务器的域名或公共IP地址来访问您的Web浏览器中的此页面,然后是/info.php
:
1http://your_domain/info.php
您应该看到一个由PHP生成的网页,其中包含有关您的服务器的信息:
如果你看到一个看起来像这样的页面,你已经成功地设置了PHP处理与Nginx。
在验证 Nginx 是否正确渲染页面后,最好删除您创建的文件,因为它实际上可以给未经授权的用户一些关于您的配置的提示,这可能有助于他们尝试打破。
现在,通过键入删除文件:
1sudo rm /var/www/html/info.php
您可以随时重建此文件,如果您需要它以后。
结论
您现在应该在您的 Debian 服务器上配置一个 LEMP 堆栈,这为您提供了一个非常灵活的基础,以便为您的访问者提供网页内容。