国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
架構(gòu) Varnish nginx php(FastCGI) MYSQL5 MenCache MenC
說(shuō)明:
       我在設(shè)計(jì)系統(tǒng)架構(gòu)時(shí),進(jìn)行了大膽的嘗試,只用6臺(tái)Web服務(wù)器,達(dá)到了可承受4000萬(wàn)PV(頁(yè)面訪問(wèn)量)的性能:
拋棄了 Apache,因?yàn)樗艹惺艿牟l(fā)連接相對(duì)較低;
拋棄了 Squid,因?yàn)樗趦?nèi)存利用、訪問(wèn)速度、并發(fā)連接、清除緩存等方面不如 Varnish;
拋棄了 PHP4,因?yàn)?PHP5 處理面向?qū)ο蟠a的速度要比 PHP4 快,另外,PHP4 已經(jīng)不再繼續(xù)開(kāi)發(fā);
拋棄了 F5 BIG-IP 負(fù)載均衡交換機(jī),F(xiàn)5 雖然是個(gè)好東西,但由于價(jià)格不菲,多個(gè)部門(mén)多個(gè)產(chǎn)品都運(yùn)行在其之上,流量大、負(fù)載高,從而導(dǎo)致性能大打折扣;
利用 Varnish cache 減少了90%的數(shù)據(jù)庫(kù)查詢(xún),解決了MySQL數(shù)據(jù)庫(kù)瓶頸;
利用 Varnish cache 的內(nèi)存緩存命中加快了網(wǎng)頁(yè)的訪問(wèn)速度;
利用 Nginx + PHP5(FastCGI) 的勝過(guò)Apache 10倍的高并發(fā)性能,以最少的服務(wù)器數(shù)量解決了PHP動(dòng)態(tài)程序訪問(wèn)問(wèn)題;
利用 Memcached 處理實(shí)時(shí)數(shù)據(jù)讀寫(xiě);
利用 HAProxy 做接口服務(wù)器健康檢查;
經(jīng)過(guò)壓力測(cè)試,每臺(tái)Web服務(wù)器能夠處理3萬(wàn)并發(fā)連接數(shù),承受4千萬(wàn)PV完全沒(méi)問(wèn)題。
保證4千萬(wàn)PV的并發(fā)連接數(shù):(40000000PV / 86400秒 * 10個(gè)派生連接數(shù) * 5秒內(nèi)響應(yīng) * 5倍峰值) / 6臺(tái)Web服務(wù)器 = 19290連接數(shù)
實(shí)驗(yàn)證明:   
    舉個(gè)簡(jiǎn)單的例子,服務(wù)器192.168.0.2上運(yùn)行Nginx+PHP,192.168.0.3上運(yùn)行Apache+PHP,你在 192.168.0.4上安裝壓力測(cè)試工具webbench,以30萬(wàn)并發(fā)連接分別請(qǐng)求Nginx和Apache服務(wù)器上的一個(gè)PHP文件60秒鐘。在這 期間,你用你的瀏覽器訪問(wèn)Apache服務(wù)器上的PHP文件,會(huì)發(fā)現(xiàn)要么是“該頁(yè)無(wú)法顯示”、要么是等待好幾秒鐘才能打開(kāi),而Nginx服務(wù)器的PHP文 件,依然沒(méi)有絲毫影響,訪問(wèn)速度仍然飛快。
