操作系統:ubuntu LTS 16.04
apache版本:2.4.27
PRE準備工作
Apache編譯安裝指南中給出了編譯安裝的詳細過程,以下是注意事項:
安裝C編譯器
安裝C語言編譯器gcc-5
sudo apt-get install gcc-5
將gcc
符號鏈接到gcc-5
,使gcc
命令等同于gcc-5
sudo ln -s /usr/bin/gcc-5 /usr/bin/gcc
安裝C++編譯器
安裝C語言編譯器g++-5
sudo apt-get install g++-5
將g++
符號鏈接到g++-5
,使gcc
命令等同于g++-5
sudo ln -s /usr/bin/g++-5 /usr/bin/g++
安裝make
--fix-missing
是修復選項
sudo apt-get install make --fix-missing
安裝依賴包
sudo apt-get install libexpat1-dev
編譯安裝詳細過程
將下載的源碼文件都放在/usr/local/src
目錄下
切換到/usr/local/src
目錄
cd /usr/local/src
安裝APR
下載安裝APR-1.6.2
去APR官網下載對應版本的tar.gz源碼壓縮包,放到/usr/local/src
目錄下,并解壓
# 解壓命令
sudo tar zxvpf apr-1.6.2.tar.gz
進到apr-1.6.2
源碼目錄下
cd apr-1.6.2
編譯安裝
# 設置輸出目錄
./configure --prefix=/usr/local/apache2/apr-1.6.2
# 根據自己電腦核數×2來設定并行編譯參數,提高編譯速度
make -j1
sudo make install
下載安裝APR-util-1.6.0
去APR官網下載對應版本的tar.gz源碼壓縮包,放到/usr/local/src
目錄下,并解壓
# 解壓命令
sudo tar jxvpf apr-util-1.6.0.tar.bz2
進到apr-1.6.2
源碼目錄下
cd apr-util-1.6.0
編譯安裝,注意apr路徑參數
要與之前apr安裝路徑參數
相同
./configure --prefix=/usr/local/apache2/apr-util-1.6.0 --with-apr=/usr/local/apache2/apr-1.6.2
make -j1
make install
下載安裝PCRE
去PCRE官網下載pcre-8.41源碼壓縮包,放到
/usr/local/src`目錄下,并解壓
# 解壓命令
sudo tar zxvpf pcre-8.41.tar.gz
進到pcre-8.41
源碼目錄下
cd pcre-8.41
編譯安裝
./configure --prefix=/usr/local/pcre-8.41
make -j1
make install
下載安裝apache2.4.27
去Apache官網下載apache2.4.27
源碼壓縮包,放到/usr/local/src
目錄下,并解壓
# 解壓命令
sudo tar zxvpf httpd-2.4.27.tar.gz
進到httpd-2.4.27.tar.gz
目錄下
cd httpd-2.4.27
編譯安裝
sudo ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apache2/apr-1.6.2 --with-apr-util=/usr/local/apache2/apr-util-1.6.0/ --with-pcre=/usr/local/pcre-8.41 --with-expat=builtin --enable-so --enable-rewrite --enable-ssl
sudo make -j1
sudo make install
-
--prefix
: 目標路徑 -
--with
: 依賴的庫文件的路徑 -
enable-ssl
: 支持SSL加密 -
enable-so
: 支持動態加載模塊
添加啟動腳本apache2
到service
sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache2
添加apache2
到環境變量
# 輸出啟動腳本至 /home/phdchorus/apache2.sh
sudo echo 'export PATH=$PATH:/usr/local/apache2/bin' > /home/phdchorus/apache2.sh
cd /home/phdchorus
# 修改啟動腳本的讀寫權限
sudo chmod a+x apache2.sh
# 拷貝腳本至目錄
sudo cp apache2.sh /etc/profile.d
# 更新腳本狀態
source /etc/profile.d/apache2.sh
添加apache2
到開機啟動項
sudo vim /etc/rc.local
將/etc/profile.d/httpd.sh
添加到exit 0
之前
/etc/profile.d/apache2.sh
exit 0
啟動apache2
sudo service apache2 start
Apache配置
轉到apache
目錄下,可以看到以下目錄結構
phdchorus@phdchorus:/usr/local/apache2$ ls
bin conf error htdocs logs modules
-
bin
是apache啟動目錄 -
conf
是apache配置文件目錄 -
htdocs
是默認的DocumentRoot
-
logs
是默認的日志目錄 -
modules
是apache的擴展鏈接(PHP擴展、SSL擴展...)所在的目錄
轉到conf
目錄下,可以看到以下目錄結構
phdchorus@phdchorus:/usr/local/apache2/conf$ ls
extra httpd.conf magic mime.types original
-
httpd.conf
是apache
的主配置文件 -
extra
中存放了httpd.conf
之外的配置文件
安裝配置Apache中記錄了通過apt-get
安裝Apache后,對apache的各種配置。apt-get
安裝apache后,apache配置按照種類分散到多個目錄文件下面,主配置文件import
這些配置文件,從而實現了配置模塊化的效果。而編譯安裝的apache將幾乎所有的配置都放到了主配置文件中,是非常不利于維護的。接下來我們先配置Apache,再按照模塊化配置
的思路,重構apache的主配置文件。
配置Apache
基本配置
因為裝機時,我們的計劃是將網絡服務資源放在/var
下,所以要修改DocumentRoot
及DocumentRoot
對應的Directory
項
找到DocumentRoot "/usr/local/apache2/htdocs"
修改為DocumentRoot "/var/www/html" --該目錄為自己創建的目錄
找到:<Directory "/usr/local/apache2/htdocs">
修改為:<Directory "/var/www/html">
配置Apache解析PHP
在主配置文件中寫入
LoadModule php7_module modules/libphp7.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
修復安全漏洞
在主配置文件中寫入
TraceEnable off
ServerSignature off