电竞比分网-中国电竞赛事及体育赛事平台

分享

Linux平臺(tái)下安裝LAMP的曲折歷程

 milton99 2010-08-21


http://os.51cto.com  2008-02-25 14:56  crccw  Linux公社  我要評(píng)論(0)

·         摘要:Linux安裝我就不多說(shuō)了,N早前就裝好了的,最近開(kāi)始學(xué)習(xí)php,自然要有個(gè)本地測(cè)試環(huán)境,但安裝AMP的過(guò)程還是感覺(jué)比較艱難的,特地些出來(lái),與大家分享。

·         標(biāo)簽:Linux  LAMP  安裝

·         Oracle幫您準(zhǔn)確洞察各個(gè)物流環(huán)節(jié)

Linux安裝我就不多說(shuō)了,N早前就裝好了的,最近開(kāi)始學(xué)習(xí)php,自然要有個(gè)本地測(cè)試環(huán)境,但安裝AMP的過(guò)程還是感覺(jué)比較艱難的,特地些出來(lái),與大家分享。

編者注:LAMP就是Linux+apache+mysql+php的縮寫(xiě)。

先在apache的官方站上下載httpd-2.2.6,解壓后開(kāi)始編譯,注意要使用dso

./configure --enable-so
make
make install

第一次安裝的時(shí)候我就忘了make install,老是不成功,安裝以后可以使用以下命令啟動(dòng)和停止apache

/usr/local/apache2/bin/apachectl start

/usr/local/apache2/bin/apachectl stop

正常的話(huà)訪(fǎng)問(wèn)127.0.0.1會(huì)出現(xiàn)It works的字樣,不同系統(tǒng)可能會(huì)有差別。停掉apache,開(kāi)始安裝mysql,因?yàn)?span lang="EN-US">php編譯中需要指定mysql路徑,所以先裝這個(gè)。先要建立賬號(hào):

useradd mysql

groupadd -g mysql mysql

編譯過(guò)程大同小異

./configure
make
make install

然后進(jìn)行設(shè)置

/usr/local/mysql/scripts/mysql_install_db --user=mysql

chown -R root /usr/local/mysql
chown -R root /usr/local/bin
chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql

然后就可以啟動(dòng)數(shù)據(jù)庫(kù)了

/usr/local/mysql/bin/mysqld_safe --user=mysql

再運(yùn)行mysql時(shí)可能會(huì)提示出錯(cuò)

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

這種情況,有可能是selinux造成的,也有可能是mysql.sock在別處,搜索以后在/tmp下做個(gè)連接就可以了
最后安裝php

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs \ --with-mysql=/usr/local/mysql

make
make install

如果你要裝zlib之類(lèi)的自己在編譯選項(xiàng)中加入就可以了.

安裝完后啟動(dòng)apache,不料提示出錯(cuò)

Document root must be a directory

gg搜索了半天,得知這個(gè)是selinux造成的。

檢查 avc message,查看 /var/log/messages文件,發(fā)現(xiàn)有類(lèi)似以下內(nèi)容的這樣一段:

hostname kernel: audit(1098222899.827:0): avc: \
denied
 { getattr } for pid=19029 exe=/usr/sbin/httpd \
path=/home/httpd/index.php dev=dm-0 ino=373900 \
scontext=root:system_r:httpd_t tcontext=user_ubject_r:user_home_t \
tclass=file

果然是SELinux的新特性搞的鬼。我把目錄或文件設(shè)成了user_home_t類(lèi)型,因此apache的進(jìn)程沒(méi)有權(quán)限,無(wú)法訪(fǎng)問(wèn)。針對(duì) Apache的進(jìn)程所使用的SELinux target policy規(guī)定了apache的進(jìn)程只能訪(fǎng)問(wèn)httpd_sys_content_t類(lèi)型的目錄或文件。

解決辦法:

很簡(jiǎn)單,把目錄或文件的策略類(lèi)型改成 httpd_sys_content_t 就可以了

使用root用戶(hù)

# chcon -t httpd_sys_content_t 目錄名或文件名

然后可以用 ls -laZ 命令查看文件目錄的策略類(lèi)型。然后配置httpd.conf,這方面的內(nèi)容網(wǎng)上也比較多,我也懶得打了,就此完工,mysql以后在解決吧

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多