CentOS 6編譯安裝lamp,並分別安裝event模塊方式和FPM方式的PHP

来源:http://www.cnblogs.com/Q--T/archive/2016/12/02/6126508.html
-Advertisement-
Play Games

任務目標: 編譯安裝LAMP 要求(1) 安裝一個模塊化的PHP 要求(2) 安裝一個FPM的PHP 註意PHP需要最後一個安裝,因為需要前兩者的支持. 所以這裡的安裝次序為 1.httpd 2.MariaDB 3.PHP 一、安裝包組 # yum groupinstall "Development... ...


任務目標:

編譯安裝LAMP

    要求(1) 安裝一個模塊化的PHP

    要求(2) 安裝一個FPM的PHP

 

註意PHP需要最後一個安裝,因為需要前兩者的支持.

所以這裡的安裝次序為

1.httpd

2.MariaDB

3.PHP

 

 

一、安裝包組

# yum groupinstall "Development Tools" "Server Platform Development" –y

 

二、解決依賴關係

1.安裝pcre

# yum install pcre-devel –y

 

2.安裝apr

# tar xf apr-1.5.2.tar.bz2

# cd apr-1.5.2

# ./configure --prefix=/usr/local/apr

# make && make install

 

3.安裝apr-util

# tar xf apr-util-1.5.4.tar.bz2

# cd apr-util-1.5.4

# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

# make && make install

 

三、編譯安裝httpd 2.4

1.編譯安裝

# tar xf httpd-2.4.23.tar.bz2

# cd httpd-2.4.23

# ./configure --prefix=/usr/local/apache --sysconf=/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

# make && make install

 

各個參數解釋:

--prefix=/usr/local/apache 設定安裝目錄為/usr/local/apache

--sysconf=/etc/httpd24 服務配置文件存放目錄

--enable-so 支持DSO機制,開啟模塊化

--enable-ssl 支持ssl功能

--enable-cgi 支持CGI功能

--enable-rewrite 支持url重寫

--with-zlib 支持傳輸壓縮

--with-pcre 支持pcre正則表達式

--with-apr=/usr/local/apr 指明apr安裝位置

--with-apr-util=/usr/local/apr-util/ 指明apr-util安裝位置

--enable-modules=most 啟用模塊級別:most大多數

--enable-mpms-shared=all 編譯所有支持的模式

--with-mpm=event 指明mpm模塊為event模式

 

2.給新httpd提供一個腳本

# cd /etc/rc.d/init.d/

# cp httpd httpd24

# vim httpd24

大概42行

apachectl=/usr/local/apache/bin/apachectl

httpd=${HTTPD-/usr/local/apache/bin/httpd}

pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd24}

clip_image001

保存退出

 

3.加入到服務列表

# chkconfig --add httpd24

 

4.移除hash緩存

# hash –r

 

5.將新的httpd添加到環境變數

# vim /etc/profile.d/httpd.sh

內容:

export PATH=/usr/local/apache/bin:$PATH

 

6.重讀一下剛剛修改的環境變數

# . /etc/profile.d/httpd.sh

 

7.檢查一下

# hash

 

8.檢測配置文件語法

# httpd –t

 

9.先關掉2.2版本的httpd

# service httpd stop

 

10.啟動2.4版本的httpd

# service httpd24 start

 

11.檢查80埠

# ss -tnl

# ps aux | grep httpd

 

12.查看是否載入了event模塊(mpm_event_module (shared))

# httpd –M

image

 

四、安裝MariaDB

1.把安裝包解壓到/usr/local/下

# tar xf mariadb-5.5.53-linux-x86_64.tar.gz -C /usr/local

 

2.創建數據存放目錄

# mkdir -pv /mydata/data

 

3.創建一個mysql用戶

# useradd -r mysql

 

4.附加許可權到數據存放目錄

# chown -R mysql.mysql /mydata/data/

 

5.創建軟連接到mysql

# cd /usr/local

# ln -sv mariadb-5.5.53-linux-x86_64/ mysql

 

6.更新所有文件的屬主屬組

# cd mysql/

# chown -R root.mysql ./*

 

7.初始化資料庫

# scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql

 

8.提供配置文件

# mkdir /etc/mysql

# cp support-files/my-large.cnf /etc/mysql/my.cnf

 

9.修改配置文件

# vim /etc/mysql/my.cnf

大概42行附近空白行添加

datadir = /mydata/data

innodb_file_per_table =on

skip_name_resolve = on

 

10.保存退出

 

11.創建服務

# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

 

12.啟動mysql

# service mysqld start

 

13.檢查3306

# ss –tnl

 

14.連接mysql測試

# /usr/local/mysql/bin/mysql

 

15.運行安全初始化腳本,包含root用戶的密碼創建

# /usr/local/mysql/bin/mysql_secure_installation

 

五、以模塊方式編譯安裝php

1.解壓縮安裝包

# tar xf php-5.5.38.tar.bz2

 

2.安裝依賴軟體包bzip2-devel和epel源的libmcrypt-devel和libxml2-devel包

# yum install bzip2-devel libmcrypt-devel libxml2-devel –y

 

