Centos部署Python环境
部署Flask应用需要提前配置Python环境,如果您的Centos机器中没有Python环境,可以参考我的另外一篇博客《Centos离线安装Python》,在Centos中离线部署Python环境。
安装Flask应用所需的Python库
这一步的安装,有以下假设:
- 假设您已经下载了Flask应用所需的Python库,并存放在Centos机器的
/root/softwares/06-python-packages
文件夹中;如果没有,您可以从我的百度网盘链接中下载(链接:https://pan.baidu.com/s/1RBmPcHim2OWbwNtY3XzlSw ,提取码:ovjm)。如果我提供的Python库不能满足您的需求,您可以把下载后的Python库存放在06-python-packages文件夹中 - 假设您的Flask应用有requirements.txt文件存储Flask应用所需的Python库;如果通过命令
pip freeze > requirements.txt
导出Flask应用依赖的库至requirements.txt文件。
以上的假设,如果都满足了,可以开始安装Flaks应用依赖的Python库。
- 在Centos中,使用命令进入Flask应用的根目录
- 使用命令
pip install --no-index --find-links=/root/softwares/06-python-packages/ -r requirements.txt
安装Python库
安装、配置supervisor
安装supervisor
- 使用命令
cd /root/softwares/09-supervisor
进入09-supervisor文件夹 - 使用命令
rpm -Uvh *.rpm --nodeps --force
安装supervisor
为Flask配置supervisor
- 使用命令
echo_supervisord_conf > /etc/supervisord.d/flask.conf
创建flask.conf文件 - 使用命令
vi /etc/supervisord.d/flask.conf
打开该文件,并在此文件的最下方添加以下内容
[program:yngt]
command=python3 manage.py runserve
directory=/root/resources_directory_tree/server
startsecs=1
autostart=true
autorestart=true
相关的配置选项的意思如下:
yngt
表示supervisor子进程的名称directory
表示脚本目录command
表示脚本执行的命令startsecs
表示子进程启动多少秒之后,如果其状态为RUNNING,则supervisor认为其已经启动autostart
表示子进程会随着supervisor启动而启动autorestart
表示如果子进程如果异常退出后,是否会自动重启,共有true、false和unexpected,其中unexpected表示如果子进程的退出码不再exitcodes里定义的退出码时,才会自动重启
更多的配置选项请查看 https://wuguiyunwei.com/index.php/2017/06/26/1028.html
启动supervisor子进程
- 使用命令
supervisord -c /etc/supervisord.d/flask.conf
初始化supervisor - 使用命令
supervisorctl -c /etc/supervisord.d/flask.conf
进入supervisorctl命令管理界面 - 使用命令
start yngt
启动子进程,其中yngt表示上一步配置中的子进程名称 - 如果Centos重启后,子进程没有自动启动,请重复这一步操作
安装Nginx
安装nginx
- 使用命令
cd /root/softwares/03-nginx
进入03-nginx文件夹 - 使用命令
tar -xzvf nginx-1.14.2.tar.gz
解压,然后cd nginx-1.14.2/
进入nginx-1.14.2文件夹 - 使用命令
./configure --prefix=/usr/local/nginx
配置nginx的编译选项,其中prefix指定了安装路径 - 使用命令
make
编译nginx源代码 - 使用命令
make install
安装编译后的nginx - 使用命令
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
配置nginx可以全局访问 - 使用命令
nginx -v
,如果能够获取到nginx的版本,表示nginx安装成功
将nginx添加到系统服务
- 使用命令
vi /etc/init.d/nginx
创建文件,并输入以下内容
#! /bin/bash
# chkconfig: - 85 15
PATH=/usr/local/nginx
DESC="nginx daemon"
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/conf/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop() {
$DAEMON -s stop || echo -n "nginx not running"
}
do_reload() {
$DAEMON -s reload || echo -n "nginx can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0
- 使用命令
chmod a+x /etc/init.d/nginx
设置权限 - 使用命令
chkconfig --add nginx
注册成服务 - 使用命令
chkconfig nginx on
配置开机启动
为Flask应用配置nginx
- 使用命令
vi /usr/local/nginx/conf/nginx.conf
打开nginx默认配置文件,修改server配置如下:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm;
}
其中,proxy_pass和proxy_set_header是新增的配置,其余不变。
- 使用命令
systemctl reload nginx.service
重新加载nginx配置文件 - 使用命令
nginx -t
,如果提示successful信息,表示nginx配置文件加载成功
nginx常用命令
systemctl start nginx.service
,启动nginx服务systemctl stop nginx.service
,停止nginx服务systemctl restart nginx.service
,重启nginx服务systemctl reload nginx.service
重新加载nginx配置文件
其他
如果您想了解更多的关于nginx的内容,请查看以下链接: