Flaskで作成したWEBアプリをConoha Wingで公開する手順
やりたいこと
Flaskを用いて開発したWEBアプリをConoha Wingで公開する
前提条件
・Flaskを用いて作成したWEBアプリがある
・Conoha Wingでサーバーをレンタルしている
・ドメイン名を取得している
・Python3.9.16
1. Flaskを用いて作成したプロジェクトをアップロードする
Conoha Wingへログイン→サイト管理→ファイルマネージャー
でフォルダを開く。
すると、上の画面が開きます。
ここでpublic_html/ドメイン名/のフォルダを開きます。
(favomate2.comがドメイン名であれば、public_html/favomate2.com/のフォルダ)
ここにアップロードします。
プロジェクトファイルを一式アップロードするのではなく、必要なファイルのみをアップロードします。
ここでは、app.py, templates(HTMLファイル), static(CSSファイル)をアップロードすることで進めていきます。
app.pyでURLなどを設定しています。templatesとstaticは画面表示のためのファイルです。
アップロードできたら、次にConoha WingサーバーでPyton3.9.16をインストールしていきます。
2. Conoha WingでPython3.9.16をインストールする方法
ここが結構ハマります。
なぜかConoha Wingでは、デフォルトでsudoコマンドなどが使えません。
そのため、少し遠回りする手法を用いる必要があります。
1. レンタルサーバーへSSH接続
Conoha Wingへログイン→サーバー管理→SSH→+ SSH Keyをクリック
これでSSHキーを生成できます。
.pemファイルをダウンロードできたら、そのファイルをmvコマンドで~/.ssh/におきます。(Macの場合)
mv ~/download/hogehoge.pem ~/.ssh
そして、ダウンロードしたpemファイルに対してchmod 400の権限を与えます。
chmod 400 ~/.ssh/hogehoge.pem
ここまでできたら、以下コマンドでSSH接続ができます。
ssh cxxxxxxxx@wwwyyy.conoha.ne.jp -p 8022 -i ~/.ssh/hogehoge.pem
cxxxxxxxはネームタグ、wwyyy.conohane.jpはホスト名、8022はポート番号です。適宜変更してください。情報はSSHキーを生成したところで確認できます。
2. Python3.9.16をインストールする
さきほど述べたように、sudoコマンドが使えません。
そのため、.tgzファイルをダウンロードして解凍するという手法を取ります。
mkdir -p ~/work/python3
cd ~/work/python3
wget --no-check-certificate https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz
cd ./Python-3.9.16
./configure --prefix=$HOME/local/python/ --with-system-ffi LDFLAGS="-L $HOME/local/lib/" CPPFLAGS="-I $HOME/local/include/"
make
make install
python3 --version
which python3
最後の2行はインストールできているかを確認します。
which python3についてはパスが通っていないので、表示されないはずです。
インストールできていれば、次はパスを通します。
3. パスの設定
cat .bash_profile
catコマンドで~/local/python/binを追記します。
保存するには、escキーを押して、:wqと入力してエンターを押す。
which python3
これでパスが通っているはずです。
3. ライブラリをインストールする
Python3が使えるようになれば、次はライブラリをインストールします。
注意点がpip install ~~ ではインストールができないことです。
python3 -m pip install ~~~としなければなりません。
ここでpython -m pip install とすると、python3でインストールできませんので注意が必要です。
python3 -m pip isntall flask
これでflaskがインストールされます。
.txtの中のライブラリをすべてインストールしたいときは、
python3 -m pip install -r requirements.txt
でインストールできます。
補足として、opensslをプログラム内で使用する場合は、サーバーのopensslにバージョンを合わせる必要があります。特にメールを扱うときなんかは注意が必要です。
4. WEBアプリを公開する
ドメインにアクセスした時にFlaskアプリの画面を表示するためには2つのファイルを用意する必要があります。
・.htaccess
・index.cgi
これらはapp.pyと同じディレクトリにおきます。
中身は以下です。
.htaccess
Options +ExecCGI
AddHandler cgi-script .py
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /python/flask-test/index.cgi/$1 [QSA,L]
#!/home/ユーザーネーム/local/python/bin/python3.9
from wsgiref.handlers import CGIHandler
from app import app
CGIHandler().run(app)
python3.9のパスは絶対パスで指定します。
ユーザネームの部分は変更してください。
これでOKです。
ドメインにアクセスすると、ページが表示されるはずです。
この記事が気に入ったらサポートをしてみませんか?