用drupal7搭了一个博客,从今天开始记录自己积累的东西

去年考研刚复试完的时候就打算开一个博客来着,但是一直瞎忙就把这个计划搁置到了现在。原本打算在csdn或者博客园或者github上写博客,在某个死程群群友的建议下,我最后决定自己单独搭一个站点,这样除了写博客也可以放一些自己写的小东西。

去年年底godaddy买了http://qsalg.com的域名,因为我对drupal蛮熟悉的,所以今年年初用drupal7在百度云BAE3.0上搭一个试试。BAE3.0比起别的开放平台看点就是支持临时的本地文件系统写入,这样就解决各种CMS或者框架移植到开放平台的兼容问题。也许是BAE3.0刚出来不久吧,我用了几天下来感觉体验挺差的。首先就是我用了那么久的界面了,找一个东西很久都找不到;提供的phpmyadmin上传老是出bug,而且是不可重复的bug;社区提问回答延迟有三四天,有一次在它的问答里面提了个问题超字数提示我超字数后直接把我写了很久的问题吞了;公用的数据库一点都不稳定,有时候超慢;有时候突然弹出付费账单,我心想免费的没好货付费好啊,于是点进去发现啥都没有。BAE3.0计费倒是很划算,而且是月末结账,基本上一个个人站点一个月下来也就几块钱的成本吧。最后总算是把网站弄好了,但是发现BAE3.0虽然允许操作本地文件系统但是不是永久的,有时候过了几天重置以后上传的图片啊附件就没有了,wordpress倒是有插件可以存储图片附件到百度开放平台的永久储存上,但是drupal还没有。于是我只好转战阿里云,买了最低配置的55RMB/月的阿里云主机,配置好64位的ubuntu 12.04 lts server之后跑起来内存吃紧比较勉强,好歹把网站挂上去了,但是阿里云又是需要强制备案的,感觉很麻烦。最后资讯了一下学校某个工作室的师弟,得到的建议是“凡是技术上没问题的就不需要备案,学校的静态IP不需要备案”。我最后实在折腾够了,花了一个晚上时间给教研室我用的台式机装了ubuntu12.04 lts server版,把去年向学校申请的静态IP绑上去,把网站挂教研室服务器了。

用Apache配置虚拟主机的地方把我折腾惨了,网站挂上去后只能访问根目录首页,别的url就会导致访问失败。google了一遍又一遍,又问了死程群群友,花了很长时间仍然没有解决。在群友建议下我开始考虑使用Nginx的时候,最后google到了一个Q&A有个sudo a2enmod rewrite的操作,于是我试了一下发现问题终于解决了。原来ubuntu的Apache默认没有开rewrite模块。Apache的确比较笨重+吃内存,基本上认识的人都使用并且推荐Nginx,如果是之前我买的阿里云的500M内存的主机的话我肯定会换Nginx,不过现在我主机内存4G,而且这个时候我也懒得折腾了所以就将就了。基本上free -m看下来内存都在500M以下吧。

我开这个博客如标题所说那样,主要是记录自己平时积累的CS知识,而我的专业方向是计算机视觉,所以基本上内容会偏向这些内容,而且coding也会比较多。

关于banner是我非常喜欢的一幅一个师弟的设定图,非常棒的设计。这个页面里放出了就是一整张的原图,这里有个绘画爱好者聚集的地方非常不错哦:http://asuka.in/
01
最后还是上一点code吧。我用的那台式机电线有点接触不良,时不时碰到的话会断电,于是前天我用python写了个监控网站是否可以访问的程序,挂在BAE3.0上的python-worker上了。原理很简单,就是每隔一段时间访问自己的网站,如果不能访问的话就利用SMTP给自己的邮箱发邮件。

 
#! /usr/local/bin/python
# -*- coding: cp936 -*-
import urllib2

SITES=[['http://www.qsalg.com', 'name@qq.com', 0, 0]]


def main():
    import time
    import sys
    while True:
        #sys.stdout.write("hello python world\n")
        #sys.stdout.flush()
        for i in SITES:
            if checkSite(i):
                pass
            else:
                if i[2]!=0 and i[3]==0:
                    sendMail(i)
                if i[2]!=0 and i[3]!=0:
                    i[3]=datetime.datetime.now()
                if i[2]!=0 and i[3]!=0 and (i[3]-i[2]).seconds > 24*60*60:#超过1天
                    i[2]=0
                    i[3]=0
        time.sleep(300)#5 mins 
def checkSite(i):
    import datetime
    r = urllib2.Request(i[0])
    try:   
        f = urllib2.urlopen(r, data=None, timeout=10)
        pass
    except Exception,e:
        if i[2]==0:#初次异常
            i[2]=datetime.datetime#datetime对象
        else:
            i[3]=datetime.datetime.now()#记录当前datetime
        return False
    return True

def sendMail(i):
    SMTPserver = 'smtp.qq.com'
    sender = 'name@qq.com'#和自己的邮箱一致
    destination = i[1]
    USERNAME = "name@qq.com"#换成自己的邮箱
    PASSWORD = ""#换成自己的面马
# typical values for text_subtype are plain, html, xml
    text_subtype = 'plain'

    content="""\
%s is unavailable from %s, please check it as soon as passible!
"""%(i[0], (i[2]!=0 and [i[2].isoformat()] or ["unkown time"])[0])
    subject="Your site is unavailable"
    import sys
    import os
    from smtplib import SMTP_SSL as SMTP       # this invokes the secure SMTP protocol (port 465, uses SSL)
# from smtplib import SMTP                  # use this for standard SMTP protocol   (port 25, no encryption)
    from email.MIMEText import MIMEText
    try:
        msg = MIMEText(content, text_subtype)
        msg['Subject']=  subject
        msg['From']   = sender # some SMTP servers will do this automatically, not all
        conn = SMTP(SMTPserver)
        conn.set_debuglevel(False)
        conn.login(USERNAME, PASSWORD)
        try:
            conn.sendmail(sender, destination, msg.as_string())
        finally:
            conn.close()
        sys.stdout.write("send mail success, to: %s   time:%s \n"%(i[0], datetime.datetime.now().isoformat()))
        sys.stdout.flush()
    except Exception, exc:
        sys.stdout.write("send mail error, to: %s   time:%s \n"%(i[0], datetime.datetime.now().isoformat()))
        sys.stdout.flush()
if __name__ =="__main__":
    main()

用drupal7搭了一个博客,从今天开始记录自己积累的东西》有5个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注