見出し画像

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]

index.cgi

#!/home/ユーザーネーム/local/python/bin/python3.9

from wsgiref.handlers import CGIHandler
from app import app
CGIHandler().run(app)

python3.9のパスは絶対パスで指定します。
ユーザネームの部分は変更してください。

これでOKです。
ドメインにアクセスすると、ページが表示されるはずです。

この記事が気に入ったらサポートをしてみませんか?