硕鼠的博客站

范路的博客主站,时而会发些东西。

Posts Tagged ‘ubuntu’

在ubuntu服务器上使用U盘

一种操作系统,如果要想广泛的推广和普及,有三个关键点是必须满足的。
1、设备驱动自动搜索和安装
2、自动的升级,以及各种软件包的管理(安装和卸载)
3、USB设备的即插即用
只有满足了这三个要求,才能让普通用户,而不是专职管理员来使用这个系统。
Linux系统在这三点上一直做得不好,这些问题在ubuntu上都有所改善。比如,在ubuntu的桌面版上播放视频的时候,如果发现这个视频的格式当前不被支持,会自动的搜索支持该格式所需的包,并自动下载安装,非常方便。
USB设备在Ubuntu的桌面版本上,基本上可以做到即插即用。但是在服务器版本上,就要稍稍的麻烦一点了。服务器版本,毕竟不是为普通用户设计的,但总的来说还是很方便的。
首先使用:
lsusb
命令来确定设备的挂接情况。
如果是移动硬盘或U盘的话,使用:
sudo fdisk -l
命令,来确定具体挂接点的位置,以及分区的文件系统。
然后创建一个本地的挂接目录:
sudo mkdir /media/usb
这个时候就可以用mount命令来进行挂接了:
sudo mount -t vfat /dev/sdb1 /media/usb

sudo mount -t ntfs-3g /dev/sdb1 /media/usb
挂接完成之后就可以正常使用了。
用完之后,可以使用
sudo umount /dev/sdb1

sudo umount /media/usb
命令来卸载,就一切ok了。

这个还是有些麻烦,还有更简单的方法。那就是使用pmount,不需要先建立挂接目录,也不需要使用sudo和root权限。有些机器上面如果没有这个命令的话,需要先安装:
sudo apt-get install pmount

使用pmount命令来挂接usb硬盘或u盘的方式非常简单:
例如:
pmount /dev/sdb1 flash_usb

pmount /dev/sdb1 usb
U盘会被自动的挂接到 /media 目录下的相对应于别名的目录上,比如 /media/flash_usb 。这个目录如果没有创建过,那么会在卸载之后自动消失。
卸载这个设备的命令是:
pumount /dev/sdb1
这个要简单很多了。

总的来说,ubuntu已经可以作为一种被普通民众所接受的操作系统了。基本满足普通用户的使用需求。

Blogged with the Flock Browser

折腾了半天,终于把cassandra跑起来了

看到很多大牌网站,都离开MySQL转移到Cassandra上了。于是决定自己也试试。

在ubuntu服务器上先安装ruby on rails和java环境:

sudo apt-get install ruby ri irb rdoc ruby-dev rake rubygems1.8 libsqlite3-ruby libopenssl-ruby

sudo gem install rails mongrel mongrel_cluster  -n /usr/bin

sudo apt-get install sun-java6-jdk ant

然后安装ruby的cassandra gem包。

sudo gem install cassandra -n /usr/bin

直到这里,都不需要怎么麻烦。

下一步是下载、编译、安装cassandra,这个就麻烦了。

命令很简单:

cassandra_helper cassandra

第一个遇到的错误,说cassandra的包找不到了。于是上网去查了一下,发现是cassandra的版本更新了,原来是beta2,现在是beta3了。

修改Rakefile:

sudo vi /var/lib/gems/1.8/gems/cassandra-0.8.0/Rakefile

将其中的网址改为新的,正确的网址。

重新执行,总说找不到tar包或找不到目录。

后来发现,必须到cassandra默认的目录下去执行:

cd ~/cassandra

这回文件是找到了,却又说一个目录权限不够,再将执行的语句换成: sudo cassandra_helper cassandra ,在经过了漫长的ant编译过程(需要从网上下载不少东西)之后,终于运行起来了。而且,是以debug的方式运行起来的,对其做的各种操作都可以直观的看到。

启动的过程,会显示:

DEBUG - Estimating compactions for LocationInfo

DEBUG - Estimating compactions for HintsColumnFamily

DEBUG - Estimating compactions for Comments

DEBUG - Estimating compactions for Blogs

DEBUG - Estimating compactions for InvoiceRelationships

DEBUG - Estimating compactions for Customers

DEBUG - Estimating compactions for Appointments

DEBUG - Estimating compactions for Invoices

DEBUG - Estimating compactions for CustomersByLastName

DEBUG - Estimating compactions for InvoicesByNumber

DEBUG - Estimating compactions for Payments

DEBUG - Estimating compactions for CustomerRelationships

DEBUG - Estimating compactions for Comments

DEBUG - Estimating compactions for Blogs

DEBUG - Estimating compactions for Users

DEBUG - Estimating compactions for Index

DEBUG - Estimating compactions for UserRelationships

DEBUG - Estimating compactions for StatusAudits

DEBUG - Estimating compactions for StatusRelationships

DEBUG - Estimating compactions for Statuses

DEBUG - Estimating compactions for UserAudits

DEBUG - Estimating compactions for Usernames

上面写的这些名字,比如Users、Blogs,我们可以把他们直观的理解为表的名字。这些都是默认建好的,可以直接使用。
需要建立自己的表时,可以自己到cassandra_home/conf/storage-conf.xml里面去添加。
现在说起来比较简单,但当时反复试验,非常麻烦。
终于装好了,赶快试试:测试例子来源于 http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with-cassandra/
进入irb,然后键入代码:
#添加引用:

require 'rubygems'

require 'cassandra'

include Cassandra::Constants

#建立示例

twitter = Cassandra.new('Twitter')

#填充数据

user = {'screen_name' => 'buttonscat'}

twitter.insert(:Users, '5', user)

tweet1 = {'text' => 'Nom nom nom nom nom.', 'user_id' => '5'}

twitter.insert(:Statuses, '1', tweet1)

tweet2 = {'text' => '@evan Zzzz....', 'user_id' => '5', 'reply_to_id' => '8'}

twitter.insert(:Statuses, '2', tweet2)

twitter.insert(:UserRelationships, '5', {'user_timeline' => {UUID.new => '1'}})

twitter.insert(:UserRelationships, '5', {'user_timeline' => {UUID.new => '2'}})

#检索查询

timeline = twitter.get(:UserRelationships, '5', 'user_timeline', :reversed => true)

timeline.map { |time, id| twitter.get(:Statuses, id, 'text') }

得到结果:

["@evan Zzzz....", "Nom nom nom nom nom."]

退出irb再重新进入,将查询的部分执行一次,没有问题。结果还是正确的。

现在还有一些问题没有解决,那就是,直接运行cassandra还有问题,应该是classpath配置的有问题。这应该是java配置的问题的。每次都必须要执行cassandra_helper cassandra,通过ruby来启动cassandra。还没搞清楚怎么设置开机自动启动。

现在cassandra_helper还无法检测我已经安装过canssandra了,每次都要去下载。我将里面判断的CASSANDRA_INCLUDE设置项,写到了 /etc/environment,好像也还是无效。

到此为止,还不能说是部署完全成功了,只是能够应付一些简单的开发测试工作。

cassandra本身在windwos下安装倒是非常简单:下载,解压,执行cassandra.bat完事。但是,在windows下面安装cassandra的ruby包很麻烦,必须要有nmake,我是在是不想再在机器上装vc了。Mac上面没试过,据说并不复杂。

再接再厉。

Close Bitnami banner
Bitnami