Ubuntu 18.04 安装 LEMP



介绍

LEMP软件是一组可用于提供动态网页和Web应用程序的软件。 这是一个缩写词,用于描述Linux操作系统和Nginx(发音为“ Engine-X”)Web服务器。 后端数据存储在MySQL数据库中,动态处理由PHP处理。


本指南演示了如何在Ubuntu 18.04服务器上安装LEMP。 Ubuntu操作系统满足了第一个要求。 我们将描述如何启动和运行其余组件。


先决条件

在完成本教程之前,您应该在服务器上拥有一个具有sudo特权的常规非root用户帐户。 通过完成我们的Ubuntu 18.04初始服务器设置指南来设置此帐户。

第1步–安装Nginx Web服务器

为了向网站访问者显示网页,我们将使用Nginx(一种现代,高效的网络服务器)。


此过程中使用的所有软件都将来自Ubuntu的默认软件包存储库。 这意味着我们可以使用apt软件包管理套件来完成必要的安装。


由于这是我们第一次使用apt进行此会话,因此首先要更新服务器的软件包索引。 之后,安装服务器:

$ sudo apt update
$ sudo apt install nginx

在Ubuntu 18.04上,Nginx配置为在安装后开始运行。


如果您正在运行ufw防火墙(如初始设置指南中所述),则需要允许连接到Nginx。 Nginx在安装时会向ufw注册自己,因此该过程非常简单。


建议您启用限制性最强的配置文件,该配置文件仍将允许所需的流量。 由于您尚未在本指南中为服务器配置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


输入您在网络浏览器中收到的地址,它将带您进入Nginx的默认登录页面:

image.png


如果看到上面的页面,则说明您已经成功安装了Nginx。


第2步–安装MySQL以管理站点数据

现在您已经拥有Web服务器,您需要安装MySQL(数据库管理系统)来存储和管理您站点的数据。


通过键入以下命令安装MySQL:

$sudo apt install mysql-server


现在已安装MySQL数据库软件,但其配置尚未完成。


为了确保安装安全,MySQL附带了一个脚本,该脚本将询问我们是否要修改一些不安全的默认值。 通过键入以下命令来启动脚本:

$sudo mysql_secure_installation

他的脚本将询问您是否要配置“验证密码插件”。


警告:启用此功能只是一个判断。 如果启用,与指定条件不匹配的密码将被MySQL拒绝,并出现错误。 如果您将弱密码与自动配置MySQL用户凭据的软件(例如phpMyAdmin的Ubuntu软件包)结合使用,则会导致问题。 禁用验证是很安全的,但是您应该始终对数据库凭据使用强而独特的密码。



回答“是”,否则继续进行任何其他操作而不启用。

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

如果您启用了验证,则脚本还将要求您选择密码验证级别。 请记住,如果输入2(最高级别),则尝试设置任何不包含数字,大写,小写字母和特殊字符或基于常见词典单词的密码时,都会收到错误消息。

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

接下来,将要求您提交并确认root密码:

Please set the password for root here.

New password:

Re-enter new password:

对于其余的问题,应按Y并在每个提示下按ENTER键。 这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即尊重我们所做的更改。


请注意,在运行MySQL 5.7(及更高版本)的Ubuntu系统中,默认情况下,MySQL根用户设置为使用auth_socket插件而不是使用密码进行身份验证。 在许多情况下,这可以提高安全性和可用性,但是当您需要允许外部程序(例如phpMyAdmin)访问用户时,也会使事情复杂化。


如果使用auth_socket插件访问适合您工作流程的MySQL,则可以继续执行步骤3。但是,如果您希望以root用户身份连接到MySQL时使用密码,则需要将其身份验证方法从auth_socket切换为mysql_native_password。 为此,请从终端打开MySQL提示符:

$ sudo mysql

接下来,使用以下命令检查每个MySQL用户帐户使用的身份验证方法:

mysql>SELECT user,authentication_string,plugin,host FROM mysql.user;


Output+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

在此示例中,您可以看到root用户实际上使用auth_socket插件进行了身份验证。 要将根帐户配置为使用密码进行身份验证,请运行以下ALTER USER命令。 确保将密码更改为您选择的强密码:

mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';


然后,运行FLUSH PRIVILEGES,告诉服务器重新加载授权表并使新的更改生效:

mysql>FLUSH PRIVILEGES;

再次检查每个用户使用的身份验证方法,以确认root不再使用auth_socket插件进行身份验证:

mysql>SELECT user,authentication_string,plugin,host FROM mysql.user;


Output+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

您可以在此示例输出中看到,MySQL根用户现在使用密码进行了身份验证。 一旦在自己的服务器上确认了这一点,就可以退出MySQL Shell:


mysql>exit


注意:将root的MySQL用户配置为使用密码进行身份验证后,您将无法再使用以前使用的sudo mysql命令访问MySQL。 相反,您必须运行以下命令:


mysql -u root -p

After entering the password you just set, you will see the MySQL prompt.

至此,您的数据库系统已经建立,您可以继续安装PHP。


步骤3 –安装PHP并配置Nginx以使用PHP处理器

