如何安装Nginx,MariaDB 10,PHP 7(LEMP)在16.10 / 16.04

本教程将指导您如何在Ubuntu 16.10和Ubuntu 16.04服务器上安装LEMP(Nginx与HTTP 2.0,MariaDB和PHP7与FastCGI)。

LEMP栈是一个缩写,代表是一个组包(Linux操作系统,Nginx的网络服务器,MySQL \ MariaDB的数据库和PHP服务器端动态编程语言),这是用来部署动态Web应用程序和网页。

本教程将指导你如何安装LEMP栈MariaDB的10,PHP 7HTTP 2.0支持的NginxUbuntu 16.10Ubuntu 16.04服务器/台式机版本。

要求

  1. Ubuntu的16.04服务器版安装 [说明也适用于Ubuntu的16.10]

第1步:安装Nginx Web服务器

1. Nginx的是用于显示网页在互联网上的游客一个现代化和高效率的资源Web服务器。 我们将通过使用安装从Ubuntu官方源的Nginx Web服务器启动贴切的命令行

$ sudo apt-get install nginx
在Ubuntu 16.04上安装Nginx

在Ubuntu 16.04上安装Nginx

2.接下来,执行netstat的systemctl命令,以便如果Nginx的启动并绑定在端口80进行确认。

$ netstat -tlpn
检查Nginx网络端口连接

检查Nginx网络端口连接

$ sudo systemctl status nginx.service
检查Nginx服务状态

检查Nginx服务状态

一旦确认服务器已启动,您可以打开浏览器并使用HTTP协议导航到您的服务器IP地址或DNS记录,以访问Nginx默认网页。

http://IP-Address
验证Nginx页面

验证Nginx页面

第2步:启用Nginx HTTP / 2.0协议

3. HTTP / 2.0协议,这是Nginx的二进制文件只与SSL相结合的Ubuntu 16.04作品的最新版本在默认情况下建立,并承诺在网页加载SSL网页巨大的速度提升。

为了使在Ubuntu 16.04中Nginx的协议,首先通过发出以下命令导航到Nginx的可用网站配置文件和备份默认的配置文件。

$ cd /etc/nginx/sites-available/
$ sudo mv default default.backup
备份Nginx站点配置文件

备份Nginx站点配置文件

4.然后,用文本编辑器创建下面的说明一个新的默认页面:

server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
root /var/www/html;
index index.html index.htm index.php;
server_name 192.168.1.13;
location / {
try_files $uri $uri/ =404;
}
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 180m;
resolver 8.8.8.8 8.8.4.4;
add_header Strict-Transport-Security "max-age=31536000;
#includeSubDomains" always;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
server {
listen         80;
listen    [::]:80;
server_name    192.168.1.13;
return         301 https://$server_name$request_uri;
}
启用Nginx HTTP 2协议

启用Nginx HTTP 2协议

上面的配置片段中加入允许使用HTTP / 2.0 http2参数所有SSL监听指令。

此外,服务器指令中包含的摘录的最后一部分用于将所有非SSL流量重定向到SSL / TLS默认主机。 此外,更换server_name (最好FQDN)指令来匹配自己的IP地址或DNS记录。

5.一旦你完成编辑Nginx的默认配置文件,上面的设置,生成并通过执行下面的命令列出SSL证书文件和密钥。

填写您自己的自定义设置证书,并注意通用名称制定,以匹配将用于访问网页您的DNS记录的FQDN或您的服务器的IP地址。

$ sudo mkdir /etc/nginx/ssl
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
$ ls /etc/nginx/ssl/
为Nginx生成SSL证书和密钥

为Nginx生成SSL证书和密钥

6.此外,建立一个强大的DH暗号 ,这是对上述配置文件修改ssl_dhparam ,通过发出以下命令指令行:

$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
创建Diffie-Hellman密钥

创建Diffie-Hellman密钥

7.一旦Diffie-Hellman密钥已创建,验证是否Nginx的配置文件被正确地写入,并可以通过Nginx的网络服务器应用,并重新启动守护进程,以反映通过运行下面的命令变化。

$ sudo nginx -t
$ sudo systemctl restart nginx.service
检查Nginx配置

检查Nginx配置

