第十七課 LAMP

目錄


1. LAMP 架構(gòu)介紹

其實就是四個大寫字母的縮寫,分別是 Linux + Apache + MySQL + PHP,其中PHP必須與Apache在同一臺機器,而 MySQL 可以不與他們兩在一起,從而實現(xiàn) “站庫分離”

1.1 LAMP 架構(gòu)圖
LAMP 架構(gòu)圖
1.2 Apache

Apache 目前是一個基金會的名稱,實際提供 http 服務(wù)的程序其實叫做 httpd,但由于其出品的第一版 http 服務(wù)程序叫做 apache,所以人們將該名稱沿用至今。所以我們可以將 apache 與 httpd 當(dāng)做是同一樣?xùn)|西,即 Web 服務(wù)器軟件。
Apache 官網(wǎng)

1.3 MySQL

關(guān)系型數(shù)據(jù)庫,由 MySQL AB 公司開發(fā),該公司于 2008 年被 SUN 公司收購,而 SUN 公司于 2009 年被 Oracle 收購。
MySQL 官網(wǎng)

1.4 MariaDB

MySQL 被收購后,其創(chuàng)始人 Michael Widenius 協(xié)同大量的 MySQL 原班人馬創(chuàng)建了 MariaDB,所以從使用上,MariaDB 與 MySQL 區(qū)別不大。
MariaDB 官網(wǎng)

1.5 PHP

超文本預(yù)處理器,用于提供 Apache 與 MySQL 之間的交互。原是由 Perl 語言編寫,到目前已經(jīng)吸取了 Perl、Java、C語言 的特點。但PHP應(yīng)用于移動端的表現(xiàn)不好。當(dāng)前更流行Java、Go、Python。
PHP 官網(wǎng)


2. LAMP 各軟件的版本

2.1 Apache
  • 最新版本:2.4
  • 主流版本:2.4
2.2 MySQL
  • 分類
版本 解釋
Community 社區(qū)版
Enterprise 企業(yè)版
GA Generally Available,通用版,常用于生產(chǎn)環(huán)境
DMR Development Milestone Release,里程碑版,有較大的變化
RC Release Candidate,發(fā)型候選版,屬于替補
Beta 公測版
Alpha 內(nèi)測版
  • 最新版本:MySQL 5.7 GA / MySQL 8.0 DMR
  • 主流版本:MySQL 5.6 GA
2.3 MariaDB
  • 分類:基本上沿用 MySQL 分類

  • 最新版本:MariaDB 5.5 GA / MariaDB 10.3 GA

  • 主流版本:MariaDB 10.2 GA

  • MariaDB 與 MySQL 的對應(yīng)關(guān)系

MariaDB MySQL
5.5 5.5
10.0 5.6
2.4 PHP
  • 最新版本:5.6 / 7.1
  • 主流版本:5.6

3. MySQL 安裝

3.1 下載、解壓
  • 將安裝包下載到 /usr/local/src/ 中(300MB)
