Ubuntu下的LAMP環(huán)境編譯安裝

虛擬機安裝

  • 使用鏡像安裝ISO
  • 啟動虛擬機轉(zhuǎn)換網(wǎng)絡(luò)橋接模式
  • ifconfig 查看IP
  • 使用mac終端 或者 window ssh連接Linux
  • MAC連接如下:
ssh username@ip

Ubuntu 下的 apt-get 更新

  • 在使用之前,需要使用apt-get update進(jìn)行資源目錄的更新怔昨,注意這里是網(wǎng)絡(luò)資源目錄更新雀久。
  • apt-get upgrade是進(jìn)行所安裝軟件的更新

下載LAMP環(huán)境安裝包

下載依賴包

公共依賴包

cmake   // 用來預(yù)編譯MySQL
make    // 源碼預(yù)編譯
gcc // GNU c編譯器
g++ // GNU c++編譯器 
libxml2-dev // 編譯安裝libxml2會用此依賴包
libxml2
build-essential // 編譯程序的依賴包 作用:提供編譯程序必須軟件包的列表信息
bison   // 安裝Mysql會用到
build-depgcc    // Ubuntu下的gcc安裝
libncurses5-dev // 安裝libncurses5的依賴包
re2c    // PHP語法分析器
libmcrypt   // 算法加密庫
autoconf    // 自動配置,phpize會用到

Apache依賴包

apr // Apache可移植運行庫
apr-until   // 
pcre    // 一個Perl庫

編譯安裝

Apache

  • 安裝apr

解壓后進(jìn)入目錄,執(zhí)行如下命令

./configure --prefix=/usr/local/apr
make && make install
  • 安裝apr-until

解壓后進(jìn)入目錄原叮,執(zhí)行如下命令

./configure --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr 
make && make install
  • 安裝pcre

解壓后進(jìn)入目錄赫编,執(zhí)行如下命令

./configure --prefix=/usr/local/pcre
make && make install
  • 安裝Apache

解壓后進(jìn)入目錄,執(zhí)行如下命令

./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
make && make install

有時用tar解壓.錯誤如下:

gzip: stdin: unexpected end of file 
tar: Unexpected EOF in archive 
tar: Unexpected EOF in archive 
tar: Error is not recoverable: exiting now 

原因:該源碼包在下載過程中被破壞或者未使用想對應(yīng)后綴的解壓命令奋隶。
解決方法:重新下載擂送。

  • 配置Apache

進(jìn)入 /usr/local/apache/conf 目錄 備份http.conf 為 http.conf.bak

vi  http.conf

將187行 ServerName 前#去掉,更改為 ServerName 127.0.0.1:80 保存退出唯欣;
進(jìn)入 apache/bin 目錄 apachectl 為服務(wù)啟動腳本嘹吨,將此文件 cp 到 /etc/init.d/httpd;
執(zhí)行命令:sudo service httpd start 通過瀏覽器訪問 localhost 即可看見 it Work 即可境氢;
如果出現(xiàn)未啟動情況請查看80端口是否被其他程序占用蟀拷。

MySQL 安裝編譯

創(chuàng)建用戶和用戶組

groupadd mysql
useradd -g mysql- s "/sbin/nologin" // 防止以mysql用戶登錄系統(tǒng)

進(jìn)入mysql目錄碰纬,執(zhí)行cmake

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_USER=mysql -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

