如何在Ubuntu 18.04 LTS上安装LEMP Stack(Nginx,MariaDB,PHP7.2)
本教程将向您展示如何在Ubuntu 18.04上安装Nginx,MariaDB和PHP7.2(LEMP)。 软件堆栈是捆绑在一起的一组软件工具。 LEMP代表Linux,Nginx(Engine-X),MariaDB / MySQL和PHP,所有这些都是开源的,可以免费使用。 它是为动态网站和Web应用程序提供动力的最常见的软件堆栈。 Linux是操作系统。 Nginx是Web服务器; MariaDB / MySQL是数据库服务器,PHP是负责生成动态网页的服务器端脚本语言。
先决条件
要遵循本教程,您需要在本地计算机或远程服务器上运行Ubuntu 18.04 OS。 如果您正在寻找VPS(虚拟专用服务器),则可以单击此特殊链接以在DigitalOcean上获得$ 50的免费信用。 (仅适用于新用户)。 如果您已经是DigitalOcean用户,则可以单击此特殊链接以在Vultr上获得$ 50的免费信用(仅适用于新用户)。 事不宜迟,让我们开始吧。
步骤1:更新软件包
在安装LEMP堆栈之前,最好在Ubuntu 18.04 OS上运行以下命令来更新存储库和软件包。
sudo apt update sudo apt upgrade
步骤2:安装Nginx Web服务器
Nginx是一种高性能的Web服务器,如今非常流行。 它也可以用作反向代理和缓存服务器。 输入此命令以安装Nginx Web服务器。
sudo apt install nginx
安装后,可以通过运行以下命令使Nginx在启动Ubuntu时自动启动。
sudo systemctl enable nginx
然后使用以下命令启动Nginx:
sudo systemctl start nginx
现在查看其状态。
systemctl status nginx
输出:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-05-17 02:20:05 UTC; 2min 56s ago Docs: man:nginx(8) Main PID: 19851 (nginx) Tasks: 2 (limit: 2059) CGroup: /system.slice/nginx.service ├─19851 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─19853 nginx: worker process
“已启用”表示已启用启动时自动启动,并且我们可以看到Nginx正在运行。 请注意,上面的命令在运行后不会立即退出。 您需要按“q使其退出。
检查Nginx版本。
nginx -v
输出:
nginx version: nginx/1.14.0 (Ubuntu)
现在,在浏览器地址栏中输入您的Ubuntu 18.04服务器的公共IP地址。 您应该看到“欢迎使用Nginx”网页,这意味着Nginx Web服务器正在正常运行。 如果要在本地Ubuntu 18.04计算机上安装LEMP,请键入 127.0.0.1
要么 localhost
在浏览器地址栏中。
请注意,默认情况下,某些云服务器提供商可能会阻止所有传入流量,因此,如果您的浏览器无法连接到Nginx Web服务器,则可能需要在控制面板中设置防火墙规则。
最后,我们需要 www-data
(Nginx用户)作为Web目录的所有者。 默认情况下,它由root用户拥有。
sudo chown www-data:www-data /usr/share/nginx/html -R
步骤3:安装MariaDB数据库服务器
MariaDB是MySQL的直接替代品。 它是由MySQL团队的前成员开发的,他们担心Oracle可能会将MySQL变成开源产品。 输入以下命令以在Ubuntu 18.04上安装MariaDB。
sudo apt install mariadb-server mariadb-client
安装后,MariaDB服务器应自动启动。 使用 系统控制 检查其状态。
systemctl status mariadb
输出:
● mariadb.service - MariaDB database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-05-17 02:39:57 UTC; 49s ago Main PID: 21595 (mysqld) Status: "Taking your SQL requests now..." Tasks: 27 (limit: 2059) CGroup: /system.slice/mariadb.service └─21595 /usr/sbin/mysqld
如果它没有运行,请使用以下命令启动它:
sudo systemctl start mariadb
要使MariaDB在启动时自动启动,请运行
sudo systemctl enable mariadb
现在运行安装后安全脚本。
sudo mysql_secure_installation
当要求您输入MariaDB根密码时,请按Enter键,因为尚未设置根密码。 然后输入 ÿ 设置MariaDB服务器的根密码。
接下来,您可以按Enter回答所有剩余的问题,这将删除匿名用户,禁用远程root登录并删除测试数据库。 此步骤是MariaDB数据库安全性的基本要求。 (请注意,Y是大写的,这意味着它是默认答案。)
默认情况下,Ubuntu上的MaraiDB软件包使用 unix_socket
对用户登录进行身份验证,这基本上意味着您可以使用操作系统的用户名和密码登录MariaDB控制台。 因此,您可以运行以下命令来登录,而无需提供MariaDB根密码。
sudo mariadb -u root
要退出,请运行
exit;
检查MariaDB服务器版本信息。
mariadb --version
如您所见,我们已经安装了MariaDB 10.1.29。
mariadb Ver 15.1 Distrib 10.1.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
步骤4:安装PHP7.2
PHP7.2包含在Ubuntu 18.04存储库中,与PHP7.1相比,性能略有提高。 输入以下命令以安装php7.2和一些常用扩展。
sudo apt install php7.2 php7.2-fpm php7.2-mysql php-common php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl
WordPress等内容管理系统(CMS)通常需要PHP扩展。 例如,如果您的安装缺少 php7.2-xml
,那么您的某些WordPress网站页面可能为空白,您可以在Nginx错误日志中找到错误,例如:
PHP message: PHP Fatal error: Uncaught Error: Call to undefined function xml_parser_create()
安装这些PHP扩展可确保CMS顺利运行。 现在启动php7.2-fpm。
sudo systemctl start php7.2-fpm
在启动时启用自动启动。
sudo systemctl enable php7.2-fpm
检查状态:
systemctl status php7.2-fpm
样本输出:
● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor prese Active: active (running) since Thu 2018-05-17 03:04:46 UTC; 2min 43s ago Docs: man:php-fpm7.2(8) Main PID: 31922 (php-fpm7.2) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/se Tasks: 3 (limit: 2059) CGroup: /system.slice/php7.2-fpm.service ├─31922 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf) ├─31939 php-fpm: pool www └─31940 php-fpm: pool www
步骤5:创建一个Nginx服务器块
Nginx服务器块就像Apache中的虚拟主机。 我们将不使用默认服务器块,因为它不足以运行PHP代码,并且如果我们对其进行修改,它将变得一团糟。 因此,删除 default
在符号链接 sites-enabled
通过运行以下命令创建目录。 (它仍然可以作为 /etc/nginx/sites-available/default
)
sudo rm /etc/nginx/sites-enabled/default
然后在下面创建一个全新的服务器阻止文件 /etc/nginx/conf.d/ 目录。
sudo nano /etc/nginx/conf.d/default.conf
将以下文本粘贴到文件中。 以下代码片段将使Nginx使用通用服务器名称在IPv4端口80和IPv6端口80上进行侦听。
server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html/; index index.php index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ /index.php; } location ~ .php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } # A long browser cache lifetime can speed up repeat visits to your page location ~* .(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; } # disable access to hidden files location ~ /.ht { access_log off; log_not_found off; deny all; } }
保存并关闭文件。 然后测试Nginx配置。
sudo nginx -t
如果测试成功,请重新加载Nginx。
sudo systemctl reload nginx
步骤6:测试PHP
要使用Nginx Web服务器测试PHP-FPM,我们需要创建一个 info.php
文件根目录中的文件。
sudo nano /usr/share/nginx/html/info.php
将以下PHP代码粘贴到文件中。
<?php phpinfo(); ?>
保存并关闭文件。 现在,在浏览器地址栏中,输入 server-ip-address/info.php
。 更换 sever-ip-address
与您的实际IP。 如果您在本地计算机上遵循本教程,请输入 127.0.0.1/info.php
要么 localhost/info.php
。
您应该看到服务器的PHP信息。 这意味着PHP脚本可以在Nginx Web服务器上正常运行。
恭喜! 您已在Ubuntu 18.04上成功安装了Nginx,MariaDB和PHP7.2。 为了服务器的安全,您应该删除 info.php
现在文件,以防止黑客看到它。
sudo rm /usr/share/nginx/html/info.php
下一步
您可能需要安装phpMyAdmin,这是MySQL / MariaDB数据库服务器的基于Web的管理面板。
- 如何在Ubuntu 18.04 LTS上使用Nginx(LEMP)安装phpMyAdmin
您也可以在LEMP堆栈上安装WordPress,以创建自己的网站或博客。
- 在Ubuntu 18.04上使用Nginx,MariaDB,PHP7.2(LEMP)安装WordPress
而已! 希望本教程对您有所帮助 在Ubuntu 18.04 LTS上安装LEMP堆栈。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 照顾自己。