欢迎观临我的新站:
一起淘券网-优惠券,超级返利,天猫优惠券,淘宝优惠券,9.9包邮,超级优惠券,最新优惠券
网址:17taoquan.wang
基于flask的网站。
下面是部署步骤。
1、安装virtualenv
sudo pip install virtualenv
使用virtualenv可以为python创建一个独立的运行环境。
创建网站根目录:
mkdir /home/liuchang/www mkdir /home/liuchang/www/myweb
创建并激活虚拟环境,并在虚拟环境中安装 flask:
cd /home/liuchang/www/myweb virtualenv venv # 创建虚拟环境 . venv/bin/activate # 进入虚拟环境 或者 source venv/bin/activate
如果执行 . venv/bin/activate 没有权限,需要进入 venv/bin/ 为root 用户授权。
chmod o+x activate
在虚拟环境中安装flask
pip install flask
退出虚拟环境
deactivate
2、新建应用:/home/liuchang/www/myweb
# hello.py from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run(host='0.0.0.0', port=8080)
在虚拟环境中启动应用:
python hello.py
浏览器访问 8080 端口可访问。
3、安装 gunicorn
注意:在虚拟环境中安装
pip install gunicorn
pip freeze > requirements.txt #可选操作,记录安装过的包
用 gunicorn 启动 APP:
gunicorn -w4 -b0.0.0.0:8000 hello:app
此时,我们需要用 8000 的端口进行访问,原先的8080并没有启用。其中 gunicorn 的部署中,,-w 表示开启多少个 worker,-b 表示 gunicorn 开发的访问地址。
4、安装nginx
sudo apt-get install nginx
备份并修改默认配置文件:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
sudo vim default
server { listen 80; server_name yourweb.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
修改完重启
sudo service nginx restart
5、安装supervisor进程管理
supervisor为进程管理程序,可以管理gunicorn并设置自启。同时也可以管理nginx。
因为 supervisor 目前不支持python3,不能使用pip安装
sudo apt-get install supervisor
自定义应用启动配置文件:
cd /etc/supervisor/conf.d touch myweb.conf sudo vim myweb.conf
[program:myweb] directory = /home/liuchang/www/myweb # 网站根目录 command = /home/liuchang/www/myweb/venv/bin/gunicorn -w4 -b0.0.0.0:8000 hello:app # 启动应用 autostart = true # 自启 startsecs = 5 autorestart = true startretries = 3 user = ubuntu redirect_stderr = true stdout_logfile_maxbytes = 20MB stdout_logfile_backups = 20 stdout_logfile = /home/liuchang/www/myweb/logs/17taoquan_stdout.log # 日志文件
配置完成重启
sudo service supervisor restart
如果没有启动成功,可以查看启动状态及错误:
sudo service supervisor status