方法一,首先修改 httpd.conf 配置文件:
vi /etc/httpd/conf/httpd.conf
查找 Options Indexes FollowSymLinks,修改为 Options -Indexes。
 
 
方法二,在www 目录下的修改 .htaccess 配置文件:
加入 Options -Indexes
方法一,首先修改 httpd.conf 配置文件:
vi /etc/httpd/conf/httpd.conf
查找 Options Indexes FollowSymLinks,修改为 Options -Indexes。
 
 
方法二,在www 目录下的修改 .htaccess 配置文件:
加入 Options -Indexes
Windows下的Memcache安装:
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装
3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
4.下载php_memcache.dll,请自己查找对应的php版本的文件
5. 在C:\winnt\php.ini 加入一行 ‘extension=php_memcache.dll’
6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!
memcached的基本设置:
-p           监听的端口
-l       连接的IP地址, 默认是本机
-d start          启动memcached服务
-d restart        重起memcached服务
-d stop|shutdown  关闭正在运行的memcached服务
-d install        安装memcached服务
-d uninstall      卸载memcached服务
-u      以的身份运行 (仅在以root运行的时候有效)
-m           最大内存使用,单位MB。默认64MB
-M                内存耗尽时返回错误,而不是删除项
-c           最大同时连接数,默认是1024
-f        块大小增长因子,默认是1.25
-n         最小分配空间,key+value+flags默认是48
-h                显示帮助
php_Memcache.dll PHP组件下载 http://www.php100.com/html/download/server/2010/0125/3858.html
Memcache Win32 1.2.1 下载 http://www.php100.com/html/download/server/2010/0125/3857.html
Memcache环境测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
< ?php
$mem = new Memcache;
$mem->connect(”127.0.0.1″, 11211);
$mem->set(’key’, ‘This is a test!’, 0, 60);
$val = $mem->get(’key’);
echo $val;
?>
方法。
< ?php
//连接
$mem = new Memcache;
$mem->connect("192.168.0.200", 12000);
//具体端口可以通过phpinfo() 查看
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
//替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//保存数组
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//关闭连接
$mem->close();
?>
如果正常的话,浏览器将输出:
Get key1 value: This is first value
Get key1 value: This is replace value
Get key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd )
Get key1 value:
Get key2 value: 
程序代码分析
初始化一个Memcache的对象:
$mem = new Memcache;
连接到我们的Memcache服务器端,第一个参数是服务器的IP地址,也可以是主机名,第二个参数是Memcache的开放的端口:
$mem->connect("192.168.0.200", 12000);
保存一个数据到Memcache服务器上,第一个参数是数据的key,用来定位一个数据,第二个参数是需要保存的数据内容,这里是一个字符串,第三
个参数是一个标记,一般设置为0或者MEMCACHE_COMPRESSED就行了,第四个参数是数据的有效期,就是说数据在这个时间内是有效的,如果过
去这个时间,那么会被Memcache服务器端清除掉这个数据,单位是秒,如果设置为0,则是永远有效,我们这里设置了60,就是一分钟有效时间:
$mem->set(‘key1‘, ‘This is first value’, 0, 60);
从Memcache服务器端获取一条数据,它只有一个参数,就是需要获取数据的key,我们这里是上一步设置的key1,现在获取这个数据后输出输出:
$val = $mem->get(’key1′);
echo "Get key1 value: " . $val;
现在是使用replace方法来替换掉上面key1的值,replace方法的参数跟set是一样的,不过第一个参数key1是必须是要替换数据内容的key,最后输出了:
$mem->replace(‘key1′, ‘This is replace value’, 0, 60);
$val = $mem->get(‘key1′);
echo "Get key1 value: " . $val;
同样的,Memcache也是可以保存数组的,下面是在Memcache上面保存了一个数组,然后获取回来并输出
$arr = array(‘aaa’,‘bbb’,‘ccc’, ‘ddd’);
$mem->set(‘key2′, $arr, 0, 60);
$val2 = $mem->get(‘key2′);
print_r($val2);
现在删除一个数据,使用delte接口,参数就是一个key,然后就能够把Memcache服务器这个key的数据删除,最后输出的时候没有结果
$mem->delete(‘key1′);
$val = $mem->get(‘key1′);
echo "Get key1 value: " . $val . "<br>";
最后我们把所有的保存在Memcache服务器上的数据都清除,会发现数据都没有了,最后输出key2的数据为空,最后关闭连接
$mem->flush();
$val2 = $mem->get(‘key2′);
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
一、源码包准备
服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-v1.4.4 。
 下载:http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
 另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,
