作者归档:℃冻番茄

发一个自动新建、修改虚拟主机的shell脚本

 今天重新弄了下自助建站的虚拟主机管理程序,服务器ubuntu 10.04 server 64位,安装apache+php+mysql

写了个脚本,给php调用,在新建用户账号、修改或绑定域名时起执行的,运用了apache 的reload,添加虚拟主机免重启方案!

然后就是用visudo给apache的用户www-data授权,允许用root身份执行这个脚本及/etc/init.d/apache2 二条命令。

这样web就可以执行新建及修改虚拟主机的操作了,但是目前还是不太安全的,www-data有关闭和启动apache的权限,下次找个时间,重新写个apache2的reload专用脚本。不使用/etc/init.d/apache2脚本。!

Ruby代码
  1. #!/bin/sh   
  2. FILENAME=/etc/apache2/sites-enabled/$1  
  3. if [ $1 = "diyweb" ] ; then  
  4.         echo ‘error ,diyweb is system user!’;   
  5. elif [ $1 = ‘000-default’ ] ; then  
  6.         echo ‘error ,000-default is sysytem user’;   
  7. else  
  8. if [ -f $FILENAME ]; then  
  9.         echo ‘Del old file’;   
  10.         rm -rf $FILENAME  
  11.         echo ‘Update user’  
  12. else  
  13.         echo ‘Add user’  
  14. fi   
  15.         echo "<VirtualHost *:80>\nServerName $1.ye55.net \nServerAlias $1.armos.cn $2 \nDocumentRoot \"/home/web/diyweb/company/$1\"\n</VirtualHost>" >> $FILENAME  
  16.         sed ‘s/@/ /g’ $FILENAME -i   
  17.         echo ‘Success’  
  18.         /etc/init.d/apache2 reload   
  19. fi  

写的一个vpn自动重连脚本

XML/HTML代码
  1. #!/bin/sh   
  2. VPN=`ifconfig | grep ppp0`   
  3. #echo $VPN   
  4. if [ -z "$VPN" ]   
  5. then   
  6. pon myvpn   
  7. route add -net 10.10.10.0 netmask 255.255.255.0 dev ppp0   
  8. else   
  9. echo $VPN >/dev/null   
  10. fi  

 

公司内部的服务器连接到外网的vpn ,从而方便进行远程内部访问及操作。内部服务器系统是ubuntu 10.04 server 64位版,外网服务器windows 2003 做vpn服务。linux 中的pptp-linux登陆后需要执行route添加路由才能访问vpn内网。

脚本的意思是监控ppp0连接是否正常,如果没有ppp0接连则自动开启vpn拨号,并把日志写入root邮件 /var/mail/root

脚本编写后放入crontab -e   

* * * * * root /root/vpn.sh

Ubuntu下使用vpn连接远程服务器[转]

服务器提供了vpn接入点,这样在家里也可以通过vpn连到公司的服务器里作一些事情。昨天下午申请了vpn帐号,然后先在windows下试着连 接vpn服务器,一切okay,证明自己的vpn帐户没有问题,于是今天准备在Ubuntu下也配置一下vpn的访问环境。

  我使用的VPN客户端是 Ubuntu官方源里提供的 pptp-linux。先sudo apt-get install pptp-linux 下载安装pptp 客户端。

  然后查了一下pptp的manual,也在网上search了一下,发现pptp的命令行选项貌似还比较简单:

  sudo pptp user password <密码>。

  公司的vpn服务器的外网ip是 100.100.1.1,内网ip是192.168.1.1,vpn用户名是hello,密码是hello,,于是在调用如下命令以后:

  sudo pptp 100.100.1.1 user hello password hello

  再ifconfig,发现新增加了一个名称为ppp0的网络连接,这个连接对应的ip地址应该是跟你连接的vpn服务器所属的内网地址属于同一 网段。在我的这个应用场景中新增加的ppp0网络连接对应的ip地址是192.168.1.x。这个新建立的ppp0连接就是用于提供vpn连接服务的。

  然后我就试着ping公司的vpn服务器的内网ip 192.168.1.1,能够正常ping通。再ping其他服务器,如192.168.1.10,发现ping命令失败!很不解,花了点时间想了想,猜 测有可能是访问公司服务器的相应网关的设置不正确。于是试着:

  route add 192.168.1.10 gw 192.168.1.1

  然后再试着ping 192.168.1.10,这次就可以正常ping通了。

  然后试着ssh登录192.168.1.10,也成功了。

  至此,我在Ubuntu下的vpn工作环境配置完毕。

巧用apache的rewrite伪静态实现自动生成html静态化

以前用过或是写过的生成html静态化有一个最麻烦的操作,

每次新加一篇文章、新建一个分类或是在header或footer改动了文字,都要全盘重新生成,如果有几万甚至于几十万上百万篇文章,那还不是等它生成html等得郁闷。

所以有了一个新的想法,就是让用户第一次打开这篇文章或是列表、首页时,自动生成这篇文章或列表、首页的html文件。这样,当文章没有更新的情况下,每二个用户打开就是html了,这样就实现了自动化的生成静态。主要使用的是php中我们常写的文件缓存方式进行工作。

