DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客

DigitalOcean


之前买了个便宜的VPS并且在上面搭建了我自己写的博客程序,后来VPS里运行MongoDB经常自己挂掉就索性没理了。直到现在VPS已经过期,服务器被强制关掉了。周末在家索性想着把这个博客程序重新搭建起来。

选择Linode还是云主机(阿里云等等)?阿里云貌似有些贵,而且还有一堆备案的流程。Linode最近推出SSD服务,20刀/月的价格,加量不加价,很是吸引人。但无奈还是花的有些心疼。忽然另外一个VPS服务DigitalOcean(链接含refcode喔)被我无意发现。DigitalOcean是一家IaaS服务提供商,其特色就是提供快速的固态硬盘服务器,该公司宣称可在55秒之内搭建好一台云服务器,所有的服务器均拥有1G的网络接口,每月基础套餐为1TB,最低套餐费用仅为5美元/月。

每个月20刀的配置和Linode的20刀的配置几乎一样。但是DigitalOcean提供了最低5美元/月的配置,而且如果使用优惠码注册,还能免费送10美元。相当于免费使用2个月。于是我选择了5美元的配置,Google了一把优惠码,并且非常顺利的找到了能用的。Google搜索:digitalocean
coupon。我是在这里找到: http://www.retailmenot.com/view/digitalocean.com

注册,填入优惠码,选择5$的主机类型,主机位置我选了旧金山(美国西部,据说比其他的稳定),操作系统选择了Ubuntu 14.04
x64。一切都非常顺利,正如他们的广告所说的,55秒内,一台热乎乎的VPS送到了我的手上。

有兴趣的同学可以用我的推荐链接注册哦,我也能得到一些好处。注册链接:DigitalOcean
用到哪天不想用了,DigitalOcean还提供了生成一个镜像(Image)的功能,然后你取消掉VPS服务器(Droplets),之后将不收取费用。哪天忽然又想用了再开通它,用之前的镜像一还原,马上就恢复了之前的环境,很是方便。

VPS安装必要的软件

?





1

2

3

4

5

6

7

sudo apt-get
install git

sudo apt-get
install python-pip

sudo apt-get
install nginx

sudo apt-get
install supervisor

sudo pip install tornado

sudo pip install pymongo

sudo pip install beautifulsoup4

(我安装了beautifulsoup是因为我做了个工具把博客园的博客导入过来。)mongodb
安装:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

博客程序

之前我用python+tornado+pymongo写了一套博客程序,只是给我自己使用,所以我放在了私有仓库bitbucket上。
网站程序一般放在/var/www目录里。所以我用git clone把我的代码放到了/var/www/coderzh

?





1

2

3

sudo mkdir /var/www

cd /var/www

git clone https://xxxxx.xxxx.xxx

MongoDB


由于我的程序没有使用MongoDB默认的端口27017,所以我需要修改端口的设置。找到MongoDB的配置文件,修改port字段:

?





1

2

vim /etc/mongodb.conf

修改port=27017部分

停止和重启mongodb:

?





1

2

sudo service mongodb stop

sudo service mongodb start

运行博客程序


博客程序运行需要的环境已经基本配置好,这时运行博客程序看是否能正常起来:

?





1

sudo python /var/www/coderzh/main.py --port 8001

打开浏览器试试能不能访问: http://服务器IP:8001 OK,太棒了,一起正常。

Supervisor


停掉刚才的main.py,这时候要上一个好东西。它就是Supervisor,它是一个进程监控守护程序。它负责开机时自动启动你配置好的程序,并且在你的程序莫名其妙挂掉时,Supervisor会自动去重启他们。可以说,它是网站稳定运行的后勤保障啊。

新建一个Supervisor配置文件,放到/ect/supervisor/conf.d目录下,因为/etc/supervisor/supervisord.conf里配置了自动读取conf.d目录下的文件:

?





1

vim /ect/supervisor/conf.d/coderzh.conf

编辑coderzh.conf

?





1

2

3

4

5

[program:coderzh]

command=python /var/www/coderzh/main.py --port=8001

directory=/var/www/coderzh

autorestart=true

redirect_stderr=true

重载配置,重启Supervisior:

?





1

2

supervisorctl reload

supervisorctl start all

再次访问: http://服务器IP:8001 试试,嗯,一起正常。Supervisor工作了。

Nginx


接下来上Nginx,它是一个HTTP和反向代理服务器。最终网站的访问经过域名解析到服务器后,都要通过Nginx将访问请求转到main.py中处理。理解Nginx的配置文件很重要,好吧,说实话,我当初摸Nginx,Apache之类的东西时都是一头雾水的。Nginx的主要配置文件路径在:/etc/nginx/nginx.conf

为了让Nginx支持多域名,多Web服务。我修改/etc/nginx/nginx.conf 内容如下:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

user www-data;

worker_processes 4;

pid /run/nginx.pid;

events {

    worker_connections 1024;

    use epoll;

}

