首页 > 代码库 > Ubuntu Server 16.04 安装 LEMP / LNMP 详细教程
Ubuntu Server 16.04 安装 LEMP / LNMP 详细教程
本文标签: 安装LEMP/LNMP教程 Ubuntu LEMP MySQL Nginx UbuntuServer 互联网杂谈
LEMP 指的是 Linux + Nginx (发音 engine x 所以这里是 E 而不是 N) + MySQL + PHP 的简称,国内有些地方叫做 LNMP (因为 LNMP 没法读出来,而 LEMP 可以直接发音,所以今后本站教程一律都会写 LEMP)
以下操作均在 root 用户下完成,请使用 sudo -i
切换到 root 操作,或自行加入 sudo
命令
一、安装 Nginx 1.10.X
由于 Nginx 更新频繁,而 Ubuntu Server 长久以老一直更新缓慢没法支持新功能,所以我们用 Nginx 官方的 PPA 代替默认的源安装
首先,加入 Nginx 的 PPA
apt-get install software-properties-common -y
add-apt-repository ppa:nginx/stable
apt-get update
如果喜欢体验 Nginx 的新功能,您可以使用 add-apt-repository ppa:nginx/development
安装 Nginx 的 Mainline 版代替默认的 Stable 版
接着安装常见的一些软件 (某些 VPS 商的模板太过于精简) 以及 Nginx
apt-get install curl vim wget unzip nginx -y
如果您需要 Nginx 更多的功能,您可以使用 apt install nginx-extras
代替默认的 nginx
二、安装 PHP 7.0.X
本站就运行在 PHP 7.0 ,虽然一些老旧的程序、插件不支持 PHP 7.0 ,但是这货速度确实快不少啊,强烈呼吁开发者渐渐的转移到 PHP 7.0 的开发中,至于某些国产程序,就只能呵呵哒。
执行完成后,安装一些常见的软件以及 PHP 7.0.X
apt-get install php-fpm php-mysql php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc php-zip -y
以上只安装了部分 WordPress 必须的 PHP 组件,如果您的程序需要额外的 PHP 组件,可以通过 apt-cache search php7.0
命令来查找,Ubuntu Server 16.04 默认已经使用 PHP 7.0 ,所有的组件均可用 php-xxx 来代替,如使用 apt install php-cli
即可安装 php7.0-cli
user@example:~$ sudo apt-cache search php7.0
libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module)
php-all-dev - package depending on all supported PHP development packages
php7.0 - server-side, HTML-embedded scripting language (metapackage)
php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary)
php7.0-cli - command-line interpreter for the PHP scripting language
php7.0-common - documentation, examples and common module for PHP
php7.0-curl - CURL module for PHP
php7.0-dev - Files for PHP7.0 module development
php7.0-gd - GD module for PHP
php7.0-gmp - GMP module for PHP
php7.0-json - JSON module for PHP
php7.0-ldap - LDAP module for PHP
php7.0-mysql - MySQL module for PHP
php7.0-odbc - ODBC module for PHP
php7.0-opcache - Zend OpCache module for PHP
php7.0-pgsql - PostgreSQL module for PHP
php7.0-pspell - pspell module for PHP
php7.0-readline - readline module for PHP
php7.0-recode - recode module for PHP
php7.0-snmp - SNMP module for PHP
php7.0-sqlite3 - SQLite3 module for PHP
php7.0-tidy - tidy module for PHP
php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP
php7.0-xmlrpc - XMLRPC-EPI module for PHP
libphp7.0-embed - HTML-embedded scripting language (Embedded SAPI library)
php7.0-bcmath - Bcmath module for PHP
php7.0-bz2 - bzip2 module for PHP
php7.0-enchant - Enchant module for PHP
php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)
php7.0-imap - IMAP module for PHP
php7.0-interbase - Interbase module for PHP
php7.0-intl - Internationalisation module for PHP
php7.0-mbstring - MBSTRING module for PHP
php7.0-mcrypt - libmcrypt module for PHP
php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-soap - SOAP module for PHP
php7.0-sybase - Sybase module for PHP
php7.0-xsl - XSL module for PHP (dummy)
php7.0-zip - Zip module for PHP
php7.0-dba - DBA module for PHP
安装完成后,编辑 /etc/php/7.0/fpm/php.ini
替换 ;cgi.fix_pathinfo=1
为 cgi.fix_pathinfo=0
vim /etc/php/7.0/fpm/php.ini
直接输入
:%s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g
然后按 ESC 再按 :wq 再按回车保存并退出
重启 PHP7.0-fpm
systemctl restart php7.0-fpm
三、配置 Nginx 网站文件
下面开始,我们假设您的域名是 example.com
您的服务器 IP 是 192.0.2.2
(RFC 5737),并且您已经解析 example.com 的 A 记录到您的服务器 IP 192.0.2.2
我们开始编辑 Nginx 的默认配置文件 /etc/nginx/sites-available/default
vim /etc/nginx/sites-available/default
输入或编辑以下内容
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
#默认第一个域名,可以替换 _ 为 example.com 或不作处理
server_name _;
location / {
try_files $uri $uri/ =404;
}
#开启 PHP7.0-fpm 模式
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
然后重启 Nginx
nginx -s reload
我们可以看到,默认的目录在 /var/www/html
接着我们在这个目录下创建一个 phpinfo.php
vim /var/www/html/phpinfo.php
输入
<?php phpinfo(); ?>
保存退出后,在浏览器输入 http://example.com/
或 http://192.0.2.2/
看到经典的 phpinfo 页面则说明安装成功,如果不成功,请仔细对比步骤查找哪里出错
四、安装 MySQL 5.7
执行以下命令
apt-get install mysql-server mysql-client -y
安装成功后系统会让您输入两次 MySQL 的 root 密码,请切记一定要使用随机的、不可被人猜测的密码
我亲眼目测过很多新手第一次安装用了弱密码,后来服务器就被人日,所以这里强烈推荐安装完 MySQL 后,执行一次安全设置,很简单的一条命令
mysql_secure_installation
执行后会让您选择密码强度,一般情况下选择 1 或者 2
root@demo:~# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:y 请输入 y 进行初始安全设置
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 最强大的密码当然要输入 2
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n 如果之前设置了强密码,则不需要重新更改 root 密码,反之则按 y 回车后输入两次重置
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y 移除匿名用户,没啥鸟用就直接移除吧
Normally, root should only be allowed to connect from
‘localhost‘. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y 关闭 root 远程登录,不需要进行远程登录的话就关了吧
Success.
By default, MySQL comes with a database named ‘test‘ that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :y 移除 test 数据库
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y 重置数据库权限
再次提醒,密码一定要随机、不可猜测,使用弱密码而导致服务器被日的例子实在是数不清楚
做好初始安全设置后,我们就可以进行创建数据库操作,首先使用 root 登录 MySQL
mysql -u root -p
会提示让您输入密码,输入密码登陆后,创建一个名为 example 的数据库
CREATE DATABASE example DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
由于手机端的流行,我们已经不再使用 utf-8
编码,而改用 utf8mb4
这样我们就可以在 MySQL 数据库里储存 emoji 表情了,比如这样 ????????????
接着我们创建一个叫做 example_user
的用户,使用强大的密码并且赋予 example
数据库权限
GRANT ALL ON example.* TO ‘example_user‘@‘localhost‘ IDENTIFIED BY ‘这里改成你要设置的强大的没人能猜出来的随机的密码‘;
终端会提示 Query OK, 0 rows affected, 1 warning (0.00 sec)
不用去管这个 warning
然后我们刷新权限
FLUSH PRIVILEGES;
没问题就使用 exit;
命令退出
然后我们测试一下数据库,在 /var/www/html
目录下建立一个 mysql-test.php
(via)文件
vim /var/www/html/mysql-test.php
输入
<?php
# Fill our vars and run on cli
# $ php -f mysql-test.php
$dbname = ‘example‘; //MySQL 数据库名
$dbuser = ‘example_user‘; //MySQL 用户名
$dbpass = ‘你的强大的没人可以猜出来的密码‘;
$dbhost = ‘localhost‘; //?? hostname ?????? localhost
$link = mysqli_connect($dbhost, $dbuser, $dbpass) or die("Unable to Connect to ‘$dbhost‘");
mysqli_select_db($link, $dbname) or die("Could not open the db ‘$dbname‘");
$test_query = "SHOW TABLES FROM $dbname";
$result = mysqli_query($link, $test_query);
$tblCnt = 0;
while($tbl = mysqli_fetch_array($result)) {
$tblCnt++;
#echo $tbl[0]."<br />\n";
}
if (!$tblCnt) {
echo "MySQL is working fine. There are no tables.";
} else {
echo "MySQL is working fine. There are $tblCnt tables.";
}
?>
创建完毕后访问http://example.com/mysql-test.php
如果出现 MySQL is working fine. There are no tables.
则说明 MySQL 工作正常。
好了,以上就是基本的 Ubuntu Server 16.04 安装 LEMP 的教程,如有问题可以随时发评论留言讨论。
写在最后:FOR Freedom 看看外边的世界,以及IT这一行,少不了去Google查资料,最后,安利一个V——PN代理。一枝红杏 VPN,去Google查资料是绝对首选,连接速度快,使用也方便。我买的是99¥一年的,通过这个链接(http://my.yizhihongxing.com/aff.php?aff=2509)注册后输上会员中心得优惠码,平摊下来,每月才7块钱,特实惠。
本文标签: 安装LEMP/LNMP教程 Ubuntu LEMP MySQL Nginx UbuntuServer 互联网杂谈
转自 SUN‘S BLOG - 专注互联网知识,分享互联网精神!
原文地址: 《Ubuntu Server 16.04 安装 LEMP / LNMP 详细教程》
相关阅读:《Aaron Swartz – 互联网天才开挂的人生历程:每时每刻都问自己,现在这世界有什么最重要的事是我能参与去做的?》
相关阅读:《网站环境apache + php + mysql 的XAMPP,如何实现一个服务器上配置多个网站?》相关阅读:《什么是工程师文化?各位工程师是为什么活的?作为一个IT或互联网公司为什么要工程师文化?》
相关阅读: 对程序员有用:2017最新能上Google的hosts文件下载及总结网友遇到的各种hosts问题解决方法及配置详解
相关阅读: 《win10永久激活教程以及如何查看windows系统是不是永久激活?》
相关BLOG:SUN’S BLOG - 专注互联网知识,分享互联网精神!去看看:www.whosmall.com
Ubuntu Server 16.04 安装 LEMP / LNMP 详细教程