1. 程式人生 > >源碼手工編譯LNMP架構(內附源碼包)

源碼手工編譯LNMP架構(內附源碼包)

ram may boot 服務腳本 復制 devel root config nginx源碼包

簡介

LNMP指的是一個基於CentOS/Debian編寫的Nginx、PHP、MySQL、phpMyAdmin、eAccelerator一鍵安裝包。可以在VPS、獨立主機上輕松的安裝LNMP生產環境。LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。Linux是一類Unix計算機操作系統的統稱,是目前最流行的免費操作系統。代表版本有:debian、centos、ubuntu、fedora、gentoo等;Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器;Mysql是一個小型關系型數據庫管理系統;PHP是一種在服務器端執行的嵌入HTML文檔的腳本語言。這四種軟件均為免費開源軟件,組合到一起,成為一個免費、高效、擴展性強的網站服務系統。

特點

Nginx是一個小巧而高效的Linux下的Web服務器軟件,是由Igor Sysoev 為俄羅斯訪問量第二的 Rambler 站點開發的,已經在一些俄羅斯的大型網站上運行多年,相當的穩定。Nginx性能穩定、功能豐富、運維簡單、處理靜態文件速度快且消耗系統資源極少。

實驗環境

  • 系統環境:centos6.5
  • 宿主機IP地址:192.168.100.20
  • yum掛載目錄:/mnt/sr0
  • 相關源碼包下載地址:百度雲下載??密碼:40om

一、Nginx安裝

1、準備工作,關閉防火墻及selinux

[root@raid ~]# chkconfig iptables off #隨開機關閉iptables

[root@raid ~]# vim /etc/sysconfig/selinux
技術分享圖片

[root@raid ~]# reboot #重啟Linux生效

2、安裝相關工具包

[root@raid ~]# yum -y install gcc gcc-c++ pcre-devel zlib-devel

3、創建Nginx進程用戶

[root@raid ~]# useradd -M -s /sbin/nologin nginx

4、配置、編譯及編譯安裝Nginx源碼包

[root@raid ~]# tar xvf nginx-1.6.0.tar.gz -C /usr/src/
[root@raid ~]# cd /usr/src/nginx-1.6.0/