引用
webbench -c 300000 -t 60
http://192.168.0.2/index.p
...
webbench -c 300000 -t 60
http://192.168.0.3/index.p
...
以下為 Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 服務(wù)器在3萬(wàn)并發(fā)連接下,開(kāi)啟的10個(gè)Nginx進(jìn)程和250個(gè)php-cgi進(jìn)程時(shí)的系統(tǒng)負(fù)載情況:
安裝步驟:
(系統(tǒng)要求:Linux 2.6+ 內(nèi)核,本文中的Linux操作系統(tǒng)為AS4.3)
一、獲取相關(guān)開(kāi)源程序:
1、下載程序源碼包到當(dāng)前目錄:
本文中提到的所有開(kāi)源軟件為截止到2007年9月21日的最新穩(wěn)定版。我將它們打了兩個(gè)壓縮包。
第一個(gè)壓縮包:nginx_php_mysql_1.0_1of2.zip:
下載地址:
http://ishare.iask.sina.co
...
第二個(gè)壓縮包:nginx_php_mysql_1.0_2of2.zip:
下載地址:
http://ishare.iask.sina.co
...
2、解壓縮:
unzip nginx_php_mysql_1.0_1of2.zip
unzip nginx_php_mysql_1.0_2of2.zip
-------------------------------------------------------------------------
一、) 安裝Nginx
1.) 安裝
Nginx ("engine x") 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問(wèn)量第二的 Rambler.ru 站點(diǎn)開(kāi)發(fā)的,它已經(jīng)在該站點(diǎn)運(yùn)行超過(guò)兩年半了。Igor 將源代碼以類(lèi)BSD許可證的形式發(fā)布。盡管還是測(cè)試版,但是,Nginx 已經(jīng)因?yàn)樗姆€(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名了。歡迎訪問(wèn) Nginx 的中文維基,http://wiki.codemongers.co...
2.)安裝Nginx所需的pcre庫(kù):
引用
[root@localhost]#tar zxvf pcre-7.2.tar.gz
[root@localhost]#cd pcre-7.2/
[root@localhost]#./configure
[root@localhost]#make && make install
[root@localhost]#cd ../
3.)Nginx的編譯參數(shù)如下:
引用
[root@localhost]#./configure --user=www --group=www --prefix=/usr/local/nginx --with-openssl=/usr/include/openssl --with-pcre=/usr/local/lib --with-http_stub_status_module --without-http_memcached_module --without-http_fastcgi_module --without-http_rewrite_module --without-http_map_module --without-http_geo_module --without-http_autoindex_module   
在這里,需要說(shuō)明一下,由于Nginx的配置文件中我想用到正則,所以需要 pcre 模塊的支持。上面安裝步驟里我已經(jīng)安裝了 pcre 及 pcre-devel 的rpm包,但是 Ngxin 并不能正確找到 .h/.so/.a/.la 文件,因此我稍微變通了一下:
引用
[root@localhost]#mkdir /usr/include/pcre/.libs/
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/.libs/libpcre.a
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/.libs/libpcre.la
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/libpcre.a
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/libpcre.la
然后,修改 objs/Makefile 大概在908行的位置上,注釋掉以下內(nèi)容:
引用
./configure --disable-shared
接下來(lái),就可以正常執(zhí)行 make 及 make install 了。
4.) 修改配置文件 /usr/local/server/nginx/conf/nginx.conf
以下是我的 nginx.conf 內(nèi)容,僅供參考:
#運(yùn)行用戶(hù)
user  nobody nobody;
#啟動(dòng)進(jìn)程
worker_processes  2;
#全局錯(cuò)誤日志及PID文件
error_log  logs/error.log notice;
pid        logs/nginx.pid;
#工作模式及連接數(shù)上限
events {
        use epoll;
        worker_connections      1024;
}
#設(shè)定http服務(wù)器,利用它的反向代理功能提供負(fù)載均衡支持
http {
        #設(shè)定mime類(lèi)型
        include       conf/mime.types;
        default_type  application/octet-stream;
        #設(shè)定日志格式
        log_format main         '$remote_addr - $remote_user [$time_local] '
                                                '"$request" $status $bytes_sent '
                                                '"$http_referer" "$http_user_agent" '
                                                '"$gzip_ratio"';
        log_format download '$remote_addr - $remote_user [$time_local] '
                                                '"$request" $status $bytes_sent '
                                                '"$http_referer" "$http_user_agent" '
                                                '"$http_range" "$sent_http_content_range"';
        #設(shè)定請(qǐng)求緩沖
        client_header_buffer_size    1k;
        large_client_header_buffers  4 4k;
        #開(kāi)啟gzip模塊
        gzip on;
        gzip_min_length  1100;
        gzip_buffers     4 8k;
        gzip_types       text/plain;
        output_buffers   1 32k;
        postpone_output  1460;
        #設(shè)定access log
        access_log  logs/access.log  main;
        client_header_timeout  3m;
        client_body_timeout    3m;
        send_timeout           3m;
        sendfile                on;
        tcp_nopush              on;
        tcp_nodelay             on;
        keepalive_timeout  65;
        #設(shè)定負(fù)載均衡的服務(wù)器列表
        upstream mysvr {
                #weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大
                #本機(jī)上的Squid開(kāi)啟3128端口
                server 192.168.8.1:3128 weight=5;
                server 192.168.8.2:80   weight=1;
                server 192.168.8.3:80   weight=6;
        }
        #設(shè)定虛擬主機(jī)
        server {
                listen          80;
                server_name     192.168.0.1
www.test.com
;
                charset gb2312;
                #設(shè)定本虛擬主機(jī)的訪問(wèn)日志
                #access_log  logs/access.log  main;
                #如果訪問(wèn) /img/*, /js/*, /css/* 資源,則直接取本地文件,不通過(guò)squid
                #如果這些文件較多,不推薦這種方式,因?yàn)橥ㄟ^(guò)squid的緩存效果更好
                location ~ ^/(img|js|css)/  {
                        root    /home/web;
                        expires 24h;
                }
                #對(duì) "/" 啟用負(fù)載均衡
                location / {
                        proxy_pass      
http://mysvr
;
                        proxy_redirect          off;
                        proxy_set_header        Host $host;
                        proxy_set_header        X-Real-IP $remote_addr;
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                        client_max_body_size    10m;
                        client_body_buffer_size 128k;
                        proxy_connect_timeout   90;
                        proxy_send_timeout      90;
                        proxy_read_timeout      90;
                        proxy_buffer_size       4k;
                        proxy_buffers           4 32k;
                        proxy_busy_buffers_size 64k;
                        proxy_temp_file_write_size 64k;
                }
                #設(shè)定查看Nginx狀態(tài)的地址
                location /NginxStatus {
                        stub_status             on;
                        access_log              on;
                        auth_basic              "NginxStatus";
                        auth_basic_user_file  conf/htpasswd;
                }
        }
}
運(yùn)行以下命令檢測(cè)配置文件是否無(wú)誤:
  如果沒(méi)有報(bào)錯(cuò),那么就可以開(kāi)始運(yùn)行Nginx了,執(zhí)行以下命令即可:
  備注:conf/htpasswd 文件的內(nèi)容用 apache 提供的 htpasswd 工具來(lái)產(chǎn)生即可,內(nèi)容大致如下:
