浏览模式: 标准 | 列表 2013年01月的文章

Linux下shell支持中文显示的方法

对当前环境临时生效:export LANG=zh_CN.GB18030

永久写入配置文件:vi /etc/sysconfig/i18n

  • #LANG="en_US.UTF-8"
  • LANG="zh_CN.GB18030"
  • SYSFONT="latarcyrheb-sun16"

Linux下shell取得字符串行数与指定字符串长度

有某个文本文件is36.txt,需要取得字符串行数指定字符串长度

linuxshell取得字符串行数:

  • cat is36.txt | wc -l

Linux下shell取得指定字符串长度(默认第一行):

  • cat is36.txt | wc -L

Linux下shell取得指定字符串长度(2p即第二行):

  • sed -n '2p' is36.txt | wc -L

Tags: linux, shell, 字符串行数, 指定字符串长度

Windows命令行下终止进程的命令taskkill与tskill使用方法

C:\>taskkill /?

TASKKILL [/S system [/U username [/P [password]]]]

         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

描述:

    使用该工具按照进程 ID (PID) 或映像名称终止任务。

参数列表:

    /S    system           指定要连接的远程系统。

    /U    [domain\]user    指定应该在哪个用户上下文执行这个命令。

    /P    [password]       为提供的用户上下文指定密码。如果忽略,提示输入。

    /FI   filter           应用筛选器以选择一组任务。允许使用 "*"。例如,映像名称 eq acme*

    /PID  processid        指定要终止的进程的 PID。使用 TaskList 取得 PID。

    /IM   imagename        指定要终止的进程的映像名称。通配符 '*'可用来指定所有任务或映像名称。

    /T                     终止指定的进程和由它启用的子进程。

    /F                     指定强制终止进程。

筛选器:

    筛选器名      有效运算符                有效值

    -----------   ---------------           -------------------------

    STATUS        eq, ne                    RUNNING |  NOT RESPONDING | UNKNOWN

    IMAGENAME     eq, ne                    映像名称

    PID           eq, ne, gt, lt, ge, le    PID 值

    SESSION       eq, ne, gt, lt, ge, le    会话编号。

    CPUTIME       eq, ne, gt, lt, ge, le    CPU 时间,格式为

                                            hh:mm:ss。

                                            hh - 时,

                                            mm - 分,ss - 秒

    MEMUSAGE      eq, ne, gt, lt, ge, le    内存使用量,单位为 KB

    USERNAME      eq, ne                    用户名,格式为 [domain\]user

    MODULES       eq, ne                    DLL 名称

    SERVICES      eq, ne                    服务名称

    WINDOWTITLE   eq, ne                    窗口标题

    说明

    ----

    1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。

    2) 远程进程总是要强行 (/F) 终止。

    3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。

例如:

    TASKKILL /IM notepad.exe

    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T

    TASKKILL /F /IM cmd.exe /T

    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"

    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe

    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *

    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"

C:\>tskill /?

结束进程。

TSKILL processid | processname [/SERVER:servername] [/ID:sessionid | /A] [/V]

  processid           要结束的进程的 Process ID。

  processname         要结束的进程名称。

  /SERVER:servername  含有 processID 的服务器(默认值是当前值)。

                         使用进程名和 /SERVER 时,必须指定 /ID

                         或 /A

  /ID:sessionid       结束在指定会话下运行的进程。

  /A                  结束在所有会话下运行的进程。

  /V                  显示正在执行的操作的信息。

Tags: taskkill, tskill

解决cos-html-cache在Godaddy主机下无法生成静态文章页问题

godaddy主机(Linux系统)上部署了wordpress程序,安装了cos-html-cache生成静态首页与静态文章页,然而只有首页可以静态化,文章页无法生成。

造成该问题的原因是Godaddy的主机太安全的缘故,首先来看下如下变量与函数的差别:

  • $_SERVER['DOCUMENT_ROOT']变量:返回服务器中定义的当前脚本所在的文档根目录   
  • dirname(__FILE__) 函数:返回的当前脚本的绝对路径

