年終福利,PHP7+Apache2.4+MySQL5.6 源碼編譯安裝,環境配置,搭建你自己的LAMP環境

来源:http://www.cnblogs.com/painsOnline/archive/2016/01/27/5162613.html
-Advertisement-
Play Games

最新的PHP7 MySQL5.6 httpd2.4 ,手把手教你如何源碼安裝LAMP,如何配置相應環境


PHP7 都出來了,你還在玩PHP5嗎?

MySQL5.6 早都出來了,你還在玩MySql5.2嗎?

Apache2.4 早都出來了,你還在玩Apache2.2嗎?

 

筆者不才,願意親自搭建環境,供搭建參考。這裡是源碼安裝的奧,什麼一鍵安裝包,什麼yum安裝,什麼rpm安裝都統統略過(筆者是一個自虐狂,就像windows下安裝軟體一樣,不喜歡安裝在預設的位置也就是C盤了,否則系統盤就爆了)

安裝之前了,要說明下,要保證PHP在最後安裝,原因後面揭曉。安裝任何一個軟體之前,都要確保它所依賴的庫都安裝了。

 

(本處安裝環境 centos6.4)

首先來安裝apache2.4

先到apache官方網站 下載 http://httpd.apache.org/download.cgi 最新版本  httpd-2.4.18.tar.gz

然後進行解壓

tar -zxvf httpd-2.4.18.tar.gz

進入到解壓後的目錄

cd httpd-2.4.18

先不要急著安裝,先確保它所依賴的庫是否有,怎樣查看軟體是否安裝(rpm -q xxx),如果沒有安裝依賴則進行安裝(筆者一般安裝依賴庫直接使用yum 預設安裝,這樣在軟體安裝的時候就不需要知道依賴庫的安裝路徑,省去不少麻煩)

這些安裝包是: zlib-devel pcre-devel pcre apr apr-util

在安裝前筆者遇到yum 無法訪問源的問題,這裡我們把yum的源指定為網易163的,具體指定方法請查看 http://mirrors.163.com/.help/centos.html,上面有詳細步驟

 

然後安裝 zlib-devel pcre-devel pcre apr apr-util (apr apr-util 這兩個庫,筆者在安裝時發現使用yum安裝不可取,編譯時找不到類庫,因此筆者這裡採用源碼安裝方式)

yum install zlib-devel pcre-devel pcre

