在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调用浏览器并打开一个网址的例子
Jun 05 Python
Python random模块用法解析及简单示例
Dec 18 Python
Python检测网络延迟的代码
May 15 Python
Python实现的简单计算器功能详解
Aug 25 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
Python常用的json标准库
Feb 19 Python
基于Python打造账号共享浏览器功能
May 30 Python
python区块及区块链的开发详解
Jul 03 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
opencv深入浅出了解机器学习和深度学习
Mar 17 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
flash用php连接数据库的代码
2011/04/21 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
JS event使用方法详解
2008/04/28 Javascript
js模拟弹出效果代码修正版
2008/08/07 Javascript
js跳转页面方法总结
2014/01/29 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
Python连接phoenix的方法示例
2017/09/29 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
为什么会有内存对齐
2016/10/10 面试题
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
管理信息系学生的自我评价
2014/01/11 职场文书
大学校园生活自我鉴定
2014/01/13 职场文书
新学期家长寄语
2014/01/19 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
项目合作协议书
2014/09/23 职场文书
拖欠货款起诉状
2015/05/20 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
z-index不起作用
2021/03/31 HTML / CSS
python对文档中元素删除,替换操作
2022/04/02 Python
服务器间如何实现文件共享
2022/05/20 Servers