Linux下自行颁发SSL证书

  1. openssl genrsa -des3 -out test.com.key 1024
  2. openssl req -new -key test.com.key -out test.com.csr
  3. openssl rsa -in test.com.key -out test.com_nopass.key
  4. openssl x509 -req -days 365 -in test.com.csr -signkey test.com.key -out test.com.crt

Nginx的配置:

  1. server {
  2.    server_name www.test.com;
  3.    listen  443;
  4.    index index.html index.htm index.php;
  5.    root  /data/wwwroot/www.test.com;
  6.    ssl on;
  7.    ssl_certificate test.com.crt;
  8.    ssl_certificate_key test.com_nopass.key;
  9.    ......
  10. }

2 Comments

php的strtotime在处理am/pm时的一个BUG

今天在处理一个采集数据时发现采集到的时间是空的,到源网站看了一下,发现是有时间的。联想到之前一个am/pm的问题,然后就有了如下测试。
测试代码:

  1. $date = date('Y-m-d');
  2. $array = array('00:00am','00:00pm','00:01am','00:01pm', '01:01am','01:01pm','12:00am','12:00pm','12:01am','12:01pm');
  3. foreach ($array as $time) {
  4.     echo $date . ' ' . $time.'<br />';
  5.     echo strtotime($date . ' ' . $time).'<br />';
  6.     echo date('Y-m-d H:i:s', strtotime($date . ' ' . $time)).'<br /><hr />';
  7. }

大家可以先自己想想预期的答案是什么,再往下看:
Read the rest of this entry »

,

No Comments

CentOS下通过Webmin管理BIND实现DNS轮询

在写这篇文章之前,我在网上翻阅了大量相关的文章,但由于“天下文章一大抄”(特别是国内)的现象,并没有在某篇文章得到我想要的资料,经过半天的摸索,整理出这份文档,做个记录,也供后来的同学参考。

我比较常用的Linux系统为CentOS 5.x及ubuntu,其中CentOS作为服务器,ubuntu作为桌面,所以,我的Linux方面的文章会主要以这两者为主。
一、介绍
1、Webmin
以下Webmin的介绍来自百度百科
Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。目前Webmin支持绝大多数的Unix系统,这些系统除了各种版本的linux以外还包括:AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。   

Webmin 让您能够在远程使用支持 HTTPS (SSL 上的 HTTP)协议的 Web 浏览器通过 Web 界面管理您的主机。这在保证了安全性的前提下提供了简单深入的远程管理。这使得 Webmin 对系统管理员非常理想,因为所有主流平台都有满足甚至超出上述需求的 Web 浏览器。而且,Webmin 有其自己的“Web 服务器”,因此不需要运行第三方软件(比如 Web服务器)。万事具备。Webmin 的模块化架构允许您在需要时编写您自己的配置模块。除了在此介绍的模块之外,Webmin 还包括许多模块。尽管目前我们将主要关注网络服务,但是您会看到,几乎您系统的每一部分都能够通过 Webmin 来配置和管理。

Webmin的官方网址为:http://www.webmin.com/,目前最新版本为1.530。
Read the rest of this entry »

, , ,

No Comments

UTF-8编码内简繁互转的PHP实现

昨天,因为项目需要对文字进行简繁互转,网上基本上是内码互转,即GB2312编码和BIG5编码之间的互转,我始终是UTF-8编码。关于UTF-8内的简繁互转,只有1篇,但被可耻的转了N次,占据了几页搜索页。我随便试了下,发现可以,等正式放到项目中才发现,只有一部分是正常的,只好自己想办法了。突然想到PHP的iconv函数,这是一个内码转换的函数,表面上看好像和我的需求不符,其实不然,我们可以通过曲线救国的方式来实现。先将UTF-8(简体字)转为GB2312编码,再将GB2312编码转为BIG5编码,然后再将BIG5转为UTF-8,这样比正常直接转多了2步,应该会有不少性能损失,具体损失多少,还没测试。到目前为止,还没有发现有不能转的字。下面放出代码:

  1. class ChineseTransfer {
  2.    
  3.     public static function big5_gb2312($in) {
  4.         $in = iconv('UTF-8', 'BIG5', $in);
  5.         $in = iconv('BIG5', 'GB2312', $in);
  6.         $out = iconv('GB2312', 'UTF-8', $in);
  7.         return $out;
  8.     }
  9.    
  10.     public static function gb2312_big5($in) {
  11.         $in = iconv('UTF-8', 'GB2312', $in);
  12.         $in = iconv('GB2312', 'BIG5', $in);
  13.         $out = iconv('BIG5', 'UTF-8', $in);
  14.         return $out;
  15.     } 
  16.  
  17. }

, ,

No Comments

Linux命令行下时区、日期和时间的一些设置方法

1. 查看日期时间,输入命令:date即可,要修改日期或时间可以用以下命令:

  1. date -s 2011-02-23 # 设置日期
  2. date -s 11:22;33 # 设置时间
  3. date -s "2011-02-23 11:22:33" # 设置日期和时间

2. 自动从世界标准时间中心同步时间,输入命令:/usr/sbin/ntpdate 0.pool.ntp.org,可以结合crond实现定时同步时间,如:

  1. 0 * * * * /usr/sbin/ntpdate 0.pool.ntp.org # 每小时同步一次

注意,要先关闭ntpd服务。否则会报“the NTP socket is in use, exiting”。