libevent的最新版本是libevent-1.4.13-stable。(如果你的系统已经安装了libevent,可以不用安装)
 官网:http://www.monkey.org/~provos/libevent/
 下载:http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
准备Memcached的PHP扩展的源码安装包:
 官网:http://pecl.php.net/get/memcache-2.2.5.tgz
Linux指令下载:
wget http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
 wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
 wget http://pecl.php.net/get/memcache-2.2.5.tgz
1、先安装libevent
tar zxvf libevent-1.4.13-stable.tar.gz
 cd libevent-1.4.13-stable
 ./configure –prefix=/usr
 make
 make install
2、测试libevent是否安装成功
ls -al /usr/lib | grep libevent
 libevent-1.1a.so.1
 libevent-1.1a.so.1.0.2
 libevent-1.4.so.2
 libevent-1.4.so.2.1.3
 libevent.a
 libevent_core-1.4.so.2
 libevent_core-1.4.so.2.1.3
 libevent_core.a
 libevent_core.la
 libevent_core.so
 libevent_extra-1.4.so.2
 libevent_extra-1.4.so.2.1.3
 libevent_extra.a
 libevent_extra.la
 libevent_extra.so
 libevent.la
 libevent.so
版本不同,可能文件列表不同。
3、安装memcached,同时需要安装中指定libevent的安装位置
tar zxvf memcached-1.4.4.tar.gz
 cd memcached-1.4.4
 ./configure –with-libevent=/usr
 make && make install
安装完成后会把memcached 自动放到 /usr/local/bin/memcached
4、测试是否成功安装memcached
ls -al /usr/local/bin/mem*
 -rwxr-xr-x 1 root root 201869 12-14 21:44 /usr/local/bin/memcached
5、安装Memcache的PHP扩展
①安装PHP的memcache扩展
tar vxzf memcache-2.2.5.tgz
 cd memcache-2.2.5
 /usr/local/webserver/php/bin/phpize
 ./configure –enable-memcache –with-php-config=/usr/local/webserver/php/bin/php-config –with-zlib-dir
 make
 make install
②上述安装完后会有类似这样的提示:
Installing shared extensions: /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/
③把php.ini中的extension_dir = “./”修改为
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/”
④添加一行来载入memcache扩展:extension=memcache.so
三、memcached的基本设置1.启动Memcache的服务器端:
memcached -d -m 10 -u root -l 202.207.177.177 -p 11211 -c 256 -P /tmp/memcached.pid
参数说明:
-d选项是启动一个守护进程,
 -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
 -u是运行Memcache的用户,我这里是root,
 -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址202.207.177.177,
 -p是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,
 -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
 -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
2.如果要结束Memcache进程,执行:
kill `cat /tmp/memcached.pid`
也可以启动多个守护进程,不过端口不能重复。
3.检查Memcached是否启动
netstat -ant
 tcp        0      0 202.207.177.177:11211       0.0.0.0:*                   LIST
11211端口已经打开,说明Memcached已正常启动。
4.重启CentOS
reboot
四、Memcache环境测试运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始你的Memcache的征途吧!
1 
2 
3 
4 
5 
6 
7 
8 
9 
 | 
<?php 
$mem= newMemcache; 
$mem->connect("202.207.177.177", 11211); 
$mem->set('key', 'This is a test!', 0, 60); 
$val= $mem->get('key'); 
echo$val; 
?> 
 | 
对Memcached有疑问的朋友可以参考下列文章:
 Linux下的Memcache安装:http://www.ccvita.com/257.html
 Nginx 0.8.x + PHP 5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器: http://blog.s135.com/nginx_php_v5/