http {

    types_hash_max_size 2048;

    server_names_hash_bucket_size 64;

    include /etc/nginx/mime.types;

    default_type application/octet-stream;

    access_log /var/log/nginx/access.log;

    keepalive_timeout 65;

    proxy_read_timeout 200;

    sendfile on;

    tcp_nopush on;

    tcp_nodelay on;

    gzip on;

    gzip_min_length 1000;

    gzip_proxied any;

    gzip_types text/plain application/x-javascript text/css application/xml;

    include /etc/nginx/conf.d/*;

}

注意最后一行:include
/etc/nginx/conf.d/*,所以在conf.d目录里,可以为每个网站都配置一个.conf文件。我为博客程序生成的配置:vim
/etc/nginx/conf.d/coderzh.conf

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

upstream coderzh {

    server 127.0.0.1:8001;

}

server {

    listen 80;

    server_name coderzh.com www.coderzh.com;

    location = /favicon.ico {

        rewrite (.*) /static/favicon.ico;

    }

    location = /robots.txt {

        rewrite (.*) /static/robots.txt;

    }

    location / {

        proxy_pass_header Server;

        proxy_set_header Host $http_host;

        proxy_redirect off;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Scheme $scheme;

        proxy_pass http://coderzh;

    }

}

重新启动nginx

?





1

service nginx restart

这时已经可以用80端口访问了。

DnsPod


接下来就是通过DnsPod将域名解析到这台VPS服务器。应该不是什么问题,有问题可以查看DnsPod帮助。

部署完成

执行导入工具,将博客园的博客导入进来。访问:http://www.coderzh.com。HOHO,大功告成。

VPS注册链接:DigitalOcean

DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客,布布扣,bubuko.com

时间: 2024-08-06 03:44:15

DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客的相关文章

烂泥:使用nginx利用虚拟主机搭建WordPress博客

本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近开始打算学习nginx web服务器,既然是学习还是以实用为目的的.我们在此以搭建WordPress博客为例. 搭建WordPress博客,我们需要Mysql数据库.PHP环境和Nginx Web服务器.主要分为以下四个步骤: 1.Mysql数据库安装及配置 2.PHP.PHP-FPM及与PHP相关组件的安装及配置 3.Nginx Web服务器搭建与配置 4.wordpress安装 注意:本次实验,除了nginx使用源码安装外,其他的软件全部使

windows上使用mkdocs搭建静态博客

windows上使用mkdocs搭建静态博客 之前尝试过用HEXO搭建静态博客,最近发现有个叫mkdocs的开源项目也是搭建静态博客的好选择,而且它支持markdown格式,下面简要介绍一下mkdocs的环境搭建过程 项目地址:https://github.com/mkdocs/mkdocs 介绍:英文版----http://www.mkdocs.org/ 中文版----http://markdown-docs-zh.readthedocs.io/zh_CN/latest/ 使用环境:win8.

用Node.JS+MongoDB搭建个人博客(万众期待的router.js)(四)

万众期待的router.js,是我现在最想写的一个博客.因为他包含了整个个人博客的精髓.在这里,所有的请求配置,返回的参数等等所做的业务逻辑都在这个文件里实现. 我会详细说明这些代码的作用,所以这篇博客会有点长,但看完之后受益肯定也不少! 第一部分:引用文件 formidable是一个很出名的NPM包.它在node里作为表单内容接收做处理的一个中间件,功能很强大. db.js是我在网上仿写的一个对数据库的统一操作的函数库. md5是用于数据加密的文件(现在反对用md5加密,因为可以被破解)推荐用

使用hexo在github上搭建个人博客

文章目录 1. 建立博客源码仓库 2. 安装hexo 3. 安装hexo主题 4. 提交仓库 5. 建立gh-pages分支 6. 发布文章 7. 配置cname 8. 进阶:图片自动上传 这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://hmj.name 此教程适合我这种虽然在用github,却不懂git命令的文盲. 建立博客源码仓库 首先在github上创建一个空的仓库用来存放博客程序. 安装github windows客户端https://win

两天的成果---node,express,mongodb,以及mongoose 对github搭建自己博客的项目进行分析

github地址:https://github.com/linguowei/myblog 把项目git clone下来: 分析: # git clone https://github.com/linguowei/myblog.git # cd myblog # npm install # npm run build # cd admin # npm run build #. cd ../ # node app.js # localhost:7000 # localhost:7000/admin

(自己遇到的坑)使用Github Page搭建个人博客(上)

最近需要搭建一个网站,作为导航网址,但是自己的域名备案还要等上几天,就想着有没有别的办法来搭建一个公网可以访问的网站. Github Page的话是一个github个人主页,完全适合用来搭建普通网站. 之前注册github的时候就很恼火,响应一个网页需要等上几分钟.还有浏览器验证并不是都支持的.(这里推荐手机上下载火狐浏览器,手机上去注册) 今天去dns解析网站解析了githu.com,在host文件夹(C:windows/system32/drivers/etc/host)下面添加了域名,访问

用Node.JS+MongoDB搭建个人博客(安装环境)(一)

Node.JS是什么? Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Node.js是由C++开发的,其实是一个JS运行环境,可以让JavaScript运行在服务器上. 安装环境 安装Node.JS和NPM 首先进入NodeJS官网选择自己对应的系统下载最新版,我现在用的是window64位系统,所以选择了window64位版的msi文件.下载完成后安装 安装成功后检查是否

mysql在高内存、IO利用率上的几个优化点 (sync+fsync) 猎豹移动技术博客

http://dev.cmcm.com/archives/107 Posted on 2014年10月16日 by liuding | 7条评论 以下优化都是基于CentOS系统下的一些优化整理,有不全或有争议的地方望继续补充完善. 一.mysql层面优化 1. innodb_flush_log_at_trx_commit 设置为2 设置0是事务log(ib_logfile0.ib_logfile1)每秒写入到log buffer,1是时时写,2是先写文件系统的缓存,每秒再刷进磁盘,和0的区别是

在Github上使用Hexo搭建个人博客

遇过的坑: 使用GitBash安装Hexo(npm的环境变量配置)注意 安装完成后添加Path环境变量,使npm命令生效.新版已经会自动配置Path 1 ;C:\Program Files\nodejs\node_modules\npm 第二坑:安装了旧版本的hexo,卸载: Q:如何卸载Hexo?A:3.0.0版本执行npm uninstall hexo-cli -g,之前版本执行npm uninstall hexo -g. Q:如何安装旧版本Hexo?A:先卸载当前版本,以2.8.3为例,执