コンテンツにスキップ

mkdocsをデプロイする

mkdocsは、静的なウェブサページを生成するためのツールです。このツールを使って作成したウェブページをVPS上にデプロイする方法を説明します。

デプロイ環境

前提

デプロイ手順

  1. VPSにログインします。

    bash
    1
    ssh <user>@<your-vps-ip>
    
    rsa鍵を使ってログインする場合
    bash
    1
    ssh -i ~/.ssh/id_rsa <user>@<your-vps-ip>
    

VPSのufw設定

Tip

SSL証明書を取得(HTTPS化)の事前準備として、VPSのufw設定を行います。

VPSのufw設定を行います。まずは、ufwをインストールします。

bash
1
2
3
4
5
#!/bin/bash

# ufwのインストール
sudo apt-get update -y
sudo apt-get install -y ufw

次に、ufwの設定を行います。

bash
1
2
3
4
5
6
7
8
#!/bin/bash

# ufwの設定
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

Nginxとcertbotのインストール

Tip

SSL証明書を取得(HTTPS化)の事前準備として、Nginxとcertbotのインストールを行います。

VPSにnginxとcertbotをインストールします。

bash
1
2
3
4
5
#!/bin/bash

# certbotのインストール
sudo apt-get update -y
sudo apt-get install -y certbot python3-certbot-nginx nginx

証明書の取得

Let's EncryptでSSL証明書を取得します。

bash
1
2
3
4
#!/bin/bash

# 証明書の取得
sudo certbot --nginx -d <ドメイン>
複数ドメインの場合

複数のドメインを設定する場合は、以下のように設定します。

bash
1
2
# 複数ドメインの証明書の取得
sudo certbot --nginx -d <ドメイン1> -d <ドメイン2>

nginxの設定

nginxでサイトへのルーティング設定を行います。

/etc/nginx/sites-available/
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
server {
    listen 80;
    server_name <your-domain>;

    # Redirect HTTP to HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name <your-domain>;

    ssl_certificate /etc/letsencrypt/live/<your-domain>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<your-domain>/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDH+AESGCM:ECDH+AES256:!ECDH+3DES:!ECDH+AES128:!AES128:!DSS:!RC4:!MD5:!PSK';
    ssl_prefer_server_ciphers on;

    root /var/www/site;

    index index.html;

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

シンボリックリンクの作成

nginxの設定ファイルを有効にするために、sites-availableディレクトリ内の設定ファイルをsites-enabledディレクトリにシンボリックリンクを作成します。

bash
1
2
#!/bin/bash
sudo ln -s /etc/nginx/sites-available/<site-name> /etc/nginx/sites-enabled/

nginx設定のテスト

nginxの設定ファイルにエラーがないかを確認します。

bash
1
2
#!/bin/bash
sudo nginx -t

nginxの再起動

nginxの設定を反映させるために、nginxを再起動します。

bash
1
2
#!/bin/bash
sudo systemctl restart nginx

デプロイ

mkdocsで生成したウェブページをVPSにデプロイします。 リポジトリをクローンして、Nginxのドキュメントルートに配置します。

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/bin/bash

# リポジトリのクローン
git clone https://<USERNAME>:<TOKEN>@github.com/<USERNAME>/<REPOSITORY>.git
cd <REPOSITORY>
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
mkdocs build
sudo cp -r site /var/www/
sudo chown -R www-data:www-data /var/www/site
sudo chmod -R 755 /var/www/site
sudo systemctl restart nginx

コメント