Linux下PHP開發環境搭建

來源:互聯網
上載者:User

標籤:

平時寫程式時都是在伺服器已經搭建好的PHP環境進行的。出於對未知知識的好奇,這幾天在自己的機器上搭建起了PHP開發環境。本想輕鬆順利的看到phpinfo顯示在我的頁面上,沒想到安裝環境時一路的error,不停的 google折騰了半天終於看到了phpinfo。在此把遇到的問題總結一下,給大家提供一個參考。
我的OS是ubuntu 9.10,得益於apt-get強大的功能參考了一下這篇文章 http :// wiki.ubuntu.org.cn/index.php?title=Apache&variant=zh-cn#.E5.AE.89.E8.A3.85LAMP,輕鬆的完成了LAMP的搭建。
後來手痒痒的不行,把環境全刪了重新用源碼包搭建了一遍。步驟如下:

(由於用非root賬戶登入,在需要root許可權時用sudo執行)

一、build-essential的安裝# bulid-essential是編譯源碼包(C/C++程式)所需的編譯工具
# ubuntu 下預設沒有安裝,ubuntu下可以執行sudo apt-get install build-essential

安裝包 build-essential_11.4.tar.gz
# 安裝命令
tar -zxvf build-essential_11.4.tar.gz
cd build-essential-11.4 
./configure
make
sudo make install
make clean

二、MySql的安裝

step.1
ncurses的安裝
# 如果缺少ncurses包mysql編譯會報No curses/termcap library found的錯誤
安裝包 ncurses-5.6.tar.gz
tar -zxvf ncurses-5.6.tar.gz
cd ncurses-5.6 
./configure --prefix=/usr/local/ncurses --with-shared --without-debug --enable-widec
make
sudo make install
make clean

step.2
mysql的安裝
安裝包 mysql-5.1.42.tar.gz

step.a
# 安裝命令
tar -zxvf mysql-5.1.42.tar.gz
cd mysql-5.1.42
./configure --prefix=/usr/local/mysql--with-named-curses-libs=/usr/local/ncurses/lib/libncursesw.so.5.6--with-charset=gbk
# --prefix=/usr/local/mysql mysql的安裝路徑 
# 關於mysql設定檔路徑的說明:mysql按照下列順序搜尋my.cnf
# /etc,mysql安裝目錄如 /usr/local/mysql/etc,安裝目錄下的data目錄如 /usr/local/mysql/data,以最先找到的為準。/etc下my.cnf的配置是全域設定
# --with-named-curses-libs=/usr/local/ncurses/lib/libncursesw.so.5.6 ncurses庫檔案安裝路徑
# --localstatedir=/usr/local/mysql/var 資料庫預設存放路徑(可以設定其它路徑如,/var/lib/mysql)
# --with-charset=gbk 設定資料庫支援中文字元集
make
sudo make install

step.b
# 拷貝mysql設定檔到目標目錄/usr/local/mysql/etc
# 建立/usr/local/mysql/etc目錄(該目錄沒有自動建立)
sudo mkdir/usr/local/mysql/etc
sudo cp support-files/my-medium.cnf /usr/local/mysql/etc/my.cnf
# 刪除安裝產生的臨時檔案(一定要在拷貝完設定檔後在執行,不然my-medium.cnf會被刪除)
make clean

step.c
# 添加一個名為mysql的linux系統群組(可以參考mysql手冊2.8.1. 源碼安裝概述)
sudo groupadd mysql

# 建立一個名為mysql的linux系統使用者,並將其添加到mysql系統群組中
# 如果Linux只啟動命令列介面,可以用下面的操作添加需要的賬戶
# sudo useradd -M -s /bin/false -g mysql mysql
# -M 該選項不會建立使用者目錄
# -s 指定建立使用者使用的shell,/bin/false表示該使用者不能登入系統 
# -g mysql 將使用者mysql添加到組mysql中

# 我現在用的時案頭系統,用如上命令添加賬戶。系統啟動時在登入介面會顯示mysql使用者雖然它不登入
# 改用下面命令,mysql賬戶就不會顯示在登入介面了
sudo useradd -r -s /bin/false-g mysqlmysql
# -r 建立系統賬戶,不建立使用者目錄,使用者指派的uid小於1000

step.d
# 建立mysql授權表
# 如果用root運行命令,應當使用--user選項。選項的值應與你在stpe.czz中建立的登入賬戶相同。如果用該使用者登入來運行命令,可以省略--user選項

#在此步如果報FATAL: Could not find mysqld錯誤,將命令改為#sudo /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysqlstep.e
# 進入mysql的安裝目錄(/usr/local/mysql) 
cd /usr/local/mysql
# 將檔案的所有屬性改為root使用者
sudo chown-R root .
# 將資料目錄的所有屬性改為mysql使用者(即在step.c中建立的使用者)
sudo chown-R mysqlvar
# 將組屬性改為mysql組
sudo chgrp-R mysql.

step.f
# 啟動mysql服務
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql&
# 登入資料庫
/usr/local/mysql/bin/mysql-uroot

mysql安裝完成了

三、Apache的安裝
# 使用DSO動態編譯,關於動態編譯與靜態編譯的區別可以參考http://www.ha97.com/2612.html
安裝包 httpd-2.2.14.tar.gz
tar -zvxf httpd-2.2.14.tar.gz
cd httpd-2.2.14
./configure --prefix=/usr/local/apache --enable-mods-shared=most --enable-so
# --prefix=/usr/local/apache 將apache安裝到/usr/local/apache路徑
# --enable-mods-shared=most 將所有標準模組都動態編譯為DSO模組
# --enable-so apache核心裝載DSO,但是不實際編譯任何動態模組
make
make install
make clean