5.) 查看 Nginx 運(yùn)行狀態(tài)
輸入地址
http://192.168.0.1/NginxSt
...,輸入驗(yàn)證賬號(hào)密碼,即可看到類(lèi)似如下內(nèi)容:
Active connections: 328
server accepts handled requests
9309 8982 28890
Reading: 1 Writing: 3 Waiting: 324
這里我是用虛擬機(jī)做的測(cè)試,所以鏈接數(shù)比較少.
  第一行表示目前活躍的連接數(shù)
  第三行的第三個(gè)數(shù)字表示Nginx運(yùn)行到當(dāng)前時(shí)間接受到的總請(qǐng)求數(shù),如果快達(dá)到了上限,就需要加大上限值了。
top -b -nl
查看NGINX的進(jìn)程號(hào):
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
6.)配置支持FCGI文件
引用
vi /usr/local/webserver/nginx/conf/fcgi.conf
輸入以下內(nèi)容:
引用
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
#fastcgi_param  REDIRECT_STATUS    200;
7.)啟動(dòng)Nginx
引用
文ulimit -SHn 51200
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
-------------------------------------------------------------------------
8.)配置開(kāi)機(jī)自動(dòng)啟動(dòng)Nginx + PHP
vi /etc/rc.local
在末尾增加以下內(nèi)容:
引用
/usr/local/php/bin/spawn-fcgi -a 127.0.0.1 -p 10080 -C 250 -u www -f /usr/local/php/bin/php-cgi
ulimit -SHn 51200
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
-------------------------------------------------------------------------
二.) 安裝MYSQL
安裝mysql-5.0.45.tar.gz, 下面是總體的編譯文件
1. -static  13%
   --with-client-ldflags=-all-static
   --with-mysqld-ldflags=-all-static
靜態(tài)鏈接提高13%性能
2. -pgcc  1%
   CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \
     CXXFLAGS="-O3 -mpentiumpro -mstack-align-double \
     -felide-constructors -fno-exceptions -fno-rtti"
如果是Inter處理器,使用pgcc提高1%性能
3. Unix Socket  7.5%
   --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
