LAMP環境搭建
提供軟件包:
httpd:httpd.2.4.27.tar.gz 源碼包在 http://httpd.apache.org
apr、apr-util:需要在官網上下載 http://apr.apache.org
openssl-devel、pcre-devel:yum安裝即可
最新版本的apr-util還需要安裝expat-devel-2.0.1-11.el6_2.x86_64 在光盤上就有這個包
Php:php-5.6.31-tar .gz 源碼包在 https://www.php.net/
Mcrypt擴展:libmcrypt-2.5.8-9.el6.x86_64.rpm、
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm:百度搜索
Xcache加速 xcache-3.2.0.tar.gz 源碼包在http://xcache.lighttpd.net/
Mysql:mysql-5.5.33-linux2.6-x86_64.tar.gz
源碼包:https://www.mysql.com/downloads/
系統環境 centos.6.5 X86_64三臺
第一臺安裝httpd:IP地址為:192.168.0.201 負責外網訪問
10.0.0.1 負責跟php服務器通信
第二臺安裝php:IP地址為:10.0.0.2負責跟web通信
11.0.0.1負責跟mysql通信
第三臺安裝mysql:IP地址為:11.0.0.2負責跟php通信
第一臺機器安裝:
httpd編譯安裝,提供開發環境,安裝
# yum -y install gcc openssl-devel pcre-devel
//編譯apr # tar xf apr-1.6.2.tar.gz # cd apr-1.6.2 # ./configure --prefix=/usr/local/apr # make && make install //編譯apr-util # tar xf apr-util-1.6.0.tar.gz # cd apr-util-1.6.0 # ./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr-util # make && make install //編譯安裝httpd # tar xf httpd-2.4.27.tar.bz2 # cd httpd-2.4.27 # ./configure --prefix=/usr/local/httpd24 --sysconfdir=/etc/httpd24 --enable-so(支持DSO方式動態加載模塊) --enable--ssl(開啟https) --enable-cgi(支持cgi機制) --enable-rewrite(支持URL重寫) --with-zlib(支持壓縮) --with-pcre(支持poolcgi) --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modeles=most(啟用大多數常用的模塊) --enable-mpms-shared=all(安裝所有mpm運行方式模塊) --with-mpm=event(默認的運行方式) # make && make install # ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-so --enable-mpms-shared=all --enable-cgi --enable-rewrite --enable-modeles=most --enable-ssl --with-zlib --with-mpm=event --with-pcre --with-apr-util=/usr/local/apr-util # make && make install
編譯安裝完成
鏈接:http://pan.baidu.com/s/1jIeLOqE 密碼:o4vc
下載上述的httpd啟動腳本,然後上傳到linux系統,也可以自己安裝系統自帶的httpd來復制腳本
謹記:安裝系統httpd所提供的httpd需要把上述所安裝的目錄和配置文件存放的目錄跟系統的httpd存放目錄不能重
[[email protected] ~]# cp httpd /etc/init.d/ [[email protected] ~]# chmod +x /etc/init.d/httpd //給httpd執行權限 [[email protected] ~]# chkconfig --add httpd [[email protected] ~]# vim /etc/init.d/httpd 修改如下三項 apachectl=/usr/sbin/apachectl 修改為你安裝的目錄的二進制文件/usr/local/httpd/bin/apachetl httpd=${HTTPD-/usr/sbin/httpd} 修改為你安裝的目錄的二進制文件/usr/local/httpd/bin/httpd pidfile=${PIDFILE-/var/run/httpd/httpd.pid} 在系統上創建一個/var/run/httpd目錄或者把run後面的httpd目錄取消變成/var/run/httpd.pid 修改httpd配置文件添加 /etc/httpd/httpd.conf PidFile “/var/run/httpd.pid” //跟上面pidfile一定要對應,不然不能關閉httpd服務 [[email protected] ~]# service httpd rstart
後續配置:
導出二進制文件
vim /etc/profile.d/httpd.sh export PATH=$PATH:/usr/local/httpd/bin
導出頭文件
ln -sv /usr/local/httpd/include/ /usr/include/httpd
導出man文件
vim /etc/man.config MANPATH /usr/local/httpd/man
第二臺機器安裝:php
提供開發環境,安裝gcc編譯器及openssl-devel開發包
Rpm安裝:libmcrypt-2.5.8-9.el6.x86_64.rpm,libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
[[email protected] ~]# rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm warning: libmcrypt-2.5.8-9.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY Preparing... ########################################### [100%] 1:libmcrypt ########################################### [100%] [[email protected] ~]# rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm warning: libmcrypt-devel-2.5.8-9.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY Preparing... ########################################### [100%] 1:libmcrypt-devel ########################################### [100%] [[email protected] ~]#
編譯安裝php:
編譯安裝時,要提供環境 解決依賴關系 libxml2-devel openssl-devel bzip2-devel
[[email protected] ~]# tar xf php-5.6.31.tar.bz2 [[email protected] ~]# ls anaconda-ks.cfg libmcrypt-2.5.8-9.el6.x86_64.rpm php-5.6.31.tar.bz2 install.log libmcrypt-devel-2.5.8-9.el6.x86_64.rpm phpMyAdmin-4.0.5-all-languages.zip install.log.syslog php-5.6.31 xcache-3.2.0.tar.gz [[email protected] ~]# cd php-5.6.31 [[email protected] php-5.6.31]# # ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config(mysql另外一種通信機制) --enable-mbstring(支持多字節子串) --with-freetype-dir(字體相關) --with-jpeg-dir --with-png-dir --with-zlib(支持壓縮) --with-libxml-dir=/usr --enable-xml --enable-sockets(支持基於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(如果上面使用了event選項這裏必須使用zts);本地安裝mysql時使用 ./configure --prefix=/usr/local/php --with-openssl --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --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;mysql在其他主機上是使用
說明:如果使用PHP5.3以上版本,為了鏈接MySQL數據庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認設置了。
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
部分排錯:
如上圖所示檢查到gcc編譯器未安裝:yum -y install gcc安裝即可
安裝之前要先把yum配置好
如上圖所示缺少軟件包libxml2,一般編譯安裝都是安裝開發包
yum -y install libxml2-devel
缺少openssl開發包
yum -y install openssl-devel
缺少bzip2-devel
yum -y install bzip2-devel
檢查環境成功
# make && make install
編譯php完成
第三臺機器安裝mysql
因用的是編譯好的Mysql數據庫,就不用安裝上面所說的開發環境了
[[email protected] ~]# ls anaconda-ks.cfg install.log install.log.syslog mysql-5.5.33-linux2.6-x86_64.tar.gz [[email protected] ~]# tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/ 提示:將mysql解壓到/usr/local/目錄下 [[email protected] ~]# ln -sv /usr/local/mysql-5.5.33-linux2.6-x86_64/ /usr/local/mysql //建立mysql軟連接 `/usr/local/mysql‘ -> `/usr/local/mysql-5.5.33-linux2.6-x86_64/‘ [[email protected] ~]# cd /usr/local/mysql [[email protected] mysql]# groupadd -r mysql //創建mysql組 [[email protected] mysql]# useradd -r -s /sbin/nologin -g mysql mysql //創建mysql系統用戶 [[email protected] mysql]# ll total 200 drwxr-xr-x. 2 root root 4096 Aug 16 23:33 bin -rw-r--r--. 1 7161 wheel 17987 Jul 15 2013 COPYING drwxr-xr-x. 3 root root 4096 Aug 16 23:33 data drwxr-xr-x. 2 root root 4096 Aug 16 23:33 docs drwxr-xr-x. 3 root root 4096 Aug 16 23:33 include -rw-r--r--. 1 7161 wheel 134493 Jul 15 2013 INSTALL-BINARY drwxr-xr-x. 3 root root 4096 Aug 16 23:33 lib drwxr-xr-x. 4 root root 4096 Aug 16 23:33 man drwxr-xr-x. 10 root root 4096 Aug 16 23:33 mysql-test -rw-r--r--. 1 7161 wheel 2496 Jul 15 2013 README drwxr-xr-x. 2 root root 4096 Aug 16 23:33 scripts drwxr-xr-x. 27 root root 4096 Aug 16 23:33 share drwxr-xr-x. 4 root root 4096 Aug 16 23:33 sql-bench drwxr-xr-x. 3 root root 4096 Aug 16 23:33 support-files [[email protected] mysql]# chown -R root:mysql * //將此目錄下的所有文件屬主改為root屬組改為mysql [[email protected] mysql]# ll total 200 drwxr-xr-x. 2 root mysql 4096 Aug 16 23:33 bin -rw-r--r--. 1 root mysql 17987 Jul 15 2013 COPYING drwxr-xr-x. 3 root mysql 4096 Aug 16 23:33 data drwxr-xr-x. 2 root mysql 4096 Aug 16 23:33 docs drwxr-xr-x. 3 root mysql 4096 Aug 16 23:33 include -rw-r--r--. 1 root mysql 134493 Jul 15 2013 INSTALL-BINARY drwxr-xr-x. 3 root mysql 4096 Aug 16 23:33 lib drwxr-xr-x. 4 root mysql 4096 Aug 16 23:33 man drwxr-xr-x. 10 root mysql 4096 Aug 16 23:33 mysql-test -rw-r--r--. 1 root mysql 2496 Jul 15 2013 README drwxr-xr-x. 2 root mysql 4096 Aug 16 23:33 scripts drwxr-xr-x. 27 root mysql 4096 Aug 16 23:33 share drwxr-xr-x. 4 root mysql 4096 Aug 16 23:33 sql-bench drwxr-xr-x. 3 root mysql 4096 Aug 16 23:33 support-files [[email protected] mysql]#
創建存放mysql數據庫的目錄,如果有條件可以使用單獨的硬盤存儲
[[email protected] mysql]# mkdir /data [[email protected] mysql]# [[email protected] mysql]# scripts/mysql_install_db --datadir=/data --user=mysql //執行數據庫初始化腳本,數據存放到/data目錄下,使用mysql用戶運行
執行數據庫初始腳本完成
配置mysql配置文件
將/etc/my.cnf重命名為/etc/my.cnf.bak
[[email protected] mysql]# cp support-files/my-large.cnf /etc/my.cnf
在my.cnf中[mysqld]條目下添加
datadir=/data
設置服務腳本
[[email protected] mysql]# cp -p support-files/mysql.server /etc/init.d/mysqld [[email protected] mysql]# chkconfig --add mysqld //添加到chkconfig列表中可以使用service 調用 [[email protected] mysql]# chkconfig mysqld on //開機啟動 [[email protected] mysql]# service mysqld start
新安裝的數據庫是沒有密碼的
後續工作
導出二進制文件
vim /etc/profile.d/mysql.sh export PATH=$PATH:/usr/local/mysql/bin
導出頭文件
ln -sv /usr/local/mysql/include/ /usr/include/mysql
導出庫文件
ldconfig -p 查看所有加載的庫文件 vim /etc/ld.so.conf.d/mysqld.conf /usr/local/mysql/lib ldconfig -v 重新加載庫文件
導出man文件
vim /etc/man.config MANPATH /usr/local/mysql/man
配置mysql服務器
[[email protected] ~]# mysql 刪除空賬號 mysql> use mysql; Database changed mysql> select user,host,password from user; +------+-----------+----------+ | user | host | password | +------+-----------+----------+ | root | localhost | | | root | mysql | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | | mysql | | +------+-----------+----------+ 6 rows in set (0.02 sec) mysql> drop user [email protected]; Query OK, 0 rows affected (0.00 sec) mysql> drop user [email protected]; Query OK, 0 rows affected (0.00 sec) mysql> select user,host,password from user; +------+-----------+----------+ | user | host | password | +------+-----------+----------+ | root | localhost | | | root | mysql | | | root | 127.0.0.1 | | | root | ::1 | | +------+-----------+----------+ 4 rows in set (0.00 sec) 設置密碼 mysql> update user set password=password(‘密碼‘); Query OK, 4 rows affected (0.02 sec) Rows matched: 4 Changed: 4 Warnings: 0 創建允許php登錄的用戶並授權 mysql> grant all on *.* to [email protected] identified by ‘123456‘; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye
至此,mysql配置完成
配置php
提供配置文件 [[email protected] php-5.6.31]# pwd /root/php-5.6.31 [[email protected] php-5.6.31]# cp php.ini-production /etc/php.ini 提供開機啟動腳本 [[email protected] php-5.6.31]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [[email protected] php-5.6.31]# chmod +x /etc/init.d/php-fpm [[email protected] php-5.6.31]# chkconfig --add php-fpm 為php-fpm提供配置文件 [[email protected] php-5.6.31]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
編輯php-fpm的配置文件: # vim /usr/local/php5/etc/php-fpm.conf 配置fpm的相關選項為你所需要的值,並啟用pid文件(如下最後一行): pid = run/php-fpm.pid listen = 127.0.0.1:9000 監聽的IP及端口 改為 listen = 9000 pm.max_children = 50 最多最大子進程數 pm.start_servers = 5 啟動幾個進程 pm.min_spare_servers = 2最小線程數 pm.max_spare_servers = 8最大線程數 接下來就可以啟動php-fpm了: # service php-fpm start 使用如下命令來驗正(如果此命令輸出有中幾個php-fpm進程就說明啟動成功了): # ps aux | grep php-fpm 默認情況下,fpm監聽在127.0.0.1的9000端口 也可以使用如下命令驗正其是否已經監聽在相應的套接字。 [[email protected] php-5.6.31]# netstat -tnlp |grep php tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 119616/php-fpm [[email protected] php-5.6.31]# ss -tnlp |grep php LISTEN 0 128 *:9000 *:* users:(("php-fpm",119616,7),("php-fpm",119617,0),("php-fpm",119618,0),("php-fpm",119619,0),("php-fpm",119620,0),("php-fpm",119621,0))
至此php已經配置完成
配置httpd服務器
1、編輯httpd配置文件httpd.conf,讓httpd能識別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
2、啟用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 LoadModeule前面的#號註釋掉即可開啟
3、配置虛擬主機支持使用fcgi
(1)啟用虛擬主機
將Include前面的#號註釋掉即可
在相應的虛擬主機中添加類似如下兩行。
ProxyRequests Off關閉正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
例如:
<VirtualHost *:80> DocumentRoot "/www/test.com" ServerName test.com ServerAlias www.test.com ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://10.0.0.2:9000/www/test.com/$1 <Directory "/www/test.com"> Options none AllowOverride none Require all granted </Directory> </VirtualHost>
ProxyRequests Off:關閉正向代理
ProxyPassMatch:把以.php結尾的文件請求發送到php-fpm進程,php-fpm至少需要知道運行的目錄和URI,所以這裏直接在fcgi://10.0.0.2:9000後指明了這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。
重新載入配置文件或重啟服務
service httpd reload | service httpd restart
本文出自 “linux菜鳥” 博客,請務必保留此出處http://geekb0y.blog.51cto.com/10743719/1956852
LAMP環境搭建