# 啟動apache 
sudo /usr/local/apache/bin/apachectl start
# 開啟瀏覽器輸入瀏覽器會看到It works!

apache安裝完成了

四、PHP的安裝
step.1
freetype的安裝
安裝包 freetype-2.3.11.tar.gz
# 安裝命令 
tar -zxvf freetype-2.3.11.tar.gz
cd freetype-2.3.11
./configure --prefix=/usr/local/freetype
make
sudo make install
make clean

step.2
zlib的安裝
安裝包 zlib-1.2.3.tar.gz
# 安裝命令
tar -zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure --prefix=/usr/local/zlib --shared#--prefix=/usr/local/zlib zlib的安裝目錄 --shared安裝共用庫
make
sudo make install
make clean

step.3
libpng的安裝
安裝包 libpng-1.4.0.tar.gz
# 安裝命令
tar -zxvf libpng-1.4.0.tar.gz
cd libpng-1.4.0# 將scripts目錄下的makefile.std檔案拷貝到目前的目錄,並重新命名為makefile
cp scripts/makefile.std makefile# 編輯makefile檔案找到27行左右如下內容# ZLIBLIB=../zlib# ZLIBINC=../zlib# 修改為# ZLIBLIB=/usr/local/zlib/lib (zlib的庫檔案路徑)# ZLIBINC=/usr/local/zlib/include (zlib的包含檔案路徑)# 儲存退出# 如果安裝zlib時配置命令為 ./configure ,則不用修改makefile檔案makesudo make install
make clean

step.4
jpeg的安裝
安裝包 jpegsrc.v7.tar.gz
# 安裝命令
tar -zxvf jpegsrc.v7.tar.gz
cd jpeg-7
./configure --prefix=/usr/local/jpeg7
make
sudo make install
make clean
# 很多人手動建立 jpeg的目錄結構不知道是因為不同還是有其它原因(有待查證)

# 以上包都是gd庫所需要的組成庫,下面安裝gd庫

step.5
gd庫的安裝
安裝包 gd-2.0.35.tar.gz
# 安裝命令

step.a
tar -zxvf gd-2.0.35.tar.gz
cd gd-2.0.35# 執行gd配置命令LDFLAGS="-L/usr/local/lamp/contrib/lib" ./configure --prefix=/usr/local/gd2 --with-freetype=/usr/local/freetype --with-png=/usr/local/libpng --with-jpeg=/usr/local/jpeg7
# LDFLAGS="-L/usr/local/zlib/lib" zlib的庫檔案路徑# 如果安裝zlib時配置命令為./configure ,則將gd2庫的配置命令改為 ./configure --prefix=/usr/local/gd2 --with-freetype=/usr/local/freetype --with-png=/usr/local/libpng --with-jpeg=/usr/local/jpeg7
step.b
# 編輯 Makefile 檔案, 找到 232 行左右
# 看到類似內容 CPPFLAGS = -I/usr/local/freetype/include/freetype2 -I/usr/local/freetype/include -I/usr/local/freetype/include -I/usr/local/jpeg7/include
# 修改為 CPPFLAGS = -I/usr/local/freetype/include/freetype2 -I/usr/local/freetype/include -I/usr/local/freetype/include -I/usr/local/jpeg7/include -I/usr/local/libpng/include # 儲存退出

step.c
# 編輯 gd_png.c 檔案 找到 if (!png_check_sig (sig, 8)) { 
# 修改為 if (png_sig_cmp (sig, 0, 8)) {# 儲存退出

step.d
# 執行命令
make
sudo make install
make clean
# gd庫安裝完成 

step.6
libxml2的安裝安裝包 libxml2-2.6.20.tar.gz
# libxml2用來解析xml
# 安裝命令
tar -zxvf libxml2-2.6.20.tar.gz
cd libxml2-2.6.20
./configure --prefix=/usr/local/libxml# 編輯 nanohttp.c 檔案,找到fd = open(filename, O_CREAT | O_WRONLY);(可以通過尋找O_WRONLY定位)# 修改為 fd = open(filename, O_CREAT | O_WRONLY,0777);# 儲存退出
make
make install
make clean

step.7
php的安裝
安裝包 php-5.3.1.tar.gz
# 安裝命令
step.a
tar -zxvf php-5.3.1.tar.gz
cd php-5.3.1.tar
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql--with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg7 --with-freetyp-e-dir=/usr/local/freetype --with-gd=/usr/local/gd2
 # --with-zlib-dir=/usr/local/zlib 的安裝目錄,如果安裝zlib的配置命令為 ./configure ,則安裝目錄為/usr/local

make
sudo make install
make clean

step.b
拷貝PHP設定檔
sudo cp php.ini-development /usr/local/php/lib/php.ini
# php設定檔名稱不同本版名稱會有差異,目前的版本中有兩個檔案 php.ini-development(開發環境中用的) php.ini-production(生產環境中用的)

step.d
修改apache設定檔/usr/local/apache/conf/httpd.conf

# 添加對php的支援
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php

step.e
# 如果用root賬戶登入跳過這一步
# 更目錄web目錄許可權 
sudo chown-R 登入使用者:登入使用者 /usr/local/apache/htdocs

step.f
#重啟apache 
sudo /usr/local/apache/bin/apachectl restart

好了到此linux配置環境配置完了,由於各種問題這篇文章拖了好幾天才寫完。這中間還發生了未儲存而丟失文檔的杯俱淚奔啊!其中各個包的安裝./configure涉及到的參數只是一些基本的參數,LAMP之旅剛剛開始。走過了會發現沒有想象的那麼困難了,GOOD LUCK!

Linux下PHP開發環境搭建

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.