使用unix套接字鏈接提高7.5%性能,所以在windows下mysql性能肯定不如unix下面
4. --enable-assembler
允許使用匯編模式(優(yōu)化性能)
引用
[root@localhost]#tar zxvf mysql-5.0.45.tar.gz
[root@localhost]#./configure --prefix=/usr/local/mysql/ --without-debug --with-unix-socket-path=/tmp/mysql.sock --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=gbk,gb2312,utf8 --with-pthread --enable-thread-safe-client
[root@localhost]#make -j 50 && make install
[root@localhost]#groupadd mysql           
[root@localhost]#useradd -g mysql mysql      
[root@localhost]#bin/mysql_install_db --user=mysql     
[root@localhost]#chown -R root  .         
[root@localhost]#chown -R mysql data      
[root@localhost]#chgrp -R mysql .      
[root@localhost]#bin/mysqld_safe --user=mysql &      
[root@localhost]#cd bin         
[root@localhost]#/usr/local/mysql/share/mysql/mysql.server stop   
[root@localhost]#cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
[root@localhost]#chmod 755 /etc/init.d/mysql
[root@localhost]#chkconfig --level 345 mysql on
-------------------------------------------------------------------------------------------------------------------------
三、)安裝PHP 5.2.5(FastCGI模式)
1、編譯安裝PHP 5.2.5所需的支持庫(kù):
引用
[root@localhost]#tar zxvf libiconv-1.11.tar.gz
[root@localhost]#cd libiconv-1.11/
[root@localhost]#./configure --prefix=/usr/local/webserver/lib/libiconv
[root@localhost]#make && make install
[root@localhost]#cd ../
[root@localhost]#tar zxvf freetype-2.3.5.tar.gz
[root@localhost]#cd freetype-2.3.5/
[root@localhost]#./configure --prefix=/usr/local/webserver/lib/freetype
[root@localhost]#make && make install
[root@localhost]#cd ../
[root@localhost]#tar zxvf libpng-1.2.20.tar.gz
[root@localhost]#cd libpng-1.2.20/
[root@localhost]#./configure
[root@localhost]#make && make install
[root@localhost]#cd ../
[root@localhost]#tar zxvf jpegsrc.v6b.tar.gz
[root@localhost]#cd jpeg-6b/
[root@localhost]#./configure --enable-static --enable-shared
[root@localhost]#make && make install
[root@localhost]#cd ../
t[root@localhost]#ar zxvf gd-2.0.35.tar.gz
[root@localhost]#cd gd-2.0.35/
[root@localhost]#./configure --prefix=/usr/local/webserver/lib/gd --with-freetype=/usr/local/webserver/lib/freetype --with-jpeg --with-png
[root@localhost]#make
[root@localhost]#make install
[root@localhost]#cd ../
[root@localhost]#tar zxvf libxml2-sources-2.6.30.tar.gz
[root@localhost]#cd libxml2-2.6.30/
[root@localhost]#./configure --prefix=/usr/local/webserver/lib/libxml
[root@localhost]#make && make install
[root@localhost]#cd ../
-------------------------------------------------------------------------------------------------------------
2、編譯安裝PHP(FastCGI模式)
引用
[root@localhost]#tar zxvf php-5.2.4.tar.gz
[root@localhost]#cd php-5.2.4/
[root@localhost]#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --enable-ftp --with-config-file-path=/usr/local/php --enable-zip --with-zlib --with-curl --without-iconv --with-iconv=/usr/local/lib --with-libxml-dir=/usr --enable-xml --with-xmlrpc --enable-mbregex-backtrack --with-gettext --with-gd=/usr/lib --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local/php/lib/freetype --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-force-cgi-redirect --enable-dom --enable-safe-mode --enable-discard-path --disable-debug --disable-rpath  --enable-bcmath --enable-shmop --enable-sysvsem --with-ldap --enable-sockets --enable-soap --enable-inline-optimization --enable-mbstring=all --with-ming=/usr --with-pdo-sqlite --enable-pdo --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config
[root@localhost]#cp php.ini-dist /usr/local/php/etc/php.ini
[root@localhost]#cd ../
-----------------------------------------------------------------------------------------------------------------
3.修改php.ini文件
手工修改:查找/usr/local/php/etc/php.ini中的extension_dir = "./"
修改為extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
并在此行后增加以下幾行,然后保存:
extension = "memcache.so"
extension = "gd.so"
4.自動(dòng)修改:若嫌手工修改麻煩,可執(zhí)行以下shell命令,自動(dòng)完成對(duì)php.ini文件的修改:
引用
[root@localhost]sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\nextension = "gd.so"\n#' /usr/local/php/etc/php.ini
--------------------------------------------------------------------------------
5.附:編譯PHP之后,為PHP添加擴(kuò)展的方法。(本步驟可選)
引用
[root@localhost]#cd php-5.2.4/pcntl
[root@localhost]#/usr/local/php/bin/phpize
[root@localhost]#./configure --with-php-config=/usr/local/php/bin/php-config
[root@localhost]#make && make install
[root@localhost]#cd ../../../
[root@localhost]#cd php-5.2.5/ext/gd/     
[root@localhost]#/usr/local/php/bin/phpize      
[root@localhost]#./configure --with-jpeg-dir --with-png-dir --with-zlib-dir --with-ttf --with-freetype-dir --with-php-config=/usr/local/php/bin/php-config         
[root@localhost]#make -j 50      
[root@localhost]#make install
利用 Memcached 處理實(shí)時(shí)數(shù)據(jù)讀寫(xiě);MySQL是影響性能的最大瓶頸,可以用一臺(tái)MySQL主庫(kù)(只寫(xiě))+多臺(tái)MySQL輔庫(kù)(只讀)的主輔庫(kù)集群來(lái)解決。另外,訪問(wèn)計(jì)數(shù)等實(shí)時(shí)性很強(qiáng)的東西用Memcache做緩存。
     
引用
[root@localhost]#tar zxvf memcache-2.2.1.tgz     
[root@localhost]#cd memcache-2.2.1/      
[root@localhost]#/usr/local/php/bin/phpize     
[root@localhost]#./configure --with-php-config=/usr/local/php/bin/php-config
[root@localhost]#make -j 50      
[root@localhost]#make install
  
