【完全版】XSERVER VPSでPython+FastAPI+Nginx+MySQL+phpMyAdminを使ったAIドキュメント生成システム本番構築手順

はじめに

今回は XSERVER VPS(Ubuntu環境) を利用して、ChatGPTにサポートを受けながら
AIドキュメント生成システム を本番稼働させたときの手順をまとめます。

  • Python+FastAPI+Nginx+MySQL+phpMyAdmin
  • HTTPS対応(Let’s Encrypt)
  • phpMyAdminのIP制限やBasic認証対応
  • SSL自動更新設定

実際の設定画面やコマンド結果をキャプチャ付きで解説していきます。


環境概要

項目内容
サーバーXSERVER VPS(Ubuntu 22.04)
WebサーバーNginx(HTTPS/HTTP2対応)
アプリPython+FastAPI(AIドキュメント生成システム)
DBMySQL
管理ツールphpMyAdmin(IP制限+Basic認証対応)
SSLLet’s Encrypt + Certbot
ドメインakita-techlab.net

1. XSERVER VPS契約とDNS設定

1-1. VPS契約

XSERVERの管理画面から Ubuntu 22.04 を選択してVPSを契約します。

📸 キャプチャ

例:XSERVER管理パネル VPS選択画面

image-1024x583 【完全版】XSERVER VPSでPython+FastAPI+Nginx+MySQL+phpMyAdminを使ったAIドキュメント生成システム本番構築手順

1-2. DNS設定

ドメインを取得後、DNSでAレコードを設定します。

ホスト種類
@AVPSのIPv4
wwwAVPSのIPv4

コマンドで確認:

dig +short akita-techlab.net A

📸 キャプチャ例:XSERVER DNS設定画面

image-2-1024x608 【完全版】XSERVER VPSでPython+FastAPI+Nginx+MySQL+phpMyAdminを使ったAIドキュメント生成システム本番構築手順

2. サーバー初期設定

2-1. パッケージ更新とタイムゾーン設定

sudo apt update && sudo apt -y upgrade
sudo timedatectl set-timezone Asia/Tokyo

2-2. ツール導入

sudo apt -y install git curl unzip ufw
sudo ufw allow OpenSSH
sudo ufw --force enable

📸

キャプチャ例:UFWステータス確認画面

image-1 【完全版】XSERVER VPSでPython+FastAPI+Nginx+MySQL+phpMyAdminを使ったAIドキュメント生成システム本番構築手順

3. ミドルウェア導入

sudo apt install -y nginx mysql-server php-fpm php-mysql php-mbstring php-xml
sudo apt install -y python3 python3-venv python3-pip

MySQL初期設定:

sudo mysql_secure_installation

📸 キャプチャ例:mysql_secure_installation実行画面

image-3 【完全版】XSERVER VPSでPython+FastAPI+Nginx+MySQL+phpMyAdminを使ったAIドキュメント生成システム本番構築手順

4. FastAPIアプリ配置

sudo mkdir -p /srv/ai-docs
sudo chown -R aiapp:www-data /srv/ai-docs

sudo -u aiapp bash -lc '
cd /srv/ai-docs
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install fastapi uvicorn jinja2 python-multipart mysql-connector-python python-dotenv passlib[bcrypt] openai numpy itsdangerous bcrypt==4.0.1 load_dotenv np pypdf
docx2txt docxtpl python-docx docx2pdf passlib[bcrypt]==1.7.4 bcrypt==4.0.1 Pillow requests

deactivate
'

5. FastAPIをsystemdで常駐管理

ファイル/etc/systemd/system/ai-docs.service

[Unit]
Description=AI Docs FastAPI (Gunicorn / UvicornWorker)
After=network-online.target
Wants=network-online.target

[Service]
User=aiapp
Group=www-data
WorkingDirectory=/srv/ai-docs
Environment="PATH=/srv/ai-docs/venv/bin"
EnvironmentFile=-/srv/ai-docs/.env
ExecStart=/srv/ai-docs/venv/bin/gunicorn main:app \
  --workers 3 \
  --worker-class uvicorn.workers.UvicornWorker \
  --bind 127.0.0.1:8000 \
  --timeout 120 --graceful-timeout 30 --keep-alive 75

Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target

反映:

sudo systemctl daemon-reload
sudo systemctl enable ai-docs
sudo systemctl start ai-docs
sudo systemctl status ai-docs

📸 キャプチャ例:systemctl status ai-docsの表示結果

image-4 【完全版】XSERVER VPSでPython+FastAPI+Nginx+MySQL+phpMyAdminを使ったAIドキュメント生成システム本番構築手順

6. Nginx設定

ファイル/etc/nginx/sites-available/ai-docs.conf

server {
    server_name akita-techlab.net;

    listen 443 ssl http2;
    ssl_certificate     /etc/letsencrypt/live/akita-techlab.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/akita-techlab.net/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    client_max_body_size 32m;

    # phpMyAdmin
    location /phpmyadmin/ {
        root /usr/share;
        index index.php;
        try_files $uri $uri/ /phpmyadmin/index.php$is_args$args;
        allow 106.168.96.133;
        deny all;
    }

    location ~ ^/phpmyadmin/.+\.php$ {
        root /usr/share;
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass unix:/run/php/php8.4-fpm.sock;
        allow 106.168.96.133;
        deny all;
    }

    # FastAPI
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location ~ \.php$ { return 404; }
}

server {
    listen 80;
    server_name akita-techlab.net;
    return 301 https://$host$request_uri;
}

📸 キャプチャ例:Nginx設定ファイルとテストコマンド結果

image-5 【完全版】XSERVER VPSでPython+FastAPI+Nginx+MySQL+phpMyAdminを使ったAIドキュメント生成システム本番構築手順

7. SSL設定(Let’s Encrypt)

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d akita-techlab.net
sudo certbot renew --dry-run

📸 キャプチャ例:certbotによるSSL更新確認画面

image-6 【完全版】XSERVER VPSでPython+FastAPI+Nginx+MySQL+phpMyAdminを使ったAIドキュメント生成システム本番構築手順

8. phpMyAdmin設定

sudo apt install phpmyadmin
sudo editor /etc/phpmyadmin/config.inc.php

blowfish_secret を32文字以上で設定。

📸 キャプチャ例:phpMyAdminログイン画面

image-7-1024x608 【完全版】XSERVER VPSでPython+FastAPI+Nginx+MySQL+phpMyAdminを使ったAIドキュメント生成システム本番構築手順

9. トラブルシューティング

  • phpMyAdminで「File not found」
    aliasではなくroot方式を採用
  • FastAPIで502/504
    → Gunicornの--timeoutを調整
  • SSL更新が止まる
    sudo certbot renew --dry-runで確認

まとめ

今回の構築で実現したこと:

✅ FastAPIアプリをsystemdで常駐管理
✅ NginxでHTTPS対応&リバースプロキシ
✅ phpMyAdminの安全運用(IP制限+Basic認証)
✅ CertbotによるSSL自動更新
✅ MySQL+FastAPI連携の安定稼働

以上の設定で、Python版のドキュメント生成システムをXSERVER VPS(Ubuntu環境)でFastAPI+Nginx+MySQL+phpMyAdminの構成にて構築できました。

ChatGPTに確認しながらでしたが、Linux不得意の私でしたが、簡単に構築できたので、興味のある方は、是非、自分にて構築をしてみて下さい。当然、構築中にエラーが発生しますが、その辺もChatGPTに確認すると的確(ChatGPT5からは特に)な返答で解決できますので。

Share this content:

コメントを送信

CAPTCHA