導航:首頁 > 編程語言 > nginxmemcachedphp

nginxmemcachedphp

發布時間:2022-04-14 22:06:54

Ⅰ zabbix,redis,nginx三者有什麼關系,分別同做什麼語言的伺服器例如:php等,最近被這三個東西搞得很暈

zabbix:是一套伺服器性能監控軟體,這個沒怎麼用過,沒有發言權。
redis:你可以當成是資料庫,和MYSQL差不多(實際上差很多)
nginx:是一個web 伺服器,提供網頁服務(如果它壞了,用戶輸入域名就不能正常訪問網站)
memcached:基於內存的分布式緩存系統,是redis的長江前浪。

這幾個東西和PHP都沒關系,但可以這樣理解:
nginx 可以做php的WEB伺服器
redis 可以做php的資料庫或緩存
memcached 可以做PHP的緩存

zabbix 既然能監控伺服器性能,能把他們全都監控起來?

Ⅱ php7無法安裝memcache擴展 系統 centos-6.8 Nginx-1.10.2 PHP-7.0.13/5.6.28 memcached-1.4

一 下載需要的源碼
所有安裝包均選用最新的。
1. 下載libevent2.0.22
點擊紅色部分下載
下載memcached1.4.24
點擊紅色部分,下載最新版本
下載php擴展memcache3.0.8
選擇需要的版本
二 安裝詳細步驟
首先將以上三個軟體包下載到/tmp目錄下
1. 安裝libevent
cd /tmp #首先進入到該下載包的目錄
tar zxvf libevent-2.0.22-stable.tar.gz #解壓包cd libevent-2.0.22-stable #進入到解壓的目錄./configure --prefix=/usr/local #編譯前配置,生成Makefile文件,路徑可自行更改make; make install #編譯+安裝
1
測試是否安裝成功
看到這些信息,表示成功啦
2. 安裝memcached
cd /tmp #首先進入到該下載包的目錄
tar zxvf memcached-1.4.24.tar.gz #解壓包
cd memcached-1.4.24 #進入到解壓的目錄
./configure –with-libevent=/usr/local #編譯前配置,生成Makefile文件,路徑必須與libevent中一致make; make install #編譯+安裝
1
測試是否安裝成功
表示成功的信息
通過以上操作,就完成了memcached伺服器的安裝。特別的簡單吧!現在就來搞一搞memcache的php擴展安裝吧3. 安裝擴展
cd /tmp #首先進入到該下載包的目錄
tar zxvf memcache-3.0.8.tgz #解壓包
cd memcache-3.0.8 #進入到解壓的目錄
/opt/lampp/bin/phpize #動態為php添加擴展。phpize路徑可能不一致,請根據自己的實際情況./configure –enable-memcache –with-php-config=/opt/lampp/bin/php-config –with-zlib-dir #php-config請根據自己環境情況填寫make; make install #編譯+安裝
1
完成以上步驟時,心情愉悅的點擊了enter,准備喝口水瀟灑一下,結果出現了一下錯誤(這也是我寫這篇博客的原因,要不都懶得記錄了)錯誤信息
看了下代碼錯誤信息,說是zlib.h找不到。找不到就給他安一個嘛。真是的安裝zlib
下載zlib-1.2.8.tar.gz
下載地址:http://www.zlib.net/
如圖:
紅色部分點擊
cd /tmp #首先進入到該下載包的目錄
tar zxvf zlib-1.2.8.tar.gz #解壓包
cd zlib-1.2.8 #進入到解壓的目錄
./configure --prefix=/usr/local/zlib
make; make install #編譯+安裝
1
再進行配置一下系統的文件,載入剛才編譯安裝的zlib生成的庫文件vi /etc/ld.so.conf.d/zlib.conf
加入如下內容後保存退出: /usr/local/zlib/lib也就是添加安裝目錄的文件路徑,庫文件。ldconfig 運行之後就會載入安裝的庫文件了。
OK,到這一步了,此時,重新在memcache的php擴展中執行make;make install命令如果看到以下信息,表示成功:
擴展安裝成功
三 配置php.ini文件
首先通過phpinfo函數,找到php.ini的路徑,我的是:/opt/lampp/etc/php.ini在其中添加如下內容:
修改extension_dir路徑:
extension_dir = 「/opt/lampp/lib/php/extensions/no-debug-non-zts-20121212/」
extension=memcache.so
[Memcache]
memcache.allow_failover = 1
memcache.max_failover_attempts=20
memcache.chunk_size =8192
然後重新啟動apache,再次通過phpinfo查看一下情況。如果有如下內容,表示配置成功:
信息
四 配置memcached伺服器
啟動memcached伺服器
memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid參數說明:
-d選項是啟動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這里是10MB,-u是運行Memcache的用戶,我這里是root,
-l是監聽的伺服器IP地址,如果有多個地址的話,我這里指定了伺服器的IP地址127.0.0.1,-p是設置Memcache監聽的埠,我這里設置了11211,最好是1024以上的埠,-c選項是最大運行的並發連接數,默認是1024,我這里設置了256,按照你伺服器的負載量來設定,-P是設置保存Memcache的pid文件,我這里是保存在 /tmp/memcached.pid2. 結束memcached進行
kill cat /tmp/memcached.pid
3. 檢查memcached是否已經啟動
看到綠色框中內容,就表示完成
五 測試php的memcache擴展
<?php
$mem = new Memcache;
$mem->connect("192.168.12.201", 13001);
$mem->set('key','This is a test!', 0, 60);$val = $mem->get('key');
echo $val;
?>
寫在後面:大家有興趣可以將session改為使用memcache來保存。php自身使用文件的方式,不太好,動不動文件大小總和就上G了。

