====== 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}}