天天看點

linux下LAMP環境搭建

LAMP 是Linux Apache MySQL PHP的簡寫,其實就是把Apache, MySQL以及PHP安裝在Linux系統上,組成一個環境來運作php的腳本語言。Apache是最常用的WEB服務軟體,MySQL是比較小型的資料庫軟體,這兩個軟體以及PHP都可以安裝到windows的機器上。

LAMP環境安裝順序,首先安裝mysql、apache,PHP最後安裝,因為PHP要調用mysql和apache的一些參數和資料。

關于源代碼包和二進制包:

源代碼方式和二進制包是軟體包的兩種形式。二進制包裡面包括了已經經過編譯,可以馬上運作的程式。你隻需要下載下傳和解包(安裝)它們以後,就馬上可以使用。源代碼包裡面包括了程式原始的程式代碼,需要在你的計算機上進行編譯以後才可以産生可以運作程式,是以從源代碼安裝的時間會比較長。

可以通路下面的連結擷取LAMP的安裝檔案

linux版本為CentOS 6.6

安裝MySQL

我們平時安裝MySQL都是源碼包安裝的,但是由于它的編譯需要很長的時間,我們這裡選擇安裝二進制免編譯包。你可以到MySQL官方網站去下載下傳 http://dev.mysql.com/downloads/ 具體版本根據你的平台和需求而定,目前比較常用的為mysql-5.0/mysql-5.1, 5.5版本雖然已經釋出有段日子了,但是貌似用線上上跑服務的還是少數。

具體的步驟如下:

1、下載下傳mysql安裝檔案到/usr/local/src 目錄下,如果沒有wget指令,yum install wget 安裝即可;

1

2

<code>[root@yong ~]</code><code># cd /usr/local/src</code>

<code>[root@yong src]</code><code># wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz</code>

2、解壓下載下傳的檔案

<code>[root@yong src]</code><code># tar -zxvf mysql-5.1.40-linux-i686-icc-glibc23.tar.gz</code>

3、把解壓完的資料移動到/usr/local/mysql

提醒注意:不用自己手動添加/mysql目錄,移動的同時會把原目錄改名的。

<code>[root@yong src]</code><code># mv mysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql</code>

4、建立mysql使用者,禁止登入系統;

<code>[root@yong src]</code><code># useradd -s /sbin/nologin mysql</code>

5、初始化資料庫,建立/data目錄及/data/mysql子目錄,并設定/data/mysql目錄的所屬主所屬組為mysql使用者;

3

<code>[root@yong src]</code><code># cd /usr/local/mysql/</code>

<code>[root@yong mysql]</code><code># mkdir -p /data/mysql</code>

<code>[root@yong mysql]</code><code># chown -R mysql:mysql /data/mysql/</code>

4

5

<code>[root@yong mysql]</code><code># ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/</code>

<code>Installing MySQL system tables...</code>

<code>OK</code>

<code>Filling help tables...</code>

--user 定義資料庫的所屬主,--datadir 定義資料庫的安裝路徑,建議放到大存儲空間。看到兩個"OK"說明執行正确,否則請仔細檢視錯誤資訊,查詢哪裡出了問題;

6、拷貝配置檔案

<code>[root@yong mysql]</code><code># cp support-files/my-large.cnf /etc/my.cnf</code>

模闆配置檔案在/mysql/support-files/目錄下;

根據記憶體大小選擇: 

my-small.cnf (記憶體 &lt;= 64M)

my-medium.cnf (記憶體 128M )

my-large.cnf (記憶體 512M)

my-huge.cnf (記憶體 1G-2G)

my-innodb-heavy-4G.cnf (記憶體 4GB)

7、拷貝啟動腳本檔案并修改屬性

<code>[root@yong mysql]</code><code># cp support-files/mysql.server /etc/init.d/mysqld </code>

<code>[root@yong mysql]</code><code># chmod 755 /etc/init.d/mysqld</code>

8、修改啟動腳本

<code>[root@yong mysql]</code><code># vim /etc/init.d/mysqld</code>

需要修改的地方有

"basedir=/usr/local/mysql"(mysql的安裝目錄)

"datadir=/data/mysql"(前面初始化資料庫定義的目錄)

9、把啟動腳本加入系統服務項,并設定開機啟動,啟動mysql服務;

<code>[root@yong mysql]</code><code># chkconfig --add mysqld</code>