Ⅲ nginx 支持一致性hash嗎

ngx_http_upstream_consistent_hash 模塊是一個負載均衡器,使用一個內部一致性hash演算法來選擇合適的後端節點。與PHP的memcache模塊memcache.hash_strategy兼容,這意味著可以使用php-memcache模塊將內容存儲到memcached集群中,而後通過nginx在集群中找到值。
該模塊通過使用客戶端信息(如:$ip, $uri, $args等變數)作為參數,使用一致性hash演算法將客戶端映射到後端節點。
該模塊可以根據配置參數採取不同的方式將請求均勻映射到後端機器,比如:
consistent_hash $remote_addr:可以根據客戶端ip映射
consistent_hash $request_uri: 根據客戶端請求的uri映射
consistent_hash $args:根據客戶端攜帶的參數進行映射
指令
語法:consistent_hash variable_name
默認值:none
上下文:upstream
配置upstream採用一致性hash作為負載均衡演算法,並使用配置的變數名作為hash輸入。
安裝

1
2
3
4
5

# wget https://github.com/replay/ngx_http_consistent_hash/archive/master.zip
# unzip master.zip
# ./configure --add-mole=./3thparty/ngx_http_consistent_hash-master
# make
# make install

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

upstream somestream {
consistent_hash $request_uri;
server 10.50.1.3:11211;
server 10.50.1.4:11211;
server 10.50.1.5:11211;
}

...

server {
listen 80;
server_name localhost;

location / {
default_type text/html;
set $memcached_key $request_uri;
memcached_pass somestream;
error_page 500 404 405 = @fallback;
}

location @fallback {
root /srv/www/whatever;
fastcgi_intercept_errors on;
error_page 404 = @404;

set $script $uri;
set $path_info "";

include /usr/local/nginx/conf/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /srv/www/whatever/test.php;
fastcgi_param SCRIPT_NAME $script;
fastcgi_param REQUEST_URI $uri;
fastcgi_pass 127.0.0.1:9000;
}
}

Ⅳ centos 7 下 怎麼設置nginx php mysql memcached redis 開機啟動

直接用lnmp吧,這些都可以給搞定,只需一個一鍵包~
lnmp.org你值得擁有