安裝支持MYSQL PDO驅(qū)動(dòng)
引用
[root@localhost]#tar xzvf PDO-1\[1\].0.3.tgz                        
[root@localhost]#cd PDO-1.0.3/                                    
[root@localhost]#/usr/local/php/bin/phpize                          
[root@localhost]#./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql/   
[root@localhost]#make -j 50        
[root@localhost]#make install
-------------------------------------------------------------------------------------------------------------
6.安裝lighttpd中附帶的spawn-fcgi,用來(lái)啟動(dòng)php-cgi
注:壓縮包中的spawn-fcgi程序?yàn)橐呀?jīng)編譯成二進(jìn)制的版本。
[root@localhost]#cp spawn-fcgi /usr/local//php/bin
[root@localhost]#chmod +x /usr/local/php/bin/spawn-fcgi
7、啟動(dòng)php-cgi進(jìn)程,監(jiān)聽(tīng)127.0.0.1的10080端口,進(jìn)程數(shù)為250(如果服務(wù)器內(nèi)存小于3GB,可以只開(kāi)啟25個(gè)進(jìn)程),用戶(hù)為www:
/usr/local/php/bin/spawn-fcgi -a 127.0.0.1 -p 10080 -C 250 -u www -f /usr/local/php/bin/php-cgi
8.設(shè)定開(kāi)機(jī)啟動(dòng)
引用
[root@localhost]#echo "/usr/local/mysql/share/mysql/mysql.server start" >> /etc/rc.local
[root@localhost]#echo "/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf" >> /etc/rc.local
[root@localhost]#echo "/usr/local/php/bin/spawn-fcgi -a 127.0.0.1 -p 10080 -C 250 -u www -f /usr/local/php/bin/php-cgi" >> /etc/rc.local
-------------------------------------------------------------------------
四、優(yōu)化Linux內(nèi)核參數(shù)
vi /etc/sysctl.conf
在末尾增加以下內(nèi)容:
引用
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000    65000
使配置立即生效:
/sbin/sysctl -p
-----------------------------------------------------------------------------------------------------------------------
附:最近經(jīng)常搞lighttpd+fastcgi+php或者nginx+fastcgi+php,時(shí)常被php的“No input file specified.”給郁悶了,把我遇到的情況說(shuō)一下
首先php.ini的配置中
cgi.fix_pathinfo=1
doc_root=
doc_root曾經(jīng)被我設(shè)置過(guò)一個(gè)路徑,結(jié)果php老提示“No input file specified.”,只有一個(gè)虛擬機(jī)好使。改掉后就正常了。
nginx中的配置有些麻煩
fastcgi_pass 127.0.0.1:1234;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
每個(gè)虛機(jī)要根據(jù)自己不通的虛機(jī)設(shè)置不能的目錄,要保證這個(gè)路徑正確。
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;不能在fastcgi_pass 127.0.0.1:1234;的前面。
記得修改了php.ini要重啟fastcgi服務(wù)。
其實(shí)都是因?yàn)榇中脑斐傻?,本?lái)很簡(jiǎn)單,寫(xiě)出來(lái)也給自己提個(gè)醒
---------------------------------------------------------------------------------------------------------------------------
四.)安裝Varnish
     今天寫(xiě)的這篇關(guān)于Varnish的文章,已經(jīng)是一篇可以完全替代Squid做網(wǎng)站緩存加速器的詳細(xì)解決方案了。網(wǎng)上關(guān)于Varnish的資料很少,中文資料更是微乎其微,希望本文能夠吸引更多的人研究、使用Varnish。
在我看來(lái),使用Varnish代替Squid的理由有三點(diǎn):
1、Varnish采用了“Visual Page Cache”技術(shù),在內(nèi)存的利用上,Varnish比Squid具有優(yōu)勢(shì),它避免了Squid頻繁在內(nèi)存、磁盤(pán)中交換文件,性能要比Squid高。
2、Varnish的穩(wěn)定性還不錯(cuò),順便說(shuō)一句,Varnish的性能的發(fā)揮關(guān)鍵在于Varnish配置文檔的優(yōu)化.
3、通過(guò)Varnish管理端口,可以使用正則表達(dá)式快速、批量地清除部分緩存,這一點(diǎn)是Squid不能具備的
    4. 還有一點(diǎn),應(yīng)該算是Varnish的缺點(diǎn)了吧,就是Varnish的緩存基本上在內(nèi)存中,如果Varnish進(jìn)程停止再啟動(dòng),Varnish就會(huì)重新訪問(wèn) 后端Web服務(wù)器,再一次進(jìn)行緩存.雖然Squid性能沒(méi)有Varnish高,但它停止、重啟的時(shí)候,可以直接先從磁盤(pán)讀取緩存數(shù)據(jù)。
    varnish是一款高性能的開(kāi)源HTTP加速器,挪威最大的在線(xiàn)報(bào)紙 Verdens Gang (
http://www.vg.no
) 使用3臺(tái)Varnish代替了原來(lái)的12臺(tái)squid,性能比以前更好。
    varnish的作者Poul-Henning Kamp是FreeBSD的內(nèi)核開(kāi)發(fā)者之一,他認(rèn)為現(xiàn)在的計(jì)算機(jī)比起1975年已經(jīng)復(fù)雜許多。在1975年時(shí),儲(chǔ)存媒介只有兩種:內(nèi)存與硬盤(pán)。但現(xiàn)在計(jì)算 機(jī)系統(tǒng)的內(nèi)存除了主存外,還包括了cpu內(nèi)的L1、L2,甚至有L3快取。硬盤(pán)上也有自己的快取裝置,因此squid cache自行處理物件替換的架構(gòu)不可能得知這些情況而做到最佳化,但操作系統(tǒng)可以得知這些情況,所以這部份的工作應(yīng)該交給操作系統(tǒng)處理,這就是 Varnish cache設(shè)計(jì)架構(gòu).
