随笔 - 214  文章 - 12  评论 - 40  阅读 - 38万

Python项目实践--环境准备02 Centos下的Python+Flask环境部署

一、Python环境

1、安装依赖项

# yum -y install 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、下载代码

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
解压并进入代码目录
tar zxvf xxx

3、配置

在 ./configure 操作前,先进行配置
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN.UTF-8
 
然后添加配置
./configure --prefix=/usr/python

4、安装

make
make install
 
重新安装清理
make clean 
make distclean

5、加上软链接

ln -s /usr/python/bin/python3 /usr/bin/python3
ln -s /usr/python/bin/pip3 /usr/bin/pip3

二、虚拟环境

pip install virtualenv
pip install virtualenvwrapper
 
如果没有pip则
pip3 install virtualenv
pip3 install virtualenvwrapper
 
配置环境变量
用vim打开~/.bashrc
export WORKON_HOME=~/.virtualenvs
source /usr/bin/virtualenvwrapper.sh 
或者
source /usr/python/bin/virtualenvwrapper.sh
不同的系统virtualenvwrapper.sh的位置可能会不一样
注意:我安装的时候由于本机没有python,因此都安装到了Python3下
virtualenv和virtualenvwrapper的路径为
/usr/python/bin/virtualenv
/usr/python/bin/virtualenvwrapper.sh
 
加上软链接
ln -s /usr/python/bin/virtualenv /usr/bin/virtualenv
ln -s /usr/python/bin/virtualenvwrapper.sh /usr/bin/virtualenvwrapper.sh
 
source ~/.bashrc
执行.bashrc使文件生效
 
创建PPCMS的虚拟环境(根据实际需要给虚拟环境命名)
mkvirtualenv --python=/usr/bin/python3  ppcms

三、Flask环境

切换到虚拟环境下
workon  ppcms
 
安装Flask
pip install Flask
pip install pymysql
pip install flask-sqlalchemy
pip install pyjwt  # jwt包
pip install requests
 
可合并为
pip install Flask pymysql flask-sqlalchemy pyjwt requests

四、服务部署

安装Gunicorn
pip install 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;
}
 
参考文章:
http://www.cnblogs.com/zhanglong8681/p/8421512.html
https://www.jianshu.com/p/fecf15ad0c9a
posted on   麦克煎蛋  阅读(504)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示