在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实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
跟老齐学Python之dict()的操作方法
Sep 24 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
Jul 23 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
python面试题之列表声明实例分析
Jul 08 Python
python web框架中实现原生分页
Sep 08 Python
python实现图像全景拼接
Mar 27 Python
python实现将中文日期转换为数字日期
Jul 14 Python
python redis存入字典序列化存储教程
Jul 16 Python
python如何代码集体右移
Jul 20 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
用Python selenium实现淘宝抢单机器人
Jun 18 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实现批量生成App各种尺寸Logo
2015/03/19 PHP
php实现微信公众号无限群发
2015/10/11 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
python实现备份目录的方法
2015/08/03 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
python中dict使用方法详解
2019/07/17 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
python列表推导式操作解析
2019/11/26 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
日化店促销方案
2014/03/26 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
如何在C++中调用Python
2021/05/21 Python