如何在 Ubuntu 18.04 Bionic Beaver Linux 上安装 Nginx、MariaDB、PHP(LEMP 堆栈)
客观的
在 Ubuntu 18.04 上安装 Nginx Web 服务器 (LEMP)。特别是,这个 Linux Web 服务器安装指南向您展示了如何安装 Nginx、如何安装 MariaDB 以及如何安装 PHP。
发行版
Ubuntu 18.04 仿生海狸
要求
具有 root 权限的 Ubuntu 18.04 的有效安装
困难
中等的
惯例
# – 要求以root权限直接以root用户身份或使用
sudo
命令执行给定的linux命令$ – 要求以常规非特权用户身份执行给定的 Linux 命令
介绍
如果您想在 Linux 上运行基于 PHP 的网站,Apache 并不是您唯一的选择。 Nginx 是一种速度更快、重量更轻的 Web 服务器,非常容易配置和运行。此外,它还擅长处理其他任务,例如负载平衡、服务器优化和充当反向代理。实际上,Nginx 是初创公司托管 Web 应用程序的首选。
在 Ubuntu 18.04 上设置 Nginx 来托管 PHP 非常简单,您只需要安装几个软件包即可开始。
安装
在执行任何操作之前,您应该先安装所需的所有内容。您只需要几个软件包。另外,Ubuntu 18.04 在其默认存储库中拥有所有内容的最新版本,因此您无需担心跟踪外部存储库。
$ sudo apt install mariadb-server nginx php-fpm php-mysql
在安装过程中,系统会要求您设置 MariaDB/MySQL 的管理员帐户。选择一个安全且难忘的密码。
您现在也应该花一点时间启动并启用 PHP-FPM。
注意:使用您安装的 PHP 版本更新以下命令!要检查您的 PHP 版本,请执行 php --version
命令。
$ sudo systemctl start php7.1-fpm
$ sudo systemctl enable php7.1-fpm
设置您的数据库
现在,您可以登录到新创建的数据库。
$ mysql -u root -p
输入您在安装过程中设置的密码。
您将进入 MySQL 控制台。您可以从那里做您需要做的一切。首先,创建您的实际数据库。
mysql> CREATE DATABASE `bionic_lemp`;
然后,定期使用来运行数据库。
mysql> CREATE USER `site_admin`@`localhost` IDENTIFIED BY 'your_password';
最后,授予新用户实际使用数据库的权限。
mysql> GRANT ALL ON bionic_lemp.* TO `site_admin`@`localhost`;
完成后,刷新权限并退出控制台。
mysql> FLUSH PRIVILEGES;
mysql> exit;
配置 Nginx
所有 Nginx 配置都位于 /etc/nginx
中。它们被分解以简化配置过程。您需要担心的两个是主 nginx.conf
文件和您将为网站创建的特定于站点的文件。您将其放入 sites-available
目录中。
在 /etc/nginx/sites-available
中为您的站点创建一个新文件。完整路径应类似于 /etc/nginx/sites-available/your-site
。
通过创建一个 server
块来启动该文件。 Nginx 使用 server
块来指定一个新的 Web 应用程序实例以供其侦听。
server {
}
您应该放入 server
块中的第一件事是 listen
行。他们告诉 Nginx 监听哪个端口。
listen 80 default;
listen [::]:80 default;
这些将涵盖 IPv4 和 IPv6 连接。删除 default
指定这是默认服务器。您只能使用一个默认值,因此如果您托管多个网站,请务必选择正确的一个。
接下来,告诉 Nginx 将哪个域名与该站点关联。如果您只是在本地执行此操作,请使用localhost
。否则,请使用您的域名。
server_name your-site.com;
如果您希望 Nginx 自动将带有 www
的请求重定向到同一服务器块。在当前服务器块的开头添加以下块。
server {
listen 80;
server_name www.your-site.com;
return 301 http://your-site.com$request_uri;
}
接下来,指定站点的根目录以及站点索引文件的名称。这些行告诉 Nginx 在 /var/www/your-site
中查找站点,并以任何名为 index.php
或 index.html的文件开头代码>.
root /var/www/your-site/;
index index.php index.html;
为每个站点设置单独的错误日志也是一个好主意。也在这里指定它们。
access_log /var/log/nginx/your-site.access_log;
error_log/var/log/nginx/your-site.error_log;
创建一个 location
块来告诉 Nginx 在找不到文件时引发 404 错误。 location
块位于服务器块内部,并告诉 Nginx 如何处理特定位置的特定文件类型。
location / {
try_files $uri $uri/ =404;
}
您需要做的最后一件事是告诉 Nginx 如何处理您的 PHP 文件。为此创建另一个 location
块。
注意:使用您安装的 PHP 版本更新以下配置!要检查您的 PHP 版本,请执行 php --version
命令。
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}
这就是您所需要的。保存并退出文件。现在创建该站点目录可能也是个好主意。
$ sudo /var/www/your-site
也给 Nginx 所有权。
$ sudo chown -R www-data:www-data /var/www/your-site
现在,删除 /etc/nginx/sites-enabled
中默认配置的符号链接。
$ sudo rm /etc/nginx/sites-enabled/default
然后,为您的站点配置创建一个新的符号链接。
$ sudo ln -s /etc/nginx/sites-available/your-site /etc/nginx/sites-enabled/
重新启动 Nginx 以使更改生效。
$ sudo systemctl restart nginx
测试一下
测试一切是否正常的最佳方法是将一个简单的 PHP 脚本放入您的站点目录中,并将其连接到您的数据库。在 /var/www/your-site/index.php
创建以下文件。
<?php echo '<h1>Page loaded with PHP!</h1>';
$conn = mysqli_connect('localhost', 'site_admin', 'your_password');
if(!$conn){
die('<h2>Error: </h2>' . mysqli_connect_error());
}else{
echo '<h2>Successfully Connected to MySQL Database!</h2>';
}
?>
使用网络浏览器导航到您的网站。如果您看到成功消息,表明您已成功连接到 MySQL,则您的服务器已正确配置。
结束语
配置 Nginx 需要一些时间,但这是值得的。它不仅比其他网络服务器更快,而且为您提供了大量的选项和细粒度的控制。配置 Nginx 来托管用其他语言(如 Python 和 Ruby)编写的 Web 应用程序以及 PHP 语言也很容易。 Nginx 无疑是现代 Web 应用程序的最佳选择之一。