Author Archive

如何让Linux后台运行命令或php

用 telnet/ssh 登录Linux 服务器,运行了一些耗时较长的任务, 结果却因为关闭远程窗口任务中途失败。这是我们就需要用到Linux的后台运行命令
基础方法:下达的命令后面加上&,就可以使该命令在后台进行工作,这样做最大的好处就是不怕被ctrl+c这个中断指令所中断。可以通过执行fg来将其恢复到前台。有多个进程在后台运行,需要恢复到前台来执行的时候,就要可以用jobs列出所有在后台执行的进程,那个中括号([ ])里面的数字就是jobs代号,从而通过fg 数字恢复指定的后台进程.
进阶方法:以上方法只是把命令放入后台,他还是会跟远程窗口绑定在一起,一旦远程窗口关闭,这些后台运行的资源也会被释放,从而是任务终止,要想真正后台运行就需要用nohup
nohup php cli.php &
会有提示:
[~]$ appending output to nohup.out
运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去
这样就是真正的后台运行了


centos6服务器YUM安装LNMP(LINUX+NGINX+MYSQL+PHP)

之前都用的lamp,这次配置一个lnmp来看看,试试Nginx是不是好用
关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
shutdown -r now #重启系统
安装ngnix
安装GCC编译器及相关工具
yum -y install gcc gcc-c++ autoconf automake
安装模块依赖的库
yum -y install zlib zlib-devel openssl openssl–devel pcre pcre-devel
更新系统时间
ntpdate time.nist.gov
让对时服务开机启动
chkconfig ntpd on
如果需要编译安装最新的
获取ngnix版本
wget http://nginx.org/download/nginx-1.0.14.tar.gz
tar zxvf nginx-1.0.14.tar.gz
cd nginx-1.0.14
直接yum安装
yum install -y nginx
将安装在/usr/share/nginx/
启动nginx
service ngnix start
安装PHP
cd /etc/yum.repos.d
wget http://dev.centos.org/centos/5/CentOS-Testing.repo
rpm –import http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing
yum install -y php php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt [...]


如何使用php日志调试rewrite规则(不受apache和iis限制)

需要在IIS和apache同时调试好静态重写的规则,发现调试rewrite规则真是个神一样的工作,你根本就不知道它到底怎么翻译的,解析到哪里去了。
在网上搜了一下,发现一个朋友在apache下开启了配置文件中的一下两个选项
RewriteLog “/myfolder/mylogfile.log”
RewriteLogLevel 9
这样apache可以自动生成一个重写日志,看着日志调试就方便了
Rewriteloglevel 0 代表关闭,9代表开启最大debug输出,调为9可以看到最详细的重写匹配信息
可是IIS环境呢,这个有点麻烦,于是我用网上搜的一个log类来做日志
大致原理是这样的,在网站的index.php这里写一段
$log = new log(“/logs/sys.log”);
$log->logThis($_SERVER["REQUEST_URI"]);
//$_SERVER["REQUEST_URI"] 是重写的实际执行页面
///logs/sys.log也可以写成别的地址,比如你网站根目录的一个地址,这样你可以通过浏览器来查看日志了
这样的日志结果会是这样的效果
2012-02-28 16:27:04 115.174.56.7 /index.php?action=list&catid=4&pageid=3
2012-02-28 16:27:06 115.174.56.7 /index.php?action=list&catid=7&pageid=6
2012-02-28 16:27:08 115.174.56.7 /index.php?action=list&catid=13&pageid=2
有了日志调试,规则就不再是问题了


利用iphone4联通版制作随身网络(个人热点的使用)

经常要在外面做东西,虽然大部分地方都有wifi,但保不齐有的地方没有无线,又必须上网。昨天跟朋友聊天,他教了我一个相当给力的方法。
如何利用个人热点制作随身网络
首先要先看你的iphone4是不是有足够的流量,如果是包月1g,你又用不完,像我一样,那就看下去吧
如果想开启个人热点,据说必须是越狱的机器,而且是4.3以上
这样在你的手机“设置”中就会有一个叫“个人热点”的选项,点击进入,选择开启“个人热点”
下面会随机产生一个“无线局域网”密码,个人建议你设置成你独有的,自己好记的密码,这样可以无线局域网就开启了
作为一个随身的无线局域网,个人热点有三种方式:wifi,蓝牙,usb
最方便的就是wifi
现在打开你的电脑,打开无线网络,搜索就会发现一个“iphone4”的网络,输入你的密码
哈哈,你就可以上网了
这样的网络流量很珍贵,所以我开启了360的流量监控,时时提醒我用了多少,千万别超
如果你想改iphone4这个无线网络的名称,你可以用usb连接itunes,在那里修改名称
好,打完收工


关于apache下网站加速利器mod-pagespeed

