-1 建設環境
建立lv邏輯卷
新安裝一個硬盤25G sdb
#fdisk /dev/sdb
#pvcreate /dev/sdb1
#vgcreate vgmysql /dev/sdb1
#lvcreate -L 20G -n lvmysql vgmysql
#vim /etc/fstab
/dev/mapper/vgmysql-lvmysql /mydata/data ext4 defaults 0 0
#mkdir /mydata
#mount -a
#mkdir /mydata/data
#cd /mydata && chown -R mysql:mysql data && chmod -R 770 data
#vim /etc/yum.repos.d/fedora.repo
[fedora_epel]
name=fedora_epel
baseurl=http://mirror.sohu.com/fedora-epel/6Server/x86_64/
gpcheck=0
#yum repolist
#yum groupinstall "Server Platform Development"
#yum groupinstall "Desktop Platform Development"
-2 編譯httpd
#tar xf httpd-***.tar.gz
#cd httpd-***
#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event
主目錄位置:/usr/local/apache
配置文件位置:若已經安裝過httpd的話,則--sysconfdir=/etc/httpd+版本號
apr-util位置:/usr/local/apr-util
apr位置:/usr/local/apr
- 編譯過程當中,可能會出現的問題:apr-util/apr/pcre沒有安裝,則安裝對應的軟件便可
- apr軟件安裝
-
- ./configure --prefix=/usr/local/apr && make && make install
- apr-util軟件安裝
- ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
- pcre直接經過yum install pcre-devel安裝
環境變量修改
#vim /etc/profile.d/httpd.sh
export PATH=/usr/local/apache/bin:$PATH
#. /etc/profile.d/httpd.sh
啓動腳本,這裏借用rpm包的啓動腳本(也能夠直接經過/usr/local/apache/bin/apachectl控制)
#vim /etc/rc.d/init.d/httpd
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
#chkconfig --add httpd
#chkconfig httpd on
修改配置文件,啓用最基本的httpd,並測試
#vim /etc/httpd/httpd.conf
Directoryindex index.html
- 關於php-fcgi的修改(若沒有啓用php-fcgi,則不需此步)[須要配合php編譯中的php-fcgi參數]
-
- 修改httpd配置文件,啓動httpd代理模塊和fcgi模塊
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-sources .phps
DirectoryIndex index.php
ProxyRequests Off 關閉正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
這裏的/path/to/document_root是網站根路徑
2.4版本中,vhost啓用前,先開啓主配置文檔中的Include /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/www/magedu.com"
ServerName magedu.com
ServerAlias www.magedu.com
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/magedu.com/$1
<Directory "/www/magedu.com">
Options none
AllowOverride none
Require all granted
</Directory>
</VirtualHost>
-4 mysql編譯(這裏採用二進制包)
#ln -sv /usr/local/mysql-*** /usr/local/mysql
#useradd -r mysql
#cd /usr/local/mysql
#chown -R root:mysql .
權限很是重要
#cd support-files
#mv /etc/my.cnf /etc/my.cnf.bak
#cp my.large.cnf /etc/my.cnf
#vim /etc/my.cnf
在[mysql]標籤下添加數據庫目錄路徑,默認mysql的socket文件在/tmp/mysql.sock
datadir
=
/mydata
/data
basedir
=
/usr
/local
/mysql
#修改線程(修改成物理cpu核心的2倍)
thread_concurrency
=
2
#cp mysql.server /etc/rc.d/init.d/mysqld
#chkconfig --add mysqld
#chkconfig mysqld on
- 庫/頭/環境變量設置
#ln -sv /usr/local/mysql/include /usr/include 有時候不能夠,則用下面命令
ln
-sv
/usr
/local
/mysql
/include
/
*
/usr
/local
/include [加載php的pdo
-mysql的時候須要此步驟]
#vim /etc/ld.so.conf.d/mysql.conf
/usr
/local
/mysql
/lib
#ldconfig -v | grep mysql
#vim /etc/profile.d/mysql.sh
export PATH
=
/usr
/local
/mysql
/bin
:$PATH
#. /etc/profile.d/mysql.sh
#cd /usr/local/mysql/scripts
#./mysql_install_db --user=mysql --datadir=/mydata/data --basedir=/usr/local/mysql
報錯:
/usr
/local
/mysql
/bin
/mysqld
: error
while loading shared libraries
: libaio.so.
1
: cannot open shared object file
: No such file
or directory
解決:安裝libaio
-devel和libaio包
#chown -R mysql:mysql /mydata/data
#chmod -R 700 /mydata/data
- 受權httpd能夠遠程登陸mysql(mysql單獨分離則需此步驟)[遠程受權,還須要配合php中的PDO-mysql模塊]
#mkdir /mydata/data/dbname
#chown -R mysql:mysql /mydata/data/dbname
#chmod -R 700 /mydata/data/dbname
#mysqladmin -uroot password 123456
#mysql -uroot -p123456
>GRANT ALL PRIVILEGES ON dbname.
* TO
'admin'@
'http_ip' IDENTIFIED BY
'password' [with grant option];
>FLUSH PRIVILEGES;
將http_ip和password和http_ip替換成對應的數據
受權admin帳戶在http_ip端登陸mysql,並受權能夠在dbname數據庫操做的權限
-5 memcached緩存安裝[須要配合php的memcache模塊]
memcached依賴於libevent API,所以要事先安裝之,項目主頁:http://libevent.org/,讀者可自行選擇須要的版本下載。本文采用的是目前最新版本的源碼包libevent-2.0.21-stable.tar.gz。安裝過程:
# tar xf libevent-2.0.21-stable.tar.gz
# cd libevent-2.0.21
# ./configure --prefix=/usr/local/libevent
# make && make install
# echo "/usr/local/libevent/lib" > /etc/ld.so.conf.d/libevent.conf
# ldconfig -v | grep libevent
# tar xf memcached-1.4.15.tar.gz
# cd memcached-1.4.15
# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
# make && make install
啓動腳本建立及修改
#vim /etc/profile.d/memcached.sh 建立環境變量
export PATH
=
/usr
/local
/memcached
/bin
:$PATH
#cp scripts/memcached.sysv /etc/rc.d/init.d/memcached
#chmod +x /etc/rc.d/init.d/memcached
#vim /etc/rc.d/init.d/memcached 內含啓動時所用帳戶/內存大小
添加.
/etc
/profile.d
/memcached.sh 添加環境變量
--默認啓動腳本會去
/bin下找memcached,故需在啓動腳本中加入
修改USER
=root 修改啓動帳戶
#mkdir /var/run/memcached 建立pid路徑
# telnet 127.0.0.1 11211
add命令格式(添加一個緩存):add keyname flag timeout datasize --flag標示號 timeout存儲時間s datasize字段長度
get命令格式(獲取一個緩存):get keyname
如:添加
add mykey 0 10 12
--add添加
Hello world!
--輸入12字節的存儲信息
如:獲取
get mykey
--get獲取
VALUE mykey 0 12
Hello world!
END
退出telnet
ctrl+]
\q
-6 php編譯
- 進入安裝目錄,並編譯安裝
#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts --enable-fpm
--enable-fpm --with-http_stub_status_module
此處php的mysql環境所須要的庫和頭能夠直接調用mysql二進制安裝包的文件,即將第四步的安裝包解壓至http端的/usr/local/,並更名mysql,以後進行第四步的庫/頭/環境變量設置ln -sv /usr/local/mysql/include/* /usr/local/include
-
- --with-mcrypt 加密工具(libmcrypt,mhash),phpmyadmin須要
- --with-apxs2 apache鉤子,意思就是將php改爲模塊化
- --enable-maintainer-zts 代表支持apache_mpm的worker和event(若apache是prefork,則不需添加)
- --enable-fpm 使php支持fastcgi模式(若php不工做在fcgi模式下,則不需添加)
- --with-config-file-scan-dir=/etc/php.d 代表php在讀取配置文件的時候,同時讀取php.d下的*.ini額外配置文件,通常模塊配置文件存放此處
- 複製配置文件
#cp php.ini-production /etc/php.ini
#mkdir /etc/php.d
- 關於php-fcgi的修改(若沒有啓用php-fcgi,則不需此步)[須要配合httpd服務,且須要修改httpd配置]:
-
#cp sapi/fpm/init.d.php-fpm到/etc/rc.d/init.d/php-fpm 並添加進chkconfig
#chkconfig --add php-fpm
#chkconfig php-fpm on
#chmod u+x /etc/rc.d/init.d/php-fpm

若是想實現daemon的效果,則須要修改啓動文件,加入如下指令
首行加入[
-f
/etc
/rc.d/init.d
/function ]
&& .
/etc
/rc.d/init.d
/function
在
case $
1
in
start)
daemon
*
*
*
#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
pidfile pid路徑,默認路徑是/usr/local/php/var/run/php-fpm,此處若是修改到其餘位置,可能會由於權限問題沒法建立,致使php-fpm沒法啓動
error_log 錯誤日誌路徑
pm.max_children = 50 每一個線程最大請求
pm.start_servers = 5 啓動時建立的工做線程
pm.min_spare_servers = 2 空閒時保留的最小工做線程
pm.max_spare_servers = 8 空閒時保留的最大工做線程
listen 監聽的ip和端口
- 關於php加速器xcache(可不安裝,建議安裝)
-
- 進入xcache安裝包,執行phpize程序,以來識別xcache
cd /xcache
/usr/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
安裝完成後,會出現
安裝結束時,會出現相似以下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
#cp xcache.ini /etc/php.d
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
#service php-fpm restart
#php -v
看是否存在xcache模塊
- 關於php與遠程mysql相連(若http與mysql同一臺設備,則無需此步)[須要配合mysql遠程受權]
-
- 進入pdo_mysql安裝包,執行phpize程序,以來識別pdo
cd /pdo_mysql
/usr/local/php/bin/phpize
./configure --with-pdo-mysql=/usr/local/mysql --with-php-config=/usr/local/php/bin/php-config
安裝完成後,會出現
安裝結束時,會出現相似以下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
注意:若報mysql.h找不到,則在本地環境下安裝mysql二進制包,並創建頭文件的連接
vim /etc/php.d/pdo_mysql.ini
[pdo_mysql]
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/pdo_mysql.so
-
- 關於php與memcached相連(緣由在於memcached屬於半客戶端、半服務端,所用若是php不支持,是沒法緩存php程序的)[須要配合memcached服務器]
-
- 編譯安裝模塊memcache(是memcache而不是memcached)
#cd memcache/
#phpize
#./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
#make
#make install
安裝完成後,會出現
安裝結束時,會出現相似以下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
vim /etc/php.d/memcache.ini
[memcache]
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/memcache.so
-
- service php-fpm restart
- 測試
建立php測試頁
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211) or die("Could not connect");
$version = $mem->getVersion();
echo "Server's version: ".$version."<br/>\n";
$mem->set('hellokey', 'Hello World', 0, 600) or die("Failed to save data at the memcached server");
echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";
$get_result = $mem->get('hellokey');
echo "$get_result is from memcached server.";
?>
若輸出以下信息,則表示安裝成功:
Server's version: 1.4.15
Store data in the cache (data will expire in 600 seconds)
Hello World is from memcached server.