8.为了测试是否Nginx的使用HTTP / 2.0协议发出以下命令。 在场h2广告协议确认的Nginx已经成功配置为使用HTTP / 2.0协议。 所有现代的最新浏览器都应该默认支持此协议。

$ openssl s_client -connect localhost:443 -nextprotoneg ''
测试Nginx HTTP 2.0协议

测试Nginx HTTP 2.0协议

第3步:安装PHP 7解释器

Nginx的可以用PHP动态处理语言解释器可以用来生成动态网页内容与FastCGI进程管理器通过安装Ubuntu的官方仓库中的php-fpm的二进制包所获得的帮助。

9.为了抢PHP7.0和附加软件包,将允许PHP与Nginx的网络服务器发出指令低于您的服务器控制台上通信:

$ sudo apt install php7.0 php7.0-fpm 
为Ngin安装PHP 7和PHP-FPM

为Ngin安装PHP 7和PHP-FPM

10.一旦PHP7.0解释器您的机器上已安装成功,并开始通过发出以下命令来检查php7.0-fpm的守护程序:

$ sudo systemctl start php7.0-fpm
$ sudo systemctl status php7.0-fpm
开始并验证php-fpm服务

开始并验证php-fpm服务

11. Nginx的当前配置文件已经配置使用PHP为了FastCGI进程管理器到服务器的动态内容。

使Nginx使用PHP解释器的服务器块在下面的摘录中提供,因此不需要对默认Nginx配置文件进行进一步修改。

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

下面是您需要取消注释和修改的指令的屏幕截图是原始Nginx默认配置文件的情况。

为Nginx启用PHP FastCGI

为Nginx启用PHP FastCGI

12.为了测试用PHP FastCGI进程Nginx的经理web服务器关系创建一个PHP info.php通过发出以下命令测试配置文件,并通过使用下面的地址访问此配置文件验证设置: http://IP_or domain/info.php

$ sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'
创建PHP信息文件

创建PHP信息文件

验证PHP FastCGI信息

验证PHP FastCGI信息

同时检查HTTP / 2.0协议由服务器通过广告定位线$_SERVER['SERVER_PROTOCOL']块在下面的截图所示的PHP变量。

检查HTTP 2.0协议信息

检查HTTP 2.0协议信息

13.为了安装额外的PHP7.0模块使用apt search php7.0命令来查找一个PHP模块,并安装它。

另外,尽量安装下面的PHP模块,可以派上用场的情况下,你计划安装WordPress或其他CMS。

$ sudo apt install php7.0-mcrypt php7.0-mbstring
安装PHP 7模块

安装PHP 7模块

14.通过发出以下命令注册PHP额外的模块只需重新启动PHP-FPM守护进程。

$ sudo systemctl restart php7.0-fpm.service

第4步:安装MariaDB数据库

15.最后,为了完成我们的LEMP栈我们需要MariaDB的数据库组件来存储和管理的网站数据。

通过运行以下命令安装MariaDB的数据库管理系统,为了使用MySQL模块来访问数据库重启PHP-FPM服务。

$ sudo apt install mariadb-server mariadb-client php7.0-mysql
$ sudo systemctl restart php7.0-fpm.service
安装MariaDB for Nginx

安装MariaDB for Nginx

16.为了确保MariaDB的安装,运行的二进制包从Ubuntu的软件库,这将要求你设置root密码,删除匿名用户,禁用远程root登录,并删除测试数据库所提供的安全脚本。

通过发出以下命令来运行脚本,并回答了所有的问题yes 使用以下屏幕截图作为指南。

$ sudo mysql_secure_installation
安全MariaDB安装Nginx

安全MariaDB安装Nginx

17.要配置MariaDB的让普通用户能够访问,不会对系统Sudo权限的数据库,去到MySQL命令行界面以root权限并运行MySQL的解释下面的命令:

$ sudo mysql 
MariaDB> use mysql;
MariaDB> update user set plugin=’‘ where User=’root’;
MariaDB> flush privileges;
MariaDB> exit
MariaDB用户权限

MariaDB用户权限

最后,登录到MariaDB数据库,并通过执行以下命令运行没有root权限的任意命令:

$ mysql -u root -p -e 'show databases'
检查MariaDB数据库

检查MariaDB数据库

这一切! 现在你有在Ubuntu 16.10Ubuntu 16.04服务器,使您可以部署可与数据库交互复杂的动态Web应用程序配置的LEMP