タイトルの通り、エックスサーバー上でPython3+Flask+MySQLを動作させるまでの流れを書いていきます。
動作環境
- エックスサーバー
- macOS Mojave バージョン10.14.3
もしコマンドが使えなくなったら……
下記のリンクを参考に修復コマンドを入力します。
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin

サーバーとssh接続
エックスサーバー上に環境構築する前にssh接続する必要があるので以下の記事を参考に進めます。

Python3をインストールする
エックスサーバーは標準でPython2が入っていますが、今回はPython3を使っていくのでインストールします。
Python3をインストールするにはLinuxbrewが必要です。

sshでエックスサーバーに接続後、以下のコマンドを入力し、Linuxbrewをインストールしましょう。
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
ここで、パスワードの入力を求められますが、エックスサーバーの管理者権限は持っていないので何も入力せず3回間違えましょう。
すると、ユーザーのローカルにインストールされます(結構時間かかります)
インストールが環境したら、Linuxbrew公式ドキュメントにも書いてありますが、以下の3つのコマンドを入力しましょう。
$ test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
$ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
その後、source ~/.bash_profile、brew -v と入力してバージョンが表示されたらパスが通っています。
$ source ~/.bash_profile
$ brew -v
Homebrew 2.1.11
brewコマンドが使えるようになったらPython3をインストールします!
$ brew install python3
インストールが完了したら動作確認します。
$ python3 -V
Python 3.7.4
Flaskをインストールする
下記のコマンドでインストールします。
$ pip3 install flask
インタプリタを起動し、flaskをimportしてエラーが出なければOKです。
$ python3
Python 3.7.4 (default, Sep 13 2019, 02:12:48)
[GCC 5.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import flask
>>>
エックスサーバー上でFlaskを動作させてみる
ここから、エックスサーバーのドメインのpublic_html配下にtestフォルダ(ドメイン名/public_html/test)を作成し、その中にFlaskを実装していきます。
もしローカル環境でコードを作成してアップロードしたい場合は、エックスサーバーの操作メニューにある「ファイル管理」からフォルダ作成、ファイルアップロードを行いましょう!

まず、先ほど作成したtestフォルダ配下に以下の3つのファイルを作成します。
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /test/index.cgi/$1 [QSA,L]
index.cgi
#! /home/サーバーID/.linuxbrew/bin/python3
from wsgiref.handlers import CGIHandler
from appFlask import app
CGIHandler().run(app)
appFlask.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
サーバーIDはインフォパネル内に書かれています。
これでHello, World!を表示するプログラムは完成ですが、ファイルを作成しただけではwebページに表示されません。
プログラムを動作させるには、パーミッションの変更が必要です。
先ほどの「ファイル管理」から各ファイルのパーミッションを変更できます。
ファイルを選択し
.htaccessを644
index.cgiを705 or 755
appFlask.pyを644
に変更します。

なぜそのようにパーミッションを設定するのかというと、エックスサーバー側でファイル毎に決められているためです。(下記リンクを参考に)
パーミッションの設定が完了したら、https://ドメイン名/testにアクセスしてみましょう!

Hello, Worldが表示されていれば成功です!!
コメント