一、編譯安裝apache
1、解決依賴關係
httpd-2.4.4需要較新版本的apr和apr-util,因此需要事先對其進行升級。這裏我們事先下載好了apr-1.4.6.tar.bz2和apr-util-1.5.2.tar.bz2的包。
(1) 編譯安裝apr
- # tar xf apr-1.4.6.tar.bz2
- # cd apr-1.4.6
- # ./configure --prefix=/usr/local/apr
- # make && make install
(2) 編譯安裝apr-util
- # tar xf apr-util-1.5.2.tar.bz2
- # cd apr-util-1.5.2
- # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
- # make && make install
3、修改httpd的主配置文件,設置其Pid文件的路徑
- 編輯/etc/httpd/httpd.conf,添加如下行即可:
- PidFile "/var/run/httpd.pid" #此步驟是爲了我們下一步的腳本使用的
4、提供SysV服務腳本/etc/rc.d/init.d/httpd,以便於我們能夠使用service httpd start開啓和關閉服務,腳本我們已經寫好了,這裏就給大家共享一下:
- #!/bin/bash
- #
- # httpd Startup script for the Apache HTTP Server
- #
- # chkconfig: - 85 15
- # description: Apache is a World Wide Web server. It is used to serve \
- # HTML files and CGI.
- # processname: httpd
- # config: /etc/httpd/conf/httpd.conf
- # config: /etc/sysconfig/httpd
- # pidfile: /var/run/httpd.pid
- # Source function library.
- . /etc/rc.d/init.d/functions
- if [ -f /etc/sysconfig/httpd ]; then
- . /etc/sysconfig/httpd
- fi
- # Start httpd in the C locale by default.
- HTTPD_LANG=${HTTPD_LANG-"C"}
- # This will prevent initlog from swallowing up a pass-phrase prompt if
- # mod_ssl needs a pass-phrase from the user.
- INITLOG_ARGS=""
- # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
- # with the thread-based "worker" MPM; BE WARNED that some modules may not
- # work correctly with a thread-based MPM; notably PHP will refuse to start.
- # Path to the apachectl script, server binary, and short-form for messages.
- apachectl=/usr/local/apache/bin/apachectl
- httpd=${HTTPD-/usr/local/apache/bin/httpd}
- prog=httpd
- pidfile=${PIDFILE-/var/run/httpd.pid}
- lockfile=${LOCKFILE-/var/lock/subsys/httpd}
- RETVAL=0
- start() {
- echo -n $"Starting $prog: "
- LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
- RETVAL=$?
- echo
- [ $RETVAL = 0 ] && touch ${lockfile}
- return $RETVAL
- }
- stop() {
- echo -n $"Stopping $prog: "
- killproc -p ${pidfile} -d 10 $httpd
- RETVAL=$?
- echo
- [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
- }
- reload() {
- echo -n $"Reloading $prog: "
- if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
- RETVAL=$?
- echo $"not reloading due to configuration syntax error"
- failure $"not reloading $httpd due to configuration syntax error"
- else
- killproc -p ${pidfile} $httpd -HUP
- RETVAL=$?
- fi
- echo
- }
- # See how we were called.
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- status)
- status -p ${pidfile} $httpd
- RETVAL=$?
- ;;
- restart)
- stop
- start
- ;;
- condrestart)
- if [ -f ${pidfile} ] ; then
- stop
- start
- fi
- ;;
- reload)
- reload
- ;;
- graceful|help|configtest|fullstatus)
- $apachectl $@
- RETVAL=$?
- ;;
- *)
- echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
- exit 1
- esac
- exit $RETVAL
而後爲此腳本賦予執行權限:
- # chmod +x /etc/rc.d/init.d/httpd
加入服務列表:
- # chkconfig --add httpd
- # chkconfig --level 35 httpd on
- # service httpd restart
將httpd服務命令添加到環境變量中去:
- # vim /etc/profile.d/httpd.sh
- export PATH=$PATH:/usr/local/apache/bin
如此我們的APACHE服務器就算是搭建好了!此時我們啓動服務器,查看一下網頁!
二、安裝mysql-5.6.10
1、準備數據存放的文件系統
新建一個邏輯卷,並將其掛載至特定目錄即可。這裏不再給出過程。
這裏假設其邏輯卷的掛載目錄爲/mydata,而後需要創建/mydata/data目錄做爲mysql數據的存放目錄。
- # fdisk /dev/sda #創建一個20G的分區
- # partprobe /dev/sda #刷新重讀
- # pvcreate /dev/sda6 #創建PV
- # vgcreate myvg /dev/sda6 #創建VG
- # lvcreate -n mydata -L 5G myvg #創建LV
- # mke2fs -j /dev/myvg/mydata #格式化爲ext3
- # mkdir /mydata -pv #創建掛載點
- # vim /etc/fstab #修改爲開機掛載
- # mount -a #掛載至掛載點
- # mkdir /mydata/data #創建一個數據存儲目錄
- # chown -R mysql.mysql /mydata/data/ #修改存儲目錄的屬主屬組
- # chmod o-rx /mydata/data/ #修改其他用戶的讀寫權限
2、新建用戶以安全方式運行進程:
- # groupadd -r -g 306 mysql
- # useradd -g 306 -r -u 306 mysql
- # less INSTALL-BINARY #可以用來查看軟件自帶的安裝說明
- # chown -R mysql.mysql /usr/local/mysql/* #修改安裝文件的屬主屬組
- # chown -R mysql:mysql /mydata/data
3、安裝並初始化mysql-5.5.10
在這裏我們已經下載好了mysql-5.6.10-linux-glibc2.5-i686.tar.gz的軟件包
- # tar xf mysql-5.6.10-linux-glibc2.5-i686.tar.gz -C /usr/local
- # cd /usr/local/
- # ln -sv mysql-5.6.10-linux-glibc2.5-i686 mysql
- # cd mysql
- # chown -R mysql:mysql . #修改文件的屬主屬組
- # scripts/mysql_install_db --user=mysql --datadir=/mydata/data
- # chown -R root .
4、爲mysql提供服務啓動腳本
- # cd support-files/
- # cp mysql.server /etc/init.d/mysqld
- # chmod +x /etc/init.d/mysqld
- 添加到服務啓動列表中 # chkconfig --add mysqld # chkconfig mysqld on
5、爲mysql提供配置文件
- # cd /usr/local/mysql/support-files
- # cp my-default.cnf /etc/my.cnf
這裏需要指定mysql數據文件的存放位置:
datadir = /mydata/data
爲了系統更加安全,這裏我們修改文件的屬主爲root
# chown -R root /usr/local/mysql/*
至此就可以啓動服務了,只是爲了使mysql的使用更符合系統的規範,需要添加環境變量、man文件和頭文件;
6、輸出mysql的man手冊至man命令的查找路徑:
編輯/etc/man.config,添加如下行即可:
MANPATH /usr/local/mysql/man
7、輸出mysql的頭文件至系統頭文件路徑/usr/include:
這可以通過簡單的創建鏈接實現:
# ln -sv /usr/local/mysql/include /usr/include/mysql
8、輸出mysql的庫文件給系統庫查找路徑:
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
而後讓系統重新載入系統庫:
# ldconfig
9、修改PATH環境變量,讓系統可以直接使用mysql的相關命令。
# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
三、編譯安裝php-5.4.13
1、手動編譯安裝
- # tar xf php-5.4.13.tar.bz2
- # cd php-5.4.13
- # ./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 --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
- # make
- # make install
爲php提供配置文件:
# cp php.ini-production /etc/php.ini
2、配置php-fpm
爲php-fpm提供Sysv init腳本,並將其添加至服務列表:
- # cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
- # chmod +x /etc/rc.d/init.d/php-fpm
- # chkconfig --add php-fpm
- # chkconfig php-fpm on
爲php-fpm提供配置文件:
- # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
編輯php-fpm的配置文件:
- # vim /usr/local/php/etc/php-fpm.conf
- 配置fpm的相關選項爲你所需要的值,並啓用pid文件(如下最後一行):
- pm.max_children = 50 #同時允許在線人數
- pm.start_servers = 5 #開始啓動進程數
- pm.min_spare_servers = 5 #最少空閒進程數
- pm.max_spare_servers = 8 #最多空閒進程數
- pid = /usr/local/php/var/run/php-fpm.pid
接下來就可以啓動php-fpm了:
# service php-fpm start
使用如下命令來驗正(如果此命令輸出有中幾個php-fpm進程就說明啓動成功了):
# ps aux | grep php-fpm
默認情況下,fpm監聽在127.0.0.1的9000端口,也可以使用如下命令驗正其是否已經監聽在相應的套接字。
- # netstat -tnlp | grep php-fpm
- tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 689/php-fpm
三、配置httpd-2.4.4
1、啓用httpd的相關模塊
在Apache httpd 2.4以後已經專門有一個模塊針對FastCGI的實現,此模塊爲mod_proxy_fcgi.so,它其實是作爲mod_proxy.so模塊的擴充,因此,這兩個模塊都要加載
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
vim /etc/httpd/httpd.conf
註釋掉中心主機:DocumentRoot
啓用Incude /ect/httpd/extra/httpd-vhosts.conf
2、配置虛擬主機支持使用fcgi
vim /ect/httpd/extra/httpd-vhosts.conf
在相應的虛擬主機中添加類似如下兩行。
ProxyRequests Off 關閉正向代理功能
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
這裏的虛擬地址配置文件我已經做好了:
- <VirtualHost *:80>
- ServerName www.1.com
- DocumentRoot "/web/1.com"
- <Directory "/web/1.com">
- Options none
- AllowOverride none
- Require all granted
- </Directory>
- ProxyRequests Off
- ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/1.com/$1
- ErrorLog "/var/log/httpd/1.com/error_log"
- CustomLog "/var/log/httpd/1.com/access_log" combined
- </VirtualHost>
- <VirtualHost *:80>
- ServerName www.2.com
- <Directory "/web/2.com">
- Options none
- AllowOverride none
- Require all granted
- </Directory>
- ProxyRequests Off
- ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/2.com/$1
- DocumentRoot "/web/2.com"
- ErrorLog "/var/log/httpd/2.com/error_log"
- CustomLog "/var/log/httpd/2.com/access_log" combined
- </VirtualHost>
ProxyRequests Off:關閉正向代理
ProxyPassMatch:把以.php結尾的文件請求發送到php-fpm進程,php-fpm至少需要知道運行的目錄和URI,所以這裏直接在fcgi://127.0.0.1:9000後指明瞭這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。
3、編輯apache配置文件httpd.conf,讓apache能識別php格式的頁面,並支持php格式的主頁
- # vim /etc/httpd/httpd.conf
- 1、添加如下二行
- AddType application/x-httpd-php .php
- AddType application/x-httpd-php-source .phps
- 2、定位至DirectoryIndex index.html
- 修改爲:
- DirectoryIndex index.php index.html
- 充:Apache httpd 2.4以前的版本中,要麼把PHP作爲Apache的模塊運行,要麼添加一個第三方模塊支持PHP-FPM實現。
安裝xcache,爲php加速:
1、安裝
- # tar xf xcache-3.0.1.tar.gz
- # cd xcache-3.0.1
- # /usr/local/php/bin/phpize
- # ./configure --enable-xcache --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/
2、編輯php.ini,整合php和xcache:
首先將xcache提供的樣例配置導入php.ini
- # mkdir /etc/php.d
- # cp xcache.ini /etc/php.d
3,重啓php-fpm 加載模塊
- # service php-fpm restart
4、刷新頁面看 Xcache是否加載進來
最後我們爲給PHP添加phpMyAdmin的站點,以便於通過網頁來訪問和管理我們的數據庫:
- 1, tar xvf phpMyAdmin-3.5.1-all-languages -C /www/a.com ##這裏是網站目錄下
- 2,cd /www/a.com/
- 3, mv phpMyAdmin-3.5.1-all-languages pma
- 4,cd pma
- 5,cp config.sample.inc.php config.inc.php
- 6,vim config.inc.php 添加隨機數 大概在17行
- 7,mysqladmin -uroot password 'redhat'
- 8,登陸 www.1.com/pma
至此,一個完整的能夠通過網頁管理MySQL的LAMP的輕量級WEB服務器就搭建好了!