9.Tornado下的一个简易Blog--2013-05-21
2019独角兽企业重金招聘Python工程师标准>>>
前面配置过了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:A6inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0inet6 addr: fe80::a00:27ff:febe:80a6/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:172 errors:0 dropped:0 overruns:0 frame:0TX packets:119 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:15640 (15.2 KiB) TX bytes:21109 (20.6 KiB)lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX 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
正常了!!!!
转载于:https://my.oschina.net/quanpower/blog/132294
9.Tornado下的一个简易Blog--2013-05-21相关推荐
- Linux系统编程下做一个简易的shell
自主实现一个shell--------minshell shell:命令行解释器-------解释执行用户的输入(完成相对应的功能) 步骤 1. 获取标准输入中的字符串 2. 对字符串进行解析[ls ...
- rails官方指南--建一个简易博客
写这篇博客的原因是国科大高级软件工程(罗老师的课)需要用ruby on rails,在rails入门时,rails官方指南(建一个简易博客)的英文读着吃力所以想一边翻译该指南,一边学习,中间因为有考试 ...
- 【Linux】用进程控制知识做一个简易版shell
文章目录 什么是shell 图示 分析 代码 什么是shell shell是命令行解释器的统称 当前使用的shell的名字是bash,bash其实也是一个程序 当前我使用的是centos7下实现一个简 ...
- 2013.5.21号面试心得
今天一大早跑去丁字桥面试早上8点20左右到的 用百度地图找到位置不到9点 这个公司9点上班 在楼下等到了9.17上去了 一去先做一份逻辑题,一看傻眼了 和以前备考公务员的题目一样 我靠 然后是一份.N ...
- Linux下brk、sbrk实现一个简易版本的malloc
目录 一.内存四区回顾 二.brk.sbrk 三.使用brk.sbrk模拟实现malloc和free 一.内存四区回顾 程序代码区:该区域在程序运行时存放程序的二进制代码. 全局数据区:该区域主要存放 ...
- 一个简易的下拉刷新松耦合实践
前言 在iOS平台,许多App的下拉刷新都是使用的MJRefresh这个开源库,笔者所接触开发过的几个App就是这样.当然还有很多效果酷炫的下拉刷新,真是不得不佩服开源界大神们的创意!这里是一些厉害框 ...
- 连夜撸了一个简易聊天室
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 分不清轮询.长轮询?不知道什么时候该用websocket还 ...
- php模拟一个简易的mvc模型
mvc是生么? mvc是软件设计的一种结构(即模型.视图.控制器) 本篇文章会通过一个简易的webapp来介绍mvc,目录结构如下: mvcDemo index.php modules ...
- 撸一个简易聊天室,不信你学不会实时消息推送(附源码)
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐 19 个 github 超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 分不清轮询.长轮询? ...
最新文章
- string比较字符串某个指定的字符串
- Visual C#实现HTTP代理服务程序
- c语言 两条线段位置,C++/STL实现判断平面内两条线段的位置关系代码示例
- php amp 26472,汉字与UNICODE的转换 通过文件操作
- JavaEE系统架构师学习路线
- 使用python往数据库中添加数据
- 初学java,有哪些值得推荐的 Java 练手项目?
- 原理图端口符号_电气的原理图和接线图的区别,今天终于弄明白了!
- 如何压缩图片大小?这几种图片压缩方法总有一款适合你
- 微软雅黑和consolas混合字体_未经授权使用“微软雅黑”,赔垮一家公司?方正辟谣了,但这事还是很危险...
- centos设置静态IP地址
- Mac系统环境变量配置和说明【实用版】
- 个人站长利用免费cloudflare对抗DDoS实战
- 超全面详细的身份证号码编码原理,拿走不谢!
- 用C语言写的学生管理系统,C语言实现简单的学生成绩管理系统
- 最新gcc下载和linux环境变量设置
- 智能android电视更换播放器,GitHub - xioxu/TvPlayer: android智能电视播放器,可以播放各电视台节目,播放基于ijkplayer的实现。...
- 将矩阵逐步化简至行最简形并求秩
- 基于SpringBoot满天星幼儿园管理系统
- akka 文章 博客
热门文章
- 分布式消息系统Kafka初步
- ant基本标签 及import properties
- 铁幕(Iron Curtain)
- Oracle 中使用 fetch bulk collect into 批量效率的读取
- 【转载】用JS控制输入内容
- [BZOJ4259]残缺的字符串
- Fragment生命周期与Fragment执行hide、show后的生命周期探讨
- android137 360 双击三击事件
- (巴什博弈 sg函数入门1) Brave Game -- hdu -- 1846
- htmlcss笔记--标签默认值样式重置css reset(2)