2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】さくらインターネットの共有サーバーでFlaskを使ったWEBアプリケーションデプロイ

Posted at

クライアントの指示でさくらインターネットの共有サーバー上でFlaskで作成したWEBサイトをデプロイする必要があって、かなり手こずったので備忘録も兼ねてやり方を解説します。

前提条件

  • さくらのレンタルサーバー スタンダードプラン 以上を契約している
  • ローカル環境でエラーなく実行できるFlask構築のWEBアプリがある状態

デプロイの流れ

  1. さくらサーバーにpip & flaskをインストールする
  2. FTPソフトでwwwディレクトリにWebアプリケーションをアップロード
  3. index.cgi & .htaccessの作成
  4. デプロイの確認

さくらサーバーにpip & flaskをインストールする

まず、sshでレンタルサーバーに接続する。ssh接続は、sshクライアントを使うか、もしくは windows備え付けの コマンドプロンプト(以下cmdと省略)で行います。

cmdで以下のコマンドを入力。

ssh ユーザー名@サーバードメイン名

ユーザー名とサーバードメインはさくらサーバーコントロールパネルから確認できます。

Untitled.png

アカウントがユーザー名で、初期ドメインがサーバードメイン名。

パスワードの入力を求められるので、契約時に設定したパスワードを入力。

ssh接続ができたら、まずは以下のコマンドでpipのインストーラーをカレントディレクトリにダウンロード

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

次にインストーラーを起動

python get-pip.py

下記の画面が出てきたらインストール完了。
ただし、PATHは設定されてないので、そのままでは pipが使えません。

Untitled.png

pipがインストールされたディレクトリに移動します。

cd .local/bin

pipでflask & 各種ライブラリをインストール

python pip install flask

Successfully installed … と表示されればインストール完了

FTPソフトでwwwディレクトリにWebアプリケーションをアップロード

FTPクライアントソフトでサーバーとFTP通信を行いますが、FTPソフトのホスト名はwww○○○.sakura.ne.jp であることに注意、コントロールのサーバー情報→サーバー情報で確認ができます。

Untitled.png

ローカルから/home/username/www/ に各種ファイルを転送。

Untitled.png

index.cgi & .htaccessの作成

色んな文献や記事の通りに書いてもうまくいかなく、最終的にChatGPTの力も借りながら、色んな事を試して結果以下の内容となりました。

#!/usr/local/bin/python
# -*- coding: utf-8 -*-

import cgitb
cgitb.enable()

from wsgiref.handlers import CGIHandler
from app import app
from sys import path

class ProxyFix(object):
  def __init__(self, app):
      self.app = app
  def __call__(self, environ, start_response):
      return self.app(environ, start_response)
if __name__ == '__main__':
   app.wsgi_app = ProxyFix(app.wsgi_app)
   CGIHandler().run(app)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]
<Files ~ "\.py$">
  deny from all
</Files>

パーミッションはそれぞれ755

デプロイの確認

最後にサイトのURLを叩いて、実際に表示されるか確認。表示されなければ、各ファイルや app.pyにエラーは発生してるか確認を行う。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?