Browsed by
Author: YI

在Ubuntu系统中安装blog: wordpress

在Ubuntu系统中安装blog: wordpress

接上一篇blog,继续我们的装机历程。这次开始安装wordpress,提供blog服务。

主要参考文章是来自ubuntu的官方网站。基本沿用这篇文章的描述,在后面一小段有点不一样,会另外说明。

https://help.ubuntu.com/community/WordPress

由于wordpress会使用mysql存储数据,因此安装之前,请先确认MySQL server已经安装好了,或者已经可用了。

step 1: 安装wordpress, php5-gd

我不太清楚为什么要安装php5-gd,总之,照做就好了:

sudo apt-get install wordpress php5-gd

缺省会安装在/usr/share/wordpress目录下。

step 2:建立连接文件

建立连接文件, 以便apache找到wordpress的安装目录

sudo ln -s /usr/share/wordpress /var/www/wordpress

step 3: 创建mysql数据

用脚本安装wordpress的数据表(使用本地的MySQL数据库)。

sudo bash /usr/share/doc/wordpress/examples/setup-mysql -n wordpress localhost

其中,wordpress是在mysql中创建的database名。

如果MySQL数据库在另外一台服务器上,例如wordpress.mydomain.org,则命令应修改为:

sudo bash /usr/share/doc/wordpress/examples/setup-mysql -n wordpress wordpress.mydomain.org

step 4: 安装blog

完成后,直接通过http://localhost/wordpress就可以安装blog了。 需要注意的是: 一般我们都是通过SSH访问远程的Ubuntu server,因此不能在ie/firefox中以localhost访问, 而需要使用域名或者IP地址,例如http://192.168.1.30/wordpress,此时,浏览器中会提示“找不到config-192.168.1.30.php”文件。为此,我们需要做一下修改:

sudo cp /etc/wordpress/config-localhost.php /etc/wordpress/config-192.168.1.30.php
sudo chown www-data:www-data config-192.168.1.30.php

然后,再次浏览http://192.168.1.30/wordpress即可正式开始安装了。

后续过程根据浏览器中的各项提示,一步一步安装即可。http://192.168.1.30/wordpress就是最终完成的blog地址。

在Ubuntu系统中安装ftp服务器软件: pure-ftpd

在Ubuntu系统中安装ftp服务器软件: pure-ftpd

最近由于工作的需要,我们需要在EC2上完整搭建一套平台,因此研究了一下FTP,wordpress等常用软件的安装和使用方式。

不知道为什么,网上的资料多半是从各网站上下载tar包,甚至下载源码包编译并安装。我觉得这种方式完全没有必要,我们毕竟不是要研究这些软件本身,只要会使用就可以了。另外,Ubuntu软件中心的软件已经非常丰富,直接从软件中心安装就好,同样没有必要费事另外去下载。

以下各种情况下的安装,都是基于Ubuntu Server 10.04 (LTS)版本。首先从安装FTP Server开始。

我选择了pure-ftpd进行安装。选择这个软件的理由很简单,虚拟主机bluehost就是用的这个软件,而我们目前对bluehost还是相当满意的,因此照搬就好了。

step 1: 安装

命令非常简单:

sudo apt-get install pure-ftpd

step 2: … …

实际上没有step 2。完成安装后,就可以用Ubuntu系统的用户名和密码登陆了。

Ubuntu Server中的pure-ftpd缺省配置不允许匿名登陆,每个用户登陆都是访问自己的home目录,最多允许50名用户同时连接。基本上已经满足需要,不需要再多做配置。

如果实在想进行配置,可以访问/etc/pure-ftpd/conf目录。看上去似乎每个文件就是一个单独的配置项,要注意区分大小写,否则启动server时会认为配置出错。

重起pure-ftpd的命令如下:

sudo service pure-ftpd restart

 

Ruby on Rails实战圣经

Ruby on Rails实战圣经

一位台湾技术人士的网站:http://ihower.tw/rails3/index.html 。不需要翻墙阅读,难得啊。

还没有仔细阅读,无法评价是否是精品。不过从作者文章的布局看(据说也会出实体书),至少是花了不少精力的。也许和Django book互有短长。

Django book 2.0

Django book 2.0

最近的项目中需要开发web services,目前主要考虑两个框架: Raby on Rails和Django。网络上比较推荐RoR,但是考虑到我们目前已有的项目和技术积累,我更偏向Python一些,因此更关注Django。

网络上有免费的Django入门教材:

http://www.djangobook.com/

其中文翻译为以下网址:

http://djangobook.py3k.cn/2.0/

更改访问网上邻居的默认用户名

更改访问网上邻居的默认用户名