Ⅳ memcached和redis有什麼用 如果vps只安裝nginx和php,不安裝mysql需要用memcached和redis嗎。

memcache redis 雖然也是資料庫 但和mysql的作用不一樣 這兩種是屬於key value類型的 多用於緩存使用 memcache使用內存緩存數據 redis可使用內存或硬碟 可根據自己的業務要求選擇資料庫

Ⅵ 怎麼把nginx的靜態頁面緩存到memcached

nginx的memcached_mole模塊可以直接從memcached伺服器中讀取內容後輸出,後續的請求不再經過應用程序處理,如php-fpm、django,大大的提升動態頁面的速度。nginx只負責從memcached伺服器中讀取數據,要往memcached寫入數據還得需要後台的應用程序來完成,主動的將要緩存的頁面緩存到memcached中,可以通過404重定向到後端去處理的。
ngx_http_memcached_mole可以操作任何兼用memcached協議的軟體。如ttserver、membase等

Ⅶ nginx緩存與memcache有什麼區別

nginx緩存分兩類,一類是自己緩存一些文件。包括圖片和解析後的PHP等.
也可以控制客戶端緩存的內容和時間.
其次就是做代理,緩存圖片之類的東西。做前端.

memcache緩存的是資料庫信息。第一次讀了資料庫,直接顯示。同時存儲memcache.下次讀。直接去memcache裡面讀就可以

Ⅷ centos7+nginx+php+mysql怎樣實現session會話

構建Tomcat集群
實現session共享之前首先得有一個集群環境,就像談戀愛之前要先有個女朋友是一個道理,我們在/usr目錄下創建一個/tomcat_cluster目錄,並在這個目錄中集群3個Tomcat,很簡單就像這樣:
這里寫圖片描述
然後我們一次修改這三個tomcat的埠,包括shutdown埠、http協議埠以及AJP協議埠。中間的不用說了,前後這兩個埠是為了保證可以同時啟動多個Tomcat,http埠我們分別修改為8081、8082和8083,接下來就可以著手開始配置session共享了。
Kyro序列化session
RT,首先memcached我的版本是1.4.25,在memcached對session的管理策略中,我們選擇kyro,關於memcached-session-manager的版本我這里選擇1.5.1,由於我們使用的是tomcat7所以還需要memcached-session-manager-tc7-1.5.1這個jar包。在此就不一一列舉了,jar包版本很重要否則容易出現沖突,我這里把用到的所有jar包打包上傳,用的時候直接把它們全部復制到tomcat目錄下的lib目錄即可,tomcat-7.0.57版本的話可以直接無腦覆蓋,否則需要跳過重復的jar包,全部jar包的下載地址如下:
linux公社1號FTP伺服器下載
------------------------------------------分割線------------------------------------------FTP地址:ftp //ftp1.linuxidc.com
用戶名:ftp1.linuxidc.com
密碼:www.linuxidc.com
在 2016年LinuxIDC.com\9月\Linux CentOS 7 下通過Memcached實現Session共享\下載方法見 http //www linuxidc.com/Linux/2013-10/91140.htm------------------------------------------分割線------------------------------------------下載完成後即可通過winscp來快速完成tomcat的jar包替換:
這里寫圖片描述
配置說明
jar包準備好的話就分別拷貝到我們集群的3個Tomcat的lib目錄下,然後再分別修改每個Tomcat目錄下的conf/context.xml文件,在其中添加memcached-session-manager的配置。因為我們這里集群了3台Tomcat,所以我們必須使用non-sticky模式,即採用非粘性session管理配置,配置文件如下:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:127.0.0.1:11211" //memcached伺服器地址sticky="false" //注意一定是false
lockingMode="auto"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"sessionBackupTimeout="1000"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
memcached的默認埠號是11211,如果不確定的話可以通過netstat來查看,命令如下:
netstat -tunlp | grep memcached
這樣就可以清楚的看到memcached所佔用的埠:
這里寫圖片描述
沒有其它問題的話就依次啟動三個Tomcat,再啟動Memcached,接著就可以測試session共享了。
測試
配完之後當然要測試一下了,准備一個最簡單的java web項目:
這里寫圖片描述
在IDE創建一個web項目部署後再從tomcat拷貝出來即可,唯一需要改的就是index.jsp,我們看一下裡面的代碼:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<%String sessid = request.getSession().getId();%>
sessionid=<%=sessid%><br/>
This is my JSP page 111111.
<br>
</body>
</html>
頁面也很簡單,只是加入了列印sessionid的代碼,因為我們要根據sessionid去判斷session是否一致,將這個項目分別拷貝至三個Tomcat的webapps目錄下,為了做點區分最好再改一下靜態文本,比如tomcat1下的是「This is my JSP page 111111.」,而tomcat2下的改為222222,同理tomcat3下的改為333333,項目傳完後,依次啟動這三個Tomcat,再啟動memcached,通過瀏覽器訪問看一下結果:
這里寫圖片描述
仔細觀察一下運行結果,可以發現sessionid都是一致的,這也就很好的說明了我們成功的在這三個Tomcat之間共享了session。
總結
簡單記錄一下通過Memcached來實現session共享的全過程,希望對遇到同樣問題的朋友有所幫助,The End。

