Lnmp之×××
環境說明
Lnmp就是linux +nginx+mysql+php的簡稱,操作系統用linux,web服務器nginx,數據庫服務器是mysql,網頁語言是php。有時也叫lnfmp,就是linux +nginx+mysql+fastcgi+php。Fastcgi 是nginx連接php的接口工具,Fast CGI 是web服務器與你的或其它機器上的程序進行“交談”的一種工具,其程序須運行在網絡服務器上,比如nginx服務器。它的運行服務程序是php-fpm,PHP-fpm 是 一個 PHP FastCGI 進程管理器,Php-fpm可以和任何支持遠端fastCGI的web server工作。
Nginx 是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器其特點是佔有內存少,併發能力強。Nginx 是採用epool機制來作爲工作模式,也就是事件查看機制。Apache服務器是靠進程來處理用戶的請求,派生多個進程,每個進程理論上最多每秒可以接受1024個併發連接請求,並且要爲每個進程開闢內存空間,apache服務器處理請求的速度慢,並且佔用大量的內存空間和cpu。Nginx 是靠線程處理用戶的請求,一個進程可以派生出N個線程,這N個線程佔用一個內存空間,來處理用戶的請求,nginx理論上每秒可以處理的併發連接請求是65535個,所以nginx是佔有內存少,併發能力強,處理數度快,可以做反向代理服務器,用戶把請求發給nginx,nginx再把請求轉發給外面的多臺web服務器,這樣可以實現web服務器可以接受大量的請求。也可以作爲負載均衡服務器,對外面的web服務器進行服務。
環境搭建
Mysql 服務器:採用二進制版本是mysql-5.5.15-linux2.6-i686.tar.gz
Php :採用源碼版本是php-5.3.7.tar.bz2
Linux系統:rhel 5.4
Nginx服務器:nginx-1.0.11.tar.gz
Libevent:libevent-2.0.16-stable.tar.gz
Libevent是nginx採用的事件觸發機制所需要的庫,通知nginx某一個線程已經處理好用戶的請求,需要對用戶進行反饋。
拓撲圖:
安裝過程
一:
安裝二進制的mysql數據庫源碼是mysql-5.5.15-linux2.6-i686.tar.gz
先解壓到/usr/local/
進入到目錄中查看解壓形成的目錄以及文件
打開INSTALL-BINARY文件,這個文件裏包含二進制安裝的基本過程
創建系統賬號和組mysql,把賬號加入到組mysql裏面
給mysql的源目錄創建符號鏈接爲mysql
修改mysql的當前目錄下的所有者和所屬組
執行scripts/mysql_install_db 這個腳本來安裝數據庫和表
然後把當前目錄下的所有者改爲管理員身份root
但是mysql服務的運行者mysql對data目錄要有操作的權限,所以data目錄的所有者還是mysql
拷貝mysql的配置文件的樣例文件成mysql的配置文件名稱是my.cnf
運行/bin/mysqld_safe 這個程序可以保護mysql的數據,這個是可選項
拷貝mysql的服務控制腳本在/support-files/mysql.server 到/etc/init.d/目錄下名稱是mysqld
打開系統環境變量配置文件添加/usr/local/mysql/bin這個路徑時bin目錄下的可執行的二進制文件或程序在任何路徑下都可以運行
切換到lib目錄下面,有庫文件,要想讓系統調用庫文件,需要庫文件加載到緩存文件裏面緩存文件是ld.so.cache,在/etc/ld.so.conf.d目錄下面創建一個任意以.conf格式結尾的文件比如說mysql.conf,內容指明庫文件所在的目錄。
在/etc/man.conf 文件裏添加mysql 的手冊 ,手冊路徑是/usr/local/mysql/man
給頭文件include 做符號鏈接,連接到/usr/include/mysql
添加mysql服務腳本mysqld 到chkconfig,chkconfig主要用來更新(啓動或停止)和查詢系統服務在某種運行級別下的狀態信息。
二:
安裝Libevent源碼
Libevent是nginx採用的事件觸發機制所需要的庫,通知nginx某一個線程已經處理好用戶的請求,需要對用戶進行反饋。
libevent的官網 libevent.org 最新版本是2.0.18
先解壓到/usr/local/src/目錄下
然後直接執行./configure --prefix=/usr/local/ 指明安裝路徑
Make
Make install
切換到/usr/local/lib目錄下會形成很多鏈接的動態庫
因爲這直接安裝到/usr/local/目錄下可執行的二進制文件或程序在/usr/local/bin或/usr/local/sbin目錄下
系統環境變量有這兩個路徑,所以不需要添加路徑
/usr/local/bin/目錄下形成一個可執行的程序event_rpcgen.py
Ldconfig 刷新緩存文件把libevent的動態庫加載到緩存文件中
切換到/usr/local/include目錄下形成很多頭文件給include文件做符號鏈接
三:
安裝nginx服務器源碼是nginx-1.0.11.tar.gz
在安裝nginx服務器時首先要安裝pcre ,pcre是一個正則表達式的函數庫,多應用於開源軟件之中,比如說web服務器和php。
掛載光盤安裝pcre的rpm包,安裝好之後,安裝nginx的源代碼
先解壓到/Usr/local/src目錄下
創建系統用戶和組
groupadd -r nginx
useradd -r -g nginx -s /bin/false -M nginx
配置和安裝指明安裝路徑,配置文件路徑等參數
./configure \
--conf-path=/etc/nginx/nginx.conf \ 配置文件所在的目錄
--error-log-path=/var/log/nginx/error.log \ 用戶訪問的錯誤日誌所在的路徑
--http-log-path=/var/log/nginx/access.log \ 用戶訪問的正確日誌所在的路徑
--pid-path=/var/run/nginx/nginx.pid \ nginx進程id 的文件所在的目錄
--lock-path=/var/lock/nginx.lock \ nginx的鎖文件
--user=nginx \ 指明服務的運行者
--group=nginx \ 指明服務的運行組
--with-http_ssl_module \ 支持ssl協議,安裝時動態加載ssl模塊
--with-http_flv_module \ 支持的格式
--with-http_stub_status_module \ 支持本地狀態的信息輸出
--with-http_gzip_static_module \ 支持解壓縮
--http-client-body-temp-path=/var/tmp/nginx/client/ \ 客戶端訪問時候臨時目錄
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \ nginx做代理時 的臨時目錄
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ fastcgi 工作的臨時目錄
--with-pcre 支持pcre
Make
make install
安裝好之後會形成兩個目錄html 和sbin,html是nginx的站點主目錄,sbin目錄是nginx的服務程序nginx所在的目錄
所以把/usr/local/ngnix/sbin這個目錄加入到系統環境變量中,讓nginx這個服務程序nginx在任何路徑下都可以執行。
手工編輯nginx的控制腳本
添加nginx服務腳本nginx 到chkconfig,chkconfig主要用來更新(啓動或停止)和查詢系統服務在某種運行級別下的狀態信息。
四:
:安裝好之後下面是php-5.3.7.tar.bz2源碼的安裝
Nginx 服務器與php的連接是通過fastCGI,Fast CGI 是HTTP服務器與你的或其它機器上的程序進行“交談”的一種工具,其程序須運行在網絡服務器上,比如apache服務器。它的運行服務程序是php-fpm,PHP-fpm 是 一個 PHP FastCGI 進程管理器,Php-fpm可以和任何支持遠端fastCGI的web server工作。
步驟跟nginx服務器差不多,先解壓到/usr/local/src目錄下 ,進入到目錄裏
1: 先解壓到/usr/local/src,然後執行./configure
./configure \
--prefix=/usr/local/php \ 指明php的安裝目錄
--enable-fpm \ php支持fastcgi
--enable-sockets \ 指明fpm爲服務程序
--with-mysql=/usr/local/mysql \ 指明mysql的安裝目錄
--with-mysqli=/usr/local/mysql/bin/mysql_config \ 指明mysql_config 接口程序的路徑
--enable-mbstring \ 支持多字符串
--enable-xml \ 支持xml格式
--with-png-dir \ 支持png格式的圖片
--with-png \
--with-jpeg-dir \ 支持jpeg格式的圖片
--with-zlib \ 支持解壓縮
--with-freetype-dir \
--with-config-file-path=/etc/php \ php的初始化文件所在的目錄
--with-config-file-scan-dir=/etc/php5.d php php額外安裝的文件所在的目錄
Make
Make install
安裝好之後php目錄下會形成一些目錄bin sbin lib 等目錄
所以把/usr/local/php/sbin /usr/local/hph/bin這兩個目錄加入到系統環境變量中,讓bin sbin目錄下的二進制文件或程序在任何路徑下都可以執行。
打開/etc/profile系統變量文件添加路徑 然後執行./etc/profile 文件
在/etc/man.conf 文件裏添加php 的手冊 ,手冊路徑是/usr/local/php/man
切換到lib目錄下面,沒有庫模塊,所以不需要把lib加載到緩存文件
添加fpm服務腳本php-fpm 到chkconfig,chkconfig主要用來更新(啓動或停止)和查詢系統服務在某種運行級別下的狀態信息。
2:php.ini 文件
進入源碼目錄/usr/local/src/php-5.3.7
cp php.ini-production /etc/php/php.ini
3: php-fpm的控制腳本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
改變權限
chmod a+x /etc/init.d/php-fpm
4:產生php-fpm的配置文件
進入php的安裝目錄usr/local/php/etc目錄下
cp php-fpm.conf.default php-fpm.conf
5: 啓動php-fpm
service php-fpm start
五:測試nginx與php之間的連接
在這個目錄下面創建index.php頁面
測試php與mysql數據庫的連接,只需要在index.php頁面中加入連接數據庫的連接函數,查看函數的返回信息,就可以確定是否連接成功。
重啓mysql服務
關閉mysql服務,出現警告信息,並輸出failed
到這裏說明我們的lnmp 環境應經徹底的搭建完成。