然後我們使用源碼安裝apr apr-util 這兩個庫,這兩個庫的源碼安裝包可以到(http://apr.apache.org/download.cgi)找到

分別下載

wget http://mirrors.noc.im/apache//apr/apr-1.5.2.tar.gz
wget http://mirrors.noc.im/apache//apr/apr-util-1.5.4.tar.gz

然後分別解壓,並安裝(一定要確保全裝了 gcc-c++ 沒有的話使用 yum install gcc-c++ 進行安裝)

tar -zxvf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr/
make && make install
tar -zxvf apr-util-1.5.4.tar.gz 
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util/  --with-apr=/usr/local/apr/
make && make install

 

下麵開始對Apache進行安裝配置,可以使用

./configure --help 

查看安裝時可以配置哪些參數,下麵我們開始配置一些參數併進行檢查

./configure  \
 --prefix=/usr/local/apache/ \
 --with-apr=/usr/local/apr/ \
 --with-apr-util=/usr/local/apr-util/ \
 --enable-so \
 --enable-deflate=shared \
 --enable-expires=shared \
 --enable-rewrite=shared \
 --enable-static-support

檢查無誤,然後開始編譯安裝

make && make install

然後,漫長等待,大概半個小時。。。

等安裝完以後進入到安裝目錄,開啟apache服務

cd /usr/local/apache/bin/
./apachectl start

哎,發現報錯

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

額,原來就是配置文件中沒有serverName,那就在httpd.conf 中增加 ServerName 

vim /usr/local/apache/conf/httpd.conf

#增加
ServerName localhost

完了之後再重新啟動apache,發現一切正常,然後我們訪問下看看是否OK

好了,這裡算是大功告成了,apache2.4 安裝完畢

 

 

好了,現在我們開始安裝mysql

先要下載mysql源碼安裝包,我們這裡使用mysql-5.6.28.tar.gz ,這個可以到官網上下載,然後解壓

tar -zxvf mysql-5.6.28.tar.gz

還是老話,先不急著安裝,先看看mysql依賴的類庫是否安裝,沒有的話就安裝

yum -y install make gcc-c++ cmake bison-devel  ncurses-devel

進入到解壓後的mysql目錄,你會驚奇的發現沒有configure 文件,這下如何是好。這個主要是新版本的mysql使用了cmake 進行安裝,所以沒有之前的configure文件了

現在我們就使用cmake 進行安裝配置

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

上面幾個重要的地方

'-DCMAKE_INSTALL_PREFIX' 是安裝目錄

'-DMYSQL_DATADIR' 是數據文件存放目錄

'-DSYSCONFDIR' 配置文件目錄

'-DMYSQL_UNIX_ADDR' SOCK文件存放目錄

'-DMYSQL_TCP_PORT' 埠號

檢查無誤後,就開始編譯安裝了

make && make install

然後,然後,然後就是半個小時的等待。。。

 

等一切就緒後,我們需要確保存在 mysql組和mysql用戶

cat /etc/group|grep 'mysql'
cat /etc/passwd|grep 'mysql'

沒有的話就添加

groupadd mysql
useradd -g mysql mysql

然後將目錄'/usr/local/mysql'的所有者改為mysql

chown -R mysql:mysql /usr/local/mysql

這時算是已經安裝完成了,但是mysql中是沒有數據的(即使系統自帶的數據都沒有),這時需要執行自帶腳本,初始化mysql數據

/usr/local/mysql/scripts/mysql_install_db \
--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

執行完成後,你會發現/usr/local/mysql/data 目錄下多了一些文件,這些就是mysql的數據文件了

然後啟動mysql,這時要註意,我們上面指定配置文件位於'/etc'目錄下,但是我們為了方便,想把mysql配置文件放到'/usr/local/mysql/',這時我們需要把'/etc/my.conf'更改一下名稱

mv /etc/my.cnf  /etc/my.cnf.bak

這時mysql 在'/etc'目錄下找不到,就會到'$basedir'下去找,也就是'/usr/local/mysql/'目錄

此時mysql的安裝工作算是完了,下麵就要啟動了,你會發現使用使用

/usr/local/mysql/bin/mysql start

無法啟動,報錯為

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

 

之前筆者怎麼弄都不行,即使建立'/var/lib/mysql/mysql.sock' 後來終於知道,原來不是怎麼啟動的,而是

/usr/local/mysql/support-files/mysql.server start

然後,測試下

/usr/local/mysql/bin/mysql -u root

show databases;

好了,到這裡mysql 算是安裝成功了!

 

最後一步,我們要安裝PHP7了,最為激動人心的時刻到了

首先還是要下載PHP7 ,這個可以到官網上下載,然後就是解壓,和上面一樣的命令(筆者這裡使用 PHP7.0.2)

安裝之前還是老生常談,依賴包要先安裝上

php-mcrypt libmcrypt libmcrypt-devel  autoconf  freetype gd jpegsrc libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel  

挺繁瑣,一堆依賴

yum -y install php-mcrypt libmcrypt libmcrypt-devel  autoconf  freetype gd jpegsrc libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel 
./configure 
--prefix=/usr/local/php/ 
--with-apxs2=/usr/local/apache/bin/apxs 
--enable-mbstring
--with-curl 
--with-gd 
--enable-fpm 
--enable-mysqlnd  
--with-pdo-mysql=mysqlnd 
--with-config-file-path=/usr/local/php/etc/ 
--with-mysqli=mysqlnd 
--with-mysql-sock=/var/lib/mysql/mysql.sock

 

上面編譯時配置支持了很多東西,大家可以按照自己的需求添加,但是有一個基礎的必須配置好

--prefix 安裝目錄

--with-apxs2 apache文件所在地

--with-mysql-sock=/var/lib/mysql/mysql.sock mysql的sock文件地址

--enable-mbstring 支持mbstring

--with-curl 支持curl

--with-gd 支持gd

--enable-fpm 支持fpm

--enable-mysqlnd --with-pdo-mysql pdo支持

 

檢查沒有錯誤了,就可以安裝了,當然瞭如果有錯誤,多少依賴沒有安裝上去,根據提示依次安裝相關依賴庫

然後就開始編譯安裝了

make && make install

經過半個小時漫長的等待....

安裝完成後,我們要把源碼包中的配置文件複製到PHP安裝目錄下,源碼包中有兩個配置  php.ini-development  php.ini-production  ,看名字就知道,一個是開發環境,一個是生產環境,我們這裡就複製開發環境的

cp php.ini-development  /usr/local/php/etc/php.ini

到這裡,還最後一個工作沒有做,就是讓apache去解析PHP文件,在apache配置文件httpd.conf 中加上一條

Addtype application/x-httpd-php .php .phtml

然後重新啟動apache 

/usr/local/apache/bin/apachectl restart

然後在目錄/usr/local/apache/htdocs/ 目錄下增加test.php 

<?
phpinfo();

我們開始訪問 localhost/test.php, 然後顯示出激動人心的畫面

 

到這裡,專屬你的全部最新版本的LAMP環境就算搭建成功了!!!!

 

後面在講述點小知識,有時你需要為php添加擴展,windows下弄兩個dll 然後改下php.ini 就OK了,但是centos下就不行,還得編譯。這樣要是讓你重新編譯PHP,那筆者就要受人唾罵了,我們這裡講述的就是不需要重新編譯PHP,就可以為PHP添加擴展

這裡例子我們要安裝openssl 擴展,在你的源碼安裝包 ext 下會有 openssl 目錄, 進入到該目錄

首先調用我們已經編譯好的  phpize

/usr/local/php/bin/phpize

發現會報錯

Cannot find config.m4.
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module

好,然後我們就把該目錄下的 config0.m4 複製到  config.m4 中

cp config0.m4 config.m4

然後再次執行

/usr/local/php/bin/phpize

誒,這下OK了,弄完之後,你會發現裡面多了些文件 其中有configure文件,這個就是我們想要的

./configure \--with-php-config=/usr/local/php/bin/php-config

編譯完成後,就開始安裝

make && make install

這是你會在你的擴展目錄下發現 so 文件(擴展目錄沒有指定的話,就位於 /usr/local/php/lib/php/extensions/no-debug-zts-xxx 裡面 )

然後在php.ini 加上該擴展

 extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/openssl.so

然後重啟apache 再次訪問test.php 就會發現擴展就安裝上去了

 

OK,這裡關於LAMP安裝的東東算是完了,其實安裝倒不是很複雜,複雜的是各種依賴,真是醉了,各種依賴啊,有木有!!!!

 


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

-Advertisement-
Play Games
更多相關文章
  • md5方法: 1.導入頭文件 #import <CommonCrypto/CommonDigest.h> 2.寫下麵的方法 - (NSString *)md5_32bit:(NSString *)input; 1).傳入的參數必須是字元串,NSData 可以轉成字元串. 2).得到的結果就是32個字
  • 一、關於記憶體警告ios6中廢除了viewDidUnload,viewWillUnload這兩個系統回調,收到記憶體警告時在didReceiveMemoryWarning中進行相關的處理。 二、關於屏幕旋轉同樣ios6 廢除了shouldAutorotateToInterfaceOrientation這
  • 觸摸事件 iOS中的事件: 在用戶使用app過程中,會產生各種各樣的事件。iOS中的事件可以分為3大類型: view的觸摸事件處理: 響應者對象: 在iOS中不是任何對象都能處理事件,只有繼承了UIResponder的對象才能接收並處理事件。我們稱之為“響應者對象”。 UIApplication、U
  • JSPath(用JS更新OC代碼)臨時修複一些BUG需要這個方案庫:https://github.com/bang590/JSPatch工具: http://bang590.github.io/JSPatchConvertor/官網:http://jspatch.com下麵是我用js代碼寫的app的...
  • 如圖是效果圖,第一個按鈕當按下時彈出一個自定義的Dialog,第二個和第三個分別是ProgressBar,只是簡單的改變了樣式第1個ProgressBar是逆時針方向,第2 個時順時針方向 如下是主代碼package com.demo.sb.main;import com.demo.suibian....
  • 昨天開始寫代碼,把數據插入到mysql資料庫中,但是怎麼也沒辦法插入,上網搜,最後的辦法是在phpmyadmin中插入數據後將它轉換為php語句,最後如下: //$sql = "INSERT INTO `stu` ( `sno`, `sname`, `password`, `parentpd`, `
  • 這篇文章主要介紹了在mysql中使用一條sql語句插入多條數據,效率非常高,但是原理其實很簡單,希望對大家有所幫助 假如有一個數據表A: id name title addtime 如果需要插入n條數據 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 $tim
  • 關於芒果的許可權控制說白了就是定義Role(角色)來控制對資料庫進行的操作(調用的方法比如查詢方法find)。系統內置的Role分為以下幾大類:Database User Roles這個是針對非系統資料庫和部分系統表的角色組Database Administration Roles可以操作所有資料庫C...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...