エックスサーバーでPython+Flask+MySQLの環境構築と格闘したメモ

タイトルの通り、エックスサーバー上でPython3+Flask+MySQLを動作させるまでの流れを書いていきます。

動作環境

  • エックスサーバー
  • macOS Mojave バージョン10.14.3

もしコマンドが使えなくなったら……

下記のリンクを参考に修復コマンドを入力します。

export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
Bashが壊れたときに対応した方法2018年8月 - Qiita
やべぇ!Bashが壊れた! .bash_profileでなにか変更し、sourceコマンドで再読込した際に、誤ってlsコマンドなどが使えなくなることがある。 Command 'ls' is available in '/bin...

サーバーとssh接続

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

SSH設定 | レンタルサーバーならエックスサーバー
レンタルサーバー「エックスサーバー」のご利用マニュアル|エックスサーバーではSSH接続機能を提供しています。当マニュアルではお客様のサーバーアカウントへSSHで接続するための手順を記載しています。
エックスサーバーにssh接続する方法(ターミナル利用) - Qiita
最近ターミナルにも慣れてきたのでssh接続を実行してみた。そのメモ。 0.環境 エックスサーバー Mac OS Sierra 1.エックスサーバーでsshの設定 こちらを参考に公開鍵認証用の鍵ペアを作成。秘密鍵(サーバ...

Python3をインストールする

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

Python3をインストールするにはLinuxbrewが必要です。

Homebrew on Linux
Documentation for the missing package manager for macOS.

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

に変更します。

なぜそのようにパーミッションを設定するのかというと、エックスサーバー側でファイル毎に決められているためです。(下記リンクを参考に)

パーミッション | レンタルサーバーならエックスサーバー
レンタルサーバー「エックスサーバー」のご利用マニュアル|パーミッションとはフォルダやファイルに対するユーザーのアクセス権限のことです。当ページではエックスサーバーでWebサイトを公開する際の推奨パーミッションについてご案内しています。

パーミッションの設定が完了したら、https://ドメイン名/testにアクセスしてみましょう!

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

コメント

タイトルとURLをコピーしました