WWW服務器配置(LAMP)

實驗環境:CentOS6.0

Port:80

ServerIP:192.168.0.1

#yum install httpd mysql mysql-server php php-devel php-mysql -y

1.php安全方面的設定

#vim  /etc/php.ini

************************************************************************************************

修改部分如下:

register_globals = off #默認是off、比較安全    on狀態時程序不容易出錯

log_errors = on

ignore_repeated_errors = on

ignore_repeated_source = on

#如果服務器很忙,建議將上述兩個設置打開,忽略PHP程序的記錄

display_errors = off

display_startup_errors = off

#以上兩個選項在debug的時候打開即可,平時運行時請關閉

post_max_size = 20M   #最大支持上傳的數據20M

file——uploads = on

upload_max_filesize = 16M  #最大支持16M的上傳文件

memory_limit = 128M   #PHP可用的系統內存

*******************************************************************************************************

2.MySQL的基本設定

#vim /etc/my.cnf

*******************************************************************************************************

[mysqld]

default-storage-engine = innodb

#關於目錄數據與語言的設置等

default-character-set = utf8

port = 3306

skip-locking

#關於內存的設置

#內存的簡單計算方法爲:

#key_buffer + ( sort_buffer + read_buffer ) * max_connection\

key_buffer              = 128M

sort_buffer_size        = 2M

read_buffer_size        = 2M

join_buffer_size        = 2M

max_connections         = 150

max_connect_errors      = 10

read_rnd_buffer_size    = 4M

max_allowed_packet      = 4M

table_cache             = 1024

myisam_sort_buffer_size = 32M

thread_cache            = 16

query_cache_size        = 16M

tmp_table_size          = 64M

wait_timeout            = 1200

thread_concurrency      = 8

innodb_data_file_path   = ibdata1:10M:autoextend

innodb_buffer_pool_size = 128M

innodb_additional_mem_pool_size = 32M

innodb_thread_concurrency = 16

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

**************************************************************************************************************

#/etc/init.d/mysql  start

#mysqladmin -u root password 'westos'

#mysql -u root -p     #輸入密碼即可登錄mysql

3.Apache的配置

#yum install mod_perl -y #可以使用perl之類的網頁程序(CGI)

#vim /etc/httpd/conf/httpd.conf

*************************************************************************************************************

改動的部分:(並不一定非得這樣)

KeepAlive On #允許持續性的連接,即一個TCP連接可以具有多個文件資料傳送的要求

MaxKeepAliveRequests 100 #該次持續性連接能夠傳輸的最大數量

<IfModule prefork.c> #這個默認是對內存管理的相關設置(可以在/etc/sysconfig/httpd中選擇)

StartServers       8 #啓動httpd時喚醒幾個PID

MinSpareServers    5 #最小備用PID

MaxSpareServers   20

ServerLimit      256 #服務器的限制

MaxClients       256 #最大的同時連接數

MaxRequestsPerChild  4000 #每個程序能夠提供的最大傳輸次數要求

</IfModule>