Ⅸ 反向代理負載均衡的nginx 實現反向代理負載均衡

1)環境:
a. 本地使用Windows系統,然後使用VirutalBox安裝一個虛擬的Linux系統。
在本地的Windows系統上分別安裝nginx(偵聽8080埠)和apache(偵聽80埠)。在虛擬的Linux系統上安裝apache(偵聽80埠)。這樣相當於擁有了1台nginx在前端作為反向代理伺服器;後面有2台apache作為應用程序伺服器(可以看作是小型的server cluster。;-));
b. nginx用來作為反向代理伺服器,放置到兩台apache之前,作為用戶訪問的入口。
nginx僅僅處理靜態頁面,動態的頁面(php請求)統統都交付給後台的兩台apache來處理。也就是說,可以把網站的靜態頁面或者文件放置到nginx的目錄下;動態的頁面和資料庫訪問都保留到後台的apache伺服器上。
c. 如下兩種方法實現server cluster的負載均衡。
假設前端nginx(為127.0.0.1:8080)僅僅包含一個靜態頁面index.html;後 台的兩個apache伺服器(分別為localhost:80和158.37.70.143:80),一台根目錄放置phpMyAdmin文件夾和 test.php(裡面測試代碼為print server1;),另一台根目錄僅僅放置一個test.php(裡面測試代碼為print server2;)。
2)針對不同請求的負載均衡:
a. 在最簡單地構建反向代理的時候(nginx僅僅處理靜態不處理動態內容,動態內容交給後台的apache server來處理),具體的設置為:在nginx.conf中修改:
location ~ .php$ {
proxy_pass 158.37.70.143:80;
}
>;這樣當客戶端訪問localhost:8080/index.html的時候,前端的nginx會自動進行響應;
>;當用戶訪問localhost:8080/test.php的時候(這個時候nginx目錄下根本就沒有該文件),但是通過上面的設置location ~ .php$(表示正則表達式匹配以.php結尾的文件,詳情參看location是如何定義和匹配的),nginx伺服器會自動pass給158.37.70.143的apache伺服器了。該伺服器下的test.php就會被自動解析,然後將html的 結果頁面返回給nginx,然後nginx進行顯示(如果nginx使用memcached模塊或者squid還可以支持緩存),輸出結果為列印 server2。
如上是最為簡單的使用nginx做為反向代理伺服器的例子。
b. 我們現在對如上例子進行擴展,使其支持如上的兩台伺服器。
設置nginx.conf的server模塊部分,將對應部分修改為:
location ^~ /phpMyAdmin/ {
proxy_pass 127.0.0.1:80;
}
location ~ .php$ {
proxy_pass 158.37.70.143:80;
}
上面第一個部分location ^~ /phpMyAdmin/,表示不使用正則表達式匹配(^~),而是直接匹配,也就是如果客戶端訪問的URL是以http://localhost:8080/phpMyAdmin/開頭的話(本地的nginx目錄下根本沒有phpMyAdmin目錄),nginx會自動pass到127.0.0.1:80的Apache伺服器,該伺服器對phpMyAdmin目錄下的頁面進行解析,然後將結果發送給nginx,後者顯示;
如果客戶端訪問URL是http://localhost/test.php的話,則會被pass到158.37.70.143:80的apache進行處理。
因此綜上,實現了針對不同請求的負載均衡。
>;如果用戶訪問靜態頁面index.html,最前端的nginx直接進行響應;
>;如果用戶訪問test.php頁面的話,158.37.70.143:80的Apache進行響應;
>;如果用戶訪問目錄phpMyAdmin下的頁面的話,127.0.0.1:80的Apache進行響應。
3)訪問同一頁面的負載均衡:
即用戶訪問http://localhost:8080/test.php這個同一頁面的時候,實現了兩台伺服器的負載均衡(實際情況中,這兩個伺服器上的數據要求同步一致,這里我們分別定義了列印server1和server2是為了進行辨認區別)。
a. 現在的情況是在windows下nginx是localhost偵聽8080埠;
兩台apache,一台是127.0.0.1:80(包含test.php頁面但是列印server1),另一台是虛擬機的158.37.70.143:80(包含test.php頁面但是列印server2)。
b. 因此重新配置nginx.conf為:
>;首先在nginx的配置文件nginx.conf的http模塊中添加,伺服器集群server cluster(我們這里是兩台)的定義:
upstream myCluster {
server 127.0.0.1:80;
server 158.37.70.143:80;
}
表示這個server cluster包含2台伺服器
>;然後在server模塊中定義,負載均衡:
location ~ .php$ {
proxy_passhttp://myCluster; #這里的名字和上面的cluster的名字相同
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;
}
這樣的話,如果訪問http://localhost:8080/test.php頁面的話,nginx目錄下根本沒有該文件,但是它會自動將其pass到myCluster定義的服務區機群中,分別由127.0.0.1:80;或者158.37.70.143:80;來做處理。上面在定義upstream的時候每個server之後沒有定義權重,表示兩者均衡;如果希望某個更多響應的話例如:
upstream myCluster {
server 127.0.0.1:80weight=5;
server 158.37.70.143:80;
}
這樣表示5/6的幾率訪問第一個server,1/6訪問第二個。另外還可以定義max_fails和fail_timeout等參數。
====================
綜上,通過使用nginx的反向代理伺服器reverse proxy server的功能,將其布置到多台apache server的前端。nginx僅僅用來處理靜態頁面響應和動態請求的代理pass,後台的apache server作為app server來對前台pass過來的動態頁面進行處理並返回給nginx。
通過以上的架構,我們可以實現nginx和多台apache構成的機群cluster的負載均衡。
兩種均衡:
1)可以在nginx中定義訪問不同的內容,代理到不同的後台server;如上例子中的訪問phpMyAdmin目錄代理到第一台server上;訪問test.php代理到第二台server上;
2)可以在nginx中定義訪問同一頁面,均衡(當然如果伺服器性能不同可以定義權重來均衡)地代理到不同的後台server上。如上的例子訪問test.php頁面,會均衡地代理到server1或者server2上。
實際應用中,server1和server2上分別保留相同的app程序和數據,需要考慮兩者的數據同步。

