第十七課 LAMP

目錄


1. LAMP 架構介紹

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

1.1 LAMP 架構圖
LAMP 架構圖
1.2 Apache

Apache 目前是一個基金會的名稱胎挎,實際提供 http 服務的程序其實叫做 httpd沟启,但由于其出品的第一版 http 服務程序叫做 apache,所以人們將該名稱沿用至今犹菇。所以我們可以將 apache 與 httpd 當做是同一樣東西德迹,即 Web 服務器軟件。
Apache 官網

1.3 MySQL

關系型數據庫揭芍,由 MySQL AB 公司開發(fā)胳搞,該公司于 2008 年被 SUN 公司收購,而 SUN 公司于 2009 年被 Oracle 收購称杨。
MySQL 官網

1.4 MariaDB

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

1.5 PHP

超文本預處理器,用于提供 Apache 與 MySQL 之間的交互页衙。原是由 Perl 語言編寫摊滔,到目前已經吸取了 Perl、Java店乐、C語言 的特點。但PHP應用于移動端的表現不好呻袭。當前更流行Java眨八、Go、Python左电。
PHP 官網


2. LAMP 各軟件的版本

2.1 Apache
  • 最新版本:2.4
  • 主流版本:2.4
2.2 MySQL
  • 分類
版本 解釋
Community 社區(qū)版
Enterprise 企業(yè)版
GA Generally Available廉侧,通用版,常用于生產環(huán)境
DMR Development Milestone Release篓足,里程碑版段誊,有較大的變化
RC Release Candidate,發(fā)型候選版栈拖,屬于替補
Beta 公測版
Alpha 內測版
  • 最新版本: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 的對應關系

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
  • 建立存放數據的目錄
[root@localhost mysql]# mkdir /data/
3.3 安裝
  • 執(zhí)行安裝命令:當運行完安裝腳本后涩哟,若在輸出中看到 兩個 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 配置文件復制到 /etc/ 下(CentOS 7 初始安裝時就已經有 /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
  • 修改配置文件內容
[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 服務的啟動程序復制到 /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
  • 修改啟動程序內容
$ 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 啟動情況查看
## 看看是否按照我們的設置正確開啟了服務专普,如 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 的關閉
  • service mysqld stop/etc/init.d/mysqld
    推薦筋粗!最溫和的關閉方式,但可能比較慢
  • killall mysqld
    會先停止當前讀寫炸渡,然后將威脅如此盤的數據寫入磁盤娜亿,寫完后才會殺死進程

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


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 配置
  • 復制配置文件:mariadb 安裝包中提供多種配置文件如:small没卸,large,huge 等秒旋,主要是對數據庫緩存設置的不同
$ cp /usr/local/mariadb/support-files/my-small.cnf  /usr/local/mariadb/my.cnf
  • 修改配置文件:定義 basedir 和 datadir
$ vim /usr/local/mariadb/my.cnf
  • 復制啟動文件
$ cp /usr/local/mariadb/support-files/mysql.server /etc/init.d/mariadb
  • 修改啟動文件:主要修改 basedir约计、datadir、conf 等內容
$ 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)成良好習慣,將 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了沽瘦,得出結果是修改 configure 文件的某些內容
[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)成良好習慣革骨,將 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 文件筑凫,并安裝相應 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


## 網上教的方法是重新安裝一遍 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
  • 查看當前 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 編譯、安裝(拍錯的方式不再講述荚孵,前面的例子已經有大體的方法)
[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 驅動
> --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 已經將該模塊寫進了 httpd 的配置文件

.
.
.
6.5 復制 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 訪問網站地址
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 中是否設定加載了 PHP:LoadModule php5_module modules/libphp5.so
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市处窥,隨后出現的幾起案子嘱吗,更是在濱河造成了極大的恐慌,老刑警劉巖滔驾,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異俄讹,居然都是意外死亡哆致,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門患膛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摊阀,“玉大人,你說我怎么就攤上這事踪蹬“耍” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵跃捣,是天一觀的道長漱牵。 經常有香客問我,道長疚漆,這世上最難降的妖魔是什么酣胀? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任刁赦,我火速辦了婚禮,結果婚禮上闻镶,老公的妹妹穿的比我還像新娘甚脉。我一直安慰自己,他們只是感情好铆农,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布牺氨。 她就那樣靜靜地躺著,像睡著了一般墩剖。 火紅的嫁衣襯著肌膚如雪猴凹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天涛碑,我揣著相機與錄音精堕,去河邊找鬼。 笑死蒲障,一個胖子當著我的面吹牛歹篓,可吹牛的內容都是我干的。 我是一名探鬼主播揉阎,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼庄撮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了毙籽?” 一聲冷哼從身側響起洞斯,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坑赡,沒想到半個月后烙如,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡毅否,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年亚铁,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片螟加。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡徘溢,死狀恐怖,靈堂內的尸體忽然破棺而出捆探,到底是詐尸還是另有隱情然爆,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布黍图,位于F島的核電站曾雕,受9級特大地震影響,放射性物質發(fā)生泄漏雌隅。R本人自食惡果不足惜翻默,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一缸沃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧修械,春花似錦趾牧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蹦渣,卻和暖如春哄芜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柬唯。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工认臊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锄奢。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓失晴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拘央。 傳聞我的和親對象是個殘疾皇子涂屁,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內容