3. 修改时区,即时生效。命令如下:

  1. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  2. hwclock

另外一种需要重启后才生效的,修改/etc/sysconfig/clock文件,把ZONE的值改为Asia/Shanghai,UTC值改为false,改完后的文件如下:

  1. ZONE="Asia/Shanghai"
  2. UTC=false
  3. ARC=false

, ,

No Comments

CentOS下安装cron

今天到服务器上去添加cron任务时发现服务器竟然没有安装crond服务,在这里做一下安装和使用的记录。
1、安装

  1. yum install vixie-cron crontabs

2、开启

  1. /sbin/chkconfig --level 35 crond on  # 开机自启动
  2. /sbin/service crond start

3、添加任务

  1. crontab -e

4、crontab 格式
* *  *  *  * command

第1列表示分钟 1~59 每分钟用 * 或者 */1 表示
第2列表示小时 1~23(0表示0点)
第3列表示日期 1~31
第4列表示月份 1~12
第5列标识星期 0~6 (0表示星期天)
第6列要运行的命令

,

No Comments

[转载]从3个科技公司里学到的57条经验

来源:外刊IT评论

自1999年起我就开始发掘一些科技公司,并帮助它们运营。我最近的一个公司是fabulis.com。下面是从干这行中得到的57条经验。我可以列出更多,但恐怕会令你厌烦。

1.做你个人有热情的事情。你是你自己最好的民意代表。

2.用户体验很重要。大多数产品做不到这些是因为用户弄不清怎样才能从这些产品中获得好处。很多产品做不到这些是因为过于复杂。

3.要懂技术。你不必去写代码,但你必须能理解它是如何被开发出来的,如何工作的。

4.创业公司的CEO必须,必须,必须担任产品经理。他/她必须对产品拥有功能性的用户体验。

5.对功能进行主次分级。不会有两个等同的功能。你不可能把它们一次全实现。要进行兵力优化。

6.使用缺陷跟踪系统,虔诚的用它来管理你的开发活动。

7.及时发布。除非真正的用户接触到你的产品并给予反馈,你永远都不会知道你的产品是好是坏。

8.尽快发布,经常发布。不要惦记着再增加一些其它功能。只要能达到可以用来收集用户反馈的最小功能集合,那就发布它。收集反馈信息,反复这个过程,发布下一个版本、下一个版本,越快越好。如果你3个月才发布出第一版面向用户的产品,你拖延的太久了。如果3个星期才发布一次更新包,你拖延的太久了。如果不能一周几次,那每周发布一次更新。每3周发布一次重大更新。
Read the rest of this entry »

,

No Comments

CentOS5.3下安装pptpd提供VPN服务

今天,一个朋友跟我说,你有个LINUX服务器在国外,搞个VPN来玩玩呗。之前是有的,后来重灌系统(台湾用语,重装系统),就没装了,正好装回来。中间还出了问题,google和百度后发现,内容都大致相同,可奇怪的是,这么多人转来转去,注明转载的却不多,真是世风日下。暂且不去管别人怎么做,在我博客出现的,只要是转载来的,就一定会注明。以下是正文:

1.安装ppp iptables服务

  1. yum install -y ppp iptables

2.下载pptpd的rpm包:
32位 http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm
64位 http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm
安装命令:
32位

  1. rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm

64位

  1. rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm

Read the rest of this entry »

, ,

No Comments

Erlang学习–输出MD5值

来源:http://www.ha24.cn/?p=197
Erlang输出的md5值是16位二进制的,就算转成list也和我们经常用的32位字符串不一样,这是转换代码:

  1. -module(md5).
  2. -compile(export_all).
  3.  
  4. md5(S) ->
  5.     Md5_bin = erlang:md5(S),
  6.     Md5_list = binary_to_list(Md5_bin),
  7.     lists:flatten(list_to_hex(Md5_list)).
  8.     
  9. list_to_hex(L) ->
  10.     lists:map(fun(X) -> ini_to_hex(X) end, L).
  11.     
  12. ini_to_hex(N) when N < 256 ->
  13.     [hex(N div 16), hex(N rem 16)].
  14.     
  15. hex(N) when N < 10 ->
  16.     $0 + N;
  17. hex(N) when N >= 10, N < 16 ->
  18.     $a + (N - 10).

,

No Comments

erlang学习–日期转为时间戳

看《Erlang程序设计》也有1周多了,也该开始动手了,最近几天会慢慢贴一些小模块上来。
先一个日期转为时间戳(1970-01-01 00:00:00到指定日期的秒数)

  1. -module(timestamp).
  2. -export([datetime_to_timestamp/1,timestamp_to_datetime/1]).
  3.  
  4. datetime_to_timestamp({Date, Time}) ->
  5.     Seconds1 = calendar:datetime_to_gregorian_seconds({Date, Time}),
  6.     Seconds2 = calendar:datetime_to_gregorian_seconds({{1970,1,1}, {0,0,0}}),
  7.     Seconds1 - Seconds2.
  8.     
  9. timestamp_to_datetime(Timestamp) ->
  10.     Seconds1 = calendar:datetime_to_gregorian_seconds({{1970,1,1}, {0,0,0}}),
  11.     Seconds2 = Timestamp + Seconds1,
  12.     calendar:gregorian_seconds_to_datetime(Seconds2).

,

No Comments