------------------------------------------------------------------------------------------------------------------
1.編譯安裝varnish:
下載源碼包鏈接:  wget
http://nchc.dl.sourceforge
...
附1:Varnish官方網(wǎng)站:
http://www.varnish-cache.o
...
[root@localhost]#wget
http://blog.s135.com/soft/
...
[root@localhost]#tar zxvf varnish-1.1.2.tar.gz
[root@localhost]#cd varnish-1.1.2
[root@localhost]#./configure --prefix=/usr/local/varnish --enable-debugging-symbols --enable-developer-warnings --enable-dependency-tracking
[root@localhost]#make && make install
2.創(chuàng)建www用戶(hù)和組,以及Varnish緩存文件存放目錄(/var/vcache):
[root@localhost]#/usr/sbin/groupadd www
[root@localhost]#/usr/sbin/useradd -g www www
[root@localhost]#mkdir -p  /usr/local/varnish/var/varnish/
[root@localhost]#chmod +w  /usr/local/varnish/var/varnish/
[root@localhost]#chown -R www:www  /usr/local/varnish/var/varnish/
3.創(chuàng)建Varnish日志目錄(/usr/local/varnish/logs):
[root@localhost]#mkdir -p /usr/local/varnish/logs
[root@localhost]#chmod +w /usr/local/varnish/logs
[root@localhost]#chown -R www:www /usr/local/varnish/logs
[root@localhost]#touch /usr/local/varnish/logs/varnish.log
4.創(chuàng)建Varnish配置文件:
[root@localhost]#vi /usr/local/varnish/vcl.conf
backend myblogserver {
       set backend.host = "192.168.0.1";
       set backend.port = "80";
}
acl purge {
       "localhost";
       "127.0.0.1";
       "192.168.0.0"/24;
       "192.168.1.0"/24;
}
sub vcl_recv {
       if (req.request == "PURGE") {
               if (!client.ip ~ purge) {
                       error 405 "Not allowed.";
               }
               lookup;
       }
       if (req.http.host ~ "^www.test.com") {
               set req.backend = myblogserver;
               if (req.request != "GET" && req.request != "HEAD") {
                       pipe;
               }
               else {
                       lookup;
               }
       }
       else {
               error 404 "Zhang Quan Sheng Cache Server";
               lookup;
       }
}
sub vcl_hit {
       if (req.request == "PURGE") {
               set obj.ttl = 0s;
               error 200 "Purged.";
       }
}
sub vcl_miss {
       if (req.request == "PURGE") {
               error 404 "Not in cache.";
       }
}
sub vcl_fetch {
       if (req.request == "GET" && req.url ~ "\.(txt|js)$") {
               set obj.ttl = 3600s;
       }
       else {
               set obj.ttl = 30d;
       }
}
這里,我對(duì)這段配置文件解釋一下:
(1)、Varnish通過(guò)反向代理請(qǐng)求后端IP為192.168.0.1,端口為80的web服務(wù)器;
(2)、Varnish允許localhost、127.0.0.1、192.168.0.***三個(gè)來(lái)源IP通過(guò)PURGE方法清除緩存;
(3)、Varnish對(duì)域名為
www.test.com
的請(qǐng)求進(jìn)行處理,非
www.test.com
域名的請(qǐng)求則返回"Zhang Quan Sheng Cache Server";
(4)、Varnish對(duì)HTTP協(xié)議中的GET、HEAD請(qǐng)求進(jìn)行緩存,對(duì)POST請(qǐng)求透過(guò),讓其直接訪問(wèn)后端Web服務(wù)器。之所以這樣配置,是因?yàn)镻OST請(qǐng)求一般是發(fā)送數(shù)據(jù)給服務(wù)器的,需要服務(wù)器接收、處理,所以不緩存;
(5)、Varnish對(duì)以.txt和.js結(jié)尾的URL緩存時(shí)間設(shè)置1小時(shí),對(duì)其他的URL緩存時(shí)間設(shè)置為30天。
-------------------------------------------------------------------------------------------------------------------------
5、啟動(dòng)Varnish
ulimit -SHn 51200l
/usr/local/varnish/sbin/varnishd -n /var/vcache -f /usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s file, /usr/local/varnish/var/varnish/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T 127.0.0.1:3500 -p client_http11=on
6.啟動(dòng)varnishncsa用來(lái)將Varnish訪問(wèn)日志寫(xiě)入日志文件:
/usr/local/varnish/bin/varnishncsa -n /usr/local/varnish/var/varnish/ -w  /usr/local/varnish/var/varnish/varnish.log &
7.配置開(kāi)機(jī)自動(dòng)啟動(dòng)Varnish
vi /etc/rc.local
ulimit -SHn 51200l
/usr/local/varnish/sbin/varnishd -n /var/vcache -f /usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s file, /usr/local/varnish/var/varnish/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T 127.0.0.1:3500 -p client_http11=on
/usr/local/varnish/bin/varnishncsa -n /usr/local/varnish/var/varnish/ -w  /usr/local/varnish/var/varnish/varnish.log &
8.優(yōu)化Linux內(nèi)核參數(shù)
vi /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000    65000
---------------------------------------------------------------------------------------------------------------------------
再看看如何管理Varnish:
1.查看Varnish服務(wù)器連接數(shù)與命中率:
/usr/local/varnish/bin/varnishstat
2.通過(guò)Varnish管理端口進(jìn)行管理:
用help看看可以使用哪些Varnish命令:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 help
Available commands:
ping [timestamp]
status
start
stop
stats
vcl.load
vcl.inline
vcl.use
vcl.discard
vcl.list
vcl.show
param.show [-l] []
param.set
help [command]
url.purge
dump.pool
3、通過(guò)Varnish管理端口,使用正則表達(dá)式批量清除緩存:
(1)、例:清除類(lèi)似
http://www.k18.com/a/quans
...的URL地址):
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge /a/
(2)、例:清除類(lèi)似
http://blog.s135.com/tech
的URL地址:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge w*$
(3)、例:清除所有緩存:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge *$
4、一個(gè)清除Squid緩存的PHP函數(shù)(清除Varnish緩存同樣可以使用該函數(shù),無(wú)需作任何修改,十分方便):
function purge($ip, $url)  
{  
    $errstr = '';  
    $errno = '';  
    $fp = fsockopen ($ip, 80, $errno, $errstr, 2);  
    if (!$fp)  
    {  
         return false;  
    }  
    else
    {  
        $out = "PURGE $url HTTP/1.1\r\n";  
        $out .= "Host:blog.s135.com\r\n";  
        $out .= "Connection: close\r\n\r\n";  
        fputs ($fp, $out);  
        $out = fgets($fp , 4096);  
        fclose ($fp);  
        return true;  
    }  
}  
purge("192.168.0.4", "/index.php");  
?>
附2:2007年12月10日,我寫(xiě)了一個(gè)每天0點(diǎn)運(yùn)行,按天切割Varnish日志,生成一個(gè)壓縮文件,同時(shí)刪除上個(gè)月舊日志的腳本
(/usr/local/varnish/var/varnish/cutlog.sh):
/usr/local/varnish/var/varnish/cutlog.sh文件內(nèi)容如下:
#!/bin/sh
# This file run at 00:00
date=$(date -d "yesterday" +"%Y-%m-%d")
pkill -9 varnishncsa
mv /usr/local/varnish/var/varnish/youvideo.log /usr/local/varnish/var/varnish/${date}.log
/usr/local/varnish/bin/varnishncsa -n /usr/local/varnish/var/varnish/ -w /usr/local/varnish/var/varnish/youvideo.log &
mkdir -p /usr/local/varnish/var/varnish/youvideo/
gzip -c /usr/local/varnish/var/varnish/${date}.log > /usr/local/varnish/var/varnish/${date}.log.gz
rm -f /usr/local/varnish/var/varnish/${date}.log
rm -f /usr/local/varnish/var/varnish/youvideo/$(date -d "-1 month" +"%Y-%m*").log.gz
設(shè)置在每天00:00定時(shí)執(zhí)行:

/usr/bin/crontab -e
或者  
vi /var/spool/cron/root
輸入以下內(nèi)容:
引用
0 0 * * * /bin/sh /usr/local/varnish/var/varnish/cutlog.sh
--------------------------------------------------------------------------------------------------------------------------
附3.TCP連接數(shù)Varnish要比Squid少,因?yàn)閂arnish的TCP連接釋放要比Squid快。
但同時(shí)處理的請(qǐng)求數(shù)Varnish要比Squid高一些,一臺(tái)Varnish、另一臺(tái)Squid,分給它們的連接
數(shù)相同,Varnish實(shí)時(shí)處理的請(qǐng)求數(shù)比Squid多1倍,平均處理的請(qǐng)求數(shù)也比Squid多100余個(gè):
/usr/local/webserver/varnish/bin/varnishstat
-----------------------------------------------------------
   70979868       580.97       356.55 Client requests received
   70897998       580.97       356.14 Cache hits
/usr/local/squid/bin/squidclient -p 80 mgr:5min
-----------------------------------------------------------
client_http.requests = 248.425264/sec
client_http.hits = 245.135282/sec
如果正常的話(huà),vcache這個(gè)目錄里只有一個(gè)大小為1G的文件:varnish_cache.data
---------------------------------------------------------------------------------------------------------------------------
五.)Memcachedb
Memcachedb:編譯以及安裝
說(shuō)明: memcachedb跟memcache一樣,網(wǎng)絡(luò)socket數(shù)據(jù)處理依賴(lài)于libevent,所以,在安裝之前需要下載三個(gè)安裝包,即libevent、Berkeley Db以及memcachedb。
Libevent 下載頁(yè)面:
http://monkey.org/~provos/
... ,下載最新穩(wěn)定版本就行。
Berkeley Db下載頁(yè)面:
http://www.oracle.com/tech
... 需要安裝4.6版本
memcachedb下載頁(yè)面:
http://code.google.com/p/m
...下載最新版本 0.1.0版本
按照順序安裝,Libevent和Berkeley Db按照常規(guī)安裝即可,這里以Linux 環(huán)境為標(biāo)準(zhǔn)。
[======Libevent=====]
[root@localhost]#tar -zxvf libevent-1.3e.tar.gz
[root@localhost]#cd libevent-1.3e
[root@localhost]#./configure
[root@localhost]#make && make install
[======Berkeley Db=====]
[root@localhost]#tar -zxvf db-4.6.19.tar.gz
#需要進(jìn)入特定操作系統(tǒng)編譯環(huán)境,更常規(guī)軟件的編譯有些區(qū)別
[root@localhost]#cd db-4.6.19/build_unix/
#然后才能夠開(kāi)始編譯
[root@localhost]#../dist/configure
[root@localhost]#make && make install
#如果沒(méi)有指定特殊安裝路徑,編譯完成,需要將Berkeley Db運(yùn)行庫(kù)的路徑添加到系統(tǒng)配置里面
[root@localhost]#echo "/usr/local/BerkeleyDB.4.6/lib/" >> /etc/ld.so.conf
#重載系統(tǒng)Ld運(yùn)行庫(kù)
[root@localhost]#ldconfig
[======Memcachedb=====]
[root@localhost]#tar -zxvf memcachedb-0.1.0.tar.gz
[root@localhost]#cd memcachedb-0.1.0
#如果您要存儲(chǔ)的內(nèi)容的鍵值的長(zhǎng)度和單筆內(nèi)容的長(zhǎng)度有變化,您需要更改一個(gè)文件 memcachedb.h
[root@localhost]#vi memcachedb.h
////////////////////////////////////////////////////////////
#define END_LEN 32               ----> 這是是 Key+Value 的最大長(zhǎng)度
#define END_LEN_STR "31"     ----> 這是是 key 的最大長(zhǎng)度
/////////////////////////////////////////////////////////
#默認(rèn)key鍵值只預(yù)留了31個(gè)字節(jié)的長(zhǎng)度,單筆數(shù)據(jù)最長(zhǎng)是32個(gè)字節(jié)數(shù)。
#例如您如果需要用這個(gè)玩藝來(lái)存儲(chǔ)文本內(nèi)容數(shù)據(jù),假設(shè)您的鍵值是一個(gè)32個(gè)字節(jié)的md5,單筆數(shù)據(jù)允許最長(zhǎng)10K,那您可以設(shè)定
////////////////////////////////////////////////////////////
#define END_LEN 102400             ----> 這是是 Key+Value 的最大長(zhǎng)度
#define END_LEN_STR "32"           ----> 這是是key的最大長(zhǎng)度
/////////////////////////////////////////////////////////
#修改完之后,直接make就行
[root@localhost]#make
#編譯完之后,將生成可執(zhí)行memcachedb拷貝到 /usr/sbin/
[root@localhost]#cp -f memcachedb  /usr/sbin/
#啟動(dòng) memcachedb
#第一種,讀寫(xiě)合并模式,即不做輔拷貝,即讀又寫(xiě),不做冗余備份
[root@localhost]#memcachedb -p21211 -d -r -u root -H  /data/mdb_11211  -N
#第二種,讀寫(xiě)分離/備份模式
#主服務(wù)器 192.168.0.1 讀寫(xiě)監(jiān)聽(tīng) 11211 ,同步通過(guò)31211的端口完成,不占用繁忙的主服務(wù)端口
[root@localhost]#memcachedb -p21211 -d -r -u root -H  /data/mdb_11211_m -N -R 127.0.0.1:31211 -M
# 輔服務(wù)器 192.168.0.2  只讀監(jiān)聽(tīng) 21212,從192.168.0.1 的 31211端口同步數(shù)據(jù),同時(shí)再開(kāi)一個(gè)31212端口對(duì)外提供數(shù)據(jù)同步服務(wù)
[root@localhost]#memcachedb -p21212 -d -r -u root -H  /data/mdb_11211_from_16801_s -O 192.168.0.1:31211 -R 192.168.0.2:31212 -S


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/26257/showart_1957726.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
linux上nginx的安裝啟動(dòng)以及配合php-fpm的使用
實(shí)戰(zhàn)Nginx與PHP(FastCGI)的安裝、配置與優(yōu)化
樹(shù)莓派搭建網(wǎng)站
Ubuntu nginx部署Wordpress | Darren Fang的生活點(diǎn)滴
unbuntu16.04 php環(huán)境搭建
moodle 2.0.2 安裝圖文教程 2——PHP Mysql環(huán)境搭建和moodle安裝 - 喬木的日志 - ICT教育 - 中小學(xué)信息技術(shù)教育和教育信息化網(wǎng)站
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服