现在,您已经安装了Nginx来服务页面,并安装了MySQL来存储和管理数据。 但是,您仍然没有可以生成动态内容的任何内容。 这就是PHP发挥作用的地方。


由于Nginx不像其他一些Web服务器那样包含本机PHP处理,因此您需要安装php-fpm,它代表“ fastCGI进程管理器”。 我们将告诉Nginx将PHP请求传递给该软件进行处理。


注意:根据您的云提供商,您可能需要在安装php-fpm软件包之前添加Ubuntu的Universe存储库,其中包括由Ubuntu社区维护的免费和开源软件。 您可以通过键入以下内容来执行此操作:

$sudo add-apt-repository universe

安装php-fpm模块以及一个附加的帮助程序包php-mysql,它将允许PHP与您的数据库后端进行通信。 安装将提取必要的PHP核心文件。 通过键入以下内容:

$sudo apt install php-fpm php-mysql

现在,您已经安装了所有必需的LEMP堆栈组件,但是仍然需要进行一些配置更改,以告诉Nginx使用PHP处理器处理动态内容。


这是在服务器块级别完成的(服务器块类似于Apache的虚拟主机)。 为此,请在/ etc / nginx / sites-available /目录中打开一个新的服务器块配置文件。 在此示例中,新的服务器块配置文件名为example.com,尽管您可以根据自己的喜好命名:

$ sudo vim  /etc/nginx/sites-available/example.com



通过编辑新的服务器块配置文件,而无需编辑默认文件,则可以根据需要轻松地恢复默认配置。


将以下内容(从默认服务器块配置文件中获取并稍作修改)添加到新的服务器块配置文件中:

/etc/nginx/sites-available/example.com
server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name example.com;

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

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }}


这些指令和位置块的作用如下:


listen —定义Nginx将监听的端口。在这种情况下,它将监听端口80(HTTP的默认端口)。

根目录-定义文档根目录,用于存储网站提供的文件。

index-将Nginx配置为在请求索引文件(如果有)时优先处理名为index.php的服务文件。

server_name-定义对服务器的给定请求应使用哪个服务器块。将此指令指向您服务器的域名或公共IP地址。

location / —第一个location块包含try_files指令,该指令检查是否存在与URI请求匹配的文件。如果Nginx找不到合适的文件,它将返回404错误。

location〜\ .php $ —此位置块通过将Nginx指向fastcgi-php.conf配置文件和php7.2-fpm.sock文件来处理实际的PHP处理,该文件声明了与php-fpm关联的套接字。

location〜/\.ht —最后一个位置块处理.htaccess文件,Nginx不会处理。通过添加deny all指令,如果任何.htaccess文件碰巧进入文档根目录,它们将不会提供给访问者。

添加此内容后,保存并关闭文件。通过创建从新服务器块配置文件(在/ etc / nginx / sites-available /目录中)到/ etc / nginx / sites-enabled /目录的符号链接来启用新服务器块:

$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

然后,从/ sites-enabled /目录取消链接默认配置文件:

$sudo unlink /etc/nginx/sites-enabled/default

注意:如果您需要恢复默认配置,可以通过重新创建符号链接来完成,如下所示:

$ sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

通过键入以下内容来测试新配置文件的语法错误:

$ sudo nginx -t

如果报告了任何错误,请返回并重新检查文件,然后再继续。


准备就绪后,重新加载Nginx进行必要的更改:

$ sudo systemctl reload nginx

这样就完成了LEMP的安装和配置。 但是,请谨慎确认所有组件都可以相互通信。

步骤4 –创建一个PHP文件以测试配置

您的LEMP现在应该已完全设置。 您可以对其进行测试,以验证Nginx是否可以将.php文件正确地移交给PHP处理器。


为此,请使用文本编辑器在文档根目录中创建一个名为info.php的测试PHP文件:

$sudo vim  /var/www/html/info.php

在新文件中输入以下几行。 这是有效的PHP代码,它将返回有关您的服务器的信息:

/var/www/html/info.php
<?php
phpinfo();

完成后,保存并关闭文件。


现在,您可以在Web浏览器中访问此页面,方法是访问服务器的域名或公共IP地址,后跟/info.php:

http://your_server_domain_or_IP/info.php

您应该看到由PHP生成的网页,其中包含有关服务器的信息:

image.png

如果您看到类似这样的页面,则说明您已成功使用Nginx设置了PHP处理。

这样,您现在在Ubuntu 18.04服务器上就拥有了一个完全配置且正常运行的LEMP。

标签: 教程

作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇:NETGEAR 48 端口千兆智能托管加交换机(GS750E)
下一篇:wordpress 博客X主题安装教程

发表评论

vidnami 在线视频创作工具--做海外推广营销视频必备工具

image.png


我们的折扣优惠是向观众推广Vidnami的绝妙方式。他们将即时访问 25% 的 Vidnami, 再加上我们的视频营销包免费。最棒的是,您将获得所有销售额的50%!

https://www.vidnami.com/c/Mr_xiaoxiao-vn-buy-discount 

期待各位的加入,让原创发挥活力,让阅读更有价值!登录注册
登录
用户名
密码
注册
用户名
密码
确认密码
邮箱
验证码
找回密码
用户名
邮箱
※ 重置链接将发送到邮箱