-DCMAKE_INSTALL_PREFIX=安裝根目錄
-DCMAKE_INSTALL_PREFIX=unix套接字目錄
-DDEFAULT_CHARSET=默認(rèn)字符集
-DDEFAULT_COLLATION=默認(rèn)編碼
-DWITH_EXTRA_CHARSETS=額外的編碼,請使用ALL來編譯问芬。
-DWITH_MYISAM_STORAGE_ENGINE=1 編譯myisam存儲引擎悦析,默認(rèn)的存儲引擎,不加也可以
-DWITH_INNOBASE_STORAGE_ENGINE=1 支持InnoDB存儲引擎此衅,這個也是默認(rèn)安裝的
-DWITH_READLINE=1 使用readline功能
-DENABLED_LOCAL_INFILE=1 可以使用load data infile命令從本地導(dǎo)入文件
-DMYSQL_DATADIR=數(shù)據(jù)庫 數(shù)據(jù)目錄
-DDOWNLOAD_BOOST=1 // 下載boost强戴,這個用來編譯高版本的Mysql,沒有會報錯,也可以進(jìn)行apt-get
-DWITH_BOOST=/usr/local/boost // 使用boost

這個問題我重新安裝一次就沒有了

debian 系統(tǒng)下安裝挡鞍,需要把系統(tǒng) Swap 設(shè)到最大的 512M(linode 默認(rèn)的 Swap 是 256M骑歹,最大是 512M),不然編譯時會報 “g++: internal compiler error: Killed (program cc1plus)” 的錯誤:(

編譯安裝

./configure  --prefix=/usr/local/php  --with-apxs2=/usr/local/apache/bin/apxs    --with-mysql=/usr/local/mysql --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg  --with-png-dir=/usr/local/libpng --with-zlib-dir=/usr/local/zlib --enable-mbstring  --enable-xml  --enable-sockets 

make && make install

配置mysql

安裝默認(rèn)數(shù)據(jù)庫

cd /usr/local/mysql/scripts

初始化數(shù)據(jù)庫

./mysql_install_db --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data   --user=mysql

復(fù)制配置文件

cd /usr/local/mysql/support-files
cp my-medium.cnf /etc/my.cnf cpmysql.server /etc/init.d/mysqld

修改配置配置文件

vi /etc/init.d/mysqld /*編輯basedir=和datadir=*/
basedir=/usr/local/mysql datadir=/home/mysql servicemysqld start

提示:出國一次pid的錯誤墨微,解決方式是重新安裝道媚。

PHP安裝編譯

可以查看一下INSTALL文件,里面有安裝說明欢嘿。

說明:此次安裝未在編譯PHP安裝模塊衰琐,主要是可以通過phpize來實現(xiàn)編譯后PHP的擴展安裝;如果有需要炼蹦,也可以實現(xiàn)在前期編譯前安裝相應(yīng)的擴展模塊羡宙,只需要按正常順序進(jìn)行解壓,配置掐隐,編譯即可狗热,在編譯PHP時加入相應(yīng)的OPtions參數(shù)即可,但需要注意的是依賴包問題虑省。

開始編譯

進(jìn)入PHP解壓目錄
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with--mysql=/usr/local/mysql

--with-apxs2=/usr/local/apache/bin/apxs // 掛在apache上匿刮,并且開啟PHP模塊
--with-mysql=/usr/mysql/mysql // PHP的擴展模塊mysql

make && make install

復(fù)制配置文件

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

修改php.ini 文件 中搜索 date 將默認(rèn)時區(qū)修改為 Asia/Shanhai

修改http.conf文件

向 http.conf 文件中加入

<FilesMatch \.php$>  
SetHandler application/x-httpd-php 
</FilesMatch>

搜索DirectoryIndex 修改為

index.html index.php index.htm

在Apache的htdoc目錄中建立文件

mv index.html index.php
vim index.php
<?php
echo phpinfo();
?>

安裝完成進(jìn)行測試

瀏覽器打開對應(yīng)IP即可

編譯PHP擴展

GD庫的安裝

GD依賴包有很多,需要在安裝之前全部安裝
注意:安裝過程中可能還會需要相應(yīng)的依賴包探颈,選擇安裝

libfreetype6-dev
libfontconfig1-dev
libgpm-dev
libjpeg62
libjpeg62-dev
libpng12-0
libpng-12-0-dev
libfeetype6
libfreetype6-dev
libxml2
libxml2-dev
zlib1g
zlib1g-dev
libcurl3
libcur3-dev
libncurses5-dev
libperl-dev bison

libpng

tar -xf libpng-1.6.16.tar.gz
cd libpng-1.6.16
./configure
make
make install

jpegsrc

mkdir /usr/local/jpeg9
mkdir /usr/local/jpeg9/bin
mkdir /usr/local/jpeg9/lib
mkdir /usr/local/jpeg9/include
mkdir -p /usr/local/jpeg9/man/man1
cd /usr/local/src/
tar -zxvf jpegsrc.v9a.tar.gz
cd jpeg-9a/
./configure --prefix=/usr/local/jpeg9/ --enable-shared --enable-static
make && make install

freetype

tar -xf freetype-2.5.5.tar.gz
cd freetype-2.5.5
./configure
make && make install

這是提示找不到libpng的安裝位置熟丸,所以需要將libpng的bin目錄配置到環(huán)境變量中

vi /etc/profile
LIB_PNG=/usr/local/libpng/bin
PATH=$LIB_PNG:$PATH  
export PATH 
生效:./etc/profile

GD庫

進(jìn)入安裝的源碼包中,找到ext擴展包目錄伪节,進(jìn)如相應(yīng)擴展包目錄 或者 自己下載擴展包光羞,進(jìn)入相應(yīng)擴展包目錄
我的目錄如下:

cd /usr/local/src/php-5.6.19/ext/gd

使用phpize生成configure

/usr/local/php/bin/phpize

使用 configure 安裝配置

./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

修改php.ini,在該文件的 Dynamic Extensions 模塊下添加一行

extension=gd.so

檢測gd庫安裝情況

/usr/local/bin/php -m
/usr/local/bin/php -m |grep gd

安裝memcache

安裝memcache之前需要安裝libevent支持

wget http://down1.chinaunix.net/distfiles/libevent-2.0.21-stable.tar.gz
tar -zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure --prefix=/usr/local/libevent
make && make install

接下來安裝擴展包

下載memcache
解壓
進(jìn)入目錄
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
make

做到這一步應(yīng)該會報錯怀大,未報錯直接跳過纱兑。錯誤內(nèi)容大致如下:

/usr/local/src/memcache-2.2.3/memcache.c: 在函數(shù)‘php_mmc_connect'中:
/usr/local/src/memcache-2.2.3/memcache.c:1902: 錯誤:提供給函數(shù)‘zend_list_insert'的實參太少
/usr/local/src/memcache-2.2.3/memcache.c:1919: 錯誤:提供給函數(shù)‘zend_list_insert'的實參太少
/usr/local/src/memcache-2.2.3/memcache.c: 在函數(shù)‘zif_memcache_add_server'中:
/usr/local/src/memcache-2.2.3/memcache.c:1975: 錯誤:提供給函數(shù)‘zend_is_callable'的實參太少
/usr/local/src/memcache-2.2.3/memcache.c:2003: 錯誤:提供給函數(shù)‘zend_list_insert'的實參太少
/usr/local/src/memcache-2.2.3/memcache.c: 在函數(shù)‘zif_memcache_set_server_params'中:
/usr/local/src/memcache-2.2.3/memcache.c:2059: 錯誤:提供給函數(shù)‘zend_is_callable'的實參太少
/usr/local/src/memcache-2.2.3/memcache.c: 在函數(shù)‘mmc_find_persistent'中:
/usr/local/src/memcache-2.2.3/memcache.c:2159: 錯誤:提供給函數(shù)‘zend_list_insert'的實參太少
/usr/local/src/memcache-2.2.3/memcache.c:2177: 錯誤:提供給函數(shù)‘zend_list_insert'的實參太少
make: *** [memcache.lo] 錯誤 1

糾錯方式:

根據(jù)錯誤嘉裤,進(jìn)行修改:
vi memcache.c
將所有的:zend_list_insert(pool, le_memcache_pool); 
改為:zend_list_insert(pool, le_memcache_pool TSRMLS_CC);
將所有的:zend_list_insert(mmc, le_pmemcache);
改為:zend_list_insert(mmc, le_pmemcache TSRMLS_CC);
將所有的:if (!zend_is_callable(failure_callback, 0, NULL))
改為:if (!zend_is_callable(failure_callback, 0, NULL, NULL))

vim 修改方式

全部替換
%s/old/new/g

修改完成后蚀之,重新make編譯:

make && make install

成功則顯示

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20131226/

接下來修改php.ini配置文件尊剔,增加extension=memcache.so即可,重啟服務(wù)器

注意:其他擴展庫依據(jù)以上步驟即可

虛擬機設(shè)置

編輯apache服務(wù)器的配置文件,開啟擴展模塊vhost,即去除#號即可

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

http.conf 同級目錄下公你,extra目錄,vim httpd-vhosts.conf

<Directory "/usr/local/apache/docs/wbl">
     Options Indexes
     AllowOverride None
     Require all granted
</Directory>
 
<VirtualHost 172.2.2.33:80>
     ServerAdmin webmaster@dummy-host2.example.com
     DocumentRoot "/usr/local/apache/docs/wbl"
     ServerName wbl.wbl.com
     ErrorLog "logs/wbl.wbl.com-error_log"
     CustomLog "logs/wbl.wbl.com-access_log" common
</VirtualHost>

主機電腦設(shè)置庶骄。我的是OSX系統(tǒng)

vim /etc/hosts
加入
172.2.2.33  wbl.wbl.com

重啟Apache即可澳眷,直接在網(wǎng)頁上查看即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末习柠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子驳遵,更是在濱河造成了極大的恐慌淫奔,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堤结,死亡現(xiàn)場離奇詭異唆迁,居然都是意外死亡,警方通過查閱死者的電腦和手機竞穷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門唐责,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瘾带,你說我怎么就攤上這事鼠哥。” “怎么了看政?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵朴恳,是天一觀的道長。 經(jīng)常有香客問我允蚣,道長于颖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任嚷兔,我火速辦了婚禮森渐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冒晰。我一直安慰自己同衣,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布壶运。 她就那樣靜靜地躺著耐齐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蒋情。 梳的紋絲不亂的頭發(fā)上埠况,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音恕出,去河邊找鬼询枚。 笑死违帆,一個胖子當(dāng)著我的面吹牛浙巫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼的畴,長吁一口氣:“原來是場噩夢啊……” “哼渊抄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丧裁,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤护桦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后煎娇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體二庵,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年缓呛,在試婚紗的時候發(fā)現(xiàn)自己被綠了催享。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡哟绊,死狀恐怖因妙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情票髓,我是刑警寧澤攀涵,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站洽沟,受9級特大地震影響以故,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜玲躯,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一据德、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧跷车,春花似錦棘利、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至密强,卻和暖如春茅郎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背或渤。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工系冗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人薪鹦。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓掌敬,卻偏偏與公主長得像惯豆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子奔害,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一楷兽、卸載系統(tǒng)原有軟件 mysql sudo apt-get autoremove --purge mysql-se...
    liangxifeng833閱讀 1,470評論 0 3
  • 一、LAMP環(huán)境的介紹 1.LAMP環(huán)境的重要性 思索許久华临,最終還是決定寫一篇詳細(xì)的LAMP的源碼編譯安裝的實驗文...
    endmoon閱讀 2,626評論 4 26
  • php+mysql+apache+centos 編譯安裝 領(lǐng)導(dǎo)要求先保證php環(huán)境穩(wěn)定芯杀,然后再去考慮其他,例如性能...
    dnaEMx閱讀 2,214評論 1 16
  • 1.LAMP介紹 ? LAM(M)P:L: linuxA: apache (httpd)M: mysql, mar...
    尛尛大尹閱讀 1,055評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理雅潭,服務(wù)發(fā)現(xiàn)揭厚,斷路器,智...
    卡卡羅2017閱讀 134,715評論 18 139