<code>[root@yong mysql]</code><code># chkconfig mysqld on</code>

<code>[root@yong mysql]</code><code># service mysqld start</code>

<code>Starting MySQL..                                           [  OK  ]</code>

啟動mysqld服務時如出現以下的錯誤,

<code>/etc/init</code><code>.d</code><code>/mysqld</code><code>: line 260: my_print_defaults: </code><code>command</code> <code>not found</code>

<code>/etc/init</code><code>.d</code><code>/mysqld</code><code>: line 263: my_print_defaults: </code><code>command</code> <code>not found</code>

<code>Starting MySQL ERROR! Couldn't </code><code>find</code> <code>MySQL manager (.</code><code>/bin/mysqlmanager</code><code>) or server (.</code><code>/bin/mysqld_safe</code><code>)</code>

出錯的原因是解壓出來的mysql-5.1.40-linux-i686-icc-glibc23目錄,執行mv mysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql 目錄的時候,不用建立目标目錄mysql,指令是移動的同時會改名為mysql,如自己手動建立/local/mysql目錄則是把目錄移動到此目錄下,導緻指令不能執行。

也有可能的原因如下:

需要在/etc/my.cnf配置檔案中,添加basedir和datadir

[mysqld]

port            = 3306

basedir=/usr/local/mysql

datadir=/data/mysql

/etc/init.d/mysqld配置檔案中,也需要添加basedir和datadir

<code>[root@localhost mysql]</code><code># /etc/init.d/mysqld start</code>

<code>Starting MySQL.... SUCCESS!</code>

10、檢視mysqld是否啟動

<code>[root@localhost mysql]</code><code># ps aux |grep mysqld</code>

<code>root      1341  0.0  0.1   6680  1328 pts</code><code>/0</code>    <code>S    20:22   0:00 </code><code>/bin/sh</code> <code>/usr/local/mysql/bin/mysqld_safe</code> <code>--datadir=</code><code>/data/mysql</code> <code>--pid-</code><code>file</code><code>=</code><code>/data/mysql/localhost</code><code>.localdomain.pid</code>

<code>mysql     1456  0.3  4.2 381608 43504 pts</code><code>/0</code>    <code>Sl   20:22   0:01 </code><code>/usr/local/mysql/bin/mysqld</code> <code>--basedir=</code><code>/usr/local/mysql</code> <code>--datadir=</code><code>/data/mysql</code> <code>--user=mysql --log-error=</code><code>/data/mysql/localhost</code><code>.localdomain.err --pid-</code><code>file</code><code>=</code><code>/data/mysql/localhost</code><code>.localdomain.pid --socket=</code><code>/tmp/mysql</code><code>.sock --port=3306</code>

<a href="http://s3.51cto.com/wyfs02/M02/6C/12/wKioL1U_UA3SgWIJAAMT7z8DejU561.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/6C/16/wKiom1U_TqqwL56sAAD0gKrcF2c794.jpg" target="_blank"></a>

/usr/local/mysql/bin 目錄下的mysql為可執行指令,執行mysql開啟用戶端,測試mysql是否工作;

<a href="http://s3.51cto.com/wyfs02/M01/6C/16/wKiom1U_TyCzNqjlAALFzieI3A8341.jpg" target="_blank"></a>

安裝apache

1、下載下傳httpd包到/usr/local/src/目錄下;

<code>[root@localhost src]</code><code># wget  </code>

<code>http:</code><code>//syslab</code><code>.comsenz.com</code><code>/downloads/linux/httpd-2</code><code>.2.16.</code><code>tar</code><code>.gz</code>

2、解壓httpd源碼包

<a href="http://syslab.comsenz.com/downloads/linux/httpd-2.2.16.tar.gz" target="_blank"></a>

<code>[root@localhost src]</code><code># tar -zxvf httpd-2.2.16.tar.gz</code>

3、配置編譯的參數

<code>[root@localhost src]</code><code># cd httpd-2.2.16</code>

<code>[root@localhost httpd-2.2.16]</code><code># ./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-so</code>

--prefix    指定apache的安裝目錄;

--enable-mods-shared=most    表示安裝的子產品大多數以mods共享模式加載;

--enable-so    表示是否支援dso動态加載子產品,擴充安裝;

執行./configure時,可能會遇到以下錯誤,這個主要是gcc編譯器包、apr包沒有安裝。對于這個問題,安裝gcc、apr包就可以了。

