如何在Ubuntu 16.04 LTS上安装Nginx,MariaDB和PHP7(LEMP Stack)

可从Ubuntu 16.04 LTS Xenial Xerus获得PHP7,因此您不再需要依赖第三方PPA即可在Ubuntu 16.04上安装PHP7。 在本教程中,我们将研究如何在Ubuntu 16.04 LTS Xenial Xerus上安装Nginx,MariaDB和PHP7-FPM(LEMP堆栈)。

步骤1:更新Ubuntu 16.04 LTS

在安装任何软件之前,始终最好更新存储库和软件包。 SSH进入您的Ubuntu 16.04服务器,然后输入以下命令。

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 Sat 2016-06-04 08:31:23 EDT; 1 day 2h ago
 Main PID: 298 (nginx)
   CGroup: /system.slice/nginx.service
     ├─298 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
     └─299 nginx: worker process

已启用”表示已启用启动时自动启动,并且我们可以看到Nginx正在运行。

现在,在浏览器的地址栏中,键入Ubuntu 16.04 LTS服务器的公共IP地址。 您应该看到“欢迎使用nginx!” 表示Nginx Web服务器运行正常的网页。

您可以使用以下命令来获取Ubuntu 16.04服务器的公共IP地址。

sudo apt install curl

curl http://icanhazip.com

如果要在本地Ubuntu 16.04机器上安装LEMP,只需键入 127.0.0.1 要么 localhost 在浏览器地址栏中。

最后,我们需要 www-data (Nginx用户)作为Web根目录的所有者。

sudo chown www-data /usr/share/nginx/html -R

步骤3:安装MariaDB

MariaDB是MySQL的直接替代品。 它是由MySQL团队的前成员开发的,他们担心Oracle可能会将MySQL变成封闭源代码产品。 许多Linux发行版(Arch Linux,Fedora等),公司和组织(Google,Wikipedia)已迁移到MariaDB。 因此,我们将安装MariaDB而不是MySQL。

sudo apt install mariadb-server mariadb-client

安装后,MariaDB服务器应自动启动。 使用systemctl检查其状态。

systemctl status mysql

输出:

● mysql.service - LSB: Start and stop the mysql database server daemon
 Loaded: loaded (/etc/init.d/mysql; bad; vendor preset: enabled)
 Active: active (running) since Wed 2016-04-20 18:52:01 EDT; 1min 30s ago
 Docs: man:systemd-sysv-generator(8)

如果它没有运行,请使用以下命令启动它:

sudo systemctl start mysql

要使MariaDB在重新启动Ubuntu 16.04时自动启动:

sudo systemctl enable mysql

现在运行安装后安全脚本。

sudo mysql_secure_installation

当要求您输入MariaDB根密码时,请按Enter键,因为尚未设置根密码。 然后输入 ÿ 设置MariaDB服务器的根密码。

在Ubuntu上安装mariadb

接下来,您只需按Enter即可回答所有剩余的问题。 这将删除匿名用户,禁用远程root登录并删除测试数据库。 此步骤是MariaDB数据库安全性的基本要求。

mariadb安全安装

步骤4:安装PHP7

输入以下命令以安装PHP7和PHP7扩展。

sudo apt install php7.0-fpm php7.0-mbstring php7.0-xml php7.0-mysql php7.0-common php7.0-gd php7.0-json php7.0-cli php7.0-curl

WordPress等内容管理系统(CMS)通常需要PHP扩展。 例如,如果您的安装缺少php7.0-xml,则您的WordPress站点页面中的某些页面可能为空白,您可以在Nginx错误日志中找到错误,例如:

PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function xml_parser_create()

安装这些PHP扩展可确保CMS顺利运行。

现在启动php7.0-fpm。

sudo systemctl start php7.0-fpm

检查状态:

systemctl status php7.0-fpm

样本输出:

● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager
 Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor pre
set: enabled)
 Active: active (running) since Wed 2016-04-20 19:21:05 EDT; 2s ago

步骤5:创建一个默认的Nginx服务器阻止文件

除掉 默认 在符号链接 网站启用 目录。

sudo rm /etc/nginx/sites-enabled/default

然后在下面创建一个新的默认服务器阻止文件 /etc/nginx/conf.d/ 目录。

sudo nano /etc/nginx/conf.d/default.conf

将以下文本粘贴到文件中。 将12.34.56.78替换为您的实际服务器IP。

server {
  listen 80;
  listen [::]:80;
  server_name 12.34.56.78;
  root /usr/share/nginx/html/;
  index index.php index.html index.htm index.nginx-debian.html;

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

  error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;

  location = /50x.html {
    root /usr/share/nginx/html;
  }

  location ~ .php$ {
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

  location ~ /.ht {
    deny all;
  }
}

保存并关闭文件。 然后测试nginx配置并重新加载它。

sudo nginx -t

sudo systemctl reload nginx

步骤6:测试PHP

要测试PHP7的cli版本,我们只需要输入以下命令:

php --version

样本输出:

PHP 7.0.15-7ubuntu2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
  with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

要测试PHP-FPM,请先创建一个 test.php Web根目录中的文件。

sudo nano /usr/share/nginx/html/test.php

将以下PHP代码粘贴到文件中。

<?php phpinfo(); ?>

保存并关闭文件。 现在,在浏览器地址栏中,输入 server-ip-address/test.php。 更换 sever-ip-address 与您的实际IP。 您应该看到服务器的PHP信息。 这意味着PHP处理很好。

Ubuntu 16.04 Nginx的PHP

如何安装PHP7.2

PHP7.2是PHP的最新稳定版本,于2017年11月30日发布,与PHP7.0相比,其性能有了轻微提升。 我们可以从Ondrej Sury添加PPA,以在Ubuntu 17.10上安装PHP7.2。 那家伙也是Certbot PPA的维护者。

sudo apt install software-properties-common

sudo add-apt-repository ppa:ondrej/php -y 

sudo apt update

然后,我们可以使用以下命令安装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

现在启动PHP7.2-FPM。

sudo systemctl start php7.2-fpm

在系统启动时启用自动启动。

sudo systemctl enable php7.2-fpm

检查其状态:

systemctl status php7.2-fpm

在Nginx上使用PHP7.2-FPM

为了使Nginx使用PHP7.2-FPM而不是PHP7.0-FPM,我们需要编辑Nginx服务器块文件。

sudo nano /etc/nginx/conf.d/default.conf

找到以下行。

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

更改 php7.0-fpmphp7.2-fpm

fastcgi_pass unix:/run/php/php7.2-fpm.sock;

保存并关闭文件。 然后重新加载Nginx以使更改生效。

sudo systemctl reload nginx

如果刷新 server-ip-address/info.php 页面上,您将看到Nginx现在正在使用PHP7.2-FPM。

Ubuntu 16.04 php7.2

PHP7.0可以与PHP7.2共存。 如果您不想使用PHP7.0,则可以将其删除。 请注意,某些网络应用程序可能与NextCloud 12等PHP7.2不兼容。在我的测试中,WordPress与PHP7.2一起运行良好。

为了服务器的安全,您应该删除 test.php 立即归档。

恭喜! 您已在Ubuntu 16.04 LTS Xenial Xerus上成功安装了Nginx,MariaDB和PHP7(LEMP堆栈)。 总是欢迎提出意见,问题或建议。 如果您发现此帖子有用,请在社交媒体上与您的朋友分享! 请继续关注更多Linux教程。

Sidebar