网站部署过程 Nginx + Gunicorn +Supervisor +Flask

目录

    • 目录
      • 部署思路
      • 前期准备
        • 注册域名
        • 购买VPS
      • 服务器端设置
        • 安装依赖环境
        • 新建项目
        • 创建虚拟环境
        • 安装相关依赖
        • 配置环境变量
        • 配置Nginx
        • 配置supervisor
        • 启动
      • 完成
      • 地址

部署思路

使用Nginx + Gunicorn +Supervisor +Flask的方式进行部署,其中,Nginx作为前端反向代理服务器,Gunicorn作为生产服务器,使用Supervisor来管理服务器进程,Flask作为开发框架。

套用一张图来理下思路:
网站部署过程 Nginx + Gunicorn +Supervisor +Flask_第1张图片

前期准备

注册域名:

在Godaddy(狗爹)上购买域名 www.heathkang.com

购买VPS:

在搬瓦工上购买VPS服务,并在服务器上安装ubuntu14.04系统

服务器端设置

安装依赖环境:

$ sudo apt-get update
$ sudo apt-get install -y python python-pip python-virtualenv nginx git

新建项目:

$ sudo mkdir /home/zhihufake

创建虚拟环境:

切换到项目文件夹后,将项目代码从Github克隆到此处,并创建虚拟环境

$ sudo git clone https://github.com/HeathKang/zhihufake.git
$ cd /home/zhihufake/zhihufake
$ virtualenv venv
$ source venv/bin/activate

安装相关依赖:

(venv) $ pip install -r requirements.txt
(venv) $ pip install gunicorn flask-whooshalchemyplus jieba 

配置环境变量:

将环境变量写入用户的启动文件~/.bashrc

(venv) $ vim ~/.bashrc
#配置邮箱账号密码
(venv) $ export MAIL_USERNAME="xxxxxxx"
(venv) $ export MAIL_PASSWORD="xxxxxxx"

配置Nginx:

#新建app配置文件
(venv) $ sudo touch /etc/nginx/sites-available/zhihufake
#将两个配置文件连接在一起共同更改
(venv) $ sudo ln -s /etc/nginx/sites-available/zhihufake /etc/nginx/sites-enabled/zhihufake

设置代理位置以及静态文件位置

server{
    location / {
    proxy_pass http://localhost:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    }
    location /static/ {
        alias    /home/zhihufake/zhihufake/app/static/;
    }
}

配置supervisor:

通过supervisor来管理zhihufake的启动,首先,安装supervisor,并新建项目所需的配置文件

(venv) $ pip install supervisor
# 生成zhihufake所需的配置文件
(venv) $ echo_supervisord_conf > supervisor_zhihufake.conf  
# 修改配置文件
(venv) $ vim supervisor.conf   
# 在配置文件最后加上以下语句用来关联相关的配置文件
[include]
files = /home/zhihufake/supervisor_zhihufake/*.conf                   

然后新建并配置关联的配置文件

(venv) $ vim /home/zhihufake/supervisor_zhihufake/zhihufake.conf
#在该文件中写入以下语句

[program:zhihufake]
directory = /home/zhihufake/zhihufake       ; derectory of program
command = gunicorn manage:app -b localhost:8000 --log-level info --access-logfile /home/zhihufake/log/access-zhihufake.log   ;start command 
autorestart = true   ; 
autostart = true     ;
startsecs = 5        ; consider success if not fail in 5 sec
startretries = 3     ; 
user = heath         ; 
redirect_stderr = true  ; 
stdout_logfile_maxbytes = 20MB  ;
stdout_logfile_backups = 20     ;
stdout_logfile = /home/zhihufake/supervisor_logs/zhihufake_stdout.log

启动:

最后重启Nginx,并通过supervisor的命令行客户端工具supervisorctl来启动程序

$ sudo /etc/init.d/nginx restart
$ supervisorctl -c supervisord_zhihufake.conf

然后会进入 supervisorctl 的 shell 界面,可以执行多个命令:

> status    # 查看程序状态
> start zhihufake  # 启动 zhihufake 程序
> stop zhihufake   # 关闭 zhihufake 程序
> restart zhihufake    # 重启 zhihufake 程序
> reread    # 读取有更新(增加)的配置文件,不会启动新添加的程序
> update    # 重启配置文件修改过的程序

完成

大体的部署过程如上所示,具体细节不断完善中。

地址

网站地址:http://www.heathkang.com
源码地址:https://github.com/HeathKang/zhihufake

你可能感兴趣的:(网站部署)