当前电脑(XP)的登录用户名是wang,而另一台电脑设置(Ubuntu)的共享目录只允许yxh用户登陆。从当前电脑登陆该电脑时,会被直接拒绝。需要修改为以yxh名义登陆。(当然,也可以注销当前用户,换成yxh登陆当前电脑,不过这样就要中断当前正在进行的工作。)

采用net命令进行设置即可,例如目标电脑名是linuxubuntu:

net use \\linuxubuntu /user:yxh

输入yxh的密码后,就可以在当前电脑直接登陆linuxubuntu这台电脑了。

iLBC相关说明

iLBC相关说明

在两篇RFC文档中对iLBC有比较全面的介绍:

1、RFC3591 Internet Low Bit Rate Codec (iLBC) 这篇主要是讲解iLBC的基本原理,非语音处理领域的专业人士很难看得明白。

2、RFC3952 Real-time Transport Protocol (RTP) Payload Format for internet Low Bit Rate Codec (iLBC) Speech 进行RTP传输是必须遵守的规范,VOIP领域人士基本能看明白。

简单点说:iLBC采用8KHZ,16bit采样,但是分成两种模式:30ms(毫秒)模式以及20ms(毫秒)模式。最初只定义了30ms模式,后来考虑到窄带网络丢包的情况,增加了20ms模式。目前大部分设备多采用的是30ms模式。

30ms模式是指每30ms发送一帧,则每帧数据是400bits (50bytes),如果是20ms一帧,则每帧数据是304bits(38bytes)。

在SDP描述中,必须明确指明codec名字是iLBC。

如果是20ms模式,必须在SDP中明确指明,否则会认为是30ms模式。在RFC文档中有如下描述:

If 20 ms frame size mode is used, remote iLBC encoder SHALL receive “mode” parameter in the SDP “a=fmtp” attribute by copying them directly from the MIME media type string as a semicolon separated with parameter=value, where parameter is “mode”, and values can be 0 and 20 (where 0 is reserved and 20 stands for preferred 20 ms frame size).  An example of the media representation in SDP for describing iLBC when 20 ms frame size mode is used might be:

m=audio 49120 RTP/AVP 97
a=rtpmap:97 iLBC/8000
a=fmtp:97 mode=20 <– 30ms模式中,多数厂家的设备不会携带这个attribute。

需要注意的是SDP协商与一般的codec协商有不同,其中比较关键的就是ptime不能应用到iLBC的协商中。iLBC总是采用最低速率模式,例如,只要一方要求30ms模式,双方都必须使用30ms模式:

That is, an offer of “mode=20” receiving an answer of “mode=30” will result in “mode=30” being used by both participants.  Similarly, an offer of “mode=30” and an answer of “mode=20” will result in “mode=30” being used by both participants.

注解:我想可能就是这个原因(当然,也有历史遗留的可能),大家都不约而同地采用30ms模式,避免对媒体资源的重新调配。

不能使用ptime的原因在于一个RTP包中,可能会封装若干个iLBC包,这种情况下ptime无法表述究竟是哪种模式:

Parameter ptime can not be used for the purpose of specifying iLBC operating mode, due to fact that for the certain values it will be impossible to distinguish which mode is about to be used (e.g., when ptime=60, it would be impossible to distinguish if packet is carrying 2 frames of 30 ms or 3 frames of 20 ms, etc.).

注解:在一个RTP包中封装多个iLBC包的方法,实在让人感觉多此一举。即没有减少流量,也不能降低丢包对语音质量的影响,反而增加了网络设备的复杂性。从实际应用来看,也没有什么人会采用这种方式。

新增加一个”读书”栏目

新增加一个”读书”栏目

日常偶尔读点书,享受一点阅读的乐趣,也许需要记点什么,就开辟这个栏目。

现在正在读的书是南怀瑾先生的全集,好多本啊,累死我了。另外正在学习的技术类书籍(说文档可能更合适)是37signals的GettingReal,也是一篇让人拿起就放不下的文章。

希望自己能好好学习,天天向上。

RapidSVN: Working copy locked

RapidSVN: Working copy locked

昨天Commit代码时,网络意外中断。今天再次Commit时,RapidSVN提示出错:

Error: Error while performing action: Working copy ‘… …’ locked.

看这描述的意思,是本地文件在上次操作时进行了锁定,由于没有正常退出解锁,导致后续操作无法再继续。

要解决也很容易,将上次的操作clean掉即可,点击菜单 Extras -> Cleanup,清理完成后,重新Commit即可成功。

Google开放实时通信框架WebRTC

Google开放实时通信框架WebRTC

据说WebRTC是Web方式进行语音、视频实时通信的框架。项目地址如下:

http://sites.google.com/site/webrtc/ (需翻墙浏览?)

暂时还不太清楚这个技术的细节,不过如果像Google宣传的那样,就可以实现高质量的web通信方式。传统的SIP软终端就面临很大的挑战,从另一方面来说,可能也是一次打破现有格局的机遇。