1. 程式人生 > >LAMP環境搭建

LAMP環境搭建

lamp fpm

提供軟件包:

httpdhttpd.2.4.27.tar.gz 源碼包在 http://httpd.apache.org

aprapr-util:需要在官網上下載 http://apr.apache.org

openssl-develpcre-develyum安裝即可

最新版本的apr-util還需要安裝expat-devel-2.0.1-11.el6_2.x86_64 在光盤上就有這個包

Phpphp-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/

Mysqlmysql-5.5.33-linux2.6-x86_64.tar.gz

源碼包:https://www.mysql.com/downloads/

系統環境 centos.6.5 X86_64三臺

第一臺安裝httpdIP地址為:192.168.0.201 負責外網訪問

10.0.0.1 負責跟php服務器通信

第二臺安裝phpIP地址為:10.0.0.2負責跟web通信

11.0.0.1負責跟mysql通信

第三臺安裝mysqlIP地址為:11.0.0.2負責跟php通信

第一臺機器安裝:

httpd編譯安裝,提供開發環境,安裝

gcc編譯器及openssl-devel開發包,pcre-devel開發包,掛載光盤設置yum安裝

# 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,這樣在本機就不需要先安裝MySQLMySQL開發包了。mysqlndphp 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環境搭建