3.安裝

# cd php-5.5.38

./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-mysql=/usr/local/mysql 指明mysql安裝路徑,如果有特定路徑就使用等號"="後面跟上路徑,沒有則省略等號"="

--with-openssl 使用OpenSSL

--with-mysqli=/usr/local/mysql/bin/mysql_config 定義mysqli介面

--enable-mbstring 支持多位元組字元串支持

--with-freetype-dir 支持各種字體

--with-jpeg-dir 支持處理jpeg格式圖片

--with-png-dir 支持處理png格式圖片

--with-zlib 支持壓縮庫

--with-libxml-dir=/usr 支持處理xml文檔

--enable-xml 支持xml

--enable-sockets 使php支持以sockets方式通信

--with-apxs2=/usr/local/apache/bin/apxs (關鍵)表示把php編譯成Apache的模塊

--with-mcrypt 支持加密解密庫

--with-config-file-path=/etc 定義php配置文件(php.ini)放置路徑

--with-config-file-scan-dir=/etc/php.d 其他配置文件查找路徑

--with-bz2 支持bz2格式加密

--enable-maintainer-zts 僅針對mpm為event和worker的情況,編譯成zts模塊,如果是prefork則不需要

# make && make install

 

4.把php的配置文件複製到/etc下

# cp php.ini-production /etc/php.ini

 

5.編輯httpd配置文件

# cd /etc/httpd24/

先備份

# cp httpd.conf{,.bak}

# vim httpd.conf

確保有這樣一行(證明php5模塊已載入):

LoadModule php5_module modules/libphp5.so

 

添加兩行,用於支持php格式文檔

AddType application/x-httpd-php .php

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

 

設置預設文檔頁

修改 DirectoryIndex index.html

為 DirectoryIndex index.php index.html

 

6.已經設置完畢,下麵測試一下:

6.1 重啟httpd24

# service httpd24 restart

 

6.2 檢查一下80埠

# ss -tnlp

clip_image002

 

6.3 看看是否已經有了php5_module

# httpd -M

clip_image003

 

6.4 修改一下預設頁面為php格式,進行測試

# cd /usr/local/apache/htdocs/

# mv index.html index.php

# vim index.php

 

<?php

    $conn=mysql_connect('127.0.0.1','root','');

    if ($conn)

        echo "Connect OK!";

    else

        echo "Failure.";

    mysql_close();

?>

上面的資料庫連接用戶名和密碼按照自己設置填寫.

 

6.5 瀏覽器訪問測試一下

clip_image004

OK已成功.

 

六、以fpm方式再安裝PHP

1. 先清理掉之前解壓的php目錄

# rm -rf php-5.5.38

 

2. 重新解壓

# tar xf php-5.5.38.tar.bz2

 

3. 編譯安裝

# cd php-5.5.38

# ./configure --prefix=/usr/local/php-f --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/php-f --with-config-file-scan-dir=/etc/php-f.d --with-bz2

 

這次與上一次配置的php最大不同就在於這個參數

--enable-fpm 表示是以fpm方式編譯

所以就不能下麵這個參數

--with-apxs2=/usr/local/apache/bin/apxs (表示把php編譯成Apache的模塊)

 

另外要把相關路徑改一下名字,不要與剛剛安裝的php目錄重名,這裡我們改為php-f

--prefix=/usr/local/php-f

--with-config-file-path=/etc/php-f

--with-config-file-scan-dir=/etc/php-f.d

 

# make -j 2 && make install

 

4.修改httpd配置

4.1 先停掉httpd

# service httpd24 stop

 

4.2我們需要一個預設的httpd.conf,先備份舊的,然後恢復到預設狀態

# cd /etc/httpd24

# mv httpd.conf httpd.conf.mod_php

# cp httpd.conf.bak httpd.conf

 

4.3 為php提供配置文件

# mkdir /etc/php-f{,.d}

# cd

# cp php-5.5.38/php.ini-production /etc/php-f/php.ini

 

4.4 添加服務腳本

# cp php-5.5.38/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

 

4.5 添加執行許可權

# chmod +x /etc/rc.d/init.d/php-fpm

# chkconfig --add php-fpm

 

4.6 修改配置文件

# cd /usr/local/php-f/etc

來一份預設配置文件

# cp php-fpm.conf.default php-fpm.conf

 

# vim php-fpm.conf

監聽埠改為所有

listen = 0.0.0.0:9000

最大進程數

pm.max_children = 50

剛啟動時進程數

pm.start_servers = 5

最少空閑進程數

pm.min_spare_servers = 2

最大空閑進程數

pm.max_spare_servers = 5

pid路徑

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

 

5.啟動php-fpm

# service php-fpm start

 

6.檢查一下進程

# ps aux | grep fpm

看到已經有5個空閑進程

clip_image005

 

七.再次配置httpd2.4

1.編輯httpd24的配置文件

# cd /etc/httpd24

# vim httpd.conf

啟用這兩個模塊

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

 

添加文件類型

AddType application/x-httpd-php .php

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

 

找到 DirectoryIndex index.html

改為

DirectoryIndex index.php index.html

 

取消這一行的註釋,啟用虛擬主機配置文件

#Include /etc/httpd24/extra/httpd-vhosts.conf

 

2.配置虛擬主機

2.1 創建兩個網站文件夾

# mkdir -p /web/vhosts/{pma,wp}

 

2.2 編輯配置文件,添加虛擬主機

# vim /etc/httpd24/extra/httpd-vhosts.conf

內容修改如下

<VirtualHost *:80>

    ServerAdmin [email protected]

    DocumentRoot /web/vhosts/pma

    ServerName www1.buybybuy.com

    ErrorLog logs/pma.err

    CustomLog logs/pma.access combined

    DirectoryIndex index.html index.php

    ProxyRequests Off

    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/vhosts/pma/$1

    <Directory "/web/vhosts/pma">

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>

<VirtualHost *:80>

    ServerAdmin [email protected]

    DocumentRoot /web/vhosts/wp

    ServerName www2.buybybuy.com

    ErrorLog logs/wp.err

    CustomLog logs/wp.access combined

    DirectoryIndex index.html index.php

    ProxyRequests Off

    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/vhosts/wp/$1

    <Directory "/web/vhosts/wp">

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>

相關解釋

ProxyRequests Off:關閉正向代理

ProxyPassMatch:把以.php結尾的文件請求發送到php-fpm進程,php-fpm至少需要知道運行的目錄和URI,所以這裡直接在fcgi://127.0.0.1:9000後指明瞭這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。

 

八、安裝phpMyadmin

1.把解壓phpMyadmin後文件夾中的所有文檔以及文件夾複製到/web/vhosts/pma/下

# cd

# cp -rf /phpMyAdmin-4.4.15.8-all-languages/* /web/vhosts/pma/

 

2.編輯phpMyadmin的配置文件

# cd /web/vhosts/pma

 

3.備份原始配置文件並編輯新的配置文件

# cp config.sample.inc.php config.inc.php

# vim config.inc.php

填入32位隨機字碼

$cfg['blowfish_secret'] = 'e2d8e1132dc737b3dc1f05cd44c0cc9e'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

 

4.測試

4.1重啟httpd和php-fpm

# service httpd24 restart

# service php-fpm restart

 

4.2瀏覽器測試結果

clip_image006

 

5.這裡可以用mysql的預設用戶root直接登錄測試.root賬號的設置已經在前面第四節的第15部分設置.

6.另一個虛擬主機wp安裝方式同理


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當下,隨著移動時代的到來,手機功能逐步完善,各個行業針對這一現象紛紛制定了相應的營銷計劃,於是霎時間興起了一股網上訂票/網上訂飯/網上預約的熱潮。 而對於IT行業,成為企業信息化最火的代名詞莫過於移動辦公了,幾乎所有的軟體廠商都把推廣的重點轉移到移動辦公的市場上,幾乎在同一時間,大量的移動辦公APP ...
  • 前言: 目前工作負責兩個醫療APP項目的開發,同時使用LeanCloud進行雲端配合開發,完全單挑。 現大框架已經完成,正在進行細節模塊上的開發 抽空總結一下Android項目的開發規範:1、編碼規範 2、命名規範 註:個人經驗,經供參考 一、Android編碼規範 1、學會使用string.xml ...
  • android6.0之後許可權需要動態申請。 尤其是存儲許可權。 如果不申請會出現各種莫名其妙的bug。 本文說明瞭如何解決許可權申請的問題。 供大家參考和一起學習。 ...
  • 第一範式:確保每列的原子性(欄位不可分). 如果每列(或者每個屬性)都是不可再分的最小數據單元(也稱為最小的原子單元),則滿足第一範式. 例如:顧客表(姓名、編號、地址、……)其中"地址"列還可以細分為國家、省、市、區等。 第二範式:在第一範式的基礎上更進一層,目標是確保表中的每列都依賴於主鍵. 如 ...
  • flume配置: #DBFile DBFile.sources = sources1 DBFile.sinks = sinks1 DBFile.channels = channels1 # DBFile-DB-Source DBFile.sources.sources1.type = spooldi... ...
  • MYSQL保存BOOLEAN值時用1代表TRUE,0代表FALSE,boolean在MySQL里的類型為tinyint(1), MySQL里有四個常量:true,false,TRUE,FALSE,它們分別代表1,0,1,0, ...
  • 未分區的表,只能存儲在一個FileGroup中;對Table進行分區後,每一個分區都存儲在一個FileGroup,或分散式存儲在不同的FileGroup中。對錶進行分區的過程,是將邏輯上完整的一個表,按照特定的欄位拆分成多個分區,分散到(相同或不同的)FileGroup中,每一個部分叫做表的一個分區 ...
  • 1 概述 在集成項目中需要應對不同環境下的安裝配置,主流操作系統大致可以分為三種:Linux、Windows以及UNIX。其中Linux備受青睞的主要原因有兩個: 首先,Linux作為自由軟體有兩個特點:一是它免費提供源碼,二是愛好者可以按照自己的需要自由修改、複製和發佈程式的源碼,並公佈在Inte ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...