configure: error: in `/usr/local/src/httpd-2.2.16/srclib/apr':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details.

configure failed for srclib/apr

執行./configure時,可能會遇到以上錯誤,這個主要是gcc編譯器包、apr包沒有安裝。對于這個問題,使用yum install gcc就可以了。

<code>[root@localhost apr]</code><code># yum install -y gcc</code>

<code>[root@localhost bin]</code><code># yum install -y pcre pcre-devel apr apr-devel</code>

4、make編譯,編譯完成後使用echo $? 檢視make指令是否執行成功,成功傳回值為0,不成功則為非0;

<code>[root@localhost apr]</code><code># make</code>

<code>[root@localhost apr]</code><code># echo $?</code>

<code>0</code>

5、make install安裝,完成後同樣使用echo $? 檢視是否執行成功,成功傳回值為0,不成功則為非0;

<code>[root@localhost apr]</code><code># make install</code>

當我們安裝好apache伺服器後通常會在apache2/bin/目錄形成一些相關的執行指令,其中httpd檔案是apache伺服器的主程式。其被設計為一個獨立運作的背景程序,它會建立一個處理請求的子程序或線程的池。Apache伺服器的所有相關操作都可以通過httpd指令進行完成,但是通常情況下我們并不建議這麼做,而是通過同一目錄下的apachectl指令通過調用httpd指令的方式來完成對伺服器的開啟,關閉等相關的操作的。

apache安裝完成後檢測:

/usr/local/apache2/bin/apachectl -t    測試配置檔案是否正确

/usr/local/apache2/bin/httpd -t    測試配置檔案是否正确,和上面的指令一樣的效果;

/usr/local/apache2/bin/apachectl -l    檢視apache加載的靜态子產品

/usr/local/apache2/bin/apachectl -M    把所有加載的子產品列出來。 

檢視曾經的編譯選項 

/usr/local/apache2/build/config.nice 檢視這個檔案,列出來編譯的時候的選項内容;

6

7

8

9

<code>[root@localhost httpd-2.2.29]</code><code># cat /usr/local/apache2/build/config.nice </code>

<code>#! /bin/sh</code>

<code>#</code>

<code># Created by configure</code>

<code>"./configure"</code> <code>\</code>

<code>"--prefix=/usr/local/apache2"</code> <code>\</code>

<code>"--enable-mods-shared=most"</code> <code>\</code>

<code>"--enable-so"</code> <code>\</code>

<code>"$@"</code>

apache啟動指令:

/usr/local/apache2/bin/apachectl start/stop/restart

/usr/local/apache2/bin/apachectl graceful/graceful-stop

start    用于啟動apache服務,首先檢查apache的配置檔案是否有誤,沒有錯誤啟動服務,如有誤則輸出錯誤資訊;

stop    用于停止apache伺服器,如果已經停止了apache伺服器則會報錯;

restart    重新啟動apache伺服器,如果apache沒有啟動則啟動它;

graceful   和start參數一樣,差別在于它不會中斷正在處理的連接配接,也不會關閉日志。推薦使用。

graceful-stop    和stop參數一樣,差別在于它不會中斷正在處理的連接配接,也不會關閉日志,推薦使用。

<code>[root@localhost httpd-2.2.29]</code><code># /usr/local/apache2/bin/apachectl graceful</code>

<code>httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain </code><code>for</code> <code>ServerName</code>

<code>httpd not running, trying to start</code>

啟動時會出現幾行類似錯誤的資訊,是域名解析問題,需要在下面的配置檔案修改:vim /usr/local/apach2/conf/http.conf

這一項去掉#号,儲存退出。再次啟動就不會報錯;

啟動apache後使用netstat -nlp |grep httpd    檢視httpd 80端口是否啟用

<a href="http://s3.51cto.com/wyfs02/M00/6C/13/wKioL1U_U0iTjAkGAACSyTwccq8401.jpg" target="_blank"></a>

使用curl localhost    測試網頁是否正常;

<code>[root@localhost httpd-2.2.29]</code><code># curl localhost</code>

<code>&lt;html&gt;&lt;body&gt;&lt;h1&gt;It works!&lt;</code><code>/h1</code><code>&gt;&lt;</code><code>/body</code><code>&gt;&lt;</code><code>/html</code><code>&gt;</code>

在IE浏覽器輸入本地ip位址也可以測試網頁是否正常;

<a href="http://s3.51cto.com/wyfs02/M02/6C/13/wKioL1U_U3DAgeH_AADTtK_E8Oo461.jpg" target="_blank"></a>

PHP安裝

PHP原始為 Personal Home Page的縮寫,現已經正式更名為 "PHP: Hypertext Preprocessor"(超文本預處理) 的縮寫。

PHP 是一種 HTML 内嵌式的語言,是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似于C語言,被廣泛地運用。

1、下載下傳php源碼包,下載下傳後解壓包

<code>[root@yong ~]</code><code># cd /usr/local/src/</code>

<code>[root@yong src]</code><code># wget http://cn2.php.net/distributions/php-5.3.28.tar.gz</code>

<code>[root@yong src]</code><code># tar -zxvf php-5.3.28.tar.gz</code>

2、編譯php源碼包,配置選項參數

<code>[root@yong php-5.3.28]</code><code># ./configure   --prefix=/usr/local/php   --with-apxs2=/usr/local/apache2/bin/apxs   --with-config-file-path=/usr/local/php/etc   --with-mysql=/usr/local/mysql   --with-libxml-dir   --with-gd   --with-jpeg-dir   --with-png-dir   --with-freetype-dir   --with-iconv-dir   --with-zlib-dir   --with-bz2   --with-openssl   --with-mcrypt   --enable-soap   --enable-gd-native-ttf   --enable-mbstring   --enable-sockets   --enable-exif   --disable-ipv6</code>

執行完成後最後幾行報錯,提示perl沒有安裝,apxs沒有找到,apache沒有建立;

Sorry, I cannot run apxs.  Possible reasons follow:

1. Perl is not installed

2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs

3. Apache was not built using --enable-so (the apxs usage page is displayed)

The output of /usr/local/apache2/bin/apxs follows:

./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory

configure: error: Aborting

這裡先安裝perl

<code>[root@localhost php-5.3.28]</code><code># yum install -y perl</code>

安裝perl之後,再次運作./configure還是報同樣的錯誤;

perl已經安裝成功,apxs也是存在的,其實真正的原因是apxs無法運作;

沒有安裝perl的情況下,編譯安裝apache生成apxs的第一行是:

#!/replace/with/path/to/perl/interpreter -w

#!/replace/with/path/to/perl/interpreter 因為這個檔案是不存在的,是以不能運作apxs;

使用apxs需要安裝perl,因為apxs使用的perl腳本;

修改配置檔案:/usr/local/apache2/bin/apxs 的第一行内容

修改成#!/usr/bin/perl -w    儲存退出;

建議在安裝apache之前先安裝perl,就不會出現此錯誤。

再次執行./configure 這一步,又出現下面的錯誤;

configure: error: xml2-config not found. Please check your libxml2 installation.

需要安裝libxml2-devel包

安裝完成後再次執行./configure 這一步,又出現下面的錯誤;

configure: error: Cannot find OpenSSL's &lt;evp.h&gt;

需要安裝openssl-devel包

configure: error: Please reinstall the BZip2 distribution

需要安裝bzip2-devel包

configure: error: jpeglib.h not found.

需要安裝libjpeg-devel包

configure: error: png.h not found.

需要安裝libpng-devel包

If configure fails try --with-xpm-dir=&lt;DIR&gt;

configure: error: freetype.h not found.

需要安裝freetype-devel包

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

需要安裝libmcrypt-devel包

<code>[root@yong php-5.3.28]</code><code># yum install -y libmcrypt-devel</code>

<code>已加載插件:fastestmirror</code>

<code>設定安裝程序</code>

<code>Loading mirror speeds from cached hostfile</code>

<code> </code><code>* base: mirrors.aliyun.com</code>

<code> </code><code>* extras: mirrors.pubyun.com</code>

<code> </code><code>* updates: mirrors.pubyun.com</code>

<code>No package libmcrypt-devel available.</code>

<code>錯誤:無須任何處理</code>

因為centos6.X 預設yum源沒有libmcrypt-devel這個包,需要借助第三方源,rpm安裝epel源;

rpm -ivh "http://www.aminglinux.com/bbs/data/attachment/forum/month_1211/epel-release-6-7.noarch.rpm"

epel源安裝完成後再次執行# yum install -y libmcrypt-devel

再次執行./configure 終于不再出現錯誤提示,出現了歡迎使用界面。

<a href="http://s3.51cto.com/wyfs02/M02/6C/17/wKiom1U_VJLyuFnZAAI1iK3oYG4454.jpg" target="_blank"></a>

3、make編譯,編譯完成後使用echo $? 檢視make指令是否執行成功,成功傳回值為0,不成功則為非0;

<code>[root@yong php-5.3.28]</code><code># make</code>

<code>[root@yong php-5.3.28]</code><code># echo $?</code>

3、make install安裝,完成後使用echo $? 檢視make install指令是否執行成功,成功傳回值為0,不成功則為非0;

<code>[root@yong php-5.3.28]</code><code># make install</code>

apache結合php測試環境

Apache的主配置檔案為:/usr/local/apache2/conf/httpd.conf

需要編輯配置檔案

<code>[root@yong php-5.3.28]</code><code># vim /usr/local/apache2/conf/httpd.conf</code>

找到這一行:AddType application/x-gzip .gz .tgz

在該行下面添加:AddType application/x-httpd-php .php 

<a href="http://s3.51cto.com/wyfs02/M00/6C/17/wKiom1U_VX6xINk9AACibtQC89g929.jpg" target="_blank"></a>

找到:

&lt;IfModule dir_module&gt;

    DirectoryIndex index.html

&lt;/IfModule&gt;

修改中間的行改為:

    DirectoryIndex index.html index.htm index.php

<a href="http://s3.51cto.com/wyfs02/M01/6C/13/wKioL1U_VuWzEF-DAAB4ZRg9S-c754.jpg" target="_blank"></a>

找到:#ServerName www.example.com:80

修改為:ServerName localhost:80

<a href="http://s3.51cto.com/wyfs02/M02/6C/13/wKioL1U_VuXxpVu3AAAlpkhNmu0734.jpg" target="_blank"></a>

測試LAMP是否成功

啟動apache之前先檢驗配置檔案是否正确,正确顯示Syntax OK,如果有錯誤,需要修改httpd.conf配置檔案;

<code>[root@yong php-5.3.28]</code><code># /usr/local/apache2/bin/apachectl -t</code>

<code>Syntax OK</code>

<code>[root@yong php-5.3.28]</code><code># /usr/local/apache2/bin/apachectl start</code>

檢視apache是否啟動

<code>[root@yong php-5.3.28]</code><code># netstat -lnp |grep httpd</code>

<code>tcp        0      0 :::80           :::*             LISTEN      3802</code><code>/httpd</code>

使用curl指令簡單測試,顯示如下為正确。

<code>[root@yong php-5.3.28]</code><code># curl localhost</code>

測試是否正确解析php,php的路徑位址為/usr/local/apache2/htdocs/,建立一個1.php做測試;

<code>[root@yong php-5.3.28]</code><code># vim /usr/local/apache2/htdocs/1.php</code>

<code>&lt;?php</code>

<code>        </code><code>echo</code> <code>"php解析正常ok"</code><code>;</code>

<code>        </code><code>echo</code> <code>"\n"</code><code>;</code>

<code>?&gt;</code>

"\n"的作用是回車,echo後面需要加分号;儲存退出後,繼續使用curl測試;

<code>[root@yong php-5.3.28]</code><code># curl localhost/1.php</code>

<code>php解析正常</code>

解析php出錯,如下圖,原因是修改完apache配置檔案後,需要重新開機服務,執行指令: /usr/local/apache2/bin/apachectl graceful

<a href="http://s3.51cto.com/wyfs02/M02/6C/13/wKioL1U_WDnRS2ghAACACFep8o4324.jpg" target="_blank"></a>

重新開機之後恢複正常;

<code>[root@localhost php-5.3.28]</code><code># curl localhost/1.php</code>

<code>php解析正常ok</code>

localhost相當于本地的域名,和本地環回位址和本地ip位址一樣的效果;

也可以在網頁輸入http://192.168.20.20/1.php

<a href="http://s3.51cto.com/wyfs02/M00/6C/18/wKiom1U_Vx-Sdmr0AADJOZZaBiY434.jpg" target="_blank"></a>

整個LAMP環境搭建完畢,實際環境中使用的版本可能有差異,大部分過程一樣,僅作參考,有任何疑問可以互相探讨。

本文轉自 模範生 51CTO部落格,原文連結:http://blog.51cto.com/mofansheng/1639875,如需轉載請自行聯系原作者