但是毕竟是生成静态化,跟url有关系,所以就想到了apache的rewrite伪静态
例如:文章的php完整访问地址:/?m=article&a=view&1=6  rewrite成静态化的真实地址 /article_view_6.html
这样,所有的链接都使用的是/article_view_6.html 第一次执行,用的是rewrite,然后生成了article_view_6.html这个文件,第二次访问。apache就直接使用article_view_6.html这个静态页面了

下面自己写的一个.htaccess文件,主要的作用就是rewrite静态化,如果html文件存在,则直接用,不使用伪静态(不执行php),后台如果对文章、首页或是列表页做了更改,只需把相应的html文件删除就行了,无需重新生成。

 

PHP代码
  1. <IfModule mod_rewrite.c>   
  2. RewriteEngine on   
  3. #rewrite规则   
  4. RewriteCond %{REQUEST_FILENAME} !-d   
  5. RewriteCond %{REQUEST_FILENAME} !-f   
  6. RewriteRule ^article_view_([0-9]+).html$ ?m=article&a=view&1=$1 [L]   
  7.   
  8. #去掉index.php  框架中需要使用   
  9. RewriteCond %{REQUEST_FILENAME} !-d   
  10. RewriteCond %{REQUEST_FILENAME} !-f   
  11. RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]   
  12.   
  13. </IfModule>   
  14.   

 

生成静态化类

