1分でXserverにFlaskを導入する。(Linuxサーバーへ、python3環境を構築する。

Flask

Xserver に、Flaskを導入しよう。
そう考えたものの、かなり詰まりまっておりました。。。
ですが、以下の方法により瞬殺でFlask環境を整えることができたので共有します。
今すぐやり方を知りたい!と言う方は、記事の半分あたりより確認してみてください。

バージョン

Xserver X10
Miniconda3-py38_4.8.3-Linux-x86_64.sh
Python 3.8

解決前に試していたこと

前提として、このやり方では失敗しました。

  1. VScode によるSSH 環境を整える
  2. Python3, pip3 インストールしたい←brewコマンド使いたい←Linuxbrew入れよう←git, curlインストール必要、、、と言うことで(xserver ではSudoコマンド使えないので、回りくどい方法に、、、)
  3. Linuxbrew をxserver オリジナルのgitとcurlを使って入れてみる→失敗。バージョンが低いとのエラー。
  4. git,curlの対応バージョンをusr/local内にインストール&パスを通す。
  5. Linuxbrewを入れようとするも2021/11現在、homebrew に統合されたため、そちらインストールしてくださいとのこと
  6. homebrewインストール時に、curlをhttps対応することが必須だったので、libcurlを独自にアップデートしようとする。
  7. アプデしても無理。curlがバグってるのか対応できない。(多分xserver 独自のlibcurl を使用することになっている???)

解決方法

Minicondaをファイルサーバーに直ダウンロードすることで解決しました。(無理矢理感)
結局、Flask導入にpythonが必要だっただけなので、brewコマンドが使えなくても今のところ問題ない!との判断です。
参考URL

エックスサーバーで簡単にpythonのpipとFlaskの環境を構築する | dattesar

注意ポイント

AnacondaではなくMinicondaを使うことでファイルサイズを減らす

FlaskでPythonパッケージを利用してますが、今のところMinicondaでも問題ないです。分かるのであれば後入れでパッケージ導入すればいいので

Minicondaのバージョン

Miniconda3-py38_4.8.3-Linux-x86_64.sh が安定バージョンでした。
Python バージョン

FlaskのPython安定バージョンはPython3.8 なので、3.9の場合不安定かも。(デフォルトでどちらかがインストールされるはず)

パスを通すこと

パスを通すことを忘れないように。

Flask関連のファイルとパーミッション

以下 3ファイル お気をつけくださいませ。

.htaccess

パーミッションは、644。
常時SSL化(強制https化)バージョン

SetEnvIf Request_URI "." Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI "." Ngx_Cache_StaticMode

RewriteEngine On

RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]


常時SSL化ではないバージョン。

SetEnvIf Request_URI "." Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI "." Ngx_Cache_StaticMode

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]

index.cgi

パーミッションは、755
Python仮想化など、ディレクトリが以下ではない場合は一行目を変更してください。

#! /home/(User Name)/local/miniconda3/bin/python
from wsgiref.handlers import CGIHandler
from app import app
CGIHandler().run(app)

app.py

パーミッションは600

from flask import Flask

app = Flask(__name__)

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


おしまい!閉廷!

参考URL
https://dattesar.com/xserver-pip-flask/

コメント

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