實驗環境: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"壓縮選項,減小文件佔用的空間。