记录Ubuntu 20.04 LTS 安装 Nginx MariaDB PHP 过程。
第一、安装 NGINX 和 MariaDB
使用下面命令进行安装:
$ sudo apt update && sudo apt install -y nginx mariadb-server
第二、配置 MariaDB
安装完成后,首次运行 MySQL / MariaDB 的设置,默认会问我们输入密码,我们直接回车即可。
然后输入 N 并且回车,就可以重置密码。
$ sudo mysql_secure_installation
连接到 MariaDB 监控器:
$ sudo mariadb
新建一个数据库:
CREATE DATABASE example_db;
赋予权限(注意修改其中的用户名和密码):
GRANT ALL ON example_db.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
更新权限:
FLUSH PRIVILEGES;
exit
再次连接:
$ mariadb -u username -p
确保可以正常连接:
SHOW DATABASES;
设置为当前数据库:
USE example_db;
新建一个表以进行后续测试:
CREATE TABLE table1(column1 varchar(255));
INSERT INTO table1 VALUES("Database connection established successfully");
exit
第三、安装 PHP 和 Certbot
安装 php-fpm 和 php-mysql
$ sudo apt install -y php-fpm php-mysql
安装 snap:
$ sudo apt install -y snap
安装 certbot:
$ sudo snap install --classic certbot
第四、配置 NGINX
新建一个网站目录比如 laozuo.org(注意替换 example.com):
$ sudo mkdir -p /var/www/example.com
设置正确权限:
$ sudo chown -R $USER:$USER /var/www/example.com
新建一个配置文件:
$ sudo vim /etc/nginx/sites-available/example.com
填写下面配置信息:
server {
listen 80;
listen [::]:80;
server_name www.example.com;
server_name example.com;
root /var/www/example.com;
location / {
index index.html;
}
}
重启 NGINX:
$ sudo systemctl restart nginx.service
运行一次 certbot:
$ sudo certbot certonly --dry-run --nginx -d example.com,www.example.com
获取 LetsEncrypt 证书:
$ sudo certbot certonly --nginx -d example.com,www.example.com
打开 NGINX 配置文件:
$ sudo vim /etc/nginx/sites-available/example.com
将所有内容都删除,然后复制下面内容进去:
server {
listen 80;
listen [::]:80;
server_name www.example.com;
server_name example.com;
root /var/www/example.com;
location / {
return 301 https://example.com$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
root /var/www/example.com;
index index.php index.html index.htm index.nginx-debian.html;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self';";
add_header Referrer-Policy "no-referrer";
add_header X-Frame-Options "SAMEORIGIN" always;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
server_name www.example.com;
server_name example.com;
access_log /var/log/example.com.log;
error_log /var/log/example.com.error.log;
}
添加软连接:
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
重启 NGINX:
$ sudo systemctl restart nginx.service
第五、效果测试
新建一个文件:
$ vim /var/www/example.com/testdb.php
添加如下内容:
<?php
$mysqli = new mysqli("localhost", "username", "password", "example_db");
if (mysqli_connect_errno()) {
printf("Connection failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT column1 FROM table1";
if($result = $mysqli->query($query)) {
while($row = $result->fetch_row()){
printf("%s\n", $row[0]);
}
$result->close();
}
$mysqli->close();
?>
打开下面链接测试是否OK。