PHP代码
  1. <?php   
  2. class html   
  3. {   
  4.     public function __construct()   
  5.     {   
  6.         ob_start();   
  7.     }   
  8.   
  9.     public function autoMkdir($file){   
  10.         $f=explode("/",$file);   
  11.         $dir=array();   
  12.         $alldir=;   
  13.         if(count($f)>0){   
  14.             foreach($f as $v){   
  15.                 if(!emptyempty($v) && strpos($v,‘.’)===false) $dir[]=$v;   
  16.             }   
  17.             for($i=0;$i<count($dir);$i++){   
  18.                 $alldir.=emptyempty($alldir)?$dir[$i]:‘/’.$dir[$i];   
  19.                 if(!is_dir($alldir)){   
  20.                     if(!@mkdir($alldir)){   
  21.                         throw new Exception(‘新建文件夹目录出错,请检查文件夹读写权限. ‘.$alldir);   
  22.                     }   
  23.                 }   
  24.             }   
  25.         }   
  26.     }   
  27.   
  28.     public function writehtml()   
  29.     {   
  30.         $file=$_SERVER[‘REQUEST_URI’];   
  31.         if(substr($file,-5)!=‘.html’return ;   
  32.         $file=substr($file,1);   
  33.         if(!file_exists($file)){   
  34.             $this->autoMkdir($file);   
  35.             $content = ob_get_contents();   
  36.             if(!@file_put_contents($file,$content)){   
  37.                 throw new Exception(‘写入html静态文件出错,请检查文件夹读写权限. ‘.$file);   
  38.             }   
  39.         }   
  40.     }   
  41. }   
  42. ?>  

 

使用方法:

 

PHP代码
  1. <?php   
  2. require_once("html.class.php");   
  3. $html=new html();   
  4. /*  
  5. 这里是执行php文件。  
  6. */  
  7.   
  8. //成生html文件,应该本句应放最后一行。   
  9. $html->writehtml();   
  10. ?>  

 

qq截图未命名.png

分享一个好东西zend guard 5.01的许可文件

Zend Guard 4已经被破解了,5的话,破解的难度比较大,最起码不是完美破解了,所以Zend Guard5在保护源码方面还是有一定作用的,但是它是 zend的一款收费软件,对于个人或是小公司来说费用还不低。现在在网上找到了一个许可文件,成功测试可用。现分享给大家!

如何注册Zend Guard?

打开ZendGuard,点菜单中的help,选择Register,选择Serch a license file on my disk,找到你保存在本机的zend_guard.zl的路径,点击注册即注册成功。

在zend guard 5.01上亲测,注册成功!

下载地址:

zend_guard.zl

Building and Installing on Ubuntu 9.10[转]

在ubuntu下编译hiphop for php还是非常简单的,邮件列表里有人发的安装过程:

HipHop has been developed on CentOS and Fedora, building on Ubuntu 9.10 is experimental.
At the moment, HipHop can only run on 64 bits systems.

Packages installation

Using sudo or as root user:

sudo apt-get install git-core cmake g++ libboost-dev flex bison re2c libmysqlclient-dev libxml2-dev libmcrypt-dev libicu-dev openssl binutils-dev libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev libonig-dev libpcre3-dev git-core autoconf libtool libcurl4-openssl-dev libboost-system-dev libboost-program-options-dev libboost-filesystem-dev

Getting HipHop source-code

mkdir hiphop
cd hiphop
git clone git://github.com/facebook/hiphop-php.git
cd hiphop-php
export CMAKE_PREFIX_PATH=`/bin/pwd`/../
export HPHP_HOME=`/bin/pwd`
export HPHP_LIB=`/bin/pwd`/bin
git submodule init
git submodule update
cd ..

Building third-party libraries

libevent

wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar -xzvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
cp ../hiphop-php/src/third_party/libevent.fb-changes.diff .
patch < libevent.fb-changes.diff
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..

ICU4

wget http://download.icu-project.org/files/icu4c/4.2.1/icu4c-4_2_1-src.tgz
tar -xvzf icu4c-4_2_1-src.tgz
cd icu/source
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ../../

libCurl

Make sure that your system time is correct, otherwise ./configure will fail.

wget http://curl.haxx.se/download/curl-7.20.0.tar.gz
tar -xvzf curl-7.20.0.tar.gz
cd curl-7.20.0
cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .
patch -p0 < libcurl.fb-changes.diff
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..

Building HipHop

cd hiphop-php
cmake .
make

分享一个c#的tcp服务器客户端通讯程序

svn.png

解决远程更新svn的问题。

服务器A做为测试服务器,需要经常通过svn更新到最新版本。但是测试服务器每次都要管理员手工去更新,比较麻烦,所以写了个简单的基于tcp的服务器程序及客户端程序,同事们当要上传svn后需要更新测试服务器时,只需用客户端输入要更新的项目,点击更新SVN就可以了。并会把svn.exe程序执行的结果输出到客户端的文本框中

全部c#源程序下载 :

2010.rar

windows下搭建codeblocks+wxwidgets开发平台

官方地址:

www.codeblocks.org

www.wxwidgets.org

第一,下载安装codeblocks8.02+中文包+svn最新版

先从codeblock官网下载8.02安装版,为了方便可以下载codeblocks-8.02mingw-setup.exe

然后下载中文语言包(放到codeblocks安装目录下/locale/zh_CN/) 

zh_cn_lc_messages_codeblocks.mo

下载svn最新生成包,在论坛中下载,以便升级codeblocks到最新版本

http://forums.codeblocks.org/index.php?PHPSESSID=e09f1b37d64d0f1ab1b44110c0c9be85&board=20.0

最后在windows高级属性里加上path变量。例如:D:\CodeBlocks\MinGW\bin  (安装在D盘根目录下面)

第二步,下载安装wxwidgets最新版本

在cmd中进入wxwidgets安装目录下的\build\msw 目录中

执行二条编译命令(注,如果提示mingw32-make不存在的话,请注意上面的path是否设定成功

mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=0 UNICODE=1

mingw32-make -f makefile.gcc BUILD=debug SHARED=1 MONOLITHIC=0 UNICODE=1

 编译的时间会有些长,耐心等待!

 

 

1.jpg2.jpg3.jpg4.jpg5.jpg6.jpg7.jpg8.jpg9.jpg10.jpg

关注一下 Facebook 的 HipHop (能把php转成c++,太酷了)

目前HipHop还是试验性质的,据说FaceBook用它用了一年多了,很稳定,但是毕竟它本身就是做出来给facebook用的。还是非常的希望它能继续发展,能解决php作为脚本语言上的众多劣势!

HipHop的介绍

HipHop for PHP transforms PHP source code into highly optimized C++. It was developed by Facebook and was released as open source in early 2010.
HipHop transforms your PHP source code into highly optimized C++ and then compiles it with g++ to build binary files. You keep coding in simpler PHP, then HipHop executes your source code in a semantically equivalent manner and sacrifices some rarely used features – such as eval() – in exchange for improved performance.
Facebook sees about a 50% reduction in CPU usage when serving equal amounts of Web traffic when compared to Apache and PHP. Facebook’s API tier can serve twice the traffic using 30% less CPU.
Why HipHop
One of the explicit design goals leading into HipHop was the ability to continue writing complex logic directly within PHP. Companies with large PHP codebases will generally rewrite their complex functionality directly as PHP extensions in either C or C++. Doing so ends up reducing the number of people who are able to work on the company’s entire codebase. By keeping this logic in PHP, Facebook is able to move fast and maintain a high number of engineers who are able to work across the entire codebase.
HipHop is not the right solution for everyone deploying PHP. We think it will be useful to companies running very large PHP infrastructures who do not wish to rewrite complex logic within C or C++.

Using HipHopcheckout and build instructionsgit clone git://github.com/facebook/hiphop-php.gitHipHop currently supports PHP version 5.2 and will be updated to support 5.3. The software is open source and we hope that it’s useful to many companies around the World.You can learn more on Building and installing or Building and installing on Ubuntu 9.10. See Running HipHop to learn more about compiling your source code.
Discussion and supportYou can discuss HipHop for PHP and report bugs on the HipHop developer mailing list (or feel free to submit a Pull Request).The wiki content is licensed under Creative Commons Attribution-ShareAlike License
上面是Facebook上的资料,可能国内上不了 facebook,想要资料先翻墙吧~~

http://wiki.github.com/facebook/hiphop-php/