Browsed by
Category: 杂文

随便记点什么

查看程序crash时的堆栈信息(gdb)

查看程序crash时的堆栈信息(gdb)

gdb中查看程序crash时的堆栈信息非常简单,直接使用命令backtrace即可。

gdb中对这个命令的解释如下:

backtrace — Print backtrace of all stack frames

Linux Deepin,国人最喜爱的linux?

Linux Deepin,国人最喜爱的linux?

看到一篇新闻,大意是推荐一个国人制作的linux发行版本,号称是国人最喜爱的版本。

看完该新闻后,有些疑问:

(1)号称是基于Ubuntu11.04,可是从该版本的整体界面风格看,更像是在linux mint的基础上进行了部分修改。从整体协调性看,不如Mint,与Mac更是相去甚远。

(2)在部分截图中出现原始的GTK界面,这点让人觉得很奇怪。要么是界面没有美化好,要么是某些模块崩溃了导致退回到了GTK界面。

(3)集成了永中Office。这个选择也让人费解,而且居然还作为一个主要卖点宣传。难道作者不知道永中的糗事么?既然集成了WINE,要不干脆集成WPS,或者像其他发行版本一样集成LibreOffice,怎么也比选择永中要好些吧?

作为一款国人制作的发行版本,我们还是应当鼓励。但是我个人觉得它的宣传新闻稿没有把自己的特点凸显出来,一个windows XP风格的软件中心花哨是花哨了,可是和整体风格格格不入,有点不伦不类。这点就不如ylmf,它干脆就整体向XP模仿,至少风格是统一的。

如果向初学者推荐,我仍然会推荐Linux Mint。国人制作的版本已经有很大的进步,不过还任重道远。

中国科技大学开源镜像

中国科技大学开源镜像

站点地址: mirrors.ustc.edu.cn,支持HTTP和FTP访问。

这个站点速度比较快,也比较稳定。基本上我们都在它这下载各个Linux发布版本,如Ubuntu, CentOS等。国内各大学应该向中科大学习。

昨天中科大站点终于出现了传说中的CentOS6,今天下载下来试试。就个人想法而言,我觉得中科大也应该提供Scientific Linux的镜像,毕竟两个版本都是同源,而后者显然更有科研味道。

升级到WordPress 3.2

升级到WordPress 3.2

今天登陆进blog的时候,系统提示可以升级到新的3.2版本。我本来就是个升级控,加上对wordpress的印象非常好,自然毫不犹豫就升级了。

感觉很不错啊,各方面都有提高。新增加的Twenty eleven比原来的主题有很大的提高,看上去和谐多了,每篇blog之间的分割也非常明显,缺省字体也似乎没有以前那么硕大(当然,现在还是很大 :-) )

wordpress升级的步伐很快,看得出这是个生机勃勃的社区。wordpress很多功能的设置和实现也是简洁、有效,非常让人欣赏。反观phpbb社区,我都不好说什么了,反垃圾功能到现在都没有什么改观。

 

使用python编写简单的守护进程

使用python编写简单的守护进程

server程序与桌面程序最基本的差别在于:server程序通常需要更加稳定地运行,最好是永远都不会中断,确保服务的持续性。

要做到这点,首先当然应当提高程序本身的稳定性,程序本身必须足够稳定才有意义。

然而,天有不测风云,无论多简单的软件,总是会有bug,会有可能导致程序crash。这种情况下,仅仅依赖提高程序本身的稳定性是不够的。我们还需要另外的手段来保证服务的持续性。

最简单的办法就是用守护进程监视当前程序,一旦发生异常或者crash,就重新启动程序。使用python就可以简单地做到这点。
例如,我们通过python脚本(start_mss_app.py)来监视msscli服务程序的运行:

#start_mss_app.py -- run and monitor msscli application

import os
import sys

sys.path.append("./")

def monitor(appName):
    pid = os.fork()

    if 0 == pid:	# child process
        os.system(appName)
        sys.exit(0)

    else:  # parent process
        os.wait()

if __name__ == '__main__' :
    while 1:
        monitor('./msscli')

运行时很简单,使用命令 python start_mss_app.py & 即可。

当msscli程序发生异常导致crash或者退出时,python脚本会自动重起msscli程序。

在进行系统维护或者升级时,我们也有必要强制关掉msscli服务程序,此时由于上述守护进程的存在,我们先必须kill掉守护进程,然后才能kill掉msscli服务程序:

sudo killall python

sudo killall msscli

安装phpmailer

安装phpmailer

phpmailer是一个全功能的发送email的模块,安装很简单:

sudo apt-get install libphp-phpmailer

缺省会安装在/usr/share/php/libphp-phpmailer目录。

还需要设置php.ini文件,将上述目录加入include路径:sudo vi /etc/php5/apache2/php.ini

在该php.ini文件中,找到include_path并修改为:

include_path = “.:/usr/share/php:/usr/share/php/libphp-phpmailer”

完成修改后,重启apache2即可。

 

Filezilla Failing to Retrieve Directory Listing

Filezilla Failing to Retrieve Directory Listing

在EC2上安装完pure-ftpd后,用Filezilla访问,登录都很正常,最后在获取目录时超时失败。

根本原因可能在于:EC2给各server分配的是private地址,我又assign了一个public地址。server本身是不知道这个public地址的,因此ftp client如果用public地址请求信息,可能就导致失败。

解决方式也比较简单,修改FileZilla的配置即可:

点击菜单 “Edit / Setting / Connection / FTP”,其中:

(1)”Active mode”选择“Ask your operating system for external IP address”

(2)”Passive mode”选择”Fall back to active mode”

php5,MySQL以及Apache2

php5,MySQL以及Apache2

在Ubuntu server (也包括Desktop)版本中,缺省情况下,php5没有安装MySQL模块。需要单独安装:

sudo apt-get install php5-mysql

注意:安装完该模块后,需要手动重启Apache2,否则不会生效。这与其他模块不太一样,通常情况下,安装完php的模块后都会自动重启Apache2。

Apache report error: [error] (13)Permission denied: exec of ‘/cgi-bin/signup.php’ failed

Apache report error: [error] (13)Permission denied: exec of ‘/cgi-bin/signup.php’ failed

在桌面版本Ubuntu上,通过Apache2测试PHP程序时,会遇到几个问题:

(1)Apache2把PHP文件当成普通文档,没有执行php文件,反而提示文件下载并询问存放路径。

(2)Apache2提示无权读取cgi-bin目录的文件。

问题(1)是由于没有安装Apache2的php模块导致的,而问题(2)是由于Apache2没有足够的权限操作cgi-bin目录中的php文件。安装以下模块可以解决:

sudo apt-get install libapache2-mod-php5

sudo apt-get install libapache2-mod-suphp

在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地址。