Ⅹ 如何設置nginx和apache

我們依然盡可能採用yum來安裝我們需要的軟體,由系統官方維護的軟體,其安全性和穩定性都值得信賴,並且容易管理,升級方便,但是在CentOS和
RHEL的官方yum源中暫時沒有Nginx等軟體包,所以我們需要使用EPEL的yum源。EPEL是什麼,EPEL的yum源怎麼添加,點擊這里查
看。

本文將要介紹的Nginx+Apache結構,其實就是Nginx做前端,Apache做後端,充分發揮他們各自的優勢之處。Nginx對於高並發性能出
眾,Proxy功能強效率高,佔用系統資源少,而Apache在高並發時對隊列的處理比FastCGI(Nginx需要通過fastcgi等方式運行
php)更好,並且在處理動態php頁面時,mod_php也比php-cgi更穩定更高效。

也就是說,我們的目的是,由Nginx來接收客戶端的請求,如果是動態頁面請求,就交給Apache處理,然後經由Nginx再返回給客戶端,其餘的請
求,則由Nginx自己處理,然後把結果返回給客戶端,。當然了,你完全可以讓Nginx只做Proxy功能,所有的請求都交給
Apache,Tomcat等處理,本文使用前者。

但是,在本文中,我們實現的是在一台伺服器里一個Nginx加一個Apache的簡單結構,在實際應用中,可能前端是由一台或多台Nginx組成的代理伺服器,後端則是多台Apache或其他Web伺服器,再加上多種第三方軟體而組成的集群。

