Flask项目部署
uwsgi安装
- uwsgi是一个能够运行flask项目的高性能web服务器,需要先安装两个依赖
apt-get install build-essential python-dev
- 然后进行uwsgi的安装
pip install uwsgi
nginx安装
apt-get install nginx
mysql的安装:
apt-get install mysql-server
apt-get install libmysqlclient-dev
redis的安装:
sudo apt-get install redis-server
redis-server # 启动redis服务器
虚拟环境的安装
- virtualenv和virtualenvwrapper的安装:
pip install virtualenv
pip install virtualenvwrapper
- 使得安装的virtualenvwrapper生效,编辑~/.bashrc文件,内容如下:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh
- 使编辑后的文件生效
source ~/.bashrc
- 创建虚拟环境
mkvirtualenv flask_py2
如果以上服务器都有了,不需要再次进行安装,按下面进行操作:
- 在当前项目的根目录下,创建config.ini文件作为uwsgi的初始化配置文件
#需要声明uwsgi使得uwsgi能够识别当前文件
[uwsgi]
master = true
# 使用 nginx 配合连接时使用
socket = :5000
# 直接做web服务器使用
# http = :5000
# 设定进程数
processes = 4
# 设定线程数
threads = 2
# 指定运行的文件
wsgi-file = manage.py
#指定运行的项目的目录[自已项目在哪个目录就用哪个目录]
chdir = /home/yyl/Flask-iHome21
# 指定运行的实例
callable = app
# 指定uwsgi服务器的缓冲大小
buffer-size = 32768
# 在虚拟环境中运行需要指定python目录
pythonpath = /home/yyl/.virtualenvs/flask_py2/lib/python2.7/site-packages
# 设置进程id文件
pidfile = uwsgi.pid
# 以守护的形式运行,设置log输出位置
daemonize = uwsgi.log
- 利用scp命令将整个项目上传到远程服务器中
scp -r 本地目录 用户名@ip地址:远程目录
scp -r /home/python/Desktop/hello_world/ root@http://39.106.219.184/:/home
- 进入虚拟环境并通过指令运行uwsgi.ini服务器
workon flask_py2
# 启动uwsgi
uwsgi --ini config.ini
# 停止uwsgi
uwsgi --stop uwsgi.pid
其中
–ini config.ini 表示指定运行的配置文件 -d uwsgi.log 表示uwsgi在后台运行,运行过程中产生的日志会存储在uwsgi.log中
- 配置nginx服务器
编辑文件:vi /usr/local/nginx/conf/nginx.conf #可能每个服务器的ngin.conf路径不一样,根据服务器nginx路径
修改为如下内容:
server {
listen 80 default_server;
# 这个时服务器命字,随便起
server_name iHome;
location / {
include uwsgi_params;
# 这个地址是服务器地址外网ip地址和端口
uwsgi_pass 39.106.219.184:5000;
uwsgi_read_timeout 100;
}
}
将server中原有的,上述配置中不能存在的内容注释或删除掉
- 启动和停止nginx服务器
/etc/init.d/nginx start #启动
/etc/init.d/nginx stop #停止
sudo /usr/local/nginx/sbin/nginx #启动
sudo /usr/nginx/sbin/nginx -s reload #平滑重启
ps -ef | grep nginx
从容停止 sudo kill -QUIT 主进程号
快速停止 sudo kill -TERM 主进程号
强制停止 sudo kill -9 nginx
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
在nginx/sbin/目录下运行:
./nginx -t