nginxとreactとflaskのアプリを公開する
react nginx flask手順だけメモ
- nginxのインストール: sudo apt install -y nginx
- ufwの設定 sudo su - でrootになってからやる
- ufw disable # sshが切れちゃうかもなので、一時的に無効化
- ufw default deny incoming # 内向きの接続を、まずは全部不許可
- ufw default allow outgoing # 外向きは、全部許可
- ufw allow ssh # sshを許可
- ufw allow ‘Nginx Full’ # http, httpsを許可. これは、nginxのインストール後に実行する必要(たぶん)
- ufw enable
- DNSの設定
- ブラウザで、http://example.hotoku.info にアクセス → nginxのwelcomeが見える
- アプリのレポジトリをclone
- clientのビルド: npm i && npm run build
- /var/www/example作成 → パミ変更 sudo mkdir -p /var/www/example; sudo chmod o+w /var/www/example
- clientの生成物をデプロイ build以下を/var/www/exampleにコピーする
- /etc/nginx/sites-available/example.hotoku.info作成 → sites-enabledにリンクを張る, rootを/var/www/exampleに設定
- configのチェック sudo nginx -t
- nginx再起動 sudo systemctl restart nginx.service
- ブラウザで、http://kintai.hotoku.info にアクセス → アプリの空の画面が見える
- certbotインストール sudo apt install python3-certbot-nginx
- SSL証明書をインストール: certbotにお任せ
sudo certbot --nginx -d example.hotoku.info
- ブラウザで、https://kintai.hotoku.info にアクセス → アプリの空の画面が見える
- basic認証を入れる
- sudo apt-get install apache2-utils # pluginを入れる
- sudo htpasswd -c /etc/nginx/.htpasswd heyjude
- example.hotoku.info にbasic認証設定を追加
- sudo nginx -t
- sudo systemctl restart nginx.service
- ブラウザで、https://kintai.hotoku.info にアクセス → 認証を求められる
- アプリサーバーstart python -m example_server server
- /etc/nginx/sites-available/kintai.hotoku.info編集 → location /api, /graphqlを追加. basic認証も追加
- sudo nginx -t
- sudo systemctl restart nginx.service
- ブラウザで、https://kintai.hotoku.info にアクセス → データが見える
# -*- mode: nginx -*-
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/example;
index index.html index.htm index.nginx-debian.html;
server_name example.hotoku.info;
location / {
try_files $uri $uri/ =404;
}
}
location / {
auth_basic "Restricted"; # 認証時に表示されるメッセージ
auth_basic_user_file /etc/nginx/.htpasswd; # .htpasswdファイルのパス
}
location /api {
auth_basic "Restricted"; # 認証時に表示されるメッセージ
auth_basic_user_file /etc/nginx/.htpasswd; # .htpasswdファイルのパス
proxy_pass http://localhost:20090;
}