前提約定:假設我們系統默認主站點名是www.server110.com,網站根目錄是/var/www/server110

第一步,安裝並配置Nginx,安裝完之後,配置文件都在/etc/nginx目錄下,主設置文件/etc/nginx/nginx.conf:
[root@test ~]# yum -y install nginx
[root@test ~]# vi /etc/nginx/nginx.conf
user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 2048;
}
http {
include /etc/nginx/mime.types;
include /etc/nginx/proxy.conf;
include /etc/nginx/gzip.conf;
default_type application/octet-stream;
index index.html index.htm index.php;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
tcp_nopush on;
server_tokens off;
keepalive_timeout 60;
server_names_hash_bucket_size 128;
server {
listen 80;
server_name www.server110.com;
root /var/www/server110;
location ~* .*\.(gif|jpg|jpeg|png|bmp|ico|css|js|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {
expires 2d;
}
# 如果你需要客戶端緩存的內容以及媒體,圖片等文件固定放置一些目錄下的話,就把上面那個
# location注釋掉,用下面這種方式
# location ~ ^/(images|javascript|js|css|flash|media|static)/ {
# expires 2d;
#}
location ~ .*\.(php?|cgi|pl|py)$ {
proxy_pass http://127.0.0.1:8888;
}
location ~ /\.ht {
deny all;
}
location ~ /.+\.(inc|conf|cnf) {
deny all;
}
access_log /var/log/nginx/server110-access.log main;
#access_log off
}
# Load config files from the /etc/nginx/conf.d directory
include /etc/nginx/conf.d/*.conf;
}
[root@test ~]# vi /etc/nginx/proxy.conf
proxy_redirect off;
proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';
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 32 4k;
proxy_busy_buffers_size 64k;
[root@test ~]# vi /etc/nginx/gzip.conf
gzip on;
gzip_http_version 1.0;
gzip_disable "MSIE [1-6]\.";
gzip_disable "Mozilla/4";
gzip_comp_level 3;
gzip_proxied any;
gzip_vary on;
gzip_buffers 4 16k;
gzip_min_length 1100;
gzip_types text/plain text/xml text/css application/xml application/xhtml+xml application/rss+xml application/atom_xml application/javascript application/x-javascript;

為了讓nginx.conf簡潔,我把一些相關的共通設定放到同一個專門的文件里,然後在主配置文件nginx.conf里載入。如果你使用了VirtualHost運營多個站點,你可以根據不同站點的需求而配置不同的設定文件,然後分別在各自的server域里載入。

第二步,安裝並配置Apache,配置文件在/etc/httpd/下,我們修改主配置文件/etc/httpd/conf/httpd.conf,配置文件太長,我只寫我需要改的地方:
[root@test ~]# yum -y install httpd
[root@test ~]# vi /etc/httpd/conf/httpd.conf
Listen 80
↓改成
Listen 127.0.0.1:8888
DocumentRoot "var/www/html"
↓改成
DocumentRoot "/var/www/server110"
<Directory "/var/www/html">
↓改成
<Directory "/var/www/server110">
Options Indexes FollowSymLinks
↓改成如下,允許CGI,SSI
Options Includes ExecCGI FollowSymLinks
AllowOverride None
↓改成如下,支持.htaccess
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ServerSignature On
↓改成如下,在現實錯誤頁面的時候不會顯示伺服器和apache的版本
ServerSignature Off
#AddHandler cgi-script .cgi
↓改成如下,cgi腳本使用.cgi,.pl,.py
AddHandler cgi-script .cgi .pl .py

第三步,設置VirtualHost(如果你需要在本機上運營多個站點,否則略過此步):
1.修改/etc/httpd/conf/httpd.conf:
#NameVirtualHost *:80
↓改成如下
NameVirtualHost 127.0.0.1:8888
#追加下面4行,www.server110.com是我們的默認主站
<VirtualHost 127.0.0.1:8888>
ServerName www.server110.com
</VirtualHost>
Include virtual/*.conf

2.修改/etc/nginx/nginx.conf,在server{}域的後面追加如下一句:
include /etc/nginx/virtual/*.conf;

3.假設我們還要在本機上運行一個站點叫www.cooliter.com:
[root@test ~]# mkdir /etc/nginx/virtual/
[root@test ~]# mkdir /etc/httpd/virtual/
[root@test ~]# vi /etc/nginx/virtual/www.cooliter.com.conf
server {
listen 80;
server_name www.cooliter.com;
root /var/www/cooliter;
location ~* .*\.(gif|jpg|jpeg|png|bmp|ico|css|js|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {
expires 24h;
}
location ~ .*\.(php?|cgi|pl|py)$ {
proxy_pass http://127.0.0.1:8888;
}
location ~ /\.ht {
deny all;
}
location ~ /.+\.(inc|conf|cnf) {
deny all;
}
access_log /var/log/nginx/cooliter-access.log main;
#access_log off
}
[root@test ~]# vi /etc/httpd/virtual/www.cooliter.com.conf
<VirtualHost 127.0.0.1:8888>
ServerAdmin [email protected]
DocumentRoot /var/www/cooliter
ServerName www.cooliter.com
UseCanonicalName Off
ErrorLog logs/www.cooliter.com-error_log
CustomLog logs/www.cooliter.com-access_log common
</VirtualHost>

第四步,安裝MySql,參照這篇教程。

第五步,安裝php及其他常用組件:
[root@test ~]# yum -y install php php-mysql php-gd php-xml php-mbstring php-mcrypt

第六步,安裝php加速器eaccelerator和php-pecl-memcached模塊,提高性能:
[root@test ~]# yum install php-eaccelerator php-pecl-memcached

設定文件分別是/etc/php.d/eaccelerator.ini和/etc/php.d/memcached.ini,如果你採用默認設置,就不需要修改設定文件了。

第七步,安裝並配置Zend提供的php加速、解密軟體,yum源里沒有,直接從官方下載即可,不需要編譯,下載的時候注意根據你的系統選擇32位或者64位的版本。
1:如果你用的php是php5.3.x版本,需要安裝的是Zend Guard Loader:
[root@test ~]# tar -xzvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
[root@test ~]# ls ZendGuardLoader-php-5.3-linux-glibc23-i386/
README.txt php-5.3.x
#小提示,看解壓目錄下的README.txt里有使用說明
[root@test ~]# mv -T ZendGuardLoader-php-5.3-linux-glibc23-i386 /usr/lib/php/ZendGuardLoader-php-5.3
[root@test ~]# vi /etc/php.d/zend.ini
#添加如下內容,保存退出
[Zend Guard Loader]
zend_extension="/usr/lib/php/ZendGuardLoader-php-5.3/php-5.3.x/ZendGuardLoader.so"
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3

2:如果你用的php是php5.2或更早的版本,需要安裝的是Zend Optimizer:
[root@test ~]# tar -xzvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
[root@test ~]# ls ZendOptimizer-3.3.9-linux-glibc23-i386
EULA-ZendOptimizer Inventory.xml LICENSE README-ZendOptimizer data md5
#小提示1,看解壓目錄下的README-ZendOptimizer里有使用說明
[root@test ~]# ls ZendOptimizer-3.3.9-linux-glibc23-i386/data
4_2_0_comp 4_3_x_comp 5_0_x_comp 5_2_x_comp
4_2_x_comp 4_4_x_comp 5_1_x_comp poweredbyoptimizer.gif
#小提示2,解壓目錄下的data目錄下根據不同的php版本提供了不同的so文件,假設我們的版本是php5.1.x的
[root@test ~]# mv -T ZendOptimizer-3.3.9-linux-glibc23-i386 /usr/lib/php/ZendOptimizer-3.3.9
[root@test ~]# vi /etc/php.d/zend.ini
#添加如下內容,保存退出
[Zend Optimizer]
zend_optimizer.optimization_level=1
zend_extension = "/usr/lib/php/ZendOptimizer-3.3.9/data/5_1_x_comp/ZendOptimizer.so"

第八步,啟動Apache和Nginx,並測試(MySql就不測試了):
[root@test ~]# /etc/init.d/httpd start
[root@test ~]# /etc/init.d/nginx start
[root@test ~]# chkconfig httpd on
[root@test ~]# chkconfig nginx on
[root@test ~]# mkdir /var/www/server110
[root@test ~]# echo "hello,server110" > /var/www/server110/index.html
[root@test ~]# echo -e "<?php\nphpinfo();" > /var/www/server110/index.php

打開瀏覽器分別訪問一下index.html和index.php,然後關閉Apache,再分別訪問一下(php頁面應該就訪問不了了)。

測試gzip是否有效,因為我們設置了gzip_min_length為1100,所以低於1100bytes的頁面不會壓縮,你測試的頁面內容最好大於1100bytes。
[root@test ~]# curl -I -H "Accept-Encoding:gzip,deflate" http://www.cooliter.com/test.txt
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 22 Jul 2011 04:45:30 GMT
Content-Type: text/plain
Last-Modified: Fri, 22 Jul 2011 04:40:30 GMT
Connection: keep-alive
Vary: Accept-Encoding
Expires: Sun, 24 Jul 2011 04:45:30 GMT
Cache-Control: max-age=172800
Content-Encoding: gzip <---證明伺服器支持gzip壓縮

後話,本文旨在介紹這種結構的搭建方法,所以用到的配置參數比較少,關於更詳細的參數設置和優化,需要讀者你自己根據實際情況結合官方幫助文檔進一步去測試。

閱讀全文

與nginxmemcachedphp相關的資料

熱點內容
java定義數據類型 瀏覽:874
安卓pdf手寫 瀏覽:427
什麼是app開發者 瀏覽:284
android鬧鍾重啟 瀏覽:101
程序員失職 瀏覽:518
在雲伺服器怎麼改密碼 瀏覽:586
伺服器pb什麼意思 瀏覽:940
51駕駛員的是什麼app 瀏覽:670
php靜態變數銷毀 瀏覽:886
編程買蘋果電腦 瀏覽:760
flac演算法 瀏覽:497
reactnative與android 瀏覽:663
程序員是干什麼的工作好嗎 瀏覽:258
kbuild編譯ko 瀏覽:469
條件編譯的宏 瀏覽:564
韓語編程語言 瀏覽:646
小程序開發如何租用伺服器 瀏覽:80
怎麼把釘釘文件夾保存到手機里 瀏覽:71
兵法pdf 瀏覽:645
app格式化下載不起怎麼辦 瀏覽:36