Posts

2012

Nginx安装SSL证书

眼看中国网络维护日(CNMD)就要到了,想想决定给自己的网站安装个SSL证书。 貌似提供免费SSL证书且比较靠谱的仅StartSSL一家(https://www.startssl.com/),于是别无选择。 注册 注册过程很简单,我前后只花了半个小时不到便注册完成。只是要注意的是,由于是人工审核,注册信息务必填写完整,我注册的时候信息没填完整因此还被收到一封邮件要求重新提供注册信息,好吧。 此外,StartSSL网站采用证书验证,而不是传统的用户名/密码验证登录,因此注册成功后,验证证书一定要妥善保管,不然要是丢失可就没法登录了。 验证域名 登录到Control Panel之后,若要给网站添加SSL证书,首先需要通过域名验证。 点击Validations Wizard打开验证向导,选择验证类型为域名验证Domain Name Validation,填入要验证的域名,然后StartSSL会给该域名的管理员邮箱发一封验证邮件,将验证邮件中收到的验证码填入就完成了域名验证的全部过程。 不过要注意的是,域名验证的有效期是30天,如果过了有效期则需要重新验证。 申请SSL证书 点击Certificates Wizard打开证书向导,选择证书用途为Web Server SSL/TLS Certificate。 生成私钥Generate Private Key 如果之前已经在服务器上使用openssl生成了私钥文件和证书申请文件的话,这一步就可以跳过。 但是我选择了生成私钥,因此需要填入私钥的密码,然后点击Continue,将生成的私钥保存为ssl.key。 生成证书 接下来按照提示,选择刚刚认证的域名,并且还必须按要求绑定一个二级域名,没搞明白是什么用意,就填了个ssl,这个貌似没什么影响。 打开Tool Box,选择Retrieve Certificate,不出意外的话,证书已经生成完毕了,只需要将其保存为ssl.crt就大功告成了! 证书的使用 …

#nginx#ssl#https

使用tar安装Linux

前两天在给Toni童鞋安装ArchLinux时,深感虽然ArchLinux的安装过程已经相当简单,但是所有软件包都要重新安装一遍,所有系统设置都需要重新配置还是相当费事费力。尤其是需要批量安装系统时,就更显得效率低下了。 tar是Linux上常用的打包/解包工具,而tar也可以用来安装(克隆)Linux系统。我们可以使用tar先将一台机器上已经安装并配置完善的Linux系统打包,然后再到目标机器上解包,就达到了安装(克隆)Linux系统的目的。 对系统进行打包 在打包的过程中同时使用exclude参数排除掉不希望被打包的目录。 tar zcvpf /backup/full.tar.gz -C / \ --exclude=backup --exclude=lost+found/* \ --exclude=mnt/* --exclude=home/* \ --exclude=dev/* --exclude=proc/* \ --exclude=tmp/* --exclude=sys/* . 务必要加上tar的p参数,以保证打包之后的文件权限不被修改。 解包文件到目标分区 使用任何一张LiveCD光盘或者U盘启动,将目标分区挂载,比如挂载到/mnt/arch。 将之前打包的系统文件解包 tar zxvpf full.tar.gz -C …

#linux#ArchLinux#tar

北邮综合信息查询系统

之前写过一个“北邮本科生成绩查询系统”,写完后就一直没管它,最近期末考试的考表出来了,于是琢磨着给这个系统加点儿功能,比如考表什么的,于是就捣鼓出来这个升级版的“北邮综合信息查询系统”。 依旧采用Django进行开发,但是这次没有部署在OpenShift上,而是直接在我的VPS上部署,感觉比OpenShift使用起来更自由一点。而相对于之前的查询系统,最大的不同应该就是界面了,这次的界面采用了Twitter的bootstrap框架~此外,功能上也增加了很多,请看: 目前实现的功能有: 本学期成绩查询 所有及格成绩查询 所有不及格成绩查询 考表查询 北邮主页新闻 办公布告栏消息 学生布告栏消息 将要实现的功能 空闲教室查询(包括本部&宏福校区) 本学期课表查询 培养方案完成情况 加权成绩计算 其实空闲教室的查询功能已经做好了,但是苦于学校提供的数据源失效,导致查询结果始终是错误的,只好将这个功能暂时关闭。 围观地址:http://byr.moecn.net 依旧使用本科生教务系统(URP)的密码登录,不会保存您的密码,请放心使用~(p.s.我甚至都没有用到数据库= =) 放几张截图吧:-)

#Django#北邮#web

基于Nginx+uWsgi的Django一键部署脚本

在Nginx上使用uWsgi代替FastCGI运行Django不仅性能可以提高数倍,而且还可以具有低内存占用,部署简便等诸多优点。 为了方便在服务器上部署Nginx+uWsgi,我写了个一键部署脚本,在CentOS 6.2上已经成功安装,其他平台目前尚未测试。 注意:在使用此脚本之前需要先安装Nginx,Nginx的安装方法可以自行Google,在此不再赘述。 Django+uWsgi一键安装脚本 下载脚本https://github.com/chon219/Code/blob/master/scripts/uwsgi-install.sh 执行 chmod +x uwsgi-install.sh 给该脚本赋予可执行权限 然后以root身份执行脚本 ./uwsgi-install.sh 根据提示输入网站的根目录路径,比如/home/wwwroot 即可开始安装。 安装完成后,uwsgi服务将会自动添加到系统启动项中,毋须手动添加 管理uWsgi服务 启动uWsgi: /etc/init.d/uwsgi start 停止uWsgi: /etc/init.d/uwsgi stop 重启uWsgi: /etc/init.d/uwsgi restart 注意:每次修改Django应用之后,都需要重启uWsgi服务使新的应用生效。 添加多个Django应用 下载uWsgi-app脚本https://github.com/chon219/Code/blob/master/scripts/uwsgi-app.sh 执行 …

#Django#linux#nginx#CentOS#uWsgi#脚本#web

基于OpenWRT路由器的IPv6 SSH Tunnel解决方案

寒假的时候入了一台Linksys WRT54G,并将其刷成了OpenWRT系统,开学之后考虑到蛋疼的校园网认证系统,打算在路由器上搭建基于IPv6的SSH Tunnel,用来给移动设备提供网络接入以及外网代理服务。 准备工作 需要 原生IPv6网络 一台刷了OpenWRT系统的路由器 一台米国的服务器,需要IPv6支持以及SSH帐号 给OpenWRT增加IPv6支持 关于OpenWRT上的IPv6配置,可以参考OpenWRT的官方wiki http://wiki.openwrt.org/doc/howto/ipv6.essentials 简而言之,通过SSH登录到OpenWRT,然后使用opkg安装IPv6模块 root@OpenWrt:/# opkg install kmod-ipv6 然后重启network服务 root@OpenWrt:/# /etc/init.d/network restart 这时,使用ifconfig命令应该能够看到成功获取IPv6地址了 配置SSH的免密码登录 有了IPv6,应该能通过SSH直接连接到服务器而不用经过校园网的认证,然而,为了让路由器实现自动登录,SSH的免密码登录当然是必须的了。 而OpenWRT上默认的SSH是Dropbear,配置方法和通常使用的OpenSSH有所不同。 使用Dropbear生成Public Key dropbearkey -t rsa -f …

#IPv6#ssh#Tunnel#OpenWRT#Dropbear

慎用CNAME!

我的一个企业邮箱,从前两天开始突然不能使用了,准确来说,是只能发送邮件而不能接收邮件,发送测试邮件也总是会被退回,Gmail的退信提示说: Technical details of temporary failure: The recipient server did not accept our requests to connect. 很奇怪,前几天还用得好好的,怎么就突然不能用了? 刚开始怀疑是Google Apps的问题,因为我的邮箱是托管在Google Apps的,但是我的另一个企业邮箱却可以正常收发邮件,所以可以肯定Google Apps是工作正常的。 打开Google Apps的页面,提示我找不到域名的MX记录,这才想起来查看域名的DNS设置,但是仍然很奇怪,MX记录从来没有更改过,两个域名的MX记录一致,都是指向Google的邮件服务器的,怎么会导致其中一个不能使用呢? 这时,我才想起来,前几天将网站搬到了OpenShift,于是将域名的CNAME记录指向了OpenShift的域名,然后,然后邮箱就不能使用了! 会不会是域名的CNAME记录导致了MX记录失效呢? 我找到了这篇文章《域名别名CNAME的详细解释与说明》,验证了我的猜想。 简而言之,当我将域名A的CNAME记录指向另一个域名B时,邮件服务器传送邮件时,查询的便不是域名A的MX记录,而是域名B的。我将域名CNAME指向了OpenShift的域名,导致MX查询到的是OpenShift域名的MX记录,自然无法接收到邮件了。 所以,当我将域名的CNAME记录删除之后,邮件就可以正常收发了,这时候才发现漏掉了好多邮件啊!

#DNS#域名#CNAME#MX#邮箱#Google Apps

MySQL主从服务器的配置

以前一直使用mysqldump+crontab的方式对MySQL数据库进行备份,这种方式用来对博客进行备份还是比较实用的,但是在备份VPN数据库这样实时性要求比较高的场合就显得不够用了,于是打算利用主从服务器进行备份。 主服务器的配置 修改主服务器的配置文件/etc/my.cnf,在[mysqld]段加入以下内容: server-id=1 log-bin binlog-do-db=''#需要备份的数据库 binlog-ignore-db=''#不需要备份的数据库 然后重启mysql服务 /etc/init.d/mysqld restart 打开mysql shell,执行命令 mysql > show master status; 查看当前二进制文件的文件名及偏移位置,并记录下File和Position的值 从服务器的配置 修改从服务器的配置文件/etc/my.cnf,在[mysqld]段加入以下内容` server-id=2 master-host='主服务器IP地址' master-user='主服务器的备份帐号' master-pass='主服务器的备份密码' master-port='3306'#主服务器端口 master-connect-retry=60 # replicate-do-db=''#需要备份的数据库 replicate-ignore-db=‘’#不需要备份的数据库 将需要备份的数据库手动导入从服务器,然后重启mysql服务 …

#MySQL

在Red Hat OpenShift平台部署Django应用

OpenShift云服务是Red Hat公司推出的一个面向开源开发者的PaaS(Platform-as-a-Service,平台即服务),2011年的“软件自由日”时,Red Hat公司曾在北邮做过OpenShift Express(OpenShift的免费版本)的校园宣讲,使我对这个产品产生了很大兴趣,于是打算在OpenShift平台上搭建一个应用试试。 OpenShift有很大的灵活性,可以支持Java,Ruby,PHP,Python的多种开发框架,因为我目前只会使用Python,所以我选择在OpenShift上搭建一个Django应用。 注册&登入OpenShift 首先,需要到OpenShift网站注册一个帐号https://openshift.redhat.com/ 然后登入OpenShift,选择Express版本 安装rhc client tools 在Linux上,需要git,ruby 1.8以上版本,以及rubygems 然后执行命令: su -c 'gem install rhc' 其他平台上的安装方法详见https://openshift.redhat.com/app/express#quickstart 创建一个域名 直接执行命令: rhc-create-domain -n mydomain -l rhlogin 其中mydomain是你想要创建的域名,以后你所创建的每一个应用将会有这样的URL http://appname-mydomain.rhcloud.com,rhlogin则是你的OpenShift登入邮箱 创建一个应用 …

#Django#OPENSHIFT#Red Hat#开源#云计算

过年时的蛋疼之作:北邮本科生成绩查询系统

一直对学校那个URP教务系统很不爽,不光在手机上访问很不方便,及时用电脑访问也还要求IE only才能显示正常,查个成绩还得点N次才能找到结果。但是偏偏期末考试结束之后还总得上教务系统查成绩,实在是很无奈。 所以如果让我来做一个成绩查询系统,我的需求其实很简单,要求这个系统: 能够在手机上使用 操作过程足够简洁明了 考虑到教务处不可能提供API供我使用,只能通过抓取教务系统的网页,然后解析HTML获取查询结果的方法来实现。 于是我的除夕之夜就贡献给它了:北邮本科生成绩查询系统 登录界面,使用学号和教务系统的密码登录 查询结果,略去了教务系统里的课程号等信息 基于Django技术构建,搭建在RedHat OPENSHIFT平台上。 链接:http://byjw-chon.rhcloud.com/

#Django#北邮#OPENSHIFT

搬家到YardVPS

从2011年的5月份开始,我一直都在使用BURST的VPS,到现在已经有半年了。 一开始选择BURST就是因为它提供原生的IPv6支持,在教育网内使用非常顺畅,而且价格非常低廉,所以刚开始对它很满意。 但是渐渐的,感觉BURST越来越不能满足我的需要,原生的IPv6速度变得很慢,机器性能也不如以前,宕机也成了家常便饭,所以就萌生了放弃BURST的念头。 浏览了很多家VPS商,发现能提供原生IPv6的并不是很多,最后选中了YardVPS,这是PhotonVPS旗下的一个品牌,以前用过PhotonVPS,感觉还不错。而YardVPS定位Unmanaged solutions,因此在价格上有很大的优势。 我购买的是YardVPS的XEN方案中最便宜的Tree1,原价$7.95/mo.,由于春节的缘故可以使用八折优惠码YARDVPS,这样算下来也就$6.36/mo.,算是非常实惠的价格了。 Tree1 PLAN的配置如下 512MB Guaranteed RAM 1GB Swap 20GB Disk Space 1500GB Bandwidth 1 IP $7.95/Month 这样的配置对于我来说已经足够用了 UPDATE:博客现在已经搬到http://ramhost.us,不再是YardVPS。

#vps#YardVPS