自从有了自己独立服务器,一直认为自己网站速度还是挺快的,但自从上了监控宝之后,发现其实自己服务器的服务经常断。有很多时候网站是不可用的,这个让我很郁闷。一直在看dbanotes(大冯)的博客,知道他的服务器跟我都是在linode下,并且都是linux。然而我们的网站访问速度大相径庭。这一点肯定是我服务器没有配置好。
于是我通过查看两个网站页面HTTP状态,发现两个网站的网页返回HEAD信息差别不大,只有一个X-Mod-Pagespeed信息不知道是做什么的。看来这个参数的作用很大。
原来这是贴心的 Google 特为懒惰型网站主提供了傻瓜化解决方案,据称该模块可以有效将网页加载速度提高50%,Google这款加速模块简单的解决了许多复情况的问题:
-如果你的网站采用apache构建服务器,不需要对网站CMS系统进行处理即可应用;
-加速模块可以自行对网络传输的html字节优化及对图象,css进入压缩优化传输;
-智能缓存是一大亮点,它可以自动智能缓存,加速下载
以下是这个模块的版本
mod_pagespeed 32-bit .deb (Debian/Ubuntu)
mod_pagespeed 64-bit .deb (Debian/Ubuntu)
mod_pagespeed 32-bit .rpm (CentOS/Fedora)
mod_pagespeed 64-bit .rpm (CentOS/Fedora)
具体的安装方法:
首先先下载模块到服务器
如果你是debian的系统请运行一下命令
dpkg -i mod-pagespeed-*.deb
apt-get -f install
如果是centos的系统则
yum install at
rpm -U mod-pagespeed-*.rpm
重启APACHE后你会发现速度真的快了


php中json编码和解码的一些提示

对于php下的web service应用,json因其快速,轻量在小数据量传输的时候非常有优势,但用的时候有些小细节需要注意。我就是把数组存进去,再取出来的时候发现变成对象了,才发现原来是这样。
在运行环境上,json在php5.2以上才是内置的。
常用的方法是json_encode和json_decode。
json_encode的参数只有一个,就是要被转换的数据,而json_decode就不一样,他可以把json格式转换成对象(object)和数组两种
下面是个例子
$arr = array(”1″,”2″,”3″);
print_r($arr);
echo json_encode($arr);
print_r(json_decode(json_encode($arr)));
print_r(json_decode(json_encode($arr), true));
如果数组转成json,想解码回来的,别忘了加个参数true


本博已于今天正式迁移到Linode

为了便于管理今天本博已正式迁移到了linode,linode在东京的机房步给力啊,怎么有时候会ping超时呢
特此记录以下。


游戏服务器管理-文件同步的解决方案

服务器均使用LINUX的CENTOS,同步程序使用Rsync,台湾服务器为Rsync的服务端
服务端配置
同步软件安装
yum -y install xinetd
启动rsync服务端
#rsync –daemon
配置同步软件为可用
vi /etc/xinetd.d/rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it /
# allows crc checksumming etc.
service rsync
{
disable = no [...]


wordpress获取当前分类页的ID

最近搞WORDPRESS的最新版,做模板的时候想获取当前分类的ID,以下是实现代码
获取当前分类页的ID
<?php if (is_category()) {
global $wp_query;
$cat_id = $wp_query->get_queried_object_id();
}
?>


android开发笔记

1. 修改了创建工程时候的默认activity的名称,发现发布项目时不能正常编译。编译的还是旧的名称,显示找不到:ActivityManager: Error: Activity class does not exist.
解决办法:在项目的根目录修改配置文件AndroidManifest.xml中的application中的activity
2. 对两个activity做跳转,发现部署后一直报错并“意外停止”,这是简单的小程序,不可能吃内存太多的。肯定是哪里不对。启用了debug模式,知道到logcat,发现里面有这样一句“ have you declared this activity in your AndroidManifest.xml”,看来又是AndroidManifest.xml的配置问题。果然在其中加了后,跳转后的activity正常了。
3. android程序在调试时出现了套接字异常“java.net.SocketException: Permission denied”。这是一个经典错误, Socket不能对外连接,错误不会被报出,调试的时候,能看到Exception, 一般是抛出 java.net.socketexception permission denied这个异常。只要你的程序想联网,就会抛出这个异常,最终联网失败。 原因是: 需要访问到网络必须要有权限,在AndroidManifest.xml中,需要进行如下配置:
4. could not write file images\/system.img, No space left on device一般的目录是这里C:\Documents and Settings\Administrator\.android,而这个盘已经满了,只剩下几十M的容量是不够的。(系统盘一般是C盘),因为空间不足就无法启动,删了一些文件后重新运行eclipse就好了
5. 往string[] 添加元素的方法,一个for循环中 string[i] = 对应item[i]