前面配置过了VirtualENV,Tornado及MySQL,现在马上开始练习一些简单的应用了,先从建立Blog。吐一下槽,昨天OSC又抽疯了,我第八节是辛辛苦苦用精力最多的一篇,来回修改10来次。最后发现,从7到10的都没给保存!!!尼玛!
1.创建数据库与表
create database blog;
use blog;
创建一个blog表,有4个字段,一个自增的id作为主键,一个char类型title,一个varchar类型context,一个date类型postdate。
char的总结:
char最大长度是255字符,注意是字符数和字符集没关系。可以有默认值,尾部有空格会被截断。
varchar的总结:
varchar的最大长度65535是指能存储的字节数,其实最多只能存储65532个字节,还有3个字节用于存储长度。注意是字节数这个和字符集有关系。一个汉字字符用utf8占用3字节,用gbk占用2字节。可以有默认值,尾部有空格不会截断。
text的总结:
text和varchar基本相同。text会忽略指定的大小这和varchar有所不同,text不能有默认值。尾部有空格不会被截断。text使用额 外的2个字节来存储数据的大小,varchar根据存储数据的大小选择用几个字节来存储。text的65535字节全部用来存储数据,varchar则会 占用1-3个字节去存储数据大小。
上面所说的一切只针对mysql,其他数据库可能不同。有不妥的地方请指出。
2.插入数据
insert into blog values('','title','context','postdate');
详细内容如下:
3.读取数据
select * from blog;
4.下载torndb
tornado从3.0开始把database模块分出来了,单独一个模块取名叫torndb.详细源码可参考https://github.com/bdarnell/torndb.
cd到virtualenv目录,
# source bin/activate

# pip install torndb