而cos-html-cache中采用了$_SERVER['DOCUMENT_ROOT']变量来获取网站目录却在Godaddy这类BT主机商遭遇了问题——测试生成首页无法生成静态文章页。

解决方法比较简单,将以下内容保存为get_path.php文件放到网站根目录上: 

  • <?php
  • echo "SeverPath: ".dirname(__FILE__)."/";
  • echo "<br>";
  • $path = $_SERVER['DOCUMENT_ROOT']."/";
  • echo "DOCUMENT_ROOT: ".$path;
  • ?>

访问这个文件获取到的信息如下: 

  • SeverPath: /home/content/is36/html/www.is36.com/
  • DOCUMENT_ROOT: /var/chroot/home/content/is36/html/

是否看到差别了?进入WordPress后台,打开如下链接(自行修改域名):

http://www.is36.com/wp-admin/plugin-editor.php?file=cos-html-cache/cos-html-cache.php

然后把$path = $_SERVER['DOCUMENT_ROOT']."/";修改为$path = "/home/content/is36/html/www.is36.com/";

修改完成后点击更新文件,然后再用另外一个未登陆WordPress的浏览器访问首页跟文章页,你会发现都更新了!(注意:登陆的时候页面不会被缓存,或者退出登陆访问页面。


吐槽:Godaddy主机无法在主机面板里调整默认文档页的先后顺序,经测试发现index.php文件的优先级高于index.html,如果生成的静态页index.html无法被先访问就失去了静态化的意义。那么针对Godaddy主机这个不算问题的问题,解决方案也简单。把以下规则加入到根目录的.htaccess文件里: 

  • <Files ~ "^.(htaccess|htpasswd)$">
  • deny from all
  • </Files>
  • DirectoryIndex index.html index.php      
  • order deny,allow

Tags: cos-html-cache, godaddy, wordpress

记录一下BuyVM2013年搬迁数据中心

buyvm家有5台位于西海岸圣何塞数据中心的VPS,虽然都是基于OpenVZ虚拟化技术,不过线路比较稳定,电信跟联通均走nlayer线路,而其主站www.buyvm.net电信走pccw线路,联通走tinet线路比较奇怪。

这次整个搬迁从圣何塞至拉斯维加斯,整个搬迁时间跨度:北京时间从1月20日13:30至1月21日1:00-2:00。

搬迁之前记录下5台VPS的一些信息:

  • 内存256MB*2,$35/年,母鸡node47,L5520*2,在线26天
  • 内存256MB*2,$35/年,母鸡node29,E5520*2,在线62天
  • 内存128MB*2,$15/年,母鸡node32,L5520*1,在线165天
  • 内存128MB*2,$15/年,母鸡node65,L5520*1,在线220天
  • 内存128MB*2,$15/年,母鸡node48,L5638*1,在线12天

因为BuyVM家的tos(规则)比较严格,连账户的信息修改都要联系客服完成,若信息有虚假或者不太真实均会导致订单被认定为欺诈。也正因为如此,虽然他们家VPS性价比高但是稳定性也还不错。

 

Tags: buyvm, 圣何塞, 拉斯维加斯, nlayer, pccw, tinet

帝国CMS搜索结果高亮关键词修改

定位文件:\e\search\result\index.php

打开并搜索$changerow+=1;语句,在它上面增加如下高亮关键词语句:

$r[title]=str_replace($search_r[keyboard],"<font color='red'>$search_r[keyboard]</font>",$r[title]);

保存搞定。

Tags: 帝国cms, 搜索结果, 高亮关键词

Nginx作前端反向代理Godaddy主机空间教程

需求说明:godaddy主机空间性能比较强劲,正冰购买的 Godaddy  Deluxe Linux美国主机空间配置如下:

  • CPU为8核心的Intel(R) Xeon(R) CPU L5609 @ 1.87GHz
  • 内存 48 GB
  • 空间 150 GB
  • 无限流量
  • 数据库 25 个 MySQL 数据库(每个限制 1 GB)

这么强劲的主机空间是挺不错的,无奈的是Godaddy主机空间有一个弊端,就是线路不佳,访问速度不快,而且时而会抽风。那么就需要一个可以解决抽风弊端并且可以让国内用户享受高性能Godaddy主机空间的廉价方案。

正冰给的解决方案:一台线路稳定并且速度不算慢的美国VPS(正冰选择了buyvm家的15美元年付128M内存,突发256M内存的VPS),安装nginx作为前端反向代理Godaddy主机空间,这样就完美解决了这个问题。

购买VPS,安装Nginx这些就不多说了,正冰直接采用lnmp一键安装包方便讲解:

开始讲解之前先约定信息:Godaddy主机空间IP为111.111.111.111,VPS的IP为222.222.222.222,需要反向代理的域名为blog.is36.com,将域名直接解析到222.222.222.222。

1、先在Godaddy主机空间正常绑定需要反向代理的网站域名blog.is36.com(注意:若需要反向代理www开始的域名比如www.is36.com会提示不允许www,那么只要绑定is36.com域名就可以了,Godaddy已经帮你把is36.com与www.is36.com都绑定上去了)

2、编辑Nginx的主配置文件/usr/local/nginx/conf/nginx.conf,在server{这个关键词上方加入如下代码(Nginx反向代理配置代码): 

  • client_body_buffer_size  512k;
  • proxy_connect_timeout    5;
  • proxy_read_timeout       60;
  • proxy_send_timeout       5;
  • proxy_buffer_size        16k;
  • proxy_buffers            4 64k;
  • proxy_busy_buffers_size 128k;
  • proxy_temp_file_write_size 128k;
  • proxy_temp_path   /home/cache/temp;
  • proxy_cache_path  /home/cache/path levels=1:2 keys_zone=cache_one:128m inactive=2d max_size=10g;

以上配置最后一条语句的含义为:设置Web缓存区名称为cache_one,内存缓存空间大小为128MB,2天没有被访问的内容自动清除,硬盘缓存空间大小为10GB。

3、然后执行如下命令增加反向代理的缓存目录:

  • mkdir -p /home/cache/temp
  • mkdir -p /home/cache/path

4、修改VPS(CentOS系统)上的hosts文件/etc/hosts,执行如下命令(按实际修改):

  • echo "111.111.111.111 blog.is36.com">>/etc/hosts

这一条是让VPS可以把blog.is36.com解析到111.111.111.111(Godaddy主机空间)取数据。

5、增加需要反向代理的配置文件(实际操作请把下面所有blog.is36.com字符串替换为你反向代理的网站域名即可):vi /usr/local/nginx/conf/vhost/blog.is36.com.conf 

  • server
  • {
  • listen          80;
  • server_name     blog.is36.com;
  • access_log  /home/wwwlogs/blog.is36.com.log  access;
  • location / {
  • proxy_cache cache_one;
  • proxy_cache_valid 200 304 3d;
  • proxy_cache_key $host$uri$is_args$args;
  • proxy_pass http://blog.is36.com;
  • proxy_redirect off;
  • proxy_set_header X-Real-IP $remote_addr;
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • expires 12h;
  • }
    • location ~ .*\.(php|jsp|cgi)?$
    • {
    •      proxy_set_header Host  $host;
    •      proxy_set_header X-Forwarded-For  $remote_addr;
    •      proxy_pass  http://blog.is36.com;
    • }

6、测试nginx配置信息以及重新加载nginx配置信息: 

  • /usr/local/nginx/sbin/nginx -t
  • /usr/local/nginx/sbin/nginx -s reload

7、把网站程序通过ftp上传到Godaddy主机空间即可,注意ftp连接地址填写为111.111.111.111


以上配置可以让前端缓存网站的文件,加速客户端的读取,若不想让前端缓存文件,则文件/usr/local/nginx/conf/vhost/blog.is36.com.conf内容如下: 

  • server
  • {
  • listen          80;
  • server_name     blog.is36.com;
  • location / {
  • proxy_pass          http://blog.is36.com;
  • proxy_redirect      off;
  • proxy_set_header    X-Real-IP       $remote_addr;
  • proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
  • }
  • }

Tags: godaddy主机, nginx, 前端, 反向代理