首先要有一台服务器,我用的是亚马逊的EC2云服务器,具体的服务器购买使用就不细说了。在接触到部署之前,我也和大多数人一样,觉得部署是一件很难的事情,其实部署无非就是使用linux命令来完成我们之前在本机windows系统的工作。主要是运行环境的搭建和将本地数据(数据库、代码)拷贝至云服务器。接下来看看具体的操作步骤
安装mysql
数据库的安装取决于你的项目需要,如果是没有使用到数据库的项目可以忽略...
1、在EC2直接使用yum命令安装MySQL:(参考资料)
yum install mysql mysql-server mysql-libs
2、修改mysql root的密码,登录mysql即可( 参考资料)3、创建数据库,备份本地数据库数据导入到新建的数据库中(参考资料)
安装python3.5+pip+virtualenv
先介绍一下pip和virtualenv的作用,pip是python的一个安装工具,可以用来下载安装项目中用到的python第三方库,virtualenv是python的运行环境,像一座房子一样,你可以用virtualenv建立一个独立的项目运行的环境(房子),然后使用pip在这个环境下安装第三方库(家具)。具体的安装方法如下:
1、查找python安装包
sudo yum list | grep python
2、安装python 3.5
sudo yum install python35.x86_64
安装pip
sudo yum install python35-pip.noarch
安装 virtualenv
sudo yum install python35-virtualenv.noarch
创建virtualenv +下载第三方库(flask、gunicorn)
进入想要创建虚拟环境的目录,用virtualenv 命令创建虚拟环境,只需要指定一个虚拟环境的名称(venv)即可,-p指定python版本
virtualenv venv -p python3.5
如果把virtualenv比做房子,那第三方库可以看成是房子里面的家具,接下来我们看看如何充实我们的房子。
在上一步创建好虚拟环境后,我们要激活这个环境,linux系统里有默认的python环境,我们必须要激活创建的环境才能使用它。
激活环境的命令: source 环境目录/bin/activate
source venv/bin/activate
安装flask、gunicorn
pip install flask
pip install gunicorn
.....用类似的方法可以安装其他的三方库,查询安装包可用如下的命令:
pip list | grep 关键字 (查看更多pip使用方法)
不一样的服务器远程传输文件的方法不太一样,不过换汤不换药,无非是使用linux的远程文件传输的命令。需要注意的是这些命令是在本机执行的。EC2下的文件传输可以点击这里查看
启动服务
终于到了最后一步启动服务了,首先在if __name__ == '__main__':下添加下面两行代码
from werkzeug.contrib.fixers import ProxyFix app.wsgi_app = ProxyFix(app.wsgi_app)
并在app.run()中设置host的ip为本地静态ip,已和简单的flak项目代码如下
然后进入项目目录 用gunicorn启动项目(请先确认使用的虚拟环境在激活的状态)
最简单的运行方式就是:
gunicorn main:app
其中code就是指main.py,app就是那个wsgifunc的名字。
这样运行的话, gunicorn 默认作为一个监听 127.0.0.1:8000 的web server,可以在本机通过: http://127.0.0.1:8000 访问。
如果要通过网络访问,则需要绑定不同的地址(也可以同时设置监听端口),设置0.0.0.0可以监听到所有ip的请求:
gunicorn -b 0.0.0.0:8080 main:app
在多核服务器上,为了支持更多的并发访问并充分利用资源,可以使用更多的 gunicorn 进程:
gunicorn -w 8 main :app
以上我们的部署就完成啦!但是外网还是不能访问,研究了好久发现是防火墙的设置问题,需要设置防火墙的入站规则,具体就不详细讲了,当设置完成后,将访问的url中的ip改成服务器的外网ip就可以访问咯~~~
因为我的项目没有用到静态文件,没有对nginx进行说明,有项目需要的可以对nginx进行了解,以下是我部署时查阅的一些资料。
http://blog.csdn.net/raptor/article/details/8681357
http://www.cnblogs.com/Ray-liang/p/4837850.html
http://www.codexiu.cn/python/Explore%20Flask%E4%B8%AD%E6%96%87%E7%89%88/344/