在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数组的处理代码
Jan 04 Python
Python编码爬坑指南(必看)
Jun 10 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 Python
Python实现自定义函数的5种常见形式分析
Jun 16 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
Nov 14 Python
python实现在函数图像上添加文字和标注的方法
Jul 08 Python
Flask框架单例模式实现方法详解
Jul 31 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 Python
Python搭建HTTP服务过程图解
Dec 14 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
Pygame框架实现飞机大战
Aug 07 Python
关于 Python json中load和loads区别
Nov 07 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
PHP运行模式的深入理解
2013/06/03 PHP
php cookie使用方法学习笔记分享
2013/11/07 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
js文字横向滚动特效
2015/11/11 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
用js编写留言板
2020/03/17 Javascript
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
python版飞机大战代码分享
2018/11/20 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
对Django url的几种使用方式详解
2019/08/06 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
python连接PostgreSQL过程解析
2020/02/09 Python
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
JDO的含义
2012/11/17 面试题
小学英语教学反思
2014/01/30 职场文书
采购经理岗位职责
2014/02/16 职场文书
2014年国培研修感言
2014/03/09 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
通知格式
2015/04/27 职场文书
法人代表证明书范本
2015/06/18 职场文书
Python之matplotlib绘制饼图
2022/04/13 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python