Ubuntu 20.04 LTS 安装 Nginx MariaDB PHP 过程


记录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。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM