推薦-LAMP的編譯安裝

首先解釋一下LAMP,L:Linux;A:apache;M:MariaDB;P:php。Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組常用來搭建動態網站或者服務器的開源軟件。

本文就是介紹編譯安裝apache2.4,MariaDB5.5,以及php(基于模塊化和fpm的這兩種方式來配合php提供服務)。

因為php是要在apache和MariaDB的基礎上才能安裝、配置使用,所有安裝順序是apache2.4,MariaDB5.5,php。

這里我們還需要準備好此3大軟件的源代碼包:

blob.png

 1.安裝apache,

安裝apache,首先需要準備好開發環境。即我們需要使用yum源來安裝Development tools和Server Platform Development這兩個包組。輸入yum grouplist "Development tools" "Server Platform Development"即可。

因為在編譯安裝時候,還需要依賴pcre-devel這個包,所以也需要安裝。輸入命令:yum install -y pcre-devel。

另外由于測試環境的CentOS的apr以及apr-util的版本不足夠新,這里還需要額安裝新的apr和apr-util。這里我事先準備好了源代碼包。

解壓apr-1.5包

blob.png

cd到解壓的apr-1.5包的目錄里面并執行:./configure –prefix=/usr/local/apr.因為系統上已經安裝過了apr,所以這里需要另外指明一個路徑以區分開。

blob.png

然后執行:make -j 2 && make install (開2個線程同時編譯)。

blob.png

解壓apr-util-1.5的包

blob.png

cd到解壓的apr-1.5包的目錄里面并執行:./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr。這里是要特別注意參數–with-apr=/usr/local/apr就是要使用剛才安裝的apr-1.5來配合安裝apr-1.5的。

blob.png

然后執行:make -j 2 && make install

blob.png

上述解決完依賴關系之后就可以正式開始安裝apache了。

解壓httpd的源代碼包:

blob.png

cd到解壓的httpd-2.4包的目錄里面并執行:./configure –prefix=/usr/local/apache –sysconfdir=/etc/httpd24 –enable-so –enable-ssl –enable-cgi –enable-rewrite –with-zlib –with-pcre –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util –enable-modules=most –enable-mpms-shared=all –with-mpm=event。這里需要指明是安裝路徑是/usr/local/apache;安裝后的配置文件是放在/etc/httpd24;安裝時啟用ssl和cgi;安裝時是利用的apr和apr-util的路徑;指明啟用大多數模塊(–enable-modules=most);指明啟用mpm_event這個模塊。

blob.png

然后執行:make -j 4 && make install

blob.png

安裝完成后,需要為此軟件配置服務腳本。我事先從別的系統復雜了一份httpd的腳本,命名為httpd24(賦予執行權限),并復制到了/etc/rc.d/init.d/這個目錄里面。主要修改此服務文件的三個地方:httpdctl的執行文件位置;httpd的執行文件位置;pid文件的位置。如下圖:

blob.png

把httpd的服務腳本添加到系統里面并查看運行級別:

blob.png

啟動httpd服務:

blob.png

使用ss命令查看80端口是否已經被監聽,這里看到已經被監聽。所以httpd已經是正常啟動:

blob.png然后由于是編譯安裝,所以這里需要為httpd來編輯腳本,把執行文件路徑輸入到PATH環境變量里面。新建并編輯/etc/profile.d/httpd.sh。并重讀此腳本文件。

blob.png

blob.png

此時httpd已經是編譯完成了。

2.安裝MariaDB:

安裝MariaDB之前,首先要建立系統用戶mysql(其基本組也是mysql)。此用戶是用于編譯安裝時指明用戶。

blob.png

準備好數據庫的數據存放目錄。這里我另外新建一個/mydata/data的目錄用于專門存放數據庫數據,并將/mydata/data的屬主和屬組改為mysql。

blob.png

之后開始解壓MariaDB的源代碼包,由于安裝需要,解壓的包必須放在/usr/local/mysql這個文件夾里面:

blob.png

cd到/usr/local/的,為目錄下的MariaDB包創建軟連接:

blob.png

此時再cd到mysql這個目錄里面,我們就可以看到有一系列文件:

blob.png

這里注意的是,我們還需要修改這個目錄下的文件的屬性,修改屬主為root,屬組為mysql:

blob.png

然后我們使用scripts里面的mysql_install_db來安裝MariaDB,安裝時要指明運行的用戶為mysql,數據庫的數據存放位置為/mydata/data:

blob.png

然后等待之后就看到安裝完成的提示:

blob.png

然后我們還需要為MariaDB提供配置文件。在/usr/local/mysql/這個目錄里面就有配置文件的樣板(以cnf結尾的文件)

blob.png

復制其中的my-large.cnf到/etc/目錄里面:

blob.png

編輯此配置文件,在里面添加數據庫數據存放位置等內容:

blob.png

還要準備mysql的服務腳本。在/usr/local/mysql/support-files/這個文件夾里面的mysql.server這個就是服務腳本的模板。將/usr/local/mysql/support-files/mysql.server復制到/etc/rc.d/init.d/里面,并且改名為mysqld并且賦予執行權限。

blob.png

同樣地,也把服務腳本添加到系統管理里面:

blob.png

把mysql的執行文件路徑輸出到環境變量PATH里面:

blob.png

啟動mysql的服務:

blob.png

查看3306的端口是否被監聽,這里看到已經被監聽了。說明mysql已經正常啟動:blob.png

3安裝php,

在安裝完htppd和MariaDB之后,就可以安裝php。這里會分別使用兩種工作模式:模塊化和fpm

首先要解決依賴關系,安裝bzip2-devel 、libmcrypt-devel、 libxml2-devel著三個包:

blob.png

解壓php的源代碼包:

blob.png

cd到解壓完成的包之后,執行安裝命令:./configure –prefix=/usr/local/php –with-mysql=/usr/local/mysql –with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config –enable-mbstring –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml  –enable-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

這里說明一下,–prefix=/usr/local/php是指明安裝路徑;指明配置文件路徑–with-config-file-path=/etc;這個–enable-maintainer-zts意思就是支持httpd的mpm_even和mpm_work工作模塊。

blob.png

然后make -j 4 && make install:

blob.png

安裝完成之后,還需要為php提供配置文件,在剛才的php解壓源代碼包的目錄,就有php.ini-production這個配置文件樣板,復制并改名字到/etc/目錄里面:

blob.png

修改/etc/httpd24/httpd.conf這個文件,可以查看到LoadModule里面已經是加載了php5_module這個模塊:

blob.png

blob.png

我們還需要修改httpd的配置文件,讓httpd能夠識別php格式的文件,添加如下兩行:

AddType application/x-httpd-php  .php

AddType application/x-httpd-php-source  .phps

如圖:

blob.png

定位至DirectoryIndex index.html ,將原來的DirectoryIndex index.html修改為DirectoryIndex  index.php  index.html:

blob.png

保存退出并重啟httpd服務:

blob.png

這里測試一下,編輯httpd的主頁文件,這里的主頁文件是在/usr/local/apache/htdocs/里面的index.html文件。備份后,修改名字為index.php.編輯index.php文件,如下:

blob.png

利用別的電腦訪問次虛擬機的ip地址(192.168.1.30),能夠正常訪問:

blob.png

然后我們簡單配置一下httpd提供動態資源。這里我們使用phpMyAdmin來測試一下。

解壓phpMyAdmin

blob.png

講解壓的文件移動至httpd的主頁目錄下,執行如下操作:

blob.png

blob.png

然后我們編輯config.inc.php這個文件,在cfg這行里面添加隨機碼:

blob.png

然后我們就用其他機訪問http://192.168.1.30/pma/:

blob.png

然后我們使用工具測試一下此httpd的服務器速度,使用命令ab -c 10 -n 200 http://192.168.1.30/pma/index.php:。

blob.png

這里我們可以看到Requests per second:    15.65 [#/sec] (mean)。即一秒鐘是處理15.65個請求。

我們下面在示范一下添加xcache來為此httpd服務器加速:

首先下載好xcache的源代碼包,并解壓:

blob.png

然后執行cd到xcache的解壓目錄里面,執行/usr/local/php/bin/phpize來讓xcahche能編譯安裝:

blob.png

然后執行./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config:

blob.png

然后執行make -j 2 && make install:

blob.png

安裝完成之后,如圖:

blob.png

我們還需要講xcache的配置文件放在php配置文件目錄下,這里源代碼包是提供了xcache的配置文件的樣板,所以我們執行cp xcache.ini /etc/php.d/

blob.png

然后編輯此配置文件(/etc/php.d/xcache.ini),修改zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so,這里就是加上剛才xcache安裝后的模塊配置的路徑。

blob.png

重啟httpd服務。測試一下xcache的加速效果:

blob.png

這里可以看出加速后的效果為:Requests per second:    67.47 [#/sec] (mean)。提速大概為原來3倍。

然后再試下fpm的方式安裝php,即以php為獨立的服務來運行:

首先,重新解壓php的源代碼包:

blob.png

cd到該源代碼包的目錄里面,執行./configure –prefix=/usr/local/php5 –with-mysql=/usr/local/mysql –with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config –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/php5/ –with-config-file-scan-dir=/etc/php5.d –with-bz2

這里說明一下,由于此虛擬機之前已經安裝了php,所以這里我另外再指定一個額外的安裝目錄/usr/local/php5;而配置文件是放在–with-config-file-path=/etc/php5/;–enable-fpm,啟用fpm的安裝方式;–with-config-file-scan-dir=/etc/php5.d ,指明在/etc/php5.d/目錄下的以ini結尾的文件。

blob.png

然后再執行如下:

blob.png

安裝完成之后,需要為php準備配置文件:

blob.png

在php的解壓包目錄里面,復制php.ini-production到/etc/php5/這個目錄下,并且改名字為php.ini:

blob.png

復制到php解壓包目錄下的sapi/fpm/init.d.php-fpm到/etc/rc.d/init.d/php-fpm,作為服務腳本。然后添加php-fpm到系統里面:

blob.png

blob.png

為為php-fpm提供配置文件:

blob.png

編輯php-fpm的配置文件,修改監聽的端口號以及php-fpm的一切啟動的參數(這些參數可以根據實際情況進行修改),如:

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 2

pm.max_spare_servers = 8

pid = /usr/local/php5/var/run/php-fpm.pid 

blob.png

blob.png

blob.png

啟動php-fpm服務:

blob.png

還需要修改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

blob.png

blob.png

在相應的虛擬主機中添加類似如下兩行。

  ProxyRequests Off

  ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

因為我使用默認的根文件目錄,所以如下:

blob.png

讓apache能識別php格式的頁面,并支持php格式的主頁:

blob.png

blob.png

然后重啟httpd服務。然后測試一下,用其他主機訪問web網頁:

blob.png

然后在使用命令做壓力測試,結果如下:

blob.png

其中Requests per second:    29.27 [#/sec]。

我再安裝xcache來進行加速。

首先解壓xcahe源代碼包,并cd進去:

blob.png

執行/usr/local/php5/bin/phpize來為xcache生成配置文件:

blob.png

執行./configure命令。這里要注意的是引用的php-config是編譯安裝的php5的目錄下(fpm模式下的)的。

blob.png

接著執行如下操作:

blob.png

blob.png

然后再配置xacache.ini文件到/etc/php5.d/xcache.ini。編輯此文件的extension位置的xcache模塊的位置入下圖:

blob.png

blob.png

最后壓力測試一下,看xcache的加速效果:

blob.png

可以看到Requests per second:    91.22 [#/sec] 。所以加速效果大概為原來的三倍。

原創文章,作者:Net17_Tim,如若轉載,請注明出處:http://www.www58058.com/14285

(0)
Net17_TimNet17_Tim
上一篇 2016-04-11 11:49
下一篇 2016-04-11 13:08

相關推薦

  • python面向對象學習第一周

    ?面向對象的思想 一個具體對象的屬性方法,都有各個來源,來源于類,比如消化類,有各種各樣的消化模式,人類的只是其中一種 另一種思想方法,類有各種屬性方法,人類有很多的屬性,一個人應該包括其中的屬性,只是值上可能有不同,不同人群也有他們的特征屬性和方法 ?? ?類是對象的抽象,但是類本身也是對象, 對象是一個類的實例. 類的屬性:類變量,對象方法,類方法,靜態…

    Linux干貨 2017-11-13
  • 用戶管理簡述

    組內用戶管理匯總 基于組來管理用戶 相關命令:gpasswd groupmems 添加用戶 gpasswd -a wangcai group :向group里添加用戶 wangcai gpasswd -M wangcai,xiaoqiang group :向group里批量添加xiaoqiang wangcai ,不過這個方式會覆蓋之前的組員 groupme…

    2017-02-23
  • 馬哥教育網絡班22期+第五周課程練習

    1、顯示當前系統上root、fedora或user1用戶的默認shell; ~]# cat /etc/passwd |grep -E  "^(root|fedora|user1)" |awk -F: '{print $NF}'/bin/bash/bin/bash/bin/bash 2、找出/etc/rc.d/…

    Linux干貨 2016-09-19
  • 馬哥linux0728課程內容

    課堂學習內容   -ahistory list –.bash_histroy 保存歷史列表到歷史文件 -cclear history list 清空歷史列表 -d deletehistory entru 清除歷史列表某一條命令 -rread .bash_history 讀歷史文件中的命令到歷史列表…

    Linux干貨 2016-08-04
  • MYSQL高級運用-MHA(提供主從復制高可用,主節點故障時,進行故障轉移)

    MHA的介紹、重用工具;
    MHA的安裝;
    搭建MYSQL主從復制架構,運用MHA實現其高可用,主節點故障時,進行故障轉移;并恢復整個架構;

    2017-09-24
  • 馬哥教育網絡班22期+第三周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。  who | tr -s [[:space:]] | cut -d" " -f1 | sort -u [root@localhost cdrom]# who root     pts/1     &…

    Linux干貨 2016-09-07

評論列表(3條)

  • stanley
    stanley 2016-04-11 11:52

    內容非常詳實有料,如果輔以好的樣式,會更贊

  • felix_du
    felix_du 2016-05-06 09:48

    謝謝你的分享。在http板塊,httpd24的文件內容是不是只有圖片中的那幾行?我按照那幾行寫入,并加入x權限后,chkconfig顯示無法添加該服務。謝謝。

  • felix_du
    felix_du 2016-05-06 09:53

    已解決。謝謝。

欧美性久久久久