在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读取word文档的方法
May 09 Python
python列表操作之extend和append的区别实例分析
Jul 28 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
tensorflow实现KNN识别MNIST
Mar 12 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
详解python中自定义超时异常的几种方法
Jul 29 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 Python
Python坐标线性插值应用实现
Nov 13 Python
基于python实现学生信息管理系统
Nov 22 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 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
通达OA公共代码 php常用检测函数
2011/12/14 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
Python中的CURL PycURL使用例子
2014/06/01 Python
以一段代码为实例快速入门Python2.7
2015/03/31 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
前台接待员岗位职责
2014/01/02 职场文书
Go语言特点及基本数据类型使用详解
2022/03/21 Golang