转 http://blog.lixiphp.com/centos-linux-memcache-nginx-php-install/
------------------------------------------------------------------------------------
直接能通过YUM安装MEMCACHE
1、安装 EPEL Repo
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
2、安装 Memcache
yum -y install memcached
安装过程中可能会出现如下问题:
--> Missing Dependency: perl(Net::SSLeay) >= 1.33 is needed by package perl-AnyEvent-5.240-1.el5.rf.noarch (rpmforge)
Error: Missing Dependency: perl(Net::SSLeay) >= 1.33 is needed by package perl-AnyEvent-5.240-1.el5.rf.noarch (rpmforge)
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.
这个问题是因为CentOS的 yum没有memcached需要的最新的 perl-Net-SSLeay 和 perl-IO-Socket-SSL包.
解决办法也很简单,删除旧的包,安装新的包。
查看旧版本的包
rpm -qa | grep perl-Net-SSLeay
rpm -qa | grep perl-IO-Socket-SSL
移除并安装新包
rpm-e perl-Net-SSLeay-1.30-4.fc6
rpm -e perl-IO-Socket-SSL-1.01-1.fc6
wget http://packages.sw.be/perl-Net-SSLeay/perl-Net-SSLeay-1.36-1.el5.rfx.i386.rpm
wget http://packages.sw.be/perl-Net-SSLeay/perl-Net-SSLeay-1.36-1.el5.rfx.x86_64.rpm
wget http://packages.sw.be/perl-IO-Socket-SSL/perl-IO-Socket-SSL-1.34-1.el5.rfx.noarch.rpm
rpm -i perl-Net-SSLeay-1.36-1.el5.rfx.x86_64.rpm
rpm -i perl-Net-SSLeay-1.36-1.el5.rfx.i386.rpm
rpm -i perl-IO-Socket-SSL-1.34-1.el5.rfx.noarch.rpm
然后再执行安装命令
yum -y install memcached
即可安装成功
3、设置为开机启动
chkconfig --level 2345 memcached on
4、启动和停止
/etc/init.d/memcached start|stop
客户端,直接将 php_memcache.so放到php的module中,然后在php.ini中载入即可
为安全起见,最好是修改一下memcache的端口,不要保留为默认的11211
可以用下面的方式改
memcached -d -m 10 -u root -l 202.207.177.177 -p 11211 -c 256 -P /tmp/memcached.pid
也可以
vi /etc/sysconfig/memcached 修改那里的端口即可<?php
/**
 * PHP操作mssql数据库类,含分页类
 * Enter description here ...
 * @author aboc 9986584 2011-04-09
 *
 */