ok,已经成功安装了。
5.安装Gnome
为了方便在图形界面中看到Blog效果,安装Gnome。
5.1、安装Gnome
查一下,在grouplist的输出结果中的“Installed Groups:”部分中,如果你能找到“X Window System”和“GNOME Desktop Environment或KDE (K Desktop Environment)或XFCE-4.4”的话,证明你安装了桌面环境。没找到的话执行下面命令安装。
# yum grouplist |more
# yum groupinstall "X Window System"
# yum groupinstall "Desktop" # startx
startx启动
如果无法启动,并且屏幕停住不动,不出现“#或$” 提示符,
就按键盘上的“Alt + F1或F2或F3……”切换虚拟终端登入到系统,进入错误排除。比如分辨率的设置,显示器设置等(# setup中的“X configuration”项)。
或根去系统提示的信息,进行排错。如:删除/tmp下的关于.X*信息等。
5.2、卸载Gnome
以后不需要卸载时
# yum groupmove "Desktope"
6.安装增强工具
当你装了Gnome是不是发现了···O(∩_∩)O哈哈~我就知道,不用抱怨了,这个鼠标在两个系统窗口间切换是很烦,还要每次按CTL键,最可耻的是每次回去鼠标位置还不对。不过你现在有救了O(∩_∩)O·
参考下面的来吧
6.1、启动安装在 VirtualBox 中的 CentOS 5.5 虚拟机
点击“设备” => “安装增强功能”。这个时候你就可以看到有一个“光盘”已经挂载到 CentOS 5.5 的桌面上了。它包含了安装 VirtualBox 客户端增强功能的组件。
6.2、你需要安装编译内核的相关组件
6.3、安装 VirtualBox 客户端增强功能工具
sh ./VBoxLinuxAdditions.run
6.4、安装成功后重启系统
ok,现在你自由了,随意驰骋吧··复制粘贴都无所谓。
6.5、附以下参考:
设置共享文件夹,需首先安装增强工具包,如下图所示。
以下详细介绍安装增强工具包的步骤。
点击【设备】菜单下的【安装增强工具】。
桌面出现一个光盘文件,同时出现如下界面,点击【OK】,如下图所示。
出现如下界面,点击【RUN】。
安装增强工具包必须在Root账号下,可以切换到Root账户下,或者在此输入Root密码,点击【Authenticate】,如下图所示。
出现如下界面。
主要原因是Kernel库找不到。
安装增强工具包需要安装kernel包和gcc编译包。
按照下图,在桌面右键,打开终端。
输入如下命令,查看日志文件,出现界面如图所示。

- cat /var/log/vboxadd-install.log


- yum install kernel





- yum install gcc




参考地址:http://baike.baidu.com/view/4848.htm
6.6、几个小设置
是不是发现打开文件夹的时候一连打开一堆???说实在的真不习惯,还有没有前进后退上翻,不过这也是可以设置的。打开一个文件夹,Edit--preferences--behavior,选择open in browser windows。
这样,双击打开文件夹窗口的模样就与之前大不相同了。久违的前进/后退/向上按钮出现了,而且还可以通过点击上方的一个按钮,切换路径的显示模式。这样看起来舒服多了,真想不明白为什么不将这个作为默认的打开方式。
7.激活虚拟环境
参考第4步。
# source bin/activate
7.1 、风险说明
其实用root直接登录图形界面是有风险的,不推荐用root。可以创建个新用户,因为root权限太大,搞了误操作,很容易导致系统崩溃。
7.2、设置Terminal快捷键
我的是CentOS6.4,其他版本应该有差别,但是类似。
System-Preferences-Keyboard,打开后
设置为SHIFT+S,按一下,果然打开了。
Edit-Keyboards Shorcuts,设置为Shift+Ctrl+Q退出,当然直接鼠标关掉不也很爽?····O(∩_∩)O哈哈~
8.主机与虚拟机文件共享
很不好意思的说,我是在windows下搞得Vbox,所以为了方便调试程序,需要搞个方便的传输程序文件的办法。SSH,FTP都可以,但是应该还是没有共享文件夹方便。
8.1、SSH连接
装好VirtualBox后,在XP下进入网络邻居,多了个VirtualBox Host-Only Network。可知:
8.1.1、Host机的IP
Host机的IP:192.168.56.1
8.1.2、虚拟机的IP
在CentOS查看虚拟机的IP:
ifconfig -a #查看IP
eth0 Link encap:Ethernet HWaddr 08:00:27:BE:80:A6
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:febe:80a6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:172 errors:0 dropped:0 overruns:0 frame:0
TX packets:119 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15640 (15.2 KiB) TX bytes:21109 (20.6 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
8.1.3、映射虚拟机和Host机的端口(用SSH登陆Centos)
虚拟机的IP是10.0.2.15,自动获取的IP。接下来打开 VirtualBox,按下图设置:
SSH的默认端口是22,填好HostIP及GuestIP就行了。这样子就能通过putty等软件SSH登陆了。
SSH IP: 192.168.65.1
帐号:CentOS设置的帐号,如root
web的80端口是为以后安装apache用的。设置了这个后,Host机才能用http://IP/通过浏览器直接访问。(还需要设置CentOS的防火墙不屏蔽80端口。以后再详~)
8.1.4、CentOS yum镜像
设置yum的镜像,方便下载更新软件。设置的方法参照:http://centos.ustc.edu.cn/
安装地方设置为HTTP,Server ctos.ustc.edu.cn, 目录 为centos/6/os/i386 或 centos/6/os/x86_64。
安装后请按照以下步骤修改CenOS-Base.repo,以后就可以方便的用yum从本镜像站点安装、更新软件。
8.1.5、 CentOS6的安装方法
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.save
wget http://ctos.ustc.edu.cn/CentOS-Base.repo.6
wget http://ctos.ustc.edu.cn/epel.repo.6
mv CentOS-Base.repo.6 CentOS-Base.repo
mv epel.repo.6 epel.repo
提醒:装了centos的最小版本minimal之后,一开始没有安装wget了,所以就是需要配置SSH后,就能随便上传文件了。
8.2、设置共享文件夹
8.2.1、创建共享文件夹
VirtualBox的菜单点击"设备(Devices)" -> 共享文件夹(Shared Folders)菜单,添加一个共享文件夹,选项固定和临时是指该文件夹是否是持久的。尽量使用英文名称。我这里用python-m2miot.
我把E盘的python文件夹作为共享文件夹,命名为python-m2miot。
8.2.2、挂载共享文件夹
重新进入虚拟CentOs6.4,在命令行终端下输入:
# mkdir /mnt/share
# mount -t vboxsf python-m2miot /mnt/share
如果提示 /sbin/mount.vboxsf: mounting failed with the error: No such device
可能是没有载入内核模块 vboxfs ,先查看下:
#lsmod | grep vboxsf
如果没有结果返回,说明 vboxsf没有载入,执行
#sudo modprobe vboxsf
正常的话mount -t vboxsf python-m2miot /mnt/share共享文件夹应该可以访问了
#cd /mnt/share
#ls -al
已经可以把host上的python文件夹都读到了,我centos装的英文版,中文显示乱码,不鸟他。
8.2.3、自动挂载
假如您不想每一次都手动挂载,可以在/etc/fstab中添加一项
share /mnt/share vboxsf rw,gid=100,uid=1000,auto 0 0
这样就能够自动挂载了。
本人这样做了,但是每次启动都挂接不上,因此使用以下方法,在系统启动时执行挂接脚本,成功自动挂接
#vi /etc/rc.d/rc.local
在文件的最后加入上面手动挂接的命令,比如:
mount -t vboxsf python-m2miot /mnt/share
8.2.4、取消挂载
#sudo umount -f /mnt/shared
注意:共享文件夹的名称千万不要和挂载点的名称相 同(这一点我并未实验,不过也无必要)。比如,上面的挂载点是/mnt/share,如果共享文件夹的名字也是share的话,在挂载的时候就会出现如下 的错误信息(http://www.virtualbox.org/ticket/2265):
/sbin/mount.vboxsf: mounting failed with the error: Protocol error
原因分析可以看Tips on running Sun Virtualbox的Shared Folder on a Linux Guest节。
9.Tornado 之“Hello World!”例子
我们前面做了这么多准备工作,终于开始到实例了。从共享文件夹复制个tornado的helloworld例子,放到我们virtualenv目录下,就是m2miot中。
# python helloworld.py
咦?在虚拟机上能正常访问看到结果,但是主机上访问不行呢?互相ping了下都通的啊,然后都分别能访问互联网。
9.1、查看centos防火墙
考虑到上面问题排除下其他可能,只有防火墙没看了。
# service iptables status

果然是这小子!!!只有开放了个22端口给SSH用的。
9.2、配置网络防火墙
依照22那个端口依葫芦画瓢,复制粘贴2个到下面,yy p,vi的操作命令google下。把8888,3306插进去。
如下
# vi /etc/sysconfig/iptables
9.3、重启防火墙
# service ipstables restart
9.4、再次访问
用主机再访问下192.168.1.120:8888
正常了!!!!