====== 16 共用サーバで、pythonインストール ====== 今回さくらレンタルサーバにpythonを導入してみます。 スタンダードプラン以上だとSSHが利用可能なので、スタンダードプラン利用。 ===== 環境 ===== 2023.07.31現在: さくらレンタルサーバの環境はFreeBSD13 $ uname -a FreeBSD www1564.sakura.ne.jp 13.0-RELEASE-p12 ===== 1.pyenvインストール ===== git clone git://github.com/yyuu/pyenv.git ~/.pyenv ==== パスを通す ==== echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(pyenv init -)"' >> ~/.bash_profile echo 'export TMPDIR="$HOME/tmp"' >> ~/.bash_profile ==== ちゃんとインストールされているか確認 ==== $ pyenv -v pyenv 2.3.23-2-gac5efed3 ===== 2.virtualenvインストール ===== Pythonのバージョン切り替えできるように、virtualenvインストール git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv ===== 3. Pythonインストール ===== 今回は3.3.4をインストール CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib" pyenv install 3.3.4 pyenv virtualenv 3.3.4 flask_3.3.4 pyenv global flask_3.3.4 $ pyenv version flask_3.3.4 (set by /home/hogehoge/.pyenv/version) ==== pip自体更新 ==== pip install --upgrade pip ==== Flask ==== pip install Flask ==== numpy/pandas ==== pip install numpy==1.9.3 pip install cython pip install pandas==0.19.0 ===== 4.Flaskへのアクセス環境用意 ===== RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /hello/index.cgi/$1 [QSA,L] deny from all #!/home/hogehoge/.pyenv/versions/flask_3.3.4/bin/python # -*- coding: utf-8 -*- from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "Hello World!\n" if __name__ == '__main__': app.run() #!/home/hogehoge/.pyenv/versions/flask_3.3.4/bin/python import cgitb cgitb.enable() from wsgiref.handlers import CGIHandler from app import app from sys import path path.insert(0, '/hogehoge/www/hello/') from app import app class ProxyFix(object): def __init__(self, app): self.app = app def __call__(self, environ, start_response): # ※要書き換え environ['SERVER_NAME'] = "hogehoge.sakura.ne.jp" environ['SERVER_PORT'] = "80" environ['REQUEST_METHOD'] = "GET" environ['SCRIPT_NAME'] = "" environ['PATH_INFO'] = "/" environ['QUERY_STRING'] = "" environ['SERVER_PROTOCOL'] = "HTTP/1.1" return self.app(environ, start_response) if __name__ == '__main__': app.wsgi_app = ProxyFix(app.wsgi_app) CGIHandler().run(app) ==== 権限変更 ==== chmod 744 index.cgi chmod 400 .htaccess ==== 手動実行での動作確認 ==== python index.cgi ==== Webからの動作確認 ==== https://hogehoge.sakura.ne.jp/hello/ {{tag>python}}