2
0

More than 1 year has passed since last update.

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

Posted at

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
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!'

おしまい!閉廷!

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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0