Xserver に、Flaskを導入しよう。
そう考えたものの、かなり詰まりまっておりました。。。
ですが、以下の方法により瞬殺でFlask環境を整えることができたので共有します。
今すぐやり方を知りたい!と言う方は、記事の半分あたりより確認してみてください。
#バージョン
Xserver X10
Miniconda3-py38_4.8.3-Linux-x86_64.sh
Python 3.8
#解決前に試していたこと
前提として、このやり方では失敗しました。
- VScode によるSSH 環境を整える
- Python3, pip3 インストールしたい←brewコマンド使いたい←Linuxbrew入れよう←git, curlインストール必要、、、と言うことで(xserver ではSudoコマンド使えないので、回りくどい方法に、、、)
- Linuxbrew をxserver オリジナルのgitとcurlを使って入れてみる→失敗。バージョンが低いとのエラー。
- git,curlの対応バージョンをusr/local内にインストール&パスを通す。
- Linuxbrewを入れようとするも2021/11現在、homebrew に統合されたため、そちらインストールしてくださいとのこと
- homebrewインストール時に、curlをhttps対応することが必須だったので、libcurlを独自にアップデートしようとする。
- アプデしても無理。curlがバグってるのか対応できない。(多分xserver 独自のlibcurl を使用することになっている???)
これもうわかんねぇな。
#解決方法
Minicondaをファイルサーバーに直ダウンロードすることで解決しました。(無理矢理感)
結局、Flask導入にpythonが必要だっただけなので、brewコマンドが使えなくても今のところ問題ない!との判断です。
参考URL
https://dattesar.com/xserver-pip-flask/
#注意ポイント
##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!'
おしまい!閉廷!