一、准备
这两周都在学廖雪峰老师的Python教程,这里写的是最后实战的部署部分。源码可以 看这里 。
1)部署没有用到服务器,而是虚拟机,VitualBox安装的Ubuntu 16.04.2。
2)代码用到的是Python3.4(教程是3.5),部署的时候 Fabric用的是2.7版本,所以这里用到了virtualenv。
# 安装virtualenv
pip instal virtualenv
# 创建文件夹存放vitualenv环境
mkdir virtual
cd virtual
# 创建Python2.7对应的虚拟路径 ENV2.7
# C:\Python27 就是你下载Python2.7的存放位置
virtualenv -p C:\Python27\python ENV2.7
# 激活虚拟环境
ENV2.7\Scripts\activate
# 虚拟配置前本地的 C:\Python27 已经安装了 pip
pip install fabric
3)配置好后把virtualenv的路径放到环境变量PATH中,我的是:D:\virtual\ENV2.7\Scripts。
4)Fabric 部署需要运行linux命令,用windows自带的cmd是完成不了的,需要 Cygwin。但是我直接用之前下载的Git Bash就可以了(其实是一直下不成功Cygwin,才想起替代的)。
二、部署
1)在 webApp下运行 fab build,不知道是缺少对应文件还是环境的问题,一直 Aborting,但是我直接运行 tar ** 命令来生成代码压缩包就没有问题。
2)上传并且按装到虚拟机。fabfile.py 中有个地方需要更改,不然没办法成功。
#服务器登录用户名
env.user = 'eric'
env.password = 'eric' # sudo password
#sudo为root
env.sudo_user = 'root'
env.password = 'eric' # sudo password 这是你虚拟机获取管理员权限的密码,必须要加上
#服务器地址,这里是我的虚拟机的 ipv4 地址
env.hosts = ['192.168.2.10']
#服务器MySQL用户名和密码
db_user = 'root'
db_password = 'eric'
_TAR_FILE = 'dist-awesome.tar.gz'
3)fab deploy 效果。
....
4)如果fab deploy出现错误,记得更改nginx和supervisor配置文件对应自己服务器的信息。比如下面awesome.conf对应的user就是你当前 linux 的用户名。还要 command 需要加上 python3 而不是直接运行 app.py的目录(这是廖老师没有加上,我看error log得到的结论,linux装的是python3.5)。
5)nginx配置文件。我没有申请域名,直接把 server_name填上本机地址。
6)重启supervisor 和 nginx。
7)在虚拟机的浏览器打开 127.0.0.1。
8)顺便配上部署到linux的项目目录。
三、结束语
只是部署完后作一个总结,如果能帮到一些人,那是最好的。
四、补充
1)去万网买了个域名,然后解析到虚拟机的IP上面,再在 nginx的配置文件awesome上把server_name改成域名,再重启nginx和supervisor。
2)这时候在主机(windows)上面已经可以通过域名访问网站了,而且,连了本机WiFi的手机也可以通过域名访问。就是外界访问(类似用手机4G网络)不成功,因为我的域名绑定的只是本地虚拟机的IP,而不是共享服务器的IP。具体我还要好好学习。
3)上面分别是windows主机和手机访问域名的结果。