[root@raid nginx-1.6.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_stub_status_module

參數解析:

prefix #指定安裝位置
user=nginx #指定nginx系統用戶
group=nginx #指定組
with-http_stub_status_module #指定統計模塊

[root@raid nginx-1.6.0]# make && make install

5、優化路徑

[root@raid nginx-1.6.0]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

6、啟動Nginx服務

[root@raid ~]# vim /usr/local/nginx/conf/nginx.conf #修改主配置文件
技術分享圖片

[root@raid ~]# nginx -t #測試配置是否有語法錯誤
技術分享圖片

[root@raid ~]# nginx #啟動Nginx
[root@raid ~]# netstat -anpt | grep ":80" #檢測服務是否啟動
[root@raid ~]# cat /usr/local/nginx/logs/nginx.pid #查看pid
技術分享圖片

7、停止Nginx服務

[root@raid ~]# kill -1 29050 #平滑重啟Nginx服務。相當於killall -s HUP nginx;nginx -s reload
[root@raid ~]# kill -3 29050 #關閉Nginx服務。相當於killall -s QUIT nginx;nginx -s quit
[root@raid ~]# nginx #重啟服務
[root@raid ~]# cat /usr/local/nginx/logs/nginx.pid #查看pid號
技術分享圖片

8、編輯Nginx服務腳本

[root@raid ~]# vim /etc/init.d/nginx

添加以下腳本:

#!/bin/bash
# chkconfig: 35 99 20
# description:Nginx Server Control Script
PROG="/usr/local/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 (start|stop|restart|reload)"
exit 1 #非正常退出
esac
exit 0 #正常退出

[root@raid ~]# chmod +x /etc/init.d/nginx #賦予權限
[root@raid ~]# chkconfig --add nginx #添加系統服務

二、Mysql安裝

1、卸載PRM方式的mysql-server、mysql

[root@raid ~]# rpm -qa | grep mysql
技術分享圖片

2、安裝相應工具包

[root@raid ~]# yum -y install gcc gcc-c++ ncurses-devel bison libaio-devel ncurses-devel cmake

3、創建進程用戶mysql

[root@raid ~]# useradd -s /sbin/nologin mysql

4、解壓、配置安裝mysql

[root@raid ~]# tar xzvf mysql-5.5.24.tar.gz
[root@raid ~]# cd mysql-5.5.24
[root@raid mysql-5.5.24]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=system \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1 \
-DWITH_SSL=bundled

解析:

DCMAKE_INSTALL_PREFIX:mysql軟件安裝位置
DDEFAULT_CHARSET:默認字符集
DDEFAULT_COLLATION:默認字符校驗
DWITH_EXTRA_CHARSETS:額外的編碼,請使用ALL來編譯
DWITH_MYISAM_STORAGE_ENGINE:安裝 myisam 存儲引擎
DWITH_INNOBASE_STORAGE_ENGINE:安裝 innodb 存儲引擎
DWITH_MEMORY_STORAGE_ENGINE:安裝 memory 存儲引擎
DWITH_READLINE:支持readline庫,支持一行行讀取數據
DENABLED_LOCAL_INFILE:啟用本地加載數據
DMYSQL_DATADIR:數據目錄
DMYSQL_USER:指定mysql的運行用戶
DMYSQL_TCP_PORT=3306:mysql的端口號默認是3306

[root@raid mysql-5.5.24]# make && make install

5、修改mysql安裝目錄的所有者,所屬組

[root@localhost mysql-5.5.24]# chown -R mysql:mysql /usr/local/mysql/

6、創建修改my.cnf配置文件

[root@localhost mysql-5.5.24]# cp support-files/my-medium.cnf /etc/my.cnf

7、添加系統服務

[root@localhost mysql-5.5.24]# vim /etc/profile #修改系統環境變量

最後一行添加:

export PATH=$PATH:/usr/local/mysql/bin/

[root@localhost mysql-5.5.24]# source /etc/profile #重新讀取系統環境變量

[root@localhost mysql-5.5.24]# cp support-files/mysql.server /etc/init.d/mysqld #添加系統服務
[root@localhost mysql-5.5.24]# chmod +x /etc/init.d/mysqld #添加執行權限
[root@localhost mysql-5.5.24]# chkconfig --add mysqld #將mysqld添加為系統服務

8、初始化數據庫

[root@localhost mysql-5.5.24]# /usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql

解析:

user:指定數據庫管理員,也就是是誰管理數據庫
basedir:指定mysql軟件安裝位置
datadir:指定mysql數據安裝位置

[root@localhost mysql-5.5.24]# vim /etc/init.d/mysqld

找到basedir、datadir進行賦值

basedir=/usr/local/mysql #約46行數據庫安裝目錄
datadir=/home/mysql #約47行數據存放目錄

9、重新啟動數據庫

[root@localhost mysql-5.5.24]# service mysqld start
[root@localhost mysql-5.5.24]# netstat -anpt | grep 3306 #查看端口

技術分享圖片

10、訪問mysql

[root@localhost ~]# mysqladmin -u root password ‘123‘#設置新密碼
[root@localhost ~]# mysql -uroot -p123 #登錄mysql
技術分享圖片

三、安裝PHP

1、安裝GD庫關聯程序

[root@localhost ~]# yum install \
libjpeg-devel \
libpng-devel \
freetype-devel \
zlib-devel \
gettext-devel \
libXpm-devel \
libxml2-devel \
fontconfig-devel \
openssl-devel \
openssl-devel \
bzip2-devel \
libxml2 \
libxml2-devel

2、解壓、配置安裝gd(用來處理和生成圖片)

[root@localhost ~]# tar xzvf gd-2.0.35.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/gd/2.0.35/
[root@localhost 2.0.35]# ./configure --prefix=/usr/local/gd
[root@localhost 2.0.35]# make && make install

3、解壓配置安裝php

[root@localhost ~]# tar xjvf php-5.4.5.tar.bz2 -C /usr/src
[root@localhost ~]# cd /usr/src/php-5.4.5/
[root@raid php-5.4.5]# ./configure \
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring \
--with-jpeg-dir \
--with-openssl \
--disable-ipv6 \
--enable-fpm
[root@raid php-5.4.5]# make && make install

4、創建PHP配置文件

[root@raid php-5.4.5]# cp php.ini-development /usr/local/php5/php.ini

5、優化路徑

[root@raid php-5.4.5]# ln -s /usr/local/php5/bin/ /usr/local/bin/
[root@raid php-5.4.5]# ln -s /usr/local/php5/sbin/
/usr/local/sbin/

6、為PHP安裝加速器

[root@raid ~]# tar xvfz ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
[root@raid ~]# cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/
[root@Nginx php-5.3.x]# cp ZendGuardLoader.so /usr/local/php5/lib/php/ #復制ZendGuardLoader模塊至php目錄下

7、配置PHP識別加速器

[root@raid ~]# vim /usr/local/php5/php.ini

末行添加:

[Zend Guard Loader]
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

8、開啟nginx的PHP支持

[root@raid ~]# cd /usr/local/php5/etc/
[root@raid etc]# cp php-fpm.conf.default php-fpm.conf
[root@raid etc]# useradd -M -s /sbin/nologin php
[root@raid etc]# vim php-fpm.conf #模塊化進程管理工具

修改以下參數:

pid = run/php-fpm.pid#在25行去掉註釋,確定pid文件的位置
user = php #在140行指定用戶
group = php #
pm.max_children = 50 #在217行,最多擴延進程數量,先改為50,一個水桶,它代表桶的容積
pm.start_servers = 20 #222行,開啟的進程數,改成20,啟動時,開啟的進程數
pm.min_spare_servers = 5 #227行,最少空閑進程數是5,低於這個數,每秒鐘會產生一個新的進程
pm.max_spare_servers = 20 #232行,最多允許的空間進程數,客戶不連接PHP,最多允許的空間進程數

9、啟動php-fpm

[root@raid ~]# /usr/local/sbin/php-fpm
[root@raid ~]# netstat -lntup | grep 9000
技術分享圖片

10、編輯nginx主配置文件

[root@raid ~]# vim /usr/local/nginx/conf/nginx.conf

將PHP網頁請求,轉給FPM模塊處理:

location ~ .php$ {
root /var/www/html/btcom; # PHP站點目錄
fastcgi_pass 127.0.0.1:9000; # php-fpm監聽地址
fastcgi_index index.php; # 識別的首頁文件
include fastcgi.conf; # 包含fastcgi.conf樣本配置
}

[root@raid ~]# mkdir -p /var/www/html/btcom #創建站點目錄
[root@raid ~]# service nginx restart #重啟服務

四、測試

1、測試php網頁能否正常顯示

[root@raid ~]# vim /var/www/html/btcom/index.php

添加以下內容:

<?php
phpinfo();
?>

技術分享圖片

2、測試PHP網頁能訪問MySQL服務器

[root@raid ~]# vim /var/www/html/btcom/index.php

添加以下內容:

<?php
$link=mysql_connect(‘localhost‘,‘root‘,‘123‘);
if($link) echo "Welcome to Mysql";
mysql_close();
?>

技術分享圖片

源碼手工編譯LNMP架構(內附源碼包)