LAMP環境搭建小結

1. 爲什麼下載源碼包需要到官網上去下載?
簡單說就是爲了安全,如果是非官方下載的源碼包,有可能被別有用心的人動過手腳,畢竟是源碼的,任何人都可以修改代碼。

2. 64位機器是否可以安裝32位rpm包?64位機器是否可以安裝32位的mysql二進制免編譯包?
64位機器是可以安裝32位rpm包的,同樣的64位機器也能安裝32位的mysql二進制免編譯包(centos5.x的確是支持,但是centos6.x不支持)。

3. 編譯安裝apache時, 如果不加–with-included-apr 會有什麼問題?
會報錯,Cannot use an external APR with the bundled APR-util,因爲apr是一個底層的接口庫,編譯apache必須要有這個支持。

4. 編譯php時,必須加上 –with-apxs2=/usr/local/apache2/bin/apxs 這是什麼意思呢?
apxs是apache編譯動態模塊並自動配置加載到httpd.conf文件的一個工具,由於php也是作爲apache的一個動態加載模塊,我們編譯php的目的就是爲了生成這個模塊,所以必須要指定apxs的地址。

5. 當配置好apache的配置文件後,如何檢驗配置文件是否正確?
/usr/local/apache2/bin/apachectl -t

6. 如何查看80端口是否啓動?
netstat -lnp |grep ‘:80

7. 更改apache配置文件httpd.conf後,如何重新加載配置文件?
/usr/local/apache2/bin/apachectl graceful

8. 如何查看apache加載了哪些模塊?
/usr/local/apache2/bin/apachectl -M

9. 怎麼查看php加載了哪些模塊?
/usr/local/php/bin/php -m

10. 簡單描述靜態加載和動態共享模塊的區別。
不管編譯httpd還是php,都會有一個靜態模塊和動態模塊的概念。首先,動態和靜態模塊宏觀上分析,靜態會直接編譯進httpd這個可執行文件內,而動態的模塊是單獨的一個文件;其次,靜態模塊是和httpd這個文件一同加載的,只要服務一開啓就會加載所有的靜態模塊,而動態模塊是根據需求什麼時候用什麼時候加載。

11. 當我們配置好lamp環境後,訪問php程序無法解析,你如何去排查這個問題呢?
(1) apachectl -M 看是否加載了libphp5.so
(2) 如果沒有加載,那查看/usr/local/apache2/modules/是否有libphp5.so,然後查看httpd.conf 中是否有LoadModule libphp5.so
(3) 再看httpd.conf中是否有 AddType application/x-httpd-php .php
(4) apache一定要重啓服務

12. 如何配置apache的虛擬主機(Apache的主配置文件: /usr/local/apache2/conf/httpd.conf)
vim httpd.conf
#Include conf/extra/httpd-vhosts.conf
把該行最前面的#去掉,然後修改:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
改爲
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>

再 vim conf/extra/httpd-vhosts.conf 根據實際需求修改

13. 如何配置apache的用戶驗證
vi httpd.conf
在相應的虛擬主機配置文件段,加入
<Directory *>
AllowOverride AuthConfig
AuthName “自定義的”
AuthType Basic
AuthUserFile /data/.htpasswd // 這個目錄你可以隨便寫一個,沒有限制
require valid-user
</Directory>

保存後,然後創建apache的驗證用戶 htpasswd -c /data/.htpasswd test

14. 如何配置apache的日誌以及日誌按天切割
在httpd.conf 在相應的虛擬主機配置段,加入
CustomLog “|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/www.yourdomain.com-access_%Y%m%d.log 86400” combined
注意,需要寫成絕對路徑,寫成相對的路徑可能不生效

15. 如何配置apache的圖片等靜態文件的過期時間

httpd.conf 中加入

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType p_w_picpath/gif “access plus 1 days”
ExpiresByType p_w_picpath/jpeg “access plus 24 hours”
ExpiresByType p_w_picpath/png “access plus 24 hours”
ExpiresByType text/css “now plus 2 hour”
ExpiresByType application/x-javascript “now plus 2 hours”
ExpiresByType application/x-shockwave-flash “now plus 2 hours”
ExpiresDefault “now plus 0 min”
</IfModule>

16. 如何限定某個目錄下的php文件沒有執行權限
vim httpd.conf
在相關的虛擬主機段,加入
<Directory /www/htdocs/path>
php_admin_flag engine off
</Directory>
其中 /www/htdocs/path 爲要限制的目錄

17. 如何配置apache的域名重定向
要把訪問域名 www.domain1.com 的域名轉發到 www.domain2.com 上
實現:
在相關的虛擬主機中增加
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain1.com$
RewriteRule ^(.*)$ http://www.domain2.com/$1 [R=301,L]
</IfModule>

如果是多個域名重定向到一個域名
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.com[OR]
RewriteCond %{HTTP_HOST} ^www.domain1.com$
RewriteRule ^(.*)$ http://www.domain2.com/$1 [R=301,L]
</IfModule>

18. 如何配置php的錯誤日誌
vim php.ini 檢查並配置如下兩項
log_errors = On
error_log = logs/error.log

19. 如何在php中配置open_basedir, 是否可以在httpd.conf 中針對虛擬主機配置open_basedir?
vim php.ini
加入 open_basedir=/var/www/
httpd.conf中也可以針對虛擬主機限制openbasedir:
在相對應的虛擬主機配置文件中加入:
php_admin_value open_basedir “/var/www/htdocs”

20. 如何禁止php的函數exec
vim php.ini 找到
disable_functions =
改爲
disable_functions = exec 如果是多個函數,可以在exec後面繼續增加函數名用逗號分開即可

21. 我們以源碼安裝LAMP環境時,先安裝哪個,後安裝哪個?爲什麼呢?
安裝順序可以是 mysql apache php 也可以是 apache mysql php
把php放到最後,這是因爲安裝php時,需要指定mysql安裝目錄,也需要指定apache的apxs工具

22. 怎麼確定你的php.ini 在哪個目錄下?
php -i |grep ‘Configuration File’

23. 怎麼確定你的php的extension_dir 在哪裏?
php -i |grep ‘extension_dir’


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章