2013年6月20日星期四
perl 核心模块统计
2013年6月18日星期二
中文 CPAN 文档
2013年5月30日星期四
网络层点到点, 传输层端到端
2013年5月29日星期三
ubuntu update-rc.d 和 chkconfig 命令
2013年5月16日星期四
ubuntu vps 安装和设置
1. 初始化安装后的设置
基于 ubuntu-12.04 32bit minimal, 使用 root 登陆到 vps 后, 新建用户:
adduser demo 根据提示创建用户和密码。下面将新建的这个用户添加到 sudo 用户组:
usermod -aG sudo demo 更新系统并安装 vim
apt-get update apt-get upgrade apt-get install vim 接下修改 sshd 的端口和登陆账号限制, 首先修改 /etc/ssh/sshd_config 文件
vim /etc/ssh/sshd_config
Port 65536 PermitRootLogin no 修改 ssh 端口为 65536, 不允许 root 登陆,最后再添加如下一行到配置文件的最后
AllowUsers demo 设置仅允许 demo 账号登陆
2. 安装 lemp 环境(linux nginx mysql php) 首先安装 mysql-server
apt-get install mysql-server 因为默认安装的 mysql-server 比较占用内存,对于小内存的 vps 来说,需要进行一些优化,具体的可以参见 小内存 vps mysql 优化 这篇文章,在这里我再重复一下
cp /etc/mysql/my.cnf /etc/mysql/my.cnf.`date +%s` find /usr/share/doc/mysql* -name my-small.cnf -exec cp {} /etc/mysql/my.cnf \; sed -i 's/\[mysqld\]/&\nuser = mysql\n/' /etc/mysql/my.cnf 然后再修改 /etc/mysql/my.cnf 文件, 在 [mysqld] 下添加以下两行
innodb=OFF default-storage-engine=MyISAM 然后重启mysql
/etc/init.d/mysql restart 现在再下,经过以上几步的优化,vps 内存的占用大概只有 30m 左右,接下来安装 nginx 和php
apt-get install nginx service nginx start apt-get install php5-fpm然后修改 /etc/php5/fpm/php.ini 文件
cgi.fix_pathinfo=0然后重启 php5-fpm
service php5-fpm restart 然后开始配置 nginx 使其支持 php5-fpm, 首先备份一下default 配置文件
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak 将 default 配置文件中的下面这段的注释给取消掉
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
并将 server {} 段里面的 index 中添加 index.php 然后修改 /etc/php5/fpm/pool.d/www.conf 文件,将其中的
listen = 127.0.0.1:9000 修改为
listen = /var/run/php5-fpm.sock 然后重启 php5-fpm service php5-fpm restart 接下安装 phpmyadmin
apt-get install phpmyadmin 并根据提示填写 mysql 的 root 密码, 注意,因为要使用nginx ,所以在 webserver 选择这里不要选择.
安装完成后 ln -s /usr/share/phpmyadmin/ /usr/share/nginx/www , 这样就可以通过 ip/phpmyadmin 的方式来访问 phpmyadmin 了, 在这里可能会有个报错说
The mysqli extension is missing , 解决办法是修改 /etc/php5/fpm/php.ini 文件,添加 extension=mysqli.so 然后重启 php5-fpm 和nginx 就可以了最后打算再说一下 ftp ,设置为 限定指定的用户可以登录的方法
userlist_enable=YES //用户清单功能开启 userlist_deny=NO //把用户清单设为接受用户清单 userlist_file=/etc/vsftpd.user_list //用户清单文件为/etc/vsftpd.user_list 因为第二个语句把文件/etc/vsftpd.user_list设为接受用户清单,那么,文件里 面的用户名都能登录,不在文件里的用户不能登录。 从这里可以看出userlist_deny语句起了开关的作用,可把用户清单文件设为拒绝或是接受
2013年5月15日星期三
小内存 vps mysql 优化 (ubuntu)
手里有个 512m 的vps ,安装的是 ubuntu 12.04; 使用 tasksel 安装 lamp 应用后,默认的内存占用大概在 350m 左右。 我以为是因为 apache 的原因,就打算使用 lemp ( linux + nginx + php-fpm + mysql ),手动安装 mysql-server: apt-get install mysql-server 后发现内存占用竟然也达到了 300m, 看来问题主要在 mysql-server 上。所以开始查找优化的方案。
首先参照 http://wiki.ubuntu.org.cn/Vps 上的教程对 mysql 进行优化
cp /etc/mysql/my.cnf /etc/mysql/my.cnf.`date +%s`
find /usr/share/doc/mysql* -name my-small.cnf -exec cp {} /etc/mysql/my.cnf \;
sed -i 's/\[mysqld\]/&\nuser = mysql\n/' /etc/mysql/my.cnf
然后重启 mysql-server
/etc/init.d/mysql restart
然后再看内存占用,发现比之前少了一些,但是并不是很明显。
因为我只是安装 wordpress, 永不倒 innodb ,所以需要再进行如下优化
编辑 /etc/mysql/my.cnf
在[mysqld] 下添加两行
innodb=OFF
default-storage-engine=MyISAM
然后重启 mysql
/etc/init.d/mysql restart
再看内存占用情况,wonderful !只有 30多m 了!
2013年4月22日星期一
perl dump 数据的几种方式
1: #!/usr/bin/perl
2: use warnings;
3: use strict;
4: use Data::Dump qw(dump);
5: use Data::Dumper;
6: use Smart::Comments;
7: use YAML;
8:
9: my @a = (1, [2, 3], {4 => 5});
我这里要对数组 @a 进行 dump 以方便调试和查看其内容。
从我 use 模块也可以看出来我要使用的几种方法:
(1)首先尝试 Data::Dump 的 dump 方法
1: dump(@a);
1: (1, [2, 3], { 4 => 5 })
(2)尝试 Data::Dumper 的 Dumper
1: print Dumper(@a);
1: $VAR1 = 1;
2: $VAR2 = [
3: 2,
4: 3
5: ];
6: $VAR3 = {
7: '4' => 5
8: };
(3) 尝试 Smart::Comments 的 ###
1: ### @a;
其对应的输出为:
1: ### @a: [
2: ### 1,
3: ### [
4: ### 2,
5: ### 3
6: ### ],
7: ### {
8: ### '4' => 5
9: ### }
10: ### ]
(4) 尝试 YAML 里面的 Dump 函数
1: print YAML::Dump(@a);
其对应的输出为:
1: --- 1
2: ---
3: - 2
4: - 3
5: ---
6: 4: 5
(5) 最后尝试一下 print 函数
1: print "@a";
1: 1 ARRAY(0x1acf998) HASH(0x1aece20)
综述:以上几种方法,可以看到各有个的不同,也有侧重点,比如 Data:Dump 几乎是按照代码里面的数据结构输出了; YAML::Dump 是以 yaml 格式输出, 而 print 方法最简单,但是却无法打印内嵌的哈希元素,智能打印其引用的内存地址,这当然不是我们想要的。 Smart::Commnets 的输出很适合进行调试。 所以根据自己的需要各取所需了。 我这里只是列出了 5中方法,参考下面的这篇可以看到更多种方法的对比。
Dumping data in Perl
http://oylenshpeegul.typepad.com/blog/2012/01/dumping-data-in-perl.html2013年3月25日星期一
linux没有扩展名的概念
.a为后缀的文件,是由目标文件构成的档案库文件;
.C,.cc或.cxx 为后缀的文件,是C++源代码文件;
.h为后缀的文件,是程序所包含的头文件;
.i 为后缀的文件,是已经预处理过的C源代码文件;
.ii为后缀的文件,是已经预处理过的C++源代码文件;
.m为后缀的文件,是Objective-C源代码文件;
.o为后缀的文件,是编译后的目标文件;
.s为后缀的文件,是汇编语言源代码文件;
.S为后缀的文件,是经过预编译的汇编语言源代码文件。
2013年3月24日星期日
owncloud 私有云平台 (1): 编译 windows client
最近因为工作需要,接触了 owncloud 私有云平台,感觉真的很不错; 最特别的是其 app 扩展功能, 任何人都可以为依据这个私有云平台开发插件和应用, 目前这个平台已经可以集成 email , rss 等相关应用, 我认为以后可能还会集成 blog 或者 微博等相关应用,这样这款应该就可以真正的成为个人应用云平台。
下面转入正题,owncloud 有 windows、linux、android 和 ios 的客户端, 这里主要说一下 owncloud windows client 的编译过程。
1. 首先是编译环境,基于 opensuse 12.1 x64 版本,因为要在 linux 上编译 windows 程序,因此需要构建交叉编译环境。 构建这交叉编译环境是个力气活,因为要添加各种源,还有各种依赖要去解决和安装,所以花的时间比较长。 这里可以参考一下官方的文档 和 这篇文档。(在这里我建议在虚拟机里面安装 opensuse 并构建交叉编译环境,这样就可以将安装好的编译环境导出备份,以做后用。)
2. 编译过程。 只要交叉编译环境搭建好之后,剩下的就比较顺利了。
<code>
# cd ~
# mkdir owncloud-client
# cd owncloud-client
# git clone git://git.csync.org/users/freitag/csync.git ocsync
# git clone git://github.com/owncloud/mirall.git
# mkdir ocsync-build
# mkdir mirall-build
# cd ocsync
# git checkout dav
# cd ocsync-build
# mingw32-cmake -DCMAKE_BUILD_TYPE="Debug" ../ocsync
# mingw32-make
# cd ../mirall-build
# cmake -DCMAKE_BUILD_TYPE="Debug" ../mirall \
-DCSYNC_BUILD_PATH=/home/speed/owncloud-client/ocsync-build \
-DCSYNC_INCLUDE_PATH=/home/speed/owncloud-client/ocsync/src \
-DCMAKE_TOOLCHAIN_FILE=../mirall/admin/win/Toolchain-mingw32-openSUSE.cmake
# mingw32-make
# sudo mingw32-make package
</code>
3. 最后看到 owncloud-1.2.2-setup.exe generated 这个字样就可以了,说明 windows 客户端编译完成了。
参考文章:owncloud 官方文档: https://github.com/owncloud/mirall/blob/master/doc/building.rst
另外一篇文档 : https://gist.github.com/Noxwizard/4011094