该LEMP栈是一个缩写,代表是一个组包(Linux操作系统,Nginx的网络服务器,MySQL \ MariaDB的数据库和PHP服务器端动态编程语言),这是用来部署动态Web应用程序和网页。
本教程将指导你如何安装LEMP栈MariaDB的10,PHP 7和HTTP 2.0支持的Nginx在Ubuntu 16.10和Ubuntu 16.04服务器/台式机版本。
要求
- Ubuntu的16.04服务器版安装 [说明也适用于Ubuntu的16.10]
第1步:安装Nginx Web服务器
1. Nginx的是用于显示网页在互联网上的游客一个现代化和高效率的资源Web服务器。 我们将通过使用安装从Ubuntu官方源的Nginx Web服务器启动贴切的命令行 。
$ sudo apt-get install nginx
在Ubuntu 16.04上安装Nginx
2.接下来,执行netstat的和systemctl命令,以便如果Nginx的启动并绑定在端口80进行确认。
$ netstat -tlpn
检查Nginx网络端口连接
$ sudo systemctl status nginx.service
检查Nginx服务状态
一旦确认服务器已启动,您可以打开浏览器并使用HTTP协议导航到您的服务器IP地址或DNS记录,以访问Nginx默认网页。
http://IP-Address
验证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站点配置文件
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协议
上面的配置片段中加入允许使用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证书和密钥
6.此外,建立一个强大的DH暗号 ,这是对上述配置文件修改ssl_dhparam
,通过发出以下命令指令行:
$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
创建Diffie-Hellman密钥
7.一旦Diffie-Hellman密钥已创建,验证是否Nginx的配置文件被正确地写入,并可以通过Nginx的网络服务器应用,并重新启动守护进程,以反映通过运行下面的命令变化。
$ sudo nginx -t $ sudo systemctl restart nginx.service
检查Nginx配置
8.为了测试是否Nginx的使用HTTP / 2.0协议发出以下命令。 在场h2
广告协议确认的Nginx已经成功配置为使用HTTP / 2.0协议。 所有现代的最新浏览器都应该默认支持此协议。
$ openssl s_client -connect localhost:443 -nextprotoneg ''
测试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
10.一旦PHP7.0解释器您的机器上已安装成功,并开始通过发出以下命令来检查php7.0-fpm的守护程序:
$ sudo systemctl start php7.0-fpm $ sudo systemctl status php7.0-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
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 FastCGI信息
同时检查HTTP / 2.0协议由服务器通过广告定位线$_SERVER['SERVER_PROTOCOL']
块在下面的截图所示的PHP变量。
检查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模块
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
16.为了确保MariaDB的安装,运行的二进制包从Ubuntu的软件库,这将要求你设置root密码,删除匿名用户,禁用远程root登录,并删除测试数据库所提供的安全脚本。
通过发出以下命令来运行脚本,并回答了所有的问题yes
。 使用以下屏幕截图作为指南。
$ sudo mysql_secure_installation
安全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数据库,并通过执行以下命令运行没有root权限的任意命令:
$ mysql -u root -p -e 'show databases'
检查MariaDB数据库
这一切! 现在你有在Ubuntu 16.10和Ubuntu 16.04服务器,使您可以部署可与数据库交互复杂的动态Web应用程序配置的LEMP。