centos7為基準
1、更改YUM源:
/bin/mv CentOS-Base.repo CentOS-Base.repo.ori //備份 yum 源 7
wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo //下載soho 源
/bin/mv CentOS-Base-sohu.repo CentOS-Base.repo
打補丁:
yum upgrade
安裝必要的軟件包:
yum -y install lrzsz
2、關閉selinux:
vi /etc/sysconfig/selinux
disabled
重啟
3、設定運行級別:
systemctl get-default
systemctl set-default shutdown.target(0) emergency.target rescure.target multi-user.target(3) graphical.target(5)
4、關閉不必要的服務
systemctl list-units --type=service
開機啟動:systemctl enable? ?crond network sshd syslog
5、授權服務:visudo
root ALL=(ALL) ALL
%wheel? ALL=(ALL)? ? ? ALL
%wheel? ? ? ? ALL=(ALL)? ? ? NOPASSWD: ALL
6、ssh優(yōu)化:vi /etc/ssh/sshd_config
52113#→ssh 連接默認的端口,誰都知道,必須要改。
PermitRootLogin no#→root 用戶黑客都知道的,禁止它遠程登陸。
PermitEmptyPasswords no #→禁止空密碼登陸
UseDNSno#→不使用DNS
GSSAPIAuthentication no
重啟sshd 服務#/etc/init.d/sshd restart
7、修改默認字符集:
locale -a
vi /etc/locale.conf
source /etc/locale.conf
8、同步時間服務:
echo '*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1' >>/var/spool/cron/root
9、修改文件描述符:
ulimit -n
echo '* - nofile 65535 ' >>/etc/security/limits.conf
10、清理clientmqueue垃圾文件防止inode被占滿
find /var/spool/clientmqueue/ -type -f |xargs rm -f
11、內核優(yōu)化:vi /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384 12
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120
12、grep高亮顯示:
vi /etc/profile
alias grep='grep --color=auto'
source /etc/profile
13、鎖定關鍵文件
chattr +i /etc/passwd
chattr +i /etc/inittab
chattr +i /etc/group
chattr +i /etc/shadow
chattr +i /etc/gshadow
14、更改登錄后的信息:/etc/motd
15、內核參數(shù):
16、NFS:yum install -y nfs-utils rpcbind
vi /etc/exports?
xx ip(rw)
exportfs -r
mount -t nfs xx:/xx? /yy
mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 192.168.1.4:/home/test /usr/local/live/
17、apache安裝調優(yōu)參數(shù):
./configure \
--prefix=/application/apache2.2.27 \#安裝的目錄
--enable-deflate \ #壓縮文件文本一般 html/js/css 等內容的站點,使用此參數(shù)功能會大大提高傳輸速度,提示訪問者訪問體驗,在生產環(huán)境中,這是apache 調優(yōu)的重要選項之一
--enable-expires \ #激活允許通過配置文件控制http 的“expires”和“cache-control”
頭內容,即對網站圖片,js,css 等內容,提供在客戶端瀏覽器緩存的設置,這是apache 調優(yōu)的重
要選項之一
--enable-headers \ #提供允許http 請求頭的控制
--enable-moudles=most \ #激活多數(shù)模塊
--enable-so \ #激活apache 服務的DSO 支持,即在以后可以以DSO 的方式編譯
安裝共享模塊,這個模塊本身不能以DSO 方式編譯
--with-mpm=worker \ #選擇apache mpm 的模式為worker 模式,因為worker 模式原
理是更多的使用線程來處理請求,所以可以處理更多的并發(fā)請求,而系統(tǒng)資源的開銷小于基于進程
的MPM prefork,如果不指定此參數(shù),默認得到模式是prefork 進程模式。這是apache 調優(yōu)的一
個重要選項之一。
--enable-rewrite #提供基于URL 規(guī)則的重寫功能,根據(jù)已知URL 地址,轉換其他想
要的url 地址,如偽靜態(tài)功能就是這個模塊實現(xiàn)的,這是apache 在生產環(huán)節(jié)中必用的一個重要功能
檢查語法:apachectl -t
啟用: apachectl start
平滑重啟:apachectl graceful
18、apache配置文件:Httpd.conf
ServerRoot "/usr/local/xxx"? #安裝目錄
Listen 80
<ifModule !mpm_netware_moudle>
User daemon #執(zhí)行者
Group daemon
ServerAdmin xx@qq.com
DocumentRoot "/xx" #網站根目錄
#設置根目錄訪問權限
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Direcotry>
<ifModule dir_module>
DirectoryIndex index.html
</ifModule>
#AllowOverride:允許存在.htaccess 文件中的指令類型?None:當AllowOverride 設置None 時,不搜索該目錄下的.htaccess?All:在.htaccess 文件中使用所有指令
#Allow:允許訪問的主機列表(可用域名或子網,例如:Allow from 192.168.0.0/16)。
#DirectoryIndex index.html index.htm index.php #主頁文件的設置(本例將主頁文件設置為:
index.html,index.htm 和index.php)
#Options特性:ExecCGI 在該目錄下執(zhí)行CGI腳本?FollowSymLinks:在該目錄下允許文件系統(tǒng)使用符號連接??Indexes: 當用戶訪問該目錄時,如果用戶找不到DirectoryIndex 指定的主頁文件(例如index.html),則返回該目錄下的文件列表給用戶。SymLinksIfOwnerMatch: 當使用符號連接時,只有當符號連接的文件擁有者與實際文件的擁有者相同時才可以訪問。
#設置其他目錄權限
<Direcotry "/usr/local">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
19、apache的PHP.INI配置
/application/php/lib/php.ini
[PHP]
engine = On ——→ 是否啟用PHP 解析引擎
short_open_tag = Off ——→ 是否使用簡介標志
asp_tags = Off ——→ 不允許asp 類標志
precision = 14 ——→ 浮點型數(shù)據(jù)顯示的有效期
y2k_compliance = On
output_buffering = 4096 ——→ 輸出緩沖區(qū)大小(字節(jié))。建議值為4096~8192。
zlib.output_compression = Off ——→ 是否開啟zlib 輸出壓縮
implicit_flush = Off ——→ 是否要求PHP 輸出層在每個輸出塊之后自動刷新數(shù)據(jù)
這等效于在每個print()、echo()、HTML 塊之后自動調用flush()函數(shù)。打開這個選項對程序執(zhí)行
的性能有嚴重的影響,通常只推薦在調試時使用。在CLI SAPI 的執(zhí)行模式下,該指令默認為On 。
serialize_precision = 17
safe_mode = Off ——→ 安全模式
safe_mode_gid = Off
safe_mode_exec_dir = ——→ 安全模式下的可執(zhí)行文件存放目錄
safe_mode_allowed_env_vars = PHP_
####在安全模式下,用戶僅可以更改的環(huán)境變量的前綴列表(逗號分隔)。允許用戶設置某些環(huán)境變
量,可能會導致潛在的安全漏洞。注意: 如果這一參數(shù)值為空,PHP 將允許用戶更改任意環(huán)境變量。
safe_mode_protected_env_vars = LD_LIBRARY_PATH
####在安全模式下,用戶不能更改的環(huán)境變量列表(逗號分隔)。這些變量即使在safe_mode_allowed_env_vars 指令設置為允許的情況下也會得到保護。
disable_functions = ——→ 該指令接受一個用逗號分隔的函數(shù)名列表,以禁用特定的函數(shù)。
disable_classes = ——→ 該指令接受一個用逗號分隔的類名列表,以禁用特定的類
expose_php = On ——→ 在網頁頭部顯示php 信息
max_execution_time = 30 ——→ 每個腳本最大執(zhí)行秒數(shù)
max_input_time = 60 ——→ 每個腳本用來分析請求數(shù)據(jù)的最大限制時間
memory_limit = 128M ——→ 每個腳本執(zhí)行的內存限制 72
display_errors = Off ——→ #顯示失誤(該關閉,換成日志顯示)
display_startup_errors = Off ——→ #顯示啟動失誤
log_errors = On ——→ 生成錯誤錯誤日志顯示
log_errors_max_len = 1024 ——→ 設定error_log 最大長度
ignore_repeated_errors = Off ——→ 打開后,不記錄重復的信息
ignore_repeated_source = Off ——→ 打開后當記錄重復的信息時忽略來源
report_memleaks = On ——→ 報告內存泄露,僅在debug 編譯模式下有效
html_errors = Off ——→ 是否開啟靜態(tài)網頁錯誤提示
register_globals = Off ——→ ##是否打開register 全局變量
register_long_arrays = Off
####是否注冊老形式的輸入數(shù)組, HTTP_GET_VARS 和相關數(shù)組;如果你不使用他們,建議為了提
高性能關閉他們.
register_argc_argv = Off
####此指令讓PHP 確認是否申明argv&argc 變量(這些變量會包含GET 信息). ;如果你不使用這
些變量,為了提升性能應該關閉此選項.
auto_globals_jit = On
####當打開此項, SERVER 和 ENV 變量將在第一次被使用時而不是腳本一開始時創(chuàng)建(運行時);如 73
果這些變量在腳本中沒有被使用過, 打開此項會增加一點性能.;為了使此指令有效,PHP 指令
register_globals, register_long_arrays,;以及register_argc_argv 必須被關閉.
post_max_size = 8M ——→ #PHP 可以接受的最大的POST 數(shù)據(jù)大小
magic_quotes_sybase = Off ##使用Sybase 風格的magic quotes (使用"來引導'替代\').
auto_prepend_file = ——→ #在任何PHP 文檔之前或之后自動增加文件
auto_append_file =
####兩個有趣的變量是auto_prepend_file 以及auto_append_file。這些變量指定PHP 自動添加
到任何PHP 文檔文件頭或文件尾的其他文件。這對于為PHP 產生的頁面添加頁眉或頁腳非常有用,
可以節(jié)省為每個PHP 文檔添加代碼的時間。但需要注意這里的指定文件將會添加到所有的PHP 文
檔中,所以這些變量必須適合單應用程序(single-application)的服務器。所包含的文件要么是
PHP 腳本,要么是普通的HTML 文檔。嵌入式PHP 代碼必須用標準標記括起來。
default_mimetype = "text/html" ——→ #PHP 內建默認為text/html
doc_root = ——→ #PHP 的"根目錄"。僅在非空時有效。
file_uploads = On 是否開啟上傳功能
upload_max_filesize = 2M #最大可上傳文件,2M
max_file_uploads = 20 最大同時可以上傳20 個文件
allow_url_fopen = On #是否允許打開遠程文件
allow_url_include = Off #是否允許include/require 遠程文件
default_socket_timeout = 60 默認的socket 超時時間
pdo_mysql.cache_size = 2000 ——→ Ped_mysql 的緩存大小
pdo_mysql.default_socket= ——→ 默認的socket 時間
[Phar] [Syslog]
define_syslog_variables = Off ——→ 是否定義各種的系統(tǒng)日志變量
[mail function] ——→ 郵件功能
SMTP = localhost ——→ 本地作為郵件服務器
smtp_port = 25 郵件端口號默認是25
mail.add_x_header = On ——→ 是否開啟最大的header
[ODBC]
odbc.allow_persistent = On ——→ 允許或阻止持久連接.
odbc.check_persistent = On ——→ 在重用前檢查連接是否可用
odbc.max_persistent = -1 ——→ 持久連接的最大數(shù)目,-1 意味著沒有限制.
odbc.max_links = -1 ——→ 最大連接數(shù)(持久+ 非持久).-1 意味著沒有限制.
odbc.defaultlrl = 4096 ——→ 長字段處理.返回變量的字節(jié)數(shù).0 意味著略過.
odbc.defaultbinmode = 1
####二進制數(shù)據(jù)處理.0 意味著略過,1 按照實際返回,2 轉換到字符.;查看odbc_binmode 和
odbc_longreadlen 的文檔來獲取針對uodbc.defaultlrl 和uodbc.defaultbinmode 的解釋
[Interbase] ——→ Interbase 數(shù)據(jù)庫 75
ibase.allow_persistent = 1 ——→ 允許或組織持久連接。
ibase.max_persistent = -1 ——→ 持久連接的最大數(shù)目,-1 意味著沒有限制.
ibase.max_links = -1 ——→ 最大連接數(shù)(持久+ 非持久).-1 意味著沒有限制.
ibase.timestampformat = "%Y-%m-%d %H:%M:%S" ——→ 數(shù)據(jù)庫時間記錄模式
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On ——→ 是否允許本地文件連接數(shù)據(jù)庫
mysql.allow_persistent = On ——→ 允許或禁止持久連接
mysql.cache_size = 2000 ——→ mysql 緩存大小
mysql.max_persistent = -1 ——→ 持久連接的最大數(shù)目. -1 意味著沒有限制.
mysql.max_links = -1 ——→ 連接的最大數(shù)目(持久和非持久)。-1 代表無限制
mysql.default_port =
####mysql_connect() 使用的默認端口,如不設置,mysql_connect()
;將使用變量$MYSQL_TCP_PORT,或在/etc/services 下的mysql-tcp 條目(unix),
;或在編譯是定義的MYSQL_PORT(按這樣的順序)
mysql.default_socket =
####用于本地MySql 連接的默認的套接字名。為空,使用MYSQL 內建值
mysql.default_host = ——→ mysql_connect() 默認使用的主機(安全模式下無效)
mysql.default_user = ——→ mysql_connect() 默認使用的用戶名(安全模式下無效)
mysql.default_password = ——→ mysql_connect() 默認使用的密碼(安全模式下無效
mysql.connect_timeout = 60 ——→ 連接超時時間,默認是60s
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1 ——→ 持久連接的最大數(shù)目. -1 意味著沒有限制.
mysqli.allow_persistent = On ——→ 允許或拒絕之久連接 76
mysqli.max_links = -1 ——→ 最大連接數(shù). -1 意味著沒有限制.
mysqli.cache_size = 2000 ——→ 連接緩存大小
mysqli.default_port = 3306 ——→ 連接端口號
####mysqli_connect()默認的端口號.如果沒有設置, mysql_connect() 會使用
$MYSQL_TCP_PORT;或者位于/etc/services 的mysql-tcp 入口或者編譯時定義的
MYSQL_PORT 值(按照此順序查找).;Win32 只會查找MYSQL_PORT 值.
mysqli.default_socket =
####對于本地MySQL 連接的默認socket 名稱. 如果為空, 則使用MySQL 內建默認值.
mysqli.default_host =
####mysqli_connect()的默認host 值(在安全模式中不會生效)
mysqli.default_user =
####mysqli_connect()的默認user 值(在安全模式中不會生效).
mysqli.default_pw =
####mysqli_connect() 的默認password 值(在安全模式中不會生效).
; 注意在此文件中保存密碼一般來說是*糟糕* 的主義.
; *任何* 使用PHP 的用戶可以執(zhí)行'echo get_cfg_var("mysqli.default_password")
; 并且獲取到此密碼! 而且理所當然, 任何有對此文件讀權限的用戶都可以獲取到此密碼.
mysqli.reconnect = Off ——→ 允許或阻止持久連接
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On ——→ 允許或阻止持久連接.
pgsql.auto_reset_persistent = Off
####總是在pg_pconnect() 時檢測斷開的持久連接.;自動重置特性會引起一點開銷.
pgsql.max_persistent = -1 ——→ 持久連接的最大數(shù)目. -1 意味著沒有限制. 77
pgsql.max_links = -1 ——→ 最大連接數(shù)(持久+ 非持久). -1 意味著沒有限制
pgsql.ignore_notice = 0 ——→ 是否忽略PostgreSQL 后端通告消息.;通告消息記錄會需要
一點開銷.
pgsql.log_notice = 0
####是否記錄PostgreSQL 后端通告消息.;除非pgsql.ignore_notice=0, 否則模塊無法記錄通
告消息。
[Sybase-CT]
sybct.allow_persistent = On ——→ 允許或阻止持久連接.
sybct.max_persistent = -1 ——→ 持久連接的最大數(shù)目. -1 意味著沒有限制.
sybct.max_links = -1 ——→ 最大連接數(shù)(持久+ 非持久). -1 意味著沒有限制.
sybct.min_server_severity = 10 ——→ 顯示出的錯誤最小嚴重程度.
sybct.min_client_severity = 10 ——→ 顯示出的消息最小嚴重程度
[bcmath]
bcmath.scale = 0 ——→ #用于所有bcmath 函數(shù)的10 十進制數(shù)數(shù)字的個數(shù)
[browscap] [Session]
session.save_handler = files ——→ 用于保存/取回數(shù)據(jù)的控制方式
session.use_cookies = 1 ——→ 是否使用cookies
session.use_only_cookies = 1
####這個選項允許管理員去保護那些在URL 中傳送session id 的用戶免于被攻擊;默認是0.
session.name = PHPSESSID ——→ session 的名字(同時作為cookie 的名稱
session.auto_start = 0 ——→ 在請求開始時初始化session
session.cookie_lifetime = 0 ——→ cookie 的存活秒數(shù),如果為0,則是直到瀏覽器重新啟動
session.cookie_path = / ——→ cookie 的有效路徑
session.cookie_domain = ——→ cookie 的有效域名
session.cookie_httponly =
####是否將httpOnly 標志增加到cookie 上,增加后則 cookie 無法被瀏覽器的腳本語言(例如 JavaScript)存取. 78
session.serialize_handler = php 用于序列化數(shù)據(jù)的處理器. php 是標準的PHP 序列化器.
session.gc_probability = 1
####; 定義'垃圾回收'進程在每次session 初始化時開始的比例.
; 比例由gc_probability/gc_divisor 來得出,
; 例如. 1/100 意味著在每次請求時有1%的機會啟動'垃圾回收'進程.
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
####在這里數(shù)字所指的秒數(shù)后,保存的數(shù)據(jù)將被視為'碎片(garbage)'并由gc 進程清理掉。
session.bug_compat_42 = Off
####PHP 4.2 和更早版本有一個未公開的特性/bug , 此特性允許你在全局初始化一個session
變量,即便register_globals 已經被關閉.;如果此特性被使用,PHP 4.3 和更早版本會警告你.;你可以
關閉此特性并且隔離此警告. 這時候,如果打開bug_compat_42,那此警告只是被顯示出來.
session.bug_compat_warn = Off
session.referer_check =
####檢查HTTP Referer 來防止帶有id 的外部URL.;HTTP_REFERER 必須包含從session 來的這
個字段才會被認為是合法的.
session.entropy_length = 0 ——→ 從此文件讀取多少字節(jié)
session.cache_limiter = nocache
####設置為{nocache,private,public,}來決定HTTP 緩沖的類型;留空則防止發(fā)送anti-caching 頭.
session.cache_expire = 180 ——→ 文檔在n 分鐘之后過期.
session.use_trans_sid = 0
####trans sid 支持默認關閉.
;使用trans sid 可能讓你的用戶承擔安全風險.;使用此項必須小心.; - 用戶也許通過email/irc/其他
途徑發(fā)送包含有效的session ID 的URL 給其他人.; - 包含有效session ID 的URL 可能被存放在容
易被公共存取的電腦上.; - 用戶可能通過在瀏覽器歷史記錄或者收藏夾里面的包含相同的session
ID 的URL 來訪問你的站點.
20、httpd-mpm.conf文件詳解
#prefork 多路處理模塊
<IfModule mpm_prefork_module>
StartServers 5 #設置服務器啟動時建立的子進程數(shù)量,一般不調
MinSpareServers 5 #設置空閑子進程的最小數(shù)量,不要調太大
MaxSpareServers 10 #設置空閑子進程的最大數(shù)量
MaxClients 150 #用于服務器客戶端最大請求數(shù)量
MaxRequestsPerChild 0 #每個子進程在生存期內允許服務器的最大請求數(shù),建議10000-30000
#worker 多路處理模塊
<IfModule mpm_worker_module>
StartServers 2 #設置服務器啟動時建立的子進程數(shù)量,一般不調
MaxClients 150 #用于服務器客戶端最大請求數(shù)量
MinSpareThreads 25 #設置空閑子進程的最小數(shù)量,不要調太大
MaxSpareThreads 75 #設置空閑子進程的最大數(shù)量
ThreadsPerChild 25 #每個子進程建立的線程數(shù)
MaxRequestsPerChild 0 #設置每個子進程在其生存期內允許伺服的最大請求數(shù)量
21、http-default.conf詳解
Timeout 300 #設置服務器在斷定請求失敗前等待的秒數(shù)。默認值300
KeepAlive Off #設置是否啟用HTTP 持久鏈接,On 代表打開,Off 代表關閉。
如果用于同一頁面包含大量靜態(tài)文件的應用,設置為On,以提高性能;
如果用于主要為動態(tài)頁面的應用,設置為Off,以節(jié)約內存資源;
如果服務器前跑有squid 或者其它七層設備,設置為On
MaxKeepAliveRequests 100 #限制當啟用KeepAlive 時,每個連接允許的請求數(shù)量。
如果將此值設為"0",將不限制請求的數(shù)目。
筆者建議將此值設為100-500 之間的一個值,
以確保最優(yōu)的服務器性能
KeepAliveTimeout 5 #設置持久鏈接中服務器在兩次請求之間等待的秒數(shù)。對于高負荷服務器來說,
KeepAliveTimeout 值較大會導致一些性能方面的問題:
超時值越大,與空閑客戶端保持連接的進程就越多
UseCanonicalName Off #配置服務器如何確定它自己的域名,
可選值為On | Off | DNS。DNS 用于為大量基于IP 的虛擬主機支持那些古董級的不提供"Host:"頭的瀏覽器使
用。
筆者建議設置為Off
AccessFileName .htaccess #設置分布式配置文件的名字,默認為.htaccess。
如果為某個目錄啟用了分布式配置文件功能,那么在向客戶端返回其中的文檔時,
服務器將在這個文檔所在的各級目錄中查找此配置文件,因此會帶來性能問題,
筆者建議關閉分布式配置文件功能。
ServerTokens Prod #控制服務器回應給客戶端的"Server:"應答頭是否包含關于服務器操作系統(tǒng)類型和編譯
進的模塊描述信息,
同時還控制著ServerSignature 指令的顯示內容。可選值為Full | OS | Minor | Minimal | Major | Prod。
筆者建議設置為顯示最少信息的Prod。
ServerSignature Off #配置服務器生成頁面的頁腳,可選值為On | Off | EMail。
采用On 會簡單的增加一行關于服務器版本和正在伺服的虛擬主機的ServerName,
而EMail 設置會額外創(chuàng)建一個指向ServerAdmin 的"mailto:"部分。建議使用默認值Off。
HostnameLookups Off #設置是否啟用對客戶端IP 的DNS 查找,可選值為On | Off | Double。
DNS 查詢會造成明顯的時間消耗,建議設置為Off。
22、bin目錄
23、虛擬主機配置:
vim httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin 291406980@qq.com
DocumentRoot "/var/www/html/www"
ServerName www.etiantian.org
ServerAlias etiantian.org
ErrorLog "logs/www-error_log"
CustomLog "logs/www-access_log" common
vim httpd.conf
Include conf/extra/httpd-vhosts.conf
#基于端口
NameVirtualHost *:80
NameVirtualHost *:8000
NameVirtualHost *:9000
#基于IP
<VirtualHost 192.168.1.1:90>
xxxxxxxxx
24、apache日志:
CustomLog "logs/blog-access_log" combined
#日志輪詢
#統(tǒng)計IP
awk '{print $1}' access_bbs_xx.log|sort|uniq -c|sort -rn
25、隱藏版本信息:
方法一:
※首先修改源文件,再進行make && make install 編譯安裝
編輯源文件/usr/local/apache2/include/ap_release.h 文件
[root@Nagios-Server include]# vimap_release.h
#define AP_SERVER_BASEPRODUCT "IIS"
#define AP_SERVER_MAJORVERSION_NUMBER 7
#define AP_SERVER_MINORVERSION_NUMBER 0
#define AP_SERVER_PATCHLEVEL_NUMBER 0
#define AP_SERVER_DEVBUILD_BOOLEAN 0
編輯源文件/usr/local/apache2/include/os.h 文件
[root@Nagios-Server include]# vimos.h
#define PLATFORM "Win32"
方法二:
[root@Nagios-Server include]# vim /usr/local/apache2/conf/httpd.conf
# Various default settings
Include conf/extra/httpd-default.conf
[root@Nagios-Server include]# vim /usr/local/apache2/conf/extra/httpd-default.conf
#ServerTokens Prod
#ServerSignature off
[root@Nagios-Server include]# curl -I 192.168.1.125 89
HTTP/1.1 200 OK
Date: Sun, 07 Dec 2014 11:55:51 GMT
Server: Apache/2.2.23 (Unix) PHP/5.4.1 #此處無法去掉,若要隱藏,只有用方法一
Last-Modified: Sat, 06 Dec 2014 07:22:37 GMT
ETag: "42760-19-509870ed29d1c"
Accept-Ranges: bytes
Content-Length: 25
Content-Type: text/html
26、apache的rewrite:vi /etc/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine on
Include conf.d/xx.conf
RewriteCond %{HTTP_HOST} hunk.test.com [NC]
RewriteRule ^(.*)/index.html$ http://hunk.test.com/test.html [L,R=302]
27、apache安全
Allow from [All /全域名/部分域名/IP 地址/網絡地址/CIDR 地址]
All:表示全部客戶端
全域名:表示域名對應的客戶端,如www.domain.com
部分域名:表示域名內所有客戶端,如domain.com
IP 地址:如172.20.17.1
網絡地址:如172.20.17.0/255.255.255.0
CIDR 地址:如172.20.17.0/24
htpasswd -c /usr/local/apache2/conf/users sam
28、圖片防盜鏈
28、忽略某些訪問日志
29、APACHE日志分析
1.獲得訪問前10 位的ip 地址
[root@apache ~]# cat access_log |awk '{print $1}'|sort|uniq -c|sort -nr|head -10
2.訪問次數(shù)最多的文件或頁面,取前20
cat access.log|awk ‘{print $11}’|sort|uniq -c|sort -nr|head -20
3.列出傳輸最大的幾個exe 文件
cat access.log |awk ‘($7~/\.exe/){print $10 ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -20
4. 列出輸出大于200000byte(約200kb)的exe 文件以及對應文件發(fā)生次
數(shù)
cat access.log |awk ‘($10 > 200000 && $7~/\.exe/){print $7}’|sort -n|uniq -c|sort -nr|head -100
5. 如果日志最后一列記錄的是頁面文件傳輸時間,則有列出到客戶端
最耗時的頁面
cat access.log |awk ‘($7~/\.php/){print $NF ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -100
6. 列出最最耗時的頁面(超過60 秒的)的以及對應頁面發(fā)生次數(shù)
cat access.log |awk ‘($NF > 60 && $7~/\.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100
7. 列出傳輸時間超過30 秒的文件
cat access.log |awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20
8. 統(tǒng)計網站流量(G) 94
cat access.log |awk ‘{sum+=$10} END {print sum/1024/1024/1024}’
9. 統(tǒng)計404 的連接
awk ‘($9 ~/404/)’ access.log | awk ‘{print $9,$7}’ | sort
10. 統(tǒng)計http status.
cat access.log |awk ‘{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'
cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn
11. 蜘蛛分析
查看是哪些蜘蛛在抓取內容。
/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E
'bot|crawler|slurp|spider'
Webalizer 日志分析程序
[root@Apache-Server tools]# yum install -y webalizer
[root@Apache-Server tools]# less /etc/webalizer.conf
30、apache tomcat整合
http://blog.51cto.com/maofan/1560639