在DigitalOcean的服务器上部署flaskblog应用


Posted in Python onDecember 19, 2015

在DigitalOcean上部署了flaskblog,项目虽小,部署中也学到了很多东西。
操作系统选择的是Ubuntu14.04,原因就是平时自己主要使用这个版本,顺手而已,所以你自己可以根据需要选择合适的linux版本。
部署方案:

Virtualenv+Gunicorn+Nginx+Supervisor

从这里下载项目的代码flaskblog, 工程中带有简单的配置文件参考。
可以先访问flaskblog看一下。
注意

本文中使用Ubuntu14.04 64位主机, 创建一个名为xin的用户,进行部署。
本文重点部署,所有linux的相关操作不做详细介绍。
部署目录是(/home/xin/www/flaskblog),所以请注意配置文件中的目录。
环境

系统:Ubuntu 14.04 64
Web Server: Nginx
虚拟环境: Virtualenv
WSGI Server: Gunicorn
数据库: MySQL
Monitor: Supervisor
使用supervisor主要是监控gunicorn的运行,保证服务器的可以持续运行。

安装

安装软件

$ sudo apt-get install python-pip 
$ sudo apt-get install python-dev    
$ sudo pip install virtualenv    
$ sudo apt-get install mysql-server  
$ sudo apt-get install libmysqlclient-dev 
$ sudo apt-get install nginx  
$ sudo apt-get install supervisor

 
下载工程并开启虚拟环境

使用git下载代码到(/home/xin/www/flaskblog)

$ git clone https://github.com/defshine/flaskblog.git 
$ cd flaskblog

 
启动虚拟环境,安装工程依赖

$ virtualenv venv  
$ source venv/bin/activate  
(venv)$ pip install -r requirements.txt

如何退出虚拟环境

(venv)$ deactivate

数据库

在MySQL数据库中创建数据库(flaskblog),修改 config.py中的数据库的配置
初始化数据库并创建管理员用户

(venv)$ python manage.py create_db 
(venv)$ python manage.py create_user -u admin -p 123456

开启监控

根据自己的情况,编辑工程下的supervisor配置文件(flaskblog.conf),然后复制到系统目录中

$ sudo cp flaskblog.conf /etc/supervisor/conf.d/

重新载入配置文件,并启动flaskblog

$ sudo supervisorctl reload 
$ sudo supervisorctl start flaskblog

查看运行状态

$ sudo supervisorctl status

Nginx

修改nginx的配置文件(flaskblog),然后复制到系统目录中去,并创建软链接。重启nignx。

$ sudo cp flaskblog /etc/nginx/site-available/ 
$ cd /etc/nginx/site-enabled 
$ sudo ln -s /etc/nginx/site-avalaible/flaskblog . 
$ sudo service nginx reload 
$ sudo service nginx restart

查看nginx状态

$ sudo service nginx status

然后,就可以通过ip地址访问了。当然,配置好域名,访问起来更好。
flaskblog这个小项目,刚刚有个小雏形,后续还可以开发一些小特性。

Python 相关文章推荐
Python 多线程抓取图片效率对比
Feb 27 Python
Python中的descriptor描述器简明使用指南
Jun 02 Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
Nov 24 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
python统计中文字符数量的两种方法
Jan 31 Python
深入理解Python异常处理的哲学
Feb 01 Python
python创建与遍历List二维列表的方法
Aug 16 Python
python多维数组分位数的求取方式
Mar 03 Python
Python之字典对象的几种创建方法
Sep 30 Python
使用sublime text3搭建Python编辑环境的实现
Jan 12 Python
python pyg2plot的原理知识点总结
Feb 28 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 #Python
使用Python编写简单的端口扫描器的实例分享
Dec 18 #Python
十个Python程序员易犯的错误
Dec 15 #Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 #Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 #Python
分享Python字符串关键点
Dec 13 #Python
Python实时获取cmd的输出
Dec 13 #Python
You might like
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
php下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
linux下为php添加curl扩展的方法
2011/07/29 PHP
php中json_encode中文编码问题分析
2011/09/13 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
起点页面传值js,有空研究学习下
2010/01/25 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
Python实现抓取城市的PM2.5浓度和排名
2015/03/19 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Python3中详解fabfile的编写
2018/06/24 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
极简的HTML5模版
2015/07/09 HTML / CSS
戴尔美国官网:Dell
2016/08/31 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
酒店服务实习自我鉴定
2013/09/22 职场文书
专科毕业生就业推荐信
2013/11/01 职场文书
医药专业推荐信
2013/11/15 职场文书
银行领导证婚词
2014/01/11 职场文书
揭牌仪式主持词
2014/03/19 职场文书
高中学生自我评价范文
2014/09/23 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书