Include conf.d/*.conf #放置到/etc/httpd/conf.d/*.conf的設置都會被讀入

ServerAdmin root@localhost #服務出問題時彙報的E-Mail

ServerName Server1.example.com:80 #設置的主機名

UseCanonicalName Off #如果有多個主機名,建議開啓,默認Off,只接受servername

#AddDefaultCharset UTF-8 #註釋掉默認的utf8的編碼方式,防止亂碼,在網頁編碼時指定即可

DocumentRoot "/var/www/html" #放置首頁文件的目錄

<Directory /> #針對WWW服務器默認環境“/”的設置

    Options FollowSymLinks

    AllowOverride None

</Directory>

<Directory "/var/www/html"> #針對特定目錄的限制

 Options Indexes FollowSymLinks #建議取消Indexes選項,爲了安全;FollowSymLinks允許讓連接文件有效地離開本目錄

 AllowOverride None

 Order allow,deny

 Allow from all

</Directory>

DirectoryIndex index.html index.html.var #首頁文件的文件名設置

Alias /icons/ "/var/www/icons/" #製作一個目錄別名

<Directory "/var/www/icons">

    Options Indexes MultiViews FollowSymLinks  #MultiViews這個是對多國語言的支持

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

ExtendedStatus On #打開查詢主機目前狀態的開關選項,模塊Apache已加載status_module modules/mod_status.so

<Location "/server-status">

    SetHandler server-status

    Order allow,deny

    Allow from all

</Location>

#############設立一個用戶可以完全控制的首頁######################

#UserDir disabled #默認沒有用戶能完全控制的首頁

UserDir www #此處改爲首頁WWW可以完全由用戶控制

Alias /student/ "/home/student/www/" #製作一個用戶可以完全控制的目錄

<Directory "/home/student/www">

    Options FollowSymLinks 

    AllowOverride None

    Order allow,deny

    Allow from all

<Limit GET POST OPTIONS> #允許GET、POST 、OPTIONS這三個操作

    Order allow,deny

    Allow from all

</Limit>

<LimitExcept GET POST OPTIONS> #僅允許GET、POST 、OPTIONS這三個操作,其它操作不允許

    Order deny,allow

    deny from all

</LimitExcept>

</Directory>

##############設置cgi、允許執行perl的cgi程序############

AddHandler cgi-script .cgi .pl #約在803行,增加允許perl程序

#ScriptAlias /perl/  "/var/www/perl" #腳本也可以使用別名

<Directory "/var/www/html/cgi"> #開放目錄/var/www/html/的cgi功能

    Options +ExecCGI

    AllowOverride None

    Order allow,deny #限制的優先順序

    Allow from all

    Deny  from 192.168.0.2 #這裏的順序可以理解爲:所有的IP均允許訪問,但是除了192.168.0.2

</Directory>

###############可以手動修改Apache報錯的信息################

#    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var #可以指定需要顯示的文件(顯示其內容)

#    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var #也可以直接輸出“****”一段文字

#    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var

#    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var

#    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var

#    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var

#    ErrorDocument 410 /error/HTTP_GONE.html.var

#    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var

#    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var

#    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var

#    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var

#    ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var

#    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var

#    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var

#    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var

#    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var

#    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

*****************************************************************************************************************

mkdir www

#chmod 755 www

#cd www

#echo 'Welcome to  home!'  > index.html

#ln -s /home/student/www   /var/www/html/student

#mkdir /var/www/html/cgi #將cgi文件放在此目錄下,並且有X權限,用戶訪問http://IP/cgi/*.pl該cgi程序就能自動執行

#/etc/init.d/httpd restart

#setsebool -p httpd_can_network_connect=1

#setsebool -P httpd_enable_homedirs=1

#restorecon -Rv /home/

HTTP://192.168.0.1.server-status  (顯示服務的狀態、前提是ExtendedStatus On,並配置相關目錄,只能在本主機上實現)

 

 

 

Apache——.htaccess與認證網頁設定

1.建立受保護目錄的數據

#mkdir /var/www/html/protect #建立需要保護的目錄

#vim /var/www/html/protect/index.html #建立受保護目錄的首頁,用html語言寫

******************************************************************************

<html>

<head><title>這是個測試網頁</title></head>

<body>看到這個畫面說明你已經可以進入受保護的網頁了!</body>

</html>

******************************************************************************

2.以root的身份處理httpd.conf的設置數據

#vim /etc/httpd/conf/httpd.conf

*****************************************************************************

#約400行、確定有如下設置

AccessFileName  .htaccess

<Files ~ "^\.ht">

Order allow,deny

Deny from all

Satisfy All

</Files>

#在某個不受影響的地方加入這一段:

<Directory "/var/www/html/protect">

    AllowOverride AuthConfig

    Order allow,deny

    Allow from all

</Directory>

****************************************************************************

#/etc/init.d/httpd restart

3.建立保護目錄下的.htsccess文件(這個文件必須放置到需受保護的目錄下)

#cd /var/www/html/protect

#vim .htaccess #設置好後立即生效

****************************************************************************

AuthName "Protect test by .htaccess" #輸入密碼對話框中的提示符

Authtype Basic #Apache預設的認證類型、type

AuthUserFile /var/www/apache.passwd #改賬戶不限於/etc/passwd,文件名稱也隨意起

require user test #設定用戶test可以用密碼登陸

#require valid-user #密碼文件中的用戶都能登錄

****************************************************************************

4.建立密碼文件htpasswd

#htpasswd [-cmdD] 密碼文件文件名 用戶帳號

-c:建立後面的密碼文件   (若文件已存在,切勿再加-c選項)

-m:不採用默認的加密方式,採用md5加密

-d:使用複雜的SHA方式加密

-D:刪除後面接的那個帳號

#htpasswd -c /var/www/apache.passwd  test

這樣就OK了,當客戶端登錄"http://IP/protect"時就會提示輸入帳號和密碼

 

 

Apache——虛擬主機的設定

架設虛擬主機的前提是:同一個IP有多個主機名!

#vim /etc/hosts

*****************************************************************************

添加:

192.168.0.1 Server1.example.com

192.168.0.1 www.example.com

192.168.0.1 ftp.example.com

*****************************************************************************

#mkdir /var/www/www

#mkdir /var/www/ftp

#echo 'www.example.com' > /var/www/www/index.html

#echo 'Ftp.example.com' > /var/www/ftp/index.html

#yum install vsftpd -y

#vim /etc/httpd/conf.d/virtual.conf

******************************************************************************

#下面這一行在規定"本機任何接口的port 80所指的虛擬主機"的意思

NameVirtualHost *:80

#先針對針對多出來的可瀏覽目錄進行權限方面的規範

<Directory "/var/www/www">

Options FollowSymLinks

AllowOverride   None

Order   allow,deny

Allow   from all

</Directory>

<Directory "/var/www/ftp">

Options FollowSymLinks Indexes

AllowOverride   None

Order   allow,deny

Allow   from all

</Directory>

#針對三臺主機的DocumentRoot進行設置

<VirtualHost *:80> #使用虛擬主機時,原本的主機名也要加進來

        ServerName      Server1.example.com

        DocumentRoot    /var/www/html

</VirtualHost>

 

<VirtualHost *:80>

        ServerName      www.example.com

        DocumentRoot    /var/www/www #這些目錄也可以採用鏈接方式添加,(最好是home下的目錄,root的目錄有權限限制)

</VirtualHost>

 

<VirtualHost *:80>

        ServerName      ftp.example.com

        DocumentRoot    /var/www/ftp

        CustomLog       /var/log/httpd/http.ftp.access_log  combined

        #不同的主頁可以指定不同的登錄文件信息,這樣比較好debug與分析,日誌文件比較大,最好加入logrotate的管理中

</VirtualHost>

*******************************************************************************************

 

 

PHP強化模塊(eaccelerator)

 

PHP先將可用函數先編譯成模塊,網頁使用需要的PHP模塊即可,增強了PHP網頁的速度。eaccelerator則可以將PHP模塊預編譯成二進制文件,提升

訪問速度。

1.編譯安裝eaccerlerator

從http://eaccelerator.net下載eaccerlerator源代碼(編譯安裝的插件應注意,當內核改變時須重新編譯安裝)

# yum install php-devel autoconf automake m4 libtool make -y

# tar zxf eaccelerator-eaccelerator-42067ac.tar.gz

# cd eaccelerator-eaccelerator-42067ac

# phpize (進行PHP程序的預處理)

# ./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config

# make&make install

2.使PHP使用此模塊

# echo "/usr/lib/php/modules/" >> /etc/ld.so.conf.d/php.conf (添加到動態函數庫)

# ldconfig (加載動態函數庫到內存)

# vim /etc/php.ini

******************************************************************************************************

末尾添加:

extension = "eaccelerator.so"

eaccelerator.shm_size = "16"

eaccelerator.cache_dir = "/tmp/eaccelerator"

eaccelerator.enable = "1"

eaccelerator.optimizer = "1"

eaccelerator.check_mtime = "1"

eaccelerator.debug = "0"

eaccelerator.filter = ""

eaccelerator.shm_max = "0"

eaccelerator.shm_ttl = "0"

eaccelerator.shm_prune_period = "0"

eaccelerator.shm_only = "0"

eaccelerator.compress = "1"

eaccelerator.compress_level = "9"

******************************************************************************************************

# mkdir /tmp/eaccelerator

# chmod 777 /tmp/eaccelerator

# /etc/init.d/httpd restart

訪問http://192.168.0.1/phpinfo.php,網頁內容包含eAccelerator的相關信息,即PHP強化模塊加載OK~

測試Apache的訪問速度(每秒傳輸的速率):

# ab -dkS -c100 -n100 http://192.168.0.1/phpinfo.php

 

 

 

日誌分析軟件——webalizer

# yum install webalizer -y

配置文件/etc/webalizer.conf中默認的輸出文件在/var/www/usage,且只有本機能查詢;可以根據需要進行設置

將輸出文件指定到可由制定用戶訪問的頁面(OutputDir      /var/www/html/protect/webalizer)

# cp -a /var/www/usage /var/www/html/protect/webalizer

# /etc/init.d/httpd restart

# webalizer (啓動webalizer)

客戶端查看方式http://192.168.0.1/protect/webalizer 既可以查看web日誌分析出來的Apache的相關信息。

 

 

 

擁有自制證書的https

 

1.建立證書文件

# yum install mod_ssl

# cd /etc/pki/tls/certs

# make Server1.key (默認證書有效期是一年、可通過修改Makefile內的356數值修改證書有效期)

# mv Server1.key Server1.key.raw

# openssl rsa -in Server1.key.raw -out Server1.key (取消密鑰密碼)

# rm -fr Server1.key.raw

# chmod 400 Server1.key

# make Server1.crt SERIAL=20130101

 

2.修改ssl.conf的內容,使其使用自制證書

# vim /etc/httpd/conf.d/ssl.conf

********************************************************************************************

修改:

SSLCertificateFile /etc/pki/tls/certs/Server1.crt

SSLCertificateKeyFile /etc/pki/tls/certs/Server1.key

********************************************************************************************

3.重啓Apache即可

 

 

若想將加密首頁與非加密首頁分離,可修改/etc/httpd/conf.d/ssl.conf

#vim 

********************************************************************************************

修改或添加:

Listen 443

<VirtualHost _default_:443>

DocumentRoot "/var/www/https" (將該目錄設爲加密訪問時的首頁)

ServerName *:443

*******************************************************************************************

重啓Apache即可

 

 

 

注:

1.WWW是依據HTTP這個協議而來的,分爲服務器與客戶端;

2.Apache是一個服務器端的軟件,主要依據NCSA的HTTPd服務器發展而來,是自由軟件;

3.Mozilla是一個自由軟件的開發計劃,其中firefox瀏覽器是相當成功的作品,採用W3C標準;

4.在撰寫自己的網頁數據時,儘量使用W3C所發佈的標準,這樣在所有的瀏覽器上面才能夠順利的顯示出你想要的樣子;

5.客戶端與動態網頁服務器端的交互方式:

1>服務器端工作任務接口(SSL),用戶的數據通過服務器端的網頁程序向服務器後端的數據庫讀出或寫入數據;

2>javascript,服務器將可執行的程序代碼(javascript)傳給客戶端,這些程序在客戶端運行;

3>客戶端擁有flash動畫軟件,服務器端的數據通過客戶端的flash軟件進行讀取與寫入。

6.http這個傳輸協議傳輸數據是以明碼傳送的;

7.在/etc/httpd/conf/httpd.conf中會默認強制使用UTF-8編碼,那麼可能會使得網頁在某些不使用萬國碼的瀏覽器上顯示亂碼,最好將其註釋掉

如:#AddDefaultCharset UTF-8,在HTML語言中設置編碼即可;

8.Apache的錯誤日誌在/var/log/httpd/error_log中;

9.如過忘記mysql的root密碼,且數據不重要,那麼刪除/var/lib/mysql/*後重啓mysql即可清除密碼。如果數據很重要,可以從網絡上尋找工具求助;

10.Apache默認的首頁目錄在/var/www/html/,應儘量將所有的WWW數據都搬到該目錄下,且首頁文件應該定義爲index.html或index.php等;

11.建議將CGI放於默認的/var/www/cgi-bin/下面,則Apache不用進行額外配置即可使用該CGI;

12.Apache默認報錯的意義:

100-199:一些基本的信息

200-299:客戶端的要求已經成功完成

300-399:Client的需求需要其它額外的操作,如:redirected

400-499: Client的需求沒有辦法完成

500-599: 主機的設置錯誤問題

13.注意Apache的日誌文件問題,如果訪問量太大,日誌文件目錄被佔滿,那麼訪問速度會大幅度下降,最好在/etc/logrotate.d/httpd內指定的日誌目錄內添加"compress"壓縮選項,減小文件佔用的空間。

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