目的
在Ubuntu 18.04上安装Nginx Web服务器(LEMP)。特别是,该Linux Web服务器安装指南向您展示了如何安装Nginx,如何安装MariaDB以及如何安装PHP。
发行版
Ubuntu 18.04仿生海狸
要求
具有root特权的Ubuntu 18.04的有效安装
困难
介质
约定
介绍
如果您想在Linux上运行基于PHP的网站,则不是Apache的唯一选择。 Nginx是一种速度更快,重量更轻的Web服务器,非常易于配置和运行。此外,它在处理其他任务(如负载平衡,服务器优化以及充当反向代理)方面也非常出色。实际上,Nginx是托管其Web应用程序的新兴公司中的首选。将Nginx设置为在Ubuntu 18.04上托管PHP非常简单,您只需要安装几个软件包即可上手。
安装
在执行任何操作之前,应首先安装所需的所有内容。您只需要几个软件包。另外,Ubuntu 18.04在其默认存储库中具有所有版本的最新版本,因此您不必担心跟踪外部存储库。
$ sudo apt install mariadb-server nginx php-fpm php-mysql
在安装过程中,系统会要求您为MariaDB /MySQL设置一个管理员帐户。选择一个安全且令人难忘的密码短语。您还应该花一点时间立即启动并启用PHP-FPM。
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
文件和将为网站创建的site-specific文件。那一个,你会把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 --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需要一些时间,但这是值得的。它不仅比其他Web服务器要快,而且还为您提供大量选项和fine-grained控件。配置Nginx来承载以其他语言(例如Python和Ruby)编写的Web应用程序以及与PHP一起使用也很容易。 Nginx无疑是现代Web应用程序的最佳选择之一。