VPS的简单配置

前言

原来US的两个虚拟主机连着抽风- -, 实在受不了,最近locvps搞活动弄来一个55折的code,于是拖着@ricter还有几个逗比合租了个HK的节点,一个月掏两顿饭钱给VPS还是有的…..so, 总算是圆了自己要一个HK VPS的愿望.

不过这VPS的配置对新手来讲太痛苦了

###step1
装的是ubuntu server 12.04 32bit,然后ape-get各种runtime,花了有一个多小时

###step2
configure,nginx和apache2的设置花了一天的时候弄明白了,关键是在设置各个用户的访问权限
目前还在混乱中,nginx暂以root权限运行 apache2,php-fcgi以www-data权限运行
还是先理一下整体架构,nginx做前端,监听80端口,在/etc/nginx/nginx.conf中设置

1
2
3
4
5
    user root
include /etc/nginx/sites-enabled/*
```

再在`sites-enabled`目录下面给每个人写对应的配置文件,php的sock修改到`/tmp/zeroadmin.sock`,对应端口反代监听写法:

location ~{ proxy-pass 127.0.0.1:xxxx; }
```

apache2在8000端口监听,配置文件在/etc/apache2/httpd.conf/etc/apache2/sites-enabled/*
php5的php.ini文件在/etc/php5/xxx下面,这里好几个文件夹都包含php.ini,每次改配置都是几个全改好郁闷T.T

###Now
PHP能欢快的跑起来了,除了phpmyadmin的配置有点小问题
由于是合租VPS,所以每个人都分配了管理员权限,接下来要考虑怎样让每个人的操作尽量不影响其他人

TASKINFO: http://vps.zeroling.com/taskinfo.php

###todo
把php-fcgi的解析权归还给apache(目前是nginx)….我好像说漏了什么
配置好phpmyadmin,然后需要再搞一个主机管理程序

暂时先这样把,明天开始把这个博客先写写完 拖了好久没动了已经

Nodejs之Crypto模块的使用

cover-image
好吧。好久没更新了,最近也是忙着考国二C语言,各种临时抱佛脚,也没心思写东西了。上礼拜日也是跟学长组队去参加了一个校内的CTF,神奇的是还拿了个第二名~其实我们是去纯打酱油的> <。

其中一道题挺有意思的,题设就记不清了,大概就是给了你一个IP和端口,我们telnet上去就显示这样:

Welcome to game space
Your ip: 172.16.37.125
There have a question for you
If you pass it, i’ll give you the key. #$*!@#$!@
Question: the “S” is? (Hint “S” is string of alphanumeric)
(“K0M1OHNHn2WX” + “S”) -> md5(fb61d14280636c25547a2482dacb5817)
Input “S”:

大概意思就是把”K0M1OHNHn2WX”这个字符串和S这个字符串拼接之后md5然后得到后面那个MD5密码。

我们用js写一段代码来匹配这个东西。

1
2
3
4
5
6
7
8
9
10
11
12
//加载MD5.js
(function(){
q = "K0M1OHNHn2WX";
s = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890".split('');
s.forEach(function(a1){
s.forEach(function(a2){
s.forEach(function(a3){
s.forEach(function(a4){
if(hex_md5(q+a1+a2+a3+a4)=='fb61d14280636c25547a2482dacb5817')
return a1+a2+a3+a4;
});});});});
})()

至于怎么知道是四位的,多试就知道了。还有一个细节是这个字符串每次都是会改变的。3位的话在我的Air上跑完大概只要十秒,可以忽略不计,四位的时候大概花了两分钟多,但是这个Telnet在60s的时候会断开连接,出题者限制了时间,如果按照这个程序,大概就要分组跑了,我猜是那个用于MD5加密的函数库比较慢的关系。

于是乎,回来拿node的crypto库写了个一样的程序,我们可以看到node是单线程的,四核心的处理器只能用一个线程,CPU100%。

node CPU

1
2
3
4
var hex_md5 = function (str) {
str = str.toString();
return require('crypto').createHash('md5').update(str, 'utf-8').digest('hex')
};

Node MD5

我们可以看到尼玛这个坑爹啊 只要30多s就可以了啊=-=

好吧。下次CTF继续加油把~是时候撸高数去了。。。

修改PHP-FMP的运行用户

cover-image
今天又折腾了一下VPS.

把php-fpm的运行用户改成了每个子用户, 而不是统一使用www-data用户, 这样的好处就是解决了php动态创建的文件属主和属主都是www-data, 普通用户反而没法删除这个文件的尴尬.

####流程如下…

进入php5-fpm的配置目录/etc/php5/fpm/pool.d/为每个用户添加一个conf文件, 内容大概如下.(要替换$USERNAME)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[username]

user = $USERNAME
group = $USERNAME

listen = /tmp/$USERNAME-fpm.sock
listen.owner = $USERNAME
listen.group = $USERNAME
listen.mode = 0660

pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 1
pm.max_spare_servers = 3

进入nginx的配置目录/etc/nginx/sites-enabled/把用户的php套接字路径改为(也要替换$USERNAME)

1
2
3
4
5
6
7
8
location ~ \.php$ {
fastcgi_pass unix:/tmp/$USERNAME-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
```

重启php5-fpm和装载nginx配置生效.

service php5-fpm restart
nginx -s reload
```

###后话.

其实还有一个问题仍然存在, 用nginx直接反代的配置并没有通过apache, 这在一些使用.htaccess文件来设置rewrite规则的程序来讲(比如wordpress等)是不可接受的, 因为nginx的rewrite规则与apache并不通用. 我查了一下, 要在apache2开启fastcgi_mod还是比较麻烦的, 然后上课的点到了先去上课了, 下回有空再折腾吧~ 那些用.htaccess的就先proxy_pass apache把~