2020 Ubuntu 20.04 从零开始安装 LEMP

2020 Ubuntu 20.04 从零开始安装 LEMP

前言

本文假设读者有一定 Linux Server 基础。所以并不会对每一个命令进行解释。更多是对自己需要的记录。

本文适合你已经初始化完成了一台 Ubuntu 20.04 的 VPS。如果是第一次进入系统需要初始化。

请参考2020年从零开始初始化一台 Ubuntu 20.04 的 VPS 这篇文章。

本文大部分内容是

How To Install Linux, Nginx, MySQL, PHP (LEMP stack) on Ubuntu 18.04

这个文章的简单复述。

并且根据用最大性价比达成能全球访问的生产环境原则,在细节的设置上会进行我自己觉得需要做的相应调整。

digitalocean 是个良心厂商,tutorials 的文章都值得一看。

本文具有强烈的个人感情色彩,如有观看不适,请尽快关闭. 本文仅作为个人学习记录使用,也欢迎在许可协议范围内转载或使用,请尊重版权并且保留原文链接,谢谢您的理解合作. 如果您觉得本站对您能有帮助,您可以使用RSS方式订阅本站,这样您将能在第一时间获取本站信息.

命令说明

> , $, # 皆是符号来作为命令行提示符

1
2
3
> // 表示在本地环境输入
$ // 表示在 VPS 环境下普通用户身份输入
# // 表示在 VPS 环境下 root 用户身份输入
1
[] // 表示一个变量,需要替换为你自己的正确值

安装 Nginx Web 服务器

apt 安装 nginx

1
2
$ sudo apt update
$ sudo apt install nginx

打开防火墙

1
$ sudo ufw allow 'Nginx HTTP'

检查防火墙状态

1
$ sudo ufw status

显示

1
2
3
4
5
6
7
8
9
Output
Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

Nginx 应该就搞定了。

验证安装

输入

1
https://[你的服务器IP地址]

到浏览器里面检查一下

如果看见类似提示,证明安装成功

如果忘记服务器的IP,可以这样获取到

1
$ curl -4 icanhazip.com

安装 MySQL

apt 安装

1
$ sudo apt install mysql-server

完成以后初始化MySql

1
$ sudo mysql_secure_installation

看到提示

1
2
3
4
5
6
7
8
9
Output

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

看到提示

1
2
3
4
5
6
7
8
Output
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

看到提示

1
2
3
4
5
6
Output
Please set the password for root here.

New password:

Re-enter new password:

输入你的密码,大于8位且包含大小写字母,数字,特殊字符,字典文件。

接下来的提示内容可以无脑一路 Y 过去。
主要包括

  1. 默认设置里面包括一个匿名账户,建议输入“y”删除。
  2. 安全起见建议不允许root账户远程登录,仅允许root账户本地登录。
  3. 建议输入“y”删除名为“test”的测试数据库。
  4. 建议输入“y”并按回车键确定立即刷新权限。

修改 mysql 的root 用户登陆方式

root进入mysql

1
$ sudo mysql

在mysql里面查看用户权限信息

1
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
1
2
3
4
5
6
7
8
9
10
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

修改 root 用户的权限方式

1
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[你的mysql root密码]';

立即刷新权限

1
mysql> FLUSH PRIVILEGES;

再次查看用户权限信息

1
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
1
2
3
4
5
6
7
8
9
10
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

可以看到 auth_socket 改为了 mysql_native_password。 成功!

退出mysql

1
mysql> exit

温馨提示

下次登陆 mysql root 用户
需要使用

1
2
$ mysql -u root -p
[你的mysql root密码]

安装 PHP 并 配置 Nginx 使用 PHP 进程

可能需要更新 apt 源

1
$ sudo add-apt-repository universe

如果显示

1
2
Output:
'universe' distribution component is already enabled for all sources.

那就源已经在了

安装 PHP

1
$ sudo apt install php-fpm php-mysql

创建一个 Nginx 的配置文件

1
$ sudo vim /etc/nginx/sites-available/example.com

/etc/nginx/sites-available/example.com 文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name [你的服务器IP地址];

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

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

location ~ /\.ht {
deny all;
}
}

fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; 这一句注意你的PHP版本。

做软链接

1
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

把默认的 default 软链接干掉

1
$ sudo unlink /etc/nginx/sites-enabled/default

nginx 配置文件语法检查

1
$ sudo nginx -t

重启 nginx

1
$ sudo service nginx restart

创建测试 PHP 文件

1
$ sudo vim /var/www/html/info.php

/var/www/html/info.php文件内容

1
2
<?php
phpinfo();

测试

访问

1
https://[你的服务器IP地址]/info.php

如果看到类似网页,就成功了。

删除测试 PHP 文件

1
$ sudo rm /var/www/html/info.php

VPS 准备

默认读者拥有一台VPS。

VPS 如需购买,我使用的主机商是

Vultr

DigitalOcean

最便宜的 VPS 每月 USD $5。

域名购买

NameCheap

以上仅供参考。

硬广时间

我目前现生活在新西兰。

如果是新晋奶爸可以看看婴儿奶粉

如果逢年过节孝敬父母可以逛逛澳新保健品

如果经常熬夜或喝酒,你需要程序员神器-护肝片

大量澳新产品均可通过么么爪海购精选购买。

么么爪海购精选上的价格在海外直邮模式上有一定优势,但是跟国内电商上大量低价商品没法比。优势上只能用我自己那可能并不存在的人品担保都是正品。

Author

Ewan Xiao

Posted on

September 16th 2020

Updated on

September 28th 2023

Licensed under

Comments