[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
  • 安裝包解壓縮,并放于正式安裝目錄
[root@localhost src]# tar -xzvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
[root@localhost src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
[root@localhost src]# cd /usr/local/mysql
3.2 建立賬戶與目錄
  • 建立使用 MySQL 的賬戶
[root@localhost mysql]# useradd mysql
  • 建立存放數(shù)據(jù)的目錄
[root@localhost mysql]# mkdir /data/
3.3 安裝
  • 執(zhí)行安裝命令:當(dāng)運行完安裝腳本后,若在輸出中看到 兩個 OK 則表示成功安裝
## 純凈系統(tǒng),還沒裝Perl,會報錯
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql   # 只需提前創(chuàng)建 /data/即可,而 /data/mysql 會由該腳本自動建立
-bash: ./scripts/mysql_install_db: /usr/bin/perl: 壞的解釋器: 沒有那個文件或目錄     


## 那就裝個 Perl
[root@localhost mysql]# yum -y install perl

## 再試一次,又提示沒有 Dumper
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper

## 那就找找這個 Dumper(要是嫌一個一個試太麻煩,全都裝也行)
[root@localhost mysql]# yum list | grep -i dumper
abi-dumper.noarch                         1.1-3.el7                    epel
perl-Data-Dumper.x86_64                   2.145-3.el7                  base
perl-Data-Dumper-Concise.noarch           2.020-6.el7                  epel
perl-Data-Dumper-Names.noarch             0.03-17.el7                  epel
perl-XML-Dumper.noarch                    0.81-17.el7                  base
php-symfony-var-dumper.noarch             2.8.12-2.el7                 epel
vtable-dumper.x86_64                      1.1-1.el7                    epel

## 其實真正缺少的是 perl-Data-Dumper.x86_64
[root@localhost mysql]# yum -y install perl-Data-Dumper

## 再試一次,又說缺 **libaio.so.1**
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

## 查查看這個文件包含在哪個安裝包中
[root@localhost mysql]# yum provides */libaio.so.1
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyuncs.com
 * epel: mirrors.sohu.com
 * extras: mirrors.aliyuncs.com
 * updates: mirrors.aliyuncs.com
libaio-0.3.109-13.el7.i686 : Linux-native asynchronous I/O access library
源    :base
匹配來源:
文件名    :/lib/libaio.so.1



libaio-0.3.109-13.el7.x86_64 : Linux-native asynchronous I/O access library
源    :base
匹配來源:
文件名    :/lib64/libaio.so.1

## 看來就是她了:libaio-0.3.109-13.el7.x86_64,缺少補啥吧!
[root@localhost mysql]# yum -y install libaio-0.3.109-13.el7.x86_64

## 最后再裝一次
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

【成功】


3.4 配置
  • 將安裝包中帶有的 MySQL 配置文件復(fù)制到 /etc/ 下(CentOS 7 初始安裝時就已經(jīng)有 /etc/my.cnf 了,所以其實不替換也可以,只要保證有必要的配置信息)
## 在此我采用替換的方法,所以要提前備份一下原有的 /etc/my.cnf

[root@localhost mysql]# mv /etc/my.cnf /etc/my.cnf.bak

[root@localhost mysql]# cp support-files/my-default.cnf /etc/my.cnf
  • 修改配置文件內(nèi)容
[root@localhost mysql]# vi /etc/my.cnf

  1 # For advice on how to change settings please see
  2 # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
  3 # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
  4 # *** default location during install, and will be replaced if you
  5 # *** upgrade to a newer version of MySQL.
  6
  7 [mysqld]
  8
  9 # Remove leading # and set to the amount of RAM for the most important data
 10 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
 11 # innodb_buffer_pool_size = 128M
 12
 13 # Remove leading # to turn on a very important data integrity option: logging
 14 # changes to the binary log between backups.
 15 # log_bin
 16
 17 # These are commonly set, remove the # and set as required.
 18 basedir = /usr/local/mysql                                   # 主要是這兩行
 19 datadir = /data/mysql
 20 port = 3306
 21 # server_id = .....
 22 socket = /tmp/mysql.sock
 23
 24 # Remove leading # to set options mainly useful for reporting servers.
 25 # The server defaults are faster for transactions and fast SELECTs.
 26 # Adjust sizes as needed, experiment to find the optimal values.
 27 # join_buffer_size = 128M
 28 # sort_buffer_size = 2M
 29 # read_rnd_buffer_size = 2M
 30
 31 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  • 將 MySQL 服務(wù)的啟動程序復(fù)制到 /etc/init.d/mysqld
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chmod 755 /etc/init.d/mysqld
  • 修改啟動程序內(nèi)容
$ vi /etc/init.d/mysqld
    .
    .
    .
46 basedir=/usr/local/mysql
47 datadir=/data/mysql
    .
    .
    .
259 case "$mode" in
260   'start')
261     # Start daemon
262
263     # Safeguard (relative paths, core dumps..)
264     cd $basedir
265
266     echo $echo_n "Starting MySQL"
267     if test -x $bindir/mysqld_safe
268     then
269       # Give extra arguments to mysqld with the my.cnf file. This script
270       # may be overwritten at next upgrade.
271       $bindir/mysqld_safe --datadir="$datadir" --basedir="$basedir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &    
## 主要是上面這一行,添加 --basedir="$basedir"      
  • 將 mysqld 添加至開機啟動
[root@localhost mysql]# chkconfig --add mysqld
3.5 MySQL 的啟動
[root@localhost mysql]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/localhost.localdomain.err'.
.. SUCCESS!



## 也可以采用以下命令啟動 MySQL

[root@localhost mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
3.6 啟動情況查看
## 看看是否按照我們的設(shè)置正確開啟了服務(wù),如 basedir、datadir、port、user 等
[root@localhost mysql]# ps aux | grep mysql
root      41896  0.0  0.0 113304  1648 pts/0    S    6月26   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --basedir=/usr/local/mysql --pid-file=/data/mysql/localhost.localdomain.pid
mysql     42074  3.4 11.7 1300828 455004 pts/0  Sl   6月26   0:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/localhost.localdomain.err --pid-file=/data/mysql/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306
root      42103  0.0  0.0 112720   972 pts/0    S+   00:00   0:00 grep --color=auto mysql
## 看看端口情況
[root@localhost mysql]# netstat -ltnp | grep mysql
tcp6       0      0 :::3306                 :::*                    LISTEN      42074/mysqld
3.7 MySQL 的關(guān)閉
  • service mysqld stop/etc/init.d/mysqld
    推薦!最溫和的關(guān)閉方式,但可能比較慢
  • killall mysqld
    會先停止當(dāng)前讀寫,然后將威脅如此盤的數(shù)據(jù)寫入磁盤,寫完后才會殺死進程

注意:強烈不推薦使用 kill PID 的方法進行 MySQL 的關(guān)閉,有時使用上述兩種方法后缺發(fā)現(xiàn)進程遲遲未關(guān)閉,這時很有可能是由于數(shù)據(jù)量較大,還在逐漸寫入磁盤,此時如果強行 kill 的話,極有可能造成數(shù)據(jù)丟失甚至磁盤損壞


4. Mariadb 安裝

與 MySQL 大同小異,這里就僅列出具體的配置命令,不再做拍錯以及輸出的展示

4.1 下載、解壓
$ cd /usr/local/src

$ wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz

$ tar -xzvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz

$ mv mariadb* /usr/local/mariadb

$ cd /usr/local/mariadb

4.2 增加賬戶、目錄
$ useradd mysql

$ mkdir /data/

4.3 安裝
## 這里與 MySQL 的安裝有所區(qū)別,需要指定 basedir,否則可能去 /etc/my.cnf 中尋找
./scripts/mysql_install_db --user=mysql --datadir=/data/mariadb --basedir=/usr/local/mariadb
4.4 配置
  • 復(fù)制配置文件:mariadb 安裝包中提供多種配置文件如:small,large,huge 等,主要是對數(shù)據(jù)庫緩存設(shè)置的不同
$ cp /usr/local/mariadb/support-files/my-small.cnf  /usr/local/mariadb/my.cnf
  • 修改配置文件:定義 basedir 和 datadir
$ vim /usr/local/mariadb/my.cnf
  • 復(fù)制啟動文件
$ cp /usr/local/mariadb/support-files/mysql.server /etc/init.d/mariadb
  • 修改啟動文件:主要修改 basedir、datadir、conf 等內(nèi)容
$ vim /etc/init.d/mariadb
    basedir=/usr/local/mariadb
    datadir=/root/mariadb
    conf=/usr/local/mariadb/my.cnf

    在 case "$mode" in
      'start') 中的 $bindir /mysqld_safe 后添加 --defaults-file="$conf"

5. Apache 安裝

安裝 Apache 前需要安裝 apr 以及 apr-util ,他們是可移植運行庫,能夠幫助 Apache 在不同平臺間移植

5.1 安裝 apr
  • 養(yǎng)成良好習(xí)慣,將 apr 安裝包下載至 /usr/local/src/ 中
[root@VMware01 src]# cd /usr/local/src/
[root@VMware01 src]# wget http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz
  • 解壓縮
[root@VMware01 src]# tar xzvf apr-1.6.3.tar.gz
  • 編譯、安裝
[root@VMware01 src]# cd apr-1.6.3
[root@VMware01 apr-1.6.3]# ./configure --prefix=/usr/local/apr
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
Configuring APR library
Platform: x86_64-pc-linux-gnu
checking for working mkdir -p... yes
APR Version: 1.6.3
checking for chosen layout... apr
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/usr/local/src/apr-1.6.3':
configure: error: no acceptable C compiler found in $PATH       # 沒有編譯器。。。
See `config.log' for more details       

## 那就裝個 gcc
[root@VMware01 apr-1.6.3]# yum -y install gcc


## 在執(zhí)行一次 ./configure

[root@VMware01 apr-1.6.3]# ./configure --prefix=/usr/local/apr
.
.
.
config.status: executing libtool commands
rm: cannot remove 'libtoolT': No such file or directory        # 報錯 libtoolT
config.status: executing default commands

## 查一下啥是 libtool
[root@VMware01 apr-1.6.3]# yum list | grep libtool
libtool-ltdl.x86_64                         2.4.2-22.el7_3             @anaconda
libtool.x86_64                              2.4.2-22.el7_3             base     
libtool-ltdl.i686                           2.4.2-22.el7_3             base     
libtool-ltdl-devel.i686                     2.4.2-22.el7_3             base     
libtool-ltdl-devel.x86_64                   2.4.2-22.el7_3             base  


## 估計又是庫的問題,那就專找 *-devel 這種包來安裝   
[root@VMware01 apr-1.6.3]# yum  -y install libtool-ltdl-devel

## 再試一次,還是報錯,那只能Google了,得出結(jié)果是修改 configure 文件的某些內(nèi)容
[root@VMware01 apr-1.6.3]# vim configure
.
.
.
30433   case $ac_file$ac_mode in
30434     "libtool":C)
30435 
30436     # See if we are running on zsh, and set the options which allow our
30437     # commands through without removal of \ escapes.
30438     if test -n "${ZSH_VERSION+set}" ; then
30439       setopt NO_GLOB_SUBST
30440     fi
30441 
30442     cfgfile="${ofile}T"
30443     trap "$RM \"$cfgfile\"; exit 1" 1 2 15
30444 #   $RM "$cfgfile"                 #注釋掉該行即可
.
.
.

## 在運行一次
[root@VMware01 apr-1.6.3]# ./configure --prefix=/usr/local/apr

【成功】

[root@VMware01 apr-1.6.3]# make && make install
5.2 安裝 apr-util
  • 養(yǎng)成良好習(xí)慣,將 apr 安裝包下載至 /usr/local/src/ 中
##
[root@VMware01 apr-1.6.3]# cd /usr/local/src/
[root@VMware01 src]# wget http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.bz2
  • 解壓縮
[root@VMware01 src]# tar -xjvf apr-util-1.6.1.tar.bz2

  • 編譯、安裝
[root@VMware01 src]# cd apr-util-1.6.1

[root@VMware01 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/

【成功】


[root@VMware01 apr-util-1.6.1]# make && make install
.
.
.
xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
 #include <expat.h>                       #報錯,缺少 expat.h


## 查一下哪些rpm包含有 expat.h 文件
[root@VMware01 apr-util-1.6.1]# yum provides */expat.h
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
expat-devel-2.1.0-10.el7_3.i686 : Libraries and header files to develop applications using expat
源    :base
匹配來源:
文件名    :/usr/include/expat.h



expat-devel-2.1.0-10.el7_3.x86_64 : Libraries and header files to develop applications using expat
源    :base
匹配來源:
文件名    :/usr/include/expat.h



xulrunner-devel-31.6.0-2.el7.centos.i686 : Development files for Gecko
源    :base
匹配來源:
文件名    :/usr/include/xulrunner-31.6.0/expat.h



xulrunner-devel-31.6.0-2.el7.centos.x86_64 : Development files for Gecko
源    :base
匹配來源:
文件名    :/usr/include/xulrunner-31.6.0/expat.h


## 找名字最像的那個
[root@VMware01 apr-util-1.6.1]# yum -y install expat-devel



## 再試一次
[root@VMware01 apr-util-1.6.1]# make && make install

【成功】
5.3 安裝工 apache
  • 下載
[root@VMware01 apr-util-1.6.1]# cd /usr/local/src/
[root@VMware01 src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz
  • 解壓縮
[root@VMware01 src]# tar xzvf httpd-2.4.33.tar.gz
  • 編譯、安裝
[root@VMware01 src]# cd httpd-2.4.33
[root@VMware01 httpd-2.4.33]# ./configure \
> --prefix=/usr/local/apache2.4 \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util \
> --enable-so \                       # 開啟對動態(tài)擴展模塊的支持
> --enable-mods-shared=most           # 指定要支持哪些模塊,most代表最多
.
.
.
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/    #報錯,缺 pcre-config


## 找 pcre-config 文件,并安裝相應(yīng) rpm
[root@VMware01 httpd-2.4.33]# yum provides */pcre-config
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
pcre-devel-8.32-17.el7.i686 : Development files for pcre
源    :base
匹配來源:
文件名    :/usr/bin/pcre-config



pcre-devel-8.32-17.el7.x86_64 : Development files for pcre
源    :base
匹配來源:
文件名    :/usr/bin/pcre-config



## 就是他了
[root@VMware01 httpd-2.4.33]# yum -y install pcre-devel



## 再次執(zhí)行,成功
[root@VMware01 src]# cd httpd-2.4.33
[root@VMware01 httpd-2.4.33]# ./configure \
> --prefix=/usr/local/apache2.4 \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util \
> --enable-so \
> --enable-mods-shared=most


【成功】
  • make && make install
[root@VMware01 httpd-2.4.33]# make
/usr/local/apr/build-1/libtool --silent --mode=link gcc -std=gnu99  -g -O2 -pthread         -o htpasswd  htpasswd.lo passwd_common.lo       /usr/local/apr-util/lib/libaprutil-1.la /usr/local/apr/lib/libapr-1.la -lrt -lcrypt -lpthread -ldl -lcrypt
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_GetErrorCode'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetEntityDeclHandler'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserCreate'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetCharacterDataHandler'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserFree'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetUserData'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_StopParser'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_Parse'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ErrorString'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetElementHandler'
collect2: error: ld returned 1 exit status
make[2]: *** [htpasswd] 錯誤 1
make[2]: 離開目錄“/usr/local/src/httpd-2.4.33/support”
make[1]: *** [all-recursive] 錯誤 1
make[1]: 離開目錄“/usr/local/src/httpd-2.4.33/support”
make: *** [all-recursive] 錯誤 1


## 網(wǎng)上教的方法是重新安裝一遍 apr-util,那只能試試了:刪掉 /usr/local/apr-util 目錄,重新編譯apr-util,重新編譯 apache, 竟然真的成功了
  • 開啟 apache
[root@VMware01 httpd-2.4.33]# cd /usr/local/apache2.4
[root@VMware01 apache2.4]# ./bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::8434:c43d:f653:7150. Set the 'ServerName' directive globally to suppress this message
  • 查看啟動情況
[root@VMware01 httpd-2.4.33]# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      946/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1254/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      31979/mysqld        
tcp6       0      0 :::80                   :::*                    LISTEN      104448/httpd        
tcp6       0      0 :::22                   :::*                    LISTEN      946/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1254/master         
[root@VMware01 httpd-2.4.33]# ps aux | grep httpd
root     104448  0.0  0.1  97628  2548 ?        Ss   10:15   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon   104449  0.0  0.2 384456  4420 ?        Sl   10:15   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon   104450  0.0  0.1 384456  2388 ?        Sl   10:15   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon   104451  0.0  0.1 384456  2384 ?        Sl   10:15   0:00 /usr/local/apache2.4/bin/httpd -k start
root     104537  0.0  0.0 112720   972 pts/0    S+   10:17   0:00 grep --color=auto httpd
  • 查看當(dāng)前 apache 支持哪些模塊
    static:靜態(tài),直接編譯進主腳本中的模塊
    shared:共享的,擴展模塊,在 /usr/local/apache2.4/modules/ 中的模塊
[root@VMware01 ~]# /usr/local/apache2.4/bin/httpd -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_event_module (static)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 auth_basic_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)

6. PHP 安裝

6.1 下載、解壓
[root@VMware01 src]# cd /usr/local/src/
[root@VMware01 src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2
[root@VMware01 src]# tar -xjvf php-5.6.32.tar.bz2 
[root@VMware01 src]# cd php-5.6.32
6.2 編譯、安裝(拍錯的方式不再講述,前面的例子已經(jīng)有大體的方法)
[root@VMware01 php-5.6.32]# ./configure \
> --prefix=/usr/local/php \
> --with-apxs2=/usr/local/apache2.4/bin/apxs \  #Apache 的工具,自動把擴展模塊放到 modules 目錄中
> --with-config-file-path=/usr/local/php/etc \
> --with-mysql=/usr/local/mysql \               # 三種不同的 MySQL 驅(qū)動
> --with-pdo-mysql=/usr/local/mysql \
> --with-mysqli=/usr/local/mysql/bin/mysql_config \
> --with-libxml-dir \
> --with-gd \
> --with-jpeg-dir \
> --with-png-dir \
> --with-freetype-dir \
> --with-iconv-dir \
> --with-zlib-dir \
> --with-bz2 \
> --with-openssl \
> --with-mcrypt \
> --enable-soap \
> --enable-gd-native-ttf \
> --enable-mbstring \
> --enable-sockets \
> --enable-exif




[root@VMware01 php-5.6.32]# make && make install
6.3 查看php帶有的模塊
[root@VMware01 php-5.6.32]# /usr/local/php/bin/php -m
[PHP Modules]
bz2
Core
ctype
date
dom
ereg
exif
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
6.4 查看 /usr/local/apache2.4/conf/httpd.conf 是否已連接 php 模塊
[root@VMware01 php-5.6.32]# vim /usr/local/apache2.4/conf/httpd.conf
.
.
.
151 LoadModule php5_module        modules/libphp5.so   # php 已經(jīng)將該模塊寫進了 httpd 的配置文件

.
.
.
6.5 復(fù)制 php 配置文件
[root@VMware01 php-5.6.32]# cp php.ini-production /usr/local/php/etc

7. PHP 與 Apache 的連接

7.1 放通 iptables 訪問 http
[root@VMware01 local]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
7.2 新建 php 頁面
[root@VMware01 local]# vim /usr/local/apache2.4/htdocs/index.php

  1 <?php
  2         phpinfo();
  3 ?>
7.3 訪問網(wǎng)站地址
image
7.4 訪問 php 頁面(并未將php語句解釋出來)
image
7.5 修改 httpd.conf 文件
[root@VMware01 php-5.6.32]# vi /usr/local/apache2.4/conf/httpd.conf
.
.
.
193 ServerName www.example.com:80
.
.
.
200 <Directory />
201     AllowOverride none
202     Require all granted
203 
204 </Directory>

.
.
.
387     #
388     AddType application/x-compress .Z
389     AddType application/x-gzip .gz .tgz
390     AddType application/x-httpd-php .php
.
.
.
251 <IfModule dir_module>
252     DirectoryIndex index.html index.php
253 </IfModule>

7.6 檢查 httpd.conf 語法
[root@VMware01 local]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
7.7 重新載入配置文檔
[root@VMware01 local]# /usr/local/apache2.4/bin/apachectl graceful

7.8 再次訪問 php 頁面
成功解析php
7.9 無法解析 PHP 時的基本排錯思路
  • 查看是否按照上文進行 httpd.conf 的配置
  • 查看 apache 是否加載 PHP:/usr/local/apache2.4/bin/apachectl -M
  • 查看 apache 的 modules 目錄中是否有 PHP 模塊:ls /usr/local/apache2.4/modules/
  • 查看 httpd.conf 中是否設(shè)定加載了 PHP:LoadModule php5_module modules/libphp5.so
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容