【完全版】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ドキュメント生成システム) |
DB | MySQL |
管理ツール | phpMyAdmin(IP制限+Basic認証対応) |
SSL | Let’s Encrypt + Certbot |
ドメイン | akita-techlab.net |
1. XSERVER VPS契約とDNS設定
1-1. VPS契約
XSERVERの管理画面から Ubuntu 22.04 を選択してVPSを契約します。
📸 キャプチャ
例:XSERVER管理パネル VPS選択画面

1-2. DNS設定
ドメインを取得後、DNSでAレコードを設定します。
ホスト | 種類 | 値 |
---|---|---|
@ | A | VPSのIPv4 |
www | A | VPSのIPv4 |
コマンドで確認:
dig +short akita-techlab.net A
📸 キャプチャ例:XSERVER DNS設定画面

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ステータス確認画面

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実行画面

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の表示結果

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設定ファイルとテストコマンド結果

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更新確認画面

8. phpMyAdmin設定
sudo apt install phpmyadmin sudo editor /etc/phpmyadmin/config.inc.php
blowfish_secret
を32文字以上で設定。
📸 キャプチャ例:phpMyAdminログイン画面

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:
コメントを送信