Pythonプロジェクトの実践 - デプロイメント環境のPython +フラスコの02 CentOSに環境を準備

A、Python環境

1、インストールの依存関係

#yumを-yインストールしたzlibはzlib-develのbzip2の-develのopensslの-develのncursesベースのncurses-develのsqliteの-develのreadlineの-develのTK-develのGDBM-develのDB4-develのlibpcapの-develのXZ-develのlibuuid-develのlibffi-develのを

2、コードをダウンロード

解凍して、コードのディレクトリを入力します。
タールzxvf XXX

3、設定

操作の前に./configureを、最初のconfigure
輸出LANG = zh_CN.UTF-8
輸出LANGUAGE = zh_CN.UTF-8
 
次に、設定を追加
./configure --prefix =は/ usr /パイソン

4、インストール

メイク
make installを
 
クリーンアップを再インストールします
きれいにします 
distcleanを作ります

5、プラスソフトリンク

LN -sは/ usr /パイソン/ binに/のpython3は/ usr / binに/のpython3
LN -sは/ usr /パイソン/ binに/ PIP3は/ usr / binに/ PIP3

第二に、仮想環境

ピップvirtualenvのインストール
ピップvirtualenvwrapperインストール
 
ピップなし
PIP3 virtualenvのインストール
PIP3 virtualenvwrapperインストール
 
設定の環境変数
vimので開く〜/ .bashrcに
輸出WORKON_HOME =〜/ .virtualenvs
ソース/usr/bin/virtualenvwrapper.sh 
若しくは
ソース/usr/python/bin/virtualenvwrapper.sh
異なるシステムvirtualenvwrapper.sh位置は同じではないかもしれません
注:マシンはpythonのないときに、彼らは次のpython3をインストールする必要がありますので、私は、インストールされているので
virtualenvのパスとvirtualenvwrapperです
/ usr /パイソン/ binに/ virtualenvの
/usr/python/bin/virtualenvwrapper.sh
 
プラスソフトリンク
LN -sは/ usr /パイソン/ binに/ virtualenvのは/ usr / binに/ virtualenvの
LN -s /usr/python/bin/virtualenvwrapper.sh /usr/bin/virtualenvwrapper.sh
 
ソース〜/ .bashrcに
ファイル.bashrcのテイク効果を実行します
 
PPCMSは(仮想環境への命名の実際のニーズに応じて)仮想環境を作成します
mkvirtualenv --python =は/ usr / binに/のpython3 ppcms

三、フラスコ環境

仮想環境に切り替え
workonのppcms
 
インストールフラスコ
ピップインストールフラスコ
ピップインストールpymysqlを
ピップインストールフラスコSQLAlchemyのを
ピップインストールpyjwt#JWT包
ピップリクエストをインストール
 
それはにまとめることができます
ピップフラスコインストール  pymysql フラスコSQLAlchemyののpyjwt要求を

第四に、サービス展開

インストールGunicorn
ピップgunicornをインストール

五、Gunicornスタートアップスクリプト

起動するコマンドをgunicorn
简单地,gunicorn可以通过gunicorn -w 4 -b 127.0.0.1:4000 run:app启动一个Flask应用。其中,
-w 4是指预定义的工作进程数为4,
-b 127.0.0.1:4000指绑定地址和端口
run是flask的启动python文件,app则是flask应用程序实例
 
对应的gunicorn.py配置文件
# gunicorn.py

debug = True

daemon = True

bind = '127.0.0.1:8001'      # 绑定ip和端口号
# backlog = 512                # 监听队列
chdir = '/data/ppcms/ppcms'  # gunicorn要切换到的目的工作目录
timeout = 30      # 超时
# worker_class = 'gevent' # 使用gevent模式,还可以使用sync 模式,默认的是sync模式

# workers = multiprocessing.cpu_count() * 2 + 1    # 进程数
# threads = 2 # 指定每个进程开启的线程数
loglevel = 'debug'   # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'    # 设置gunicorn访问日志格式,错误日志无法设置

"""
其每个选项的含义如下:
h          remote address
l          '-'
u          currently '-', may be user name in future releases
t          date of the request
r          status line (e.g. ``GET / HTTP/1.1``)
s          status
b          response length or '-'
f          referer
a          user agent
T          request time in seconds
D          request time in microseconds
L          request time in decimal seconds
p          process ID
"""

pidfile = "/data/log/ppcms.pid"
accesslog = "/data/log/gunicorn_ppcms_access.log"      # 访问日志文件
errorlog = "/data/log/gunicorn_ppcms_error.log"        # 错误日志文件
View Code
 

六、nginx配置

upstream到本地指定端口即可。
location / {
    proxy_pass http://127.0.0.1:8000 ; # 这里是指向gunicorn host的服务地址
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
}
 

おすすめ

転載: www.cnblogs.com/mazhiyong/p/12579671.html