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