class DB_Handle{
var $ClassName = "DB_Handle";
var $Server;
var $UserName;
var $Password;
var $Database;
var $LinkID=0;
var $QueryResult="";
var $LastInsertID = "";
//* private ignore=>ignore the error and continue, halt=>report the error and halt, report=>report the error and continue
var $Halt_On_Error = "report";
var $Error = "";
var $ErrNo = 0;
var $total = 0;
var $page = 0;
var $page_num = 10;
var $page_size = 10;
var $page_name = 'page';
//* remark: This is the db_mysql_class's structure     * function: Set the server,username,password,database variable.
function DB_Handle($server="",$username="",$password="",$database=""){
    $this->Server = $server;
    $this->UserName = $username;
    $this->Password = $password;
    $this->Database = $database;    
}
    //* function: Connect database and select database    * success: retun 1    * failed: return 0
function connect(){
    $this->LinkID = @mssql_pconnect($this->Server,$this->UserName,$this->Password);
    if(!$this->LinkID){
    $this->halt("mssql_pconnect($this->Server,$this->UserName,$this->Password): Failed");
    return 0;
    }
    if(!@mssql_select_db($this->Database)){
    $this->halt("mssql_select_db($this->Database) Failed.");
    return 0;
    }
    return 1;
}
//* function: Check the database, if exist then select        * exist: return 1        * not exist: return 0
function selectDatabase(){
    if(@mssql_select_db($this->Database))
    return 1;
    else
    return 0;
}
//* function: Execute SQL instruction    * success: return SQL Result.    * failed: return 0;
function execQuery($sql=""){
    if($this->LinkID == 0){
    $this->halt("Execute SQL Failed: Hava not valid database connect.");
    return 0;
    }
    ob_start();
    $this->QueryResult = mssql_query($sql,$this->LinkID);
    $error = ob_get_contents();
    ob_end_clean();
    if($error){
    $this->halt("Execute SQL: mssql_query($sql,$this->LinkID) failed.");
    return 0;
    }
    $reg = "#insert into#";
    if(preg_match($reg,$sql)){
    $sql = "select @@IDENTITY as id";
    $res = mssql_query($sql,$this->LinkID);
    $this->LastInsertID = mssql_result($res,0,id);
    }
    return $this->QueryResult;
}
//* function: Get the query result's row number//* success: return the row fo the Result//* failed: return 0
function getTotalRowNum($result=""){
    if($result != "") $this->QueryResult = $result;
    $row = @mssql_num_rows($this->QueryResult);
    if($row >= 0) return $row;
    $this->halt("Get a row of result Failed: Result $result is invalid.");
    return 0;
}
//* function: Get the last insert record's id    //* success: return id        //* failed: return 0
function lastInsertID(){
    return $this->LastInsertID;
}
//* function: Get a field's value    * success: return value of the field        * failed: return 0
function getField($result="",$row=0,$field=0){
    if($result != "") $this->QueryResult = $result;
    $fieldvalue = @mssql_result($this->QueryResult,$row,$field);
    if($fieldvalue != "") return $fieldvalue;
    $this->halt("Get field: mssql_result($this->QueryResult,$row,$field) failed.");
    return 0;
   //Here should have error handle
}
//* function: Get next record    * success: return a array of the record's value            * failed: return 0
function nextRecord($result=""){
    if($result != "") $this->QueryResult = $result;
    $record = @mssql_fetch_array($this->QueryResult);
    if(is_array($record)){
        foreach ($record as $key=>$row)
        $record[$key] = trim($row);
        return $record;
    }
    //$this->halt("Get the next record Failed: the Result $result is invalid.");
    return 0;
}
//* function: Free the Query Result    * success return 1   * failed: return 0
function freeResult($result=""){
    if($result != "") $this->QueryResult = $result;
    return @mssql_free_result($this->QueryResult);
}
//* function: Set the Halt_On_Error's state     * success: return 1    * failed: return 0
function setHaltOnError($state="ignore"){
    if(!($state == "ignore" || $state == "report" || $state == "halt")){
    $this->halt("Set the Halt_On_Error Fail: There is no state value $state");
    return 0;       
    }
    $this->Halt_On_Error = $state;
    return 1;
}
//* function: Get the Halt_On_Error's state
function getHaltOnError(){
    return $this->Halt_On_Error;
}
//* function: Get the class's name
function toString(){
    return $this->ClassName;
}
//* function: Error handle
function halt($msg){
    $this->Error = @mysql_error($this->LinkID);
    $this->ErrNo = @mysql_errno($this->LinkID);
    if ($this->Halt_On_Error == "ignore") return;
    $this->makeMsg($msg);
    if ($this->Halt_On_Error == "halt") die("Session halted");
}
//* function: Make error information and print
function makeMsg($msg){
    printf("Database error: %s
\n", $msg);
    printf("MySQL Error: %s (%s)
\n",$this->ErrNo,$this->Error);
}
/**
 * 以下为分页类
 */
    private function getQuery(){
        $query = '';
        if( isset($_GET) && is_array($_GET)){
            foreach ($_GET as $key=>$value){
                if ($key == 'page')continue;
                $query .= !empty($query)?'&'.$key.'='.$value:$key.'='.$value;
            }
        }
        $query .= empty($query)?'':'&';
        return $this->getFilename().$query;
    }
    
    /**
     * 获取当前的url文件名并带上?
     */
    private function getFilename() {
        //$filename = str_replace($_SERVER['QUERY_STRING'],'',basename($_SERVER["REQUEST_URI"]));
        $filename = str_replace('?'.$_SERVER['QUERY_STRING'],'',basename($_SERVER["REQUEST_URI"])).'?';
        return $filename;
    }
    
    /**
     * 返回带分页名的连接字符
     */
    private function returnPageLink( $page ){
        return $this->getQuery().$this->page_name.'='.$page;
    }
    /**
     * 下一页链接
     */
    function nextPageLink(){
        if( $this->page != $this->page_num )
        return $this->returnPageLink($this->page+1);
        else
        return '#';
    }    
   function getListData($sql,$num=10){
       $this->execQuery($sql);
       $this->page_num = $this->getTotalRowNum();
       if (!$this->page_num || !$num )return array();
       $this->page_size = $num;
       $this->page = isset($_GET[$this->page_name])?intval($_GET[$this->page_name]):1;
       $pageTotal = ceil($this->page_num/$num);
       if ($this->page < 0)$this->page = 0;
       if ($this->page > $pageTotal) $this->page = $pageTotal;
       $list = array();
       if (mssql_data_seek($this->QueryResult, ($this->page-1)*$this->page_size)){
           for ($i=0;$i<$num;$i++){
               $list[] = $this->nextRecord();
           }           
       }
       return $list;
   }
    /**
     * 输出中文分页链接 上一页,下一页
     *
     * @return unknown
     */
    function pagelist( $total='总共',$dataname='条',$now='当前',$page='页',$first='第一页',$last='尾页',$prev='上一页',$next='下一页' ){
        $total='<span>'.$total.$this->page_size.$dataname.' '.$now.($this->page).'/'.($this->page_num).$page.'</span>';
        $startpage='<a href="'.$this->returnPageLink(1).'">'.$first.'</a>';
        $endpage='<a href="'.$this->returnPageLink($this->page_num).'">'.$last.'</a>';
        if($this->page == 1){
            $prepage='<span>'.$prev.'</span>';
        }else{
            $prepage='<a href="'.$this->returnPageLink($this->page-1).'">'.$prev.'</a>';
        }
        if($this->page==$this->page_num){
            $nextpage='<span>'.$next.'</span>';
        }else{
            $nextpage='<a href="'.$this->returnPageLink($this->page+1).'">'.$next.'</a>';
        }
        if($this->page_size == 0)return '';
        return $total.' '.$startpage.' '.$prepage.' '.$nextpage.' '.$endpage;
    }
    
    /**
     * 输出下拉框的列表
     *
     */
    function select() {
        $select = '<select name="pageselect" id="pageselect"  onchange="window.location=\''.$this->getQuery().$this->page_name.'=\'+pageselect.value">';
        $totalnum = $this->page_num;
        for($i=1;$i<=$totalnum;$i++) {
            if($this->page == $i){
                $str = ' selected="selected"';
            } else {
                $str = '';
            }
            $select .= '<option value="'.$i.'"'.$str.'>'.$i.'</option>';
        }
        $select .= '</select>';
        if($this->page_size == 0)$select = '';
        return $select;        
    }
    /**
     * 输入页数到多少页
     *
     */
    function gotoPage($buttonname='到'){
        $string = '<input type="text" size="3" name="dm_pagenum"><input type="button" value="'.$buttonname.'" onclick="window.location=\''.$this->getQuery().$this->page_name.'=\'+dm_pagenum.value"> ';
        if($this->page_size == 0)$string = '';
        return $string;
    }
    
    function pageListBaidu($first='首页',$pre_page='上一页',$next_page='下一页',$last='尾页' ,$shownum=6) {
        if($this->page_num == 1) return;
        $pagelink = '';
        if($this->page != 1) {
            $pagelink .= '[<a href="'.$this->returnPageLink(1).'">'.$first.'</a>] ';
            $pagelink .= '[<a href="'.$this->returnPageLink($this->page-1).'">'.$pre_page.'</a>] ';
        }
        for ($i=$shownum;$i>=1;$i--) {
            $tmp_page = $this->page - $i;
            if( $tmp_page >= 1 ) {
                $pagelink .= '[<a href="'.$this->returnPageLink($tmp_page).'">'.$tmp_page.'</a>] ';
            }
        }
        $pagelink .= '<span>'.$this->page.'</span>';
        for ($i=1;$i<=$shownum;$i++) {
            $tmp_page = $this->page + $i;
            if( $tmp_page <= $this->page_num ) {
                $pagelink .= '[<a href="'.$this->returnPageLink($tmp_page).'">'.$tmp_page.'</a>] ';
            }
        }        
        
        if( $this->page != $this->page_num ){
            $pagelink .= '[<a href="'.$this->returnPageLink($this->page+1).'">'.$next_page.'</a>] ';
            $pagelink .= '[<a href="'.$this->returnPageLink($this->page_num).'">'.$last.'</a>]';
        }
        if($this->num == 0)$pagelink = '';
        return $pagelink;   
    }
}一,getimagesize不知道为什么在本地会很慢,注释掉就可以了
二,关于这个用网上说的方法吧
php环境兼容性问题--
内容编码错误
无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。
请联系网站的所有者以告知此问题。
以前也遇到过同样的问题,记得是PHP代码ob_start('ob_gzhandler')导致的,导致的原因有两种,
1. 服务器不支持这种压缩格式,可使用function_exists('ob_gzhandler')判断,解决方法 ob_start('ob_gzhandler')改为ob_start();
2.
 使用ob_start('ob_gzhandler')时候前面已经有内容输出,检查前面内容以及require 
include调用文件的内容。若无法找到可以在调用其它文件前使用ob_start(),调用之后使用 ob_end_clean () 
来清除输出的内容;
在 调用ob_start();前加入 ob_end_clean () 
 
 还有一点需要注意的是,PHP5.30版本,默认不再支持<?=$username;?>这样的语法,输出变量需使用& 
lt;?php echo $username;?>语法才可以。你可以通过将 php.ini 中的 short_open_tag 设置为 
On,这样就可以兼容原来的语法。
在对ubuntu系统进行相关设置后,就可以进行各种环境的搭建,这里介绍apache+mysql+php环境的搭建:
1、安装Mysql 
aptitude install mysql-server mysql-client  安装过程中,要输入MySQL的root用户密码, 
New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword
数据文件放在: /var/lib/mysql下
2、安装Apache
代码:aptitude install apache2
安装完后,在浏览器中访问 http://192.168.0.100 看到如下图所示的页面,就说话安装成功了:
Ubuntu系统中Apache的默认文档根目录为 
/var/www,配置文件位于/etc/apache2/apache2.conf。其他的一些额外配置文件存放在/etc/apache2的子目录
里,如 /etc/apache2/mods-enabled (Apache模块配置文件),/etc/apache2/sites-enabled 
(虚拟主机配置文件),还有 /etc/apache2/conf.d
3、安装Php5
aptitude install php5 libapache2-mod-php5
安装完成后,重新启动apache2服务: 
代码: /etc/init.d/apache2 restart
由于默认Web站点的根目录位于 /var/www,我们就在该根目录新建一名为 info.php 
的php程序文件,并从浏览器里访问它,以测试PHP5是否成功安装。该测试php文件中使用 phpinfo() 
函数获得服务器中安装的PHP软件包详情,比如PHP的版本、所支持的组件等等。 
代码: vi /var/www/info.php
<?php  phpinfo();  ?>
文件编辑好后,保存退出,在浏览器里浏览该文件(文中使用http://192.168.0.100/info.php
4、为PHP5安装MySQL支持
为了让PHP支持MySQL,我们必须安装php5-mysql软件包。同时,还可以为php安装一些可选的支持模块,如mcrypt, memcache, gd, pear, imagick等等。使用下面的命令可以搜索一下php5相关的模块: 
aptitude search php5
选择你想安装的模块,并安装它们,本文列出了一些常用的php5软件包并安装,执行下面的命令:  
aptitude install php5-mysql php5-curl php5-gd php5-idn php-pear 
php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming 
php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy 
php5-xmlrpc php5-xsl php5-json
安装完成后,重启apache2服务: /etc/init.d/apache2 restart
这时候,刷新浏览器或者重新打开 http://192.168.0.100/info.php 就可以看到刚刚安装的php功能了,注意看看mysql和mysqli相关的信息
这样就完成了搭建。。。
  
by Aboc
如果没有aptitude 则可以用apt-get
# /etc/init.d/httpd start
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]
1.netstat -lnp|grep 80
tcp        0      0 192.168.180.68:61027        0.0.0.0:*                   LISTEN      6289/oproxyd       
tcp        0      0 :::80                       :::*                        LISTEN      846/httpd           
tcp        0      0 ::ffff:192.168.180.68:7001 :::*                        LISTEN      32015/java         
找到pid 846
#ps 846
查看
#kill -9 846
杀掉
#./apachectl start
启动成功
*****************************************************************************
处理办法:
# ps -aux | grep http
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
root     12079 0.0 0.0 61164   720 pts/1    S+   16:06   0:00 grep http
# ps -aux | grep apache
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
apache   10820 0.0 0.0   2044   600 ?        Ss   Jan01   0:04 bash
root     12081 0.0 0.0 61160   716 pts/1    S+   16:06   0:00 grep apache
# kill -9 10820
# /etc/init.d/httpd start
Starting httpd:                                            [ OK ]
# /etc/init.d/httpd restart
Stopping httpd:                                            [ OK ]
Starting httpd:                                            [ OK ]
**********************************************************
如果默认编码是gb2312的话,会出现乱码.经百度告知原来是http.conf强制使用了utf-8,我们只要把它改为关闭就可以了
AddDefaultCharset UTF-8 改为 AddDefaultCharset OFF
另外:有另外一种方法,但是我感觉好像没有奏效:http://hi.baidu.com/qrpeng/blog/item/e76164085e2b9e9e0a7b82fd.html
以下是引用他的
修改http.conf中的AddDefaultCharset为AddDefaultCharset off,关闭apache默认编码,这样php的应用和tomcat下的应用都分别采用各自的编码,apache不会强行修改这些应用返回的 response的http头中的charset。如此一来就ok了。
json的install。
Google到一些文档都是下载后进行编译的,显得比较费事。还好有大牛写出了比较简单的方法,我转载一下
yum update "*php*"
pecl install json
cd /etc/php.d/
echo “extension=json.so” >> json.ini
service httpd restart
启动mysql控制台:  mysql
mysql>; USE mysql; 
mysql>; UPDATE user SET Password=PASSWORD('newpassword') WHERE user='root'; 
mysql>; FLUSH PRIVILEGES; 
2.2.3 允许远程登录 
mysql -u root -p 
Enter Password: <your new password> 
mysql>GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; 
完成后就能用mysql-front远程管理mysql了。 
2.2.4 设为开机启动 
chkconfig mysqld on 
3. 安装php 
yum install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml 
/etc/init.d/httpd start 
/升级默认的php5.1到5.2
vi gedit /etc/yum.repos.d/utterramblings.repo
在打开的文件中加入以下内容:
[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
保存
 yum update php
1、下载文件:
http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz (32位)
http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz (64位)
2、解压
解压后把ZendOptimizer-3.3.9-linux-glibc23-x86_64/data/5_2_x_comp目录下的ZendOptimizer.so拷贝到某一个目录,比如/usr/local/Zend/lib/
Zend optimizer 3.3.9有一些新的改动,不需要安装了,直接在php.ini文件里面引用.so文件即可:
3、修改/etc/php.ini文件
找到:zend.ze1_compatibility_mode = Off
修改为:zend.ze1_compatibility_mode = On
在末尾加上以下文字:
[Zend Optimizer]
zend_optimizer.optimization_level=1
zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"
4、重启httpd服务,通过php -v 可以看效果。
安装eaccelerator
直接yum install php-eaccelerator
如果找不到,线 yum search eaccelerator
虚拟主机安装时注意,如果出现多个域名都指向同一个目录的情况
NameVirtualHost 127.0.0.1:80    #这句一定要和 <VirtualHost 127.0.0.1:80>配合才可以。
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html
ServerName t.dagongz.com
<Directory "/var/www/html">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html/test/
ServerName test.dagongz.com
<Directory "/var/www/html/test/">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
开启缓存Expires模块要有
ExpiresActive   on 
ExpiresDefault   "access plus 86400 second"
卸载Mysql
 
[root@localhost ~]# rpm -qa|grep mysql
 
mod_auth_mysql-2.6.1-2.2
 
php-mysql-4.3.9-3.15
 
mysql-devel-4.1.20-1.RHEL4.1
 
mysql-4.1.20-1.RHEL4.1
 
mysqlclient10-3.23.58-4.RHEL4.1
 
libdbi-dbd-mysql-0.6.5-10.RHEL4.1
 
 
说明:rpm –qa | grep mysql 命令是为了把mysql相关的包都列出来,我上面的例子是Linux
AS4默认安装mysql的rpm软件包列表,
如果是别的Linux版本列出来的列表有可能会不一样,不过不用担心,不管是什么,卸载都从最下面的一个包开始,直到卸载掉第一个为止。 
 
说明:rpm –e
是卸载rpm包的命令,后面是包名称,最后的版本号是不用打的,比如我们下一步卸载mysqlclient10-3.23.58-4.RHEL4.1包
方法如下:
 
rpm –e mysqlclient
 
 
卸载Apache
 
[root@localhost ~]# rpm -qa|grep httpd
 
httpd-manual-2.0.52-25.ent
 
system-config-httpd-1.3.1-1
 
httpd-2.0.52-25.ent
 
httpd-suexec-2.0.52-25.ent
 
 
说明:方法跟卸载Mysql一样,不用说了吧
 
 
卸载PHP
 
[root@localhost ~]# rpm -qa|grep php
 
php-odbc-4.3.9-3.15
 
php-4.3.9-3.15
 
php-mysql-4.3.9-3.15
 
php-pear-4.3.9-3.15
 
php-ldap-4.3.9-3.15
 
php-pgsql-4.3.9-3.15
 
 
说明:方法跟卸载Mysql一样
 
 
注意:卸载的时候如果卸载不掉,系统一般会提示包的依赖关系,并且列出依赖的包的名称,先卸载提示依赖的包就可以了。
 
 
如果实在实在有卸载不掉的包,可以加—nodeps这个参数来卸载,比如我们卸载php-4.3.9-3.15,实在卸不掉了。
 
 
就用:
 
[root@localhost ~]# rpm -e php-4.3.9-3.15 --nodeps
之前有讲过公司新买的服务器使用的是CentOS 5.5,部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页。因为以前部署在Win Server的VPS,Linux开发时也只用到localhost,所以就有点头大。
好吧,G一下网上有说是防火墙的问题,敲入
/etc/init.d/iptables stop
关闭之后再次查看114.80.*.*:8080(即ip:8080)发现果然成功。但是貌似安全隐患大大增加……使用
/etc/init.d/iptables status
查看防火墙信息,可以看到打开的端口。那么我们把需要使用的端口打开应该是一个比较可行的办法了,命令如下:
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT #8080为指定端口
/etc/init.d/iptables restart #重启防火墙以便改动生效,当然如果不觉得麻烦也可重启系统(命令:reboot)
/etc/rc.d/init.d/iptables save #将更改进行保存
当然了,还有另外直接在/etc/sysconfig/iptables中增加一行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT
永久关闭防火墙
chkconfig –level 35 iptables off #此方法源自网络,未实验,安全考虑拒绝使用此方法
使用Root用户运行命令:
fdisk /dev/hda
输入n增加分区 
输入p类型设置为:主分区 
输入3分区编号设置为3 
回车 为默认大小 
回车 为默认 大小
再 
输入t 设置分区类型 
输入3 3号分区 
输入8e 设置为LVM
输入 v 检查分区表 
输入w 写入分区表 
输入q 退回fdisk
输入 reboot 重启
重启后,
使用Root用户运行命令: 
mkfs.ext3 /dev/hda3 建立文件系统
输入 mkdir /newhd 来建立目录/newhd
将目录挂上到系统中 
mount /dev/hda3 /newhd
参数查看磁盘剩余空间信息,命令格式: df -hl 
就可以看到有/newhd有可用空间了
如果以后要自动挂载这个分区,您可以修改/etc/fstab 
在这个文件最后一行加上 
/dev/hda3 /newhd ext3 defaults 1 1 
保存后,重启动就有效了.