初心者でもわかる!XserverでPython実行環境を構築する方法

こんにちは、タクロウ(@takuro_109)です!

レンタルサーバーのXserver上で、Pythonで作成したWebアプリを動かす環境を構築しました。PythonでWebアプリを作成するフレームワークは、軽量な「Flask」を用いました。

「Python+Flask+Xserver」を使ってWebアプリを開発する参考になればと、サーバーログインからサンプルファイル実行までの手順を紹介します!

環境

  • OS:macOS High Sierra
  • プログラミング言語:Python3系
  • Python用のWebアプリケーションフレームワーク:Flask
  • Python仮想環境:Pipenv
  • サーバー:Xserver
  • パッケージ管理システム:Linuxbrew

SSHログイン:サーバーに公開鍵認証でログイン

Xserver上で操作を行うため、サーバーにログインする必要があります。セキュリティが強固な通信方法であるSSH(Secure Shell)を用いてサーバーにログインします。

Xserverのサーバーパネルで設定

XserverのSSH設定マニュアルを参考に、公開鍵認証用の秘密鍵を作成・ダウンロードします。

サーバーパネルへログインし、「SSH設定」をクリックします。

SSH設定画面で「ONにする」をクリックします。

公開鍵認証用鍵ペアの生成画面から「パスフレーズ」を入力し、「公開認証用の鍵ペア生成(確認)」をクリックします。

確認画面が表示されるので「公開認証用の鍵ペア生成(確定)」をクリックします。

「公開鍵認証用の鍵ペア生成処理を実行しました」画面が表示され、自動的に秘密鍵のダウンロードが始まり、Downloadフォルダに「サーバーID.key」でファイルが保存されます。

Macのターミナルで設定

ホームディレクトリに.sshフォルダを作成し、秘密鍵を「id_xserver_rsa」と名称変更し保存します。

$ mkdir ~/.ssh
$ mv ~/downloads/サーバーID.key ~/.ssh/id_xserver_rsa 

アクセス権限を「.sshフォルダを700」「秘密鍵を600」に変更します。700は所有者(自分)のみ読み・書き・実行可能、600は所有者のみ読み・書き可能です。

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_xserver_rsa

『ssh -l サーバーID -p 10022 サーバーID.xsrv.jp』コマンドで接続できるものの、接続コマンドを簡略化するため「configファイル」を設定します。テキストエディタで、下記を記述し、ファイル名をconfigでDesktopに保存します。

Host xsrv
  HostName サーバーID.xsrv.jp
  Port 10022
  User サーバーID
  IdentityFile ~/.ssh/id_xserver_rsa
  ServerAliveInterval 60

configファイルを.sshフォルダに移動します。『ssh xsrv』コマンドで接続できるようになります。

$ mv ~/desktop/config ~/.ssh 

SSHログイン

次のコマンドをターミナルで入力すると、パスワードを要求されるので、Xserverで設定したパスフレーズを入力します。

$ ssh xsrv
Enter passphrase for key '/.ssh/id_xserver_rsa':

Linuxbrewインストール:パッケージ管理システム

XserverにSSHログインできるようになったので、次はXserver上の設定を行います。

Pythonやライブラリのインストールに便利なパッケージ管理システム「Linuxbrew」をインストールします。パッケージ管理システムとは、各種のソフトウェアの導入と削除、ソフトウェア同士やライブラリの依存関係を管理するシステムです。

Linuxbrewの公式サイトを参考にターミナルからXserverにSSHログインした状態で以下コマンドを1つずつ実行しましょう。

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
$ 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
$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

Pythonを動かす環境構築

Pythonをインストール準備ができましたので、いよいよPythonを動かす環境を構築しましょう!

Pythonインストール

Xserver上にSSHログインした状態でターミナルから、Linuxbrewを用いて「Python」をインストールします。

$ brew install python

Pipenvインストール:Python仮想環境

Pythonの仮想環境を管理できる「Pipenv」公式ドキュメントを参考にインストールします。

$ brew install pipenv

Flaskインストール

サンプルファイルを動かすプロジェクトフォルダ(例では「test」フォルダ)をXserver上に作成し、プロジェクトフォルダに移動します。

$ mkdir [サーバーID].xsrv.jp/public_html/test
$ cd [サーバーID].xsrv.jp/public_html/test

Pipenvを用いて、「Flask」をプロジェクトフォルダにインストールします。

$ pipenv install flask

PipenvはFlaskライブラリをインストールし、インストール済みのPythonから適切なバージョンを選択し、プロジェクトフォルダに設定が記述された「Pipfile」と「Pipfile.lock」を自動で作成します。

サンプルファイルで動作確認

Flaskの公式ドキュメントのサンプルファイルを用いて、構築した環境の動作確認を行います。ブラウザで指定URLにアクセスし「Hello, World!」と表示します。Xserver上のファイルマネージャー(WebFTP)を使ってファイルを作成しましょう!

Xserver上でファイルマネージャーにログイン

Xserverのファイルマネージャーマニュアルを参考にファイルマネージャーにログインします。ファイルマネージャーは、ブラウザを使用してファイルのアップロード・削除等を行うためのシステムです。

Xserverのインフォパネルへログインし、ページ下部「ご契約一覧>サーバー」の「ファイル管理」をクリックします。

Xserver上でファイル作成

プロジェクトフォルダ(/[サーバーID].xsrv.jp/public_html/test/)に移動します。

「.htaccess」「index.cgi」「test.py」ファイルを作成しましょう。

.htaccess Webサーバーの挙動を決定するファイル。フォルダ単位で、アクセス制限やユーザー認証などを設定できる。
index.cgi Webサーバー上でプログラム(Python)を使って処理した結果を表示させるファイル。CGIはCommon Gateway Interfaceの略。
test.py 実行する処理を記述したPythonファイル。 

ファイルマネージャー上で、ファイル名を入力し、「ファイル作成」をクリックします。

「.htaccess」「index.cgi」「test.py」ファイルを編集しましょう。対象ファイルをチェックし、「編集」ボタンをクリックします。

コードを入力し、「保存する」をクリックします。

.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /test/index.cgi/$1 [QSA,L]
index.cgi
#!/home/[サーバーID]/.pyenv/shims/python3.7
from wsgiref.handlers import CGIHandler
from test import app
CGIHandler().run(app)

index.cgiファイルの1行目は、pythonのXserver上で格納されている場所を指定します。

test.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

cgiファイルのアクセス権限を変更します。

$ chmod 755 index.cgi

ブラウザでhttps://[サーバーID].xsrv.jp/testにアクセスし、「Hello, World!」と表示されることを確認しましょう!

さいごに

Xserver上にPythonを動かす環境を構築できました。今後は以下の手順で、PythonでWebアプリを作成し、Xserverで実行しましょう!

  1. SSHログイン
  2. プロジェクトフォルダを作成し、Pipenvで必要なライブラリをインストールしたPython仮想環境構築
  3. 「.htaccess」「index.cgi」「app.py(Pythonで作成したWebアプリケーションファイル)」を作成