CentOS3 Linux 伺服器環境配置最佳化詳解

來源:互聯網
上載者:User

原貼:

CentOS3 Linux 伺服器環境配置最佳化詳解Wikipedia,自由的百科全書

目錄
[顯示隱藏]
1 內容概要

1.1 CentOS3 安裝後的調整以及設定
1.2 升級OpenSSL和OpenSSH加強安全性
1.3 安裝配置Apache+PHP+MySQL+Zend Optimizer
1.4 更改Apache運行賬戶以及建立虛擬機器主機
1.5 伺服器最佳化

[編輯]

內容概要

本文詳細講述一台Linux伺服器系統安裝完畢後,從初步系統調整到安裝L.A.M.P環境再到伺服器最佳化、安全性原則等操作步驟,通過閱讀本文,您將能夠輕鬆快速的完成對 CentOS3 伺服器的環境配置!

1)本文包含如下主要內容:

  • CentOS3 安裝後的調整以及設定
  • 升級OpenSSL和OpenSSH加強安全性
  • 安裝Apache+PHP+MySQL+Zend Optimizer環境
  • 配置Apache以及建立虛擬機器主機
  • 伺服器最佳化
  • 伺服器iptables防火牆安全性原則定製參考

2)本文約定

  • 下載的RPM包和源碼包存放位置:/usr/local/src
  • MySQL 資料庫位置:/var/lib/mysql
  • Apache 網站根目錄:/home/www/wwwroot
  • Apache 運行賬戶:www:www

[編輯]

CentOS3 安裝後的調整以及設定

1. 檢查系統是否正常

  # more /var/log/messages (檢查有無系統核心級錯誤(error)資訊)  # dmesg (檢查有無硬體錯誤(error)資訊)  # ifconfig(檢查網卡設定是否正確)  # ping www.discuz.net (檢查網路是否正常)

2. 關閉不需要的服務

  ntsysv

以下僅列出需要啟動的服務,未列出的服務一律可以關閉:

   crond  irqbalance (僅當伺服器CPU支援S.M.P-對稱多路處理器架構時才需開啟,
例如有2個或2個以上的CPU。否則關閉) microcode_ctl network random sendmail sshd syslog

3. 對TCP/IP網路參數進行調整,加強抗syn_flood能力

  # echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf  # sysctl –p

4. 配置yum

  1) rpm --import /usr/share/doc/centos-release-3/RPM-GPG-KEY-CentOS-3  2) yum list | tee /etc/yum.list

解釋:yum是一個功能強大的可以方便管理系統中RPM包的工具,使用yum可以通過網路免費升級、安裝系統中的RPM包,並且在升級安裝過程當中自動判斷解決依賴性問題,同時,也可以卸載刪除RPM包,詳細資料請參見Discuz!知識庫中Linux部分對yum的詳細介紹 (http://kb.discuz.com/index.php?title=%E4%BD%BF%E7%94%A8yum%E7%AE%A1%E7%90%86CentOS_RPM)

5. 安裝所需的RPM

在安裝前,請先使用 rpm -qa | grep NAME 檢查是否已經安裝了以下
的RPM包(將命令中的NAME替換為下列包名稱即可),如果系統顯示已經
安裝過該RPM包,則無需使用yum再次安裝! gcc gcc-c++ ntp flex bzip2-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel perl-CGI perl-DBI zlib-devel yum install NAME (將NAME替換為上面列表中的RPM包名稱即可開始自動網路安裝)

6. 檢查系統時間並設定定期時間同步

  1) date (確認系統時間是否正確)  2) ntpdate 210.72.145.44 (與中國國家授時中心進行時間校正)  3) crontab -e 加入一行任務,每隔30分鐘進行一次時間同步:    */30 * * * * ntpdate 210.72.145.44 > /dev/null 2>&1

7. 重新啟動系統

   init 6

8. 源碼編譯安裝環境所需的軟體

1) LibXML2

   # cd /usr/local/src   # wget http://download.discuz.net/env/libxml2-2.6.24.tar.bz2   # tar xjvf libxml2-2.6.24.tar.bz2   # cd libxml2-2.6.24   # ./configure --prefix=/usr/local/libxml2   # make   # make install

2) GD2

   # cd /usr/local/src   # wget http://download.discuz.net/env/gd-2.0.33.tar.gz   # tar xzvf gd-2.0.33.tar.gz   # cd gd-2.0.33   # ./configure --prefix=/usr/local/gd2 --mandir=/usr/share/man   # make   # make install
[編輯]

升級OpenSSL和OpenSSH加強安全性

1) 升級OpenSSL

   # cd /usr/local/src   # wget http://download.discuz.net/env/openssl-0.9.7j.tar.gz   # wget http://download.discuz.net/env/openssh-4.2p1.tar.gz   # tar xzvf openssl-0.9.7j.tar.gz   # cd openssl-0.9.7j   # ./config --prefix=/usr/local/openssl   # make   # make test   # make install   # cd ..

2) 升級OpenSSH

   # tar xzvf openssh-4.2p1.tar.gz   # cd openssh-4.2p1   # ./configure --prefix=/usr --with-pam --with-zlib --with-ssl-
dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man # make # make install

3)禁止root直接登入,此處先建立一個普通系統使用者:

   # useradd username   # passwd username   # vi /etc/passwd (將passwd檔案中username的登入shell改為/bin/sh)   # vi /etc/ssh/sshd_config (將#protocol 1,2一行改為protocol 2)   # vi /etc/ssh/sshd_config (將#PermitRootLogin yes一行改為PermitRootLogin no)   # vi /usr/etc/sshd_config (將#protocol 1,2一行改為protocol 2)   # vi /usr/etc/sshd_config (將#PermitRootLogin yes一行改為PermitRootLogin no)   # /etc/rc.d/init.d/sshd restart
[編輯]

安裝配置Apache+PHP+MySQL+Zend Optimizer

1) 下載軟體

   # cd /usr/local/src   # wget http://download.discuz.net/env/httpd-2.0.58.tar.bz2   # wget http://download.discuz.net/env/mysql-standard-5.0.22-linux-i686.tar.gz   # wget http://download.discuz.net/env/php-5.1.4.tar.bz2   # wget http://download.discuz.net/env/ZendOptimizer-3.0.1-linux-glibc21-i386.tar.gz

2) 安裝MySQL

   # tar xzvf mysql-standard-5.0.22-linux-i686.tar.gz   # useradd mysql   # mv mysql-standard-5.0.22-linux-i686 /usr/local/mysql   # cd /usr/local/mysql   # scripts/mysql_install_db --user=mysql   # chown -R root .   # chown -R mysql data   # chgrp -R mysql .   # mv data /var/lib/mysql   # ln -s /var/lib/mysql ./data   # cp support-files/my-large.cnf /etc/my.cnf   # bin/mysqld_safe --user=mysql &   # bin/mysqladmin -u root password newpassword_for_root   # bin/mysqladmin -u root -p shutdown   # cp support-files/mysql.server /etc/init.d/mysqld   # chkconfig --add mysqld   # /etc/rc.d/init.d/mysqld start

3) 編譯安裝Apache

   # cd /usr/local/src   # tar xjvf httpd-2.0.58.tar.bz2   # cd httpd-2.0.58   # ./configure --prefix=/usr/local/apache2 --mandir=/usr/
share/man --enable-module=so --enable-deflate=shared
--enable-expires=shared --enable-rewrite=shared
--enable-gzip --enable-cache --enable-file-cache
--enable-mem-cache --enable-disk-cache # make # make install

4) 編譯安裝PHP

   # cd /usr/local/src   # tar xjvf php-5.1.4.tar.bz2   # cd php-5.1.4   # ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/
apache2/bin/apxs --with-zlib --with-bz2 --with-tiff-dir
--with-libxml-dir=/usr/local/libxml2 --with-gd=/usr/local/
gd2 --with-freetype-dir --with-jpeg-dir --with-png-dir
--with-ttf --enable-mbstring --with-mysql=/usr/local/mysql
--with-config-file-path=/etc --disable-ipv6 --enable-gd-
native-ttf # make # make install # cp php.ini-dist /etc/php.ini

5) 安裝Zend Optimizer

   # cd /usr/local/src   # tar xzvf ZendOptimizer-3.0.1-linux-glibc21-i386.tar.gz   # ./ZendOptimizer-3.0.1-linux-glibc21-i386/install.sh

6) 整合Apache與PHP

   # vi /usr/local/apache2/conf/httpd.conf

搜尋:

   DirectoryIndex index.html index.html.var

將其改為:

   DirectoryIndex index.html index.htm index.php

搜尋:

   AddType application/x-gzip .gz .tgz

在下面添加一行:

   AddType application/x-httpd-php .php

儲存退出後重啟Apache

   # /usr/local/apache2/bin/apachectl restart
[編輯]

更改Apache運行賬戶以及建立虛擬機器主機

1. 更改Apache運行賬戶預設情況下Apache在Linux系統上使用nobody賬戶運行,我們下面將要更改運行賬戶提升Apache的安全性和許可權可控性。

   # useradd www   # su www   $ mkdir -p /home/www/wwwroot/discuz   $ exit   # vi /usr/local/apache2/conf/httpd.conf

找到:

   User nobody   Group #-1

改為:

   User www   Group www

2. 建立一個虛擬機器主機此處我們為Apache建立一個虛擬機器主機。

   # vi /usr/local/apache2/conf/httpd.conf

找到:

   #NameVirtualHost *

去調前面的“#”號以開啟注釋,使用虛擬機器主機模式運行Apache。在該設定檔的末尾添加一個虛擬機器主機,且該虛擬機器主機記錄檔存放目錄為/home/www/logs

   <VirtualHost *>       ServerName www.your-domain.com       DocumentRoot /home/www/wwwroot/discuz       ErrorLog /home/www/logs/discuz-error_log       CustomLog /home/www/logs/discuz-access_log combined       # 建立Discuz!論壇所需的Rewrite規則        <IfModule mod_rewrite.c>           RewriteEngine On           RewriteRule ^(.*)/archiver/([a-z0-9/-]+/.html)$ $1/archiver/index.php?$2           RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)/.html$ $1/forumdisplay.php?fid=$2&page=$3           RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)/.html$ $1/viewthread.php?tid=$2&extra=page/%3D$4&page=$3           RewriteRule ^(.*)/profile-(username|uid)-(.+)/.html$ $1/viewpro.php?$2=$3       </IfModule>  </VirtualHost>

儲存並退出檔案編輯,下面建立日誌存放目錄:

   # mkdir /home/www/logs

重新啟動Apache:

   # /usr/local/apache2/bin/apachectl restart

至此,一個虛擬機器主機就建立好了!

[編輯]

伺服器最佳化

1. Apache最佳化

經過上述操作後,Apache已經能夠正常運行。但是,對於訪問量稍大的網站,Apache的這些預設配置是無法滿足需求的,我們仍需調整Apache的一些參數,使Apache能夠在大訪問量環境下發揮出更好的效能。以下我們對Apache設定檔httpd.conf中對效能影響較大的參數進行一些說明。

(1) Timeout 該參數指定Apache在接收請求或發送所請求內容之前的最長等待時間(秒),若超過該時間Apache則放棄處理該請求,並釋放串連。該參數預設值為120,推薦設定為60,對於訪問量較大的網站可以設定為30。

(2) KeepAlive 該參數控制Apache是否允許在一個串連中有多個請求,預設開啟。但對於大多數論壇類型網站來說,通常設定為off以關閉該支援。

(3) MPM - prefork.c 在預設情況下Apache使用Prefork(進程)工作模式,可以說這部分的參數設定是對Apache效能影響的核心和關鍵。使用者可以在配置文檔中找到以下配置段:

   <IfModule prefork.c>       StartServers         5       MinSpareServers      5       MaxSpareServers     10       MaxClients          15       MaxRequestsPerChild  0   </IfModule>

這就是控制Apache進程工作的配置段,為了更好的理解上述配置中的各項參數,下面讓我們先瞭解一下Apache是如何控制進程工作的。我們知道,在Unix系統中,很多服務(Service)的守護進程(Daemon)在啟動時會建立一個進程以準備應答可能的串連請求,服務即進入了連接埠監聽狀態,當一個來自用戶端(Client)的請求被發送至服務所監聽的連接埠時,該服務進程即會處理該請求,在處理過程中,該進程處於獨佔狀態,也就是說如果此時有其他請求到達,這些請求只能“排隊”等待當前請求處理完成且服務進程釋放。這樣就會導致越來越多的請求處於隊列等待狀態,實際表現就是該服務處理能力非常低下。Apache使用Prefork模式很好的解決了這一問題。下面我們來看看Apache實際上是如何高效率工作的。

當Apache啟動時,Apache會啟動StartSpareServers個空閑進程同時準備接收處理請求,當多個請求到來時,StarSpareServers進行會越來越少,當空閑進程減少到MinSpareServers個時,Apache為了能夠繼續有充裕的進程處理請求,它會再啟動StartsServers個進程備用,這樣就大大減少了請求隊列等待的可能,使得服務效率提高,這也是為什麼叫做Pre-fork的原因;讓我們繼續跟蹤Apache的工作,我們假設Apache已經啟動了200個進程來處理請求,理論上來說,此時Apache一共有205個進程,而過了一段時間,假設有100個請求都得到了Apache的響應和處理,那麼此時這100個進程就被釋放成為空白閑進程,那麼此時Apache有105個空閑進程。而對於服務而言,啟動太多的空閑進程時沒有任何意義的,反而會降低伺服器的整體效能,那麼Apache真的會有105個空閑進程嗎?當然不會!實際上Apache隨時在檢查自己,當發現有超過MaxSpareServers個空閑進程時,則會自動停止關閉一些進程,以保證空閑進程不過過多。說到這裡,使用者應該對Apache的工作方式有了一定的瞭解,如果想獲得更多更詳細的說明請參閱Apache手冊文檔。

我們還有兩個參數沒有介紹:MaxClients和MaxRequestPerchild;MaxClients指定Apache在同一時間內最多允許有多少用戶端能夠與其串連,如果超過MaxClients個串連,用戶端將會得到一個“伺服器繁忙”的錯誤頁面。我們看到預設情況下MaxClients設定為15,這對一些中型網站和大型網站顯然是遠遠不夠的!也許您需要同時允許512個用戶端串連才能滿足應用需求,好吧,那麼就讓我們把MaxClients修改為512,儲存httpd.conf並退出,重啟Apache,很遺憾,在重啟過程當中您看到了一些錯誤提示,Apache重啟失敗。錯誤提示中告訴您MaxClients最大隻能設定為256,相信您一定很失望。不過不要沮喪,Apache作為世界一流的Web Server一定不會如此單薄的!在預設情況下,MaxClients的確只能設定為不超過256的整數,但是,如果您有需要完全可以隨意定製,此時就需要使用ServerLimit參數來配合使用,簡單的說ServerLimit就像是水桶,而MaxClients就像是水,您可以通過更換更大的水桶(將ServerLimit設定為一個較大值)來容納更多的水(MaxClients),但要注意,MaxClients的設定數值是不能大於ServerLimit的設定數值的!

下面讓我們瞭解一下MaxRequestPerChild參數,該參數指定一個串連進程中可以有多少個線程同時工作。也許這樣解釋過於專業,那麼您只要想想“網路螞蟻”、“網際快車FlashGet”中的“多點同時下載”即可,該參數實際上就是限制最多可以用幾個“點”。預設設定為0,即為:不限制。但需要注意,如果將該值設定的過小會引起訪問問題,如果沒有特殊需要或者訪問量壓力並非很大可以保持預設值,如果訪問量很大則推薦設定為2048。

好了,解釋了這麼多,讓我們看看經過修改後Perfork.c配置段的推薦配置:

   <IfModule prefork.c>       StartServers         5       MinSpareServers      5       MaxSpareServers     10       ServerLimit       1024       MaxClients        768       MaxRequestsPerChild  0   </IfModule>

完成了上述對Apache的調整,Apache已經獲得了較大的效能改善。記住,在修改任何參數後都需要重啟Apache才會生效的。有關Apache的最佳化遠遠不止這些,有興趣的使用者可以閱讀Apache手冊文檔或者尋找一些文獻資料學習。

2. PHP最佳化對於PHP的最佳化主要是對php.ini中的相關主要參數進行合理調整和設定,以下我們就來看看php.ini中的一些對效能影響較大的參數應該如何設定。

   # vi /etc/php.ini

(1) PHP函數禁用找到:

   disable_functions =

該選項可以設定哪些PHP函數是禁止使用的,PHP中有一些函數的風險性還是相當大的,可以直接執行一些系統級指令碼命令,如果允許這些函數執行,當PHP程式出現漏洞時,損失是非常嚴重的!以下我們給出推薦的禁用函數設定:

   disable_functions = phpinfo,passthru,exec,system,popen,
chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,
proc_get_status

需注意:如果您的伺服器中含有一些系統狀態檢測的PHP程式,則不要禁用shell_exec,proc_open,proc_get_status等函數。

(2) PHP指令碼執行時間找到:

   max_execution_time = 30

該選項設定PHP程式的最大執行時間,如果一個PHP指令碼被請求,且該PHP指令碼在max_execution_time時間內沒能執行完畢,則PHP不再繼續執行,直接給用戶端返回逾時錯誤。沒有特殊需要該選項可保持預設設定30秒,如果您的PHP指令碼確實需要長執行時間則可以適當增大該時間設定。

(3) PHP指令碼處理記憶體佔用找到:

   memory_limit = 8M

該選項指定PHP指令碼處理所能佔用的最大記憶體,預設為8MB,如果您的伺服器記憶體為1GB以上,則該選項可以設定為12MB以獲得更快的PHP指令碼處理效率。

(4) PHP全域函式宣告找到:

   register_globals = Off

網路上很多關於PHP設定的文章都推薦將該選項設定為On,其實這是一種及其危險的設定方法,很可能引起嚴重的安全性問題。如果沒有特殊的需要,強烈推薦保留預設設定!

(5) PHP上傳檔案大小限制找到:

   upload_max_filesize = 2M

該選項設定PHP所能允許最大上傳檔案大小,預設為2MB。根據實際應用需求,可以適當增大該設定。

(6) Session儲存介質找到:

   session.save_path

如果你的PHP程式使用Session對話,則可以將Session儲存位置設定為/dev/shm,/dev/shm是Linux系統專屬的TMPFS檔案系統,是以記憶體為主要儲存方式的檔案系統,比RAMDISK更優秀,因為可以使用DISKSWAP作為補充,而且是系統內建的功能模組,不需要另行配置。想想看,從磁碟IO操作到記憶體操作,速度會快多少?只是需要注意,儲存在/dev/shm的資料,在伺服器重啟後會全部丟失。不過這對於Session來說是無足輕重的。

3. MySQL最佳化

在Apache, PHP, MySQL的體系架構中,MySQL對於效能的影響最大,也是關鍵的核心部分。對於Discuz!論壇程式也是如此,MySQL的設定是否合理最佳化,直接影響到論壇的速度和承載量!同時,MySQL也是最佳化難度最大的一個部分,不但需要理解一些MySQL專業知識,同時還需要長時間的觀察統計並且根據經驗進行判斷,然後設定合理的參數。

下面我們瞭解一下MySQL最佳化的一些基礎,MySQL的最佳化我分為兩個部分,一是伺服器物理硬體的最佳化;二是MySQL自身(my.cnf)的最佳化。

(1) 伺服器硬體對MySQL效能的影響

a) 磁碟尋道能力(磁碟I/O),以目前高轉速SCSI硬碟(7200轉/秒)為例,這種硬碟理論上每秒尋道7200次,這是物理特性決定的,沒有辦法改變。MySQL每秒鐘都在進行大量、複雜的查詢操作,對磁碟的讀寫量可想而知。所以,通常認為磁碟I/O是制約MySQL效能的最大因素之一,對於日均訪問量在100萬PV以上的Discuz!論壇,由於磁碟I/O的制約,MySQL的效能會非常低下!解決這一制約因素可以考慮以下幾種解決方案:

  • 使用RAID-0+1磁碟陣列,注意不要嘗試使用RAID-5,MySQL在RAID-5磁碟陣列上的效率不會像你期待的那樣快;
  • 拋棄傳統的硬碟,使用速度更快的快閃記憶體式存放裝置。經過Discuz!公司技術工程的測試,使用快閃記憶體式存放裝置可比傳統硬碟速度高出6-10倍左右。

b) CPU 對於MySQL應用,推薦使用S.M.P.架構的多路對稱CPU,例如:可以使用兩顆Intel Xeon 3.6GHz的CPU。

c) 實體記憶體對於一台使用MySQL的Database Server來說,伺服器記憶體建議不要小於2GB,推薦使用4GB以上的實體記憶體。

(2) MySQL自身因素當解決了上述伺服器硬體制約因素後,讓我們看看MySQL自身的最佳化是如何操作的。對MySQL自身的最佳化主要是對其設定檔my.cnf中的各項參數進行最佳化調整。下面我們介紹一些對效能影響較大的參數。

由於my.cnf檔案的最佳化設定是與伺服器硬體設定息息相關的,因而我們指定一個假想的伺服器硬體環境:

  • CPU: 2顆Intel Xeon 2.4GHz
  • 記憶體: 4GB DDR
  • 硬碟: SCSI 73GB

下面,我們根據以上硬體設定結合一份已經最佳化好的my.cnf進行說明:

   # vi /etc/my.cnf

以下只列出my.cnf檔案中[mysqld]段落中的內容,其他段落內容對MySQL運行效能影響甚微,因而姑且忽略。

   [mysqld]   port = 3306   serverid = 1    socket = /tmp/mysql.sock   skip-locking   # 避免MySQL的外部鎖定,減少出錯幾率增強穩定性。   skip-name-resolve   # 禁止MySQL對外部串連進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間。
但需要注意,如果開啟該選項,則所有遠程主機串連授權都要使用IP地址方式,否則MySQL
將無法正常處理串連請求! back_log = 384 # 指定MySQL可能的串連數量。當MySQL主線程在很短的時間內接收到非常多的串連請求,
該參數生效,主線程花費很短的時間檢查串連並且啟動一個新線程。back_log
參數的值指出在MySQL暫時停止回應新請求之前的短時間內多少個請求可以被存在堆棧中。
如果系統在一個短時間內有很多串連,則需要增大該參數的值,該參數值指定到來的
TCP/IP串連的偵聽隊列的大小。不同的作業系統在這個隊列大小上有它自己的限制。
試圖設定back_log高於你的作業系統的限制將是無效的。預設值為50。對於Linux系統
推薦設定為小於512的整數。 key_buffer_size = 256M # key_buffer_size指定用於索引的緩衝區大小,增加它可得到更好的索引處理效能。對於
記憶體在4GB左右的伺服器該參數可設定為256M或384M。
注意:該參數值設定的過大反而會是伺服器整體效率降低! max_allowed_packet = 4M thread_stack = 256K table_cache = 128K sort_buffer_size = 6M # 查詢排序時所能使用的緩衝區大小。
注意:該參數對應的分配記憶體是每串連獨佔!如果有100個串連,那麼實際分配的總共排序緩衝
區大小為100 × 6 = 600MB。所以,對於記憶體在4GB左右的伺服器推薦設定為6-8M。 read_buffer_size = 4M # 讀查詢操作所能使用的緩衝區大小。和sort_buffer_size一樣,該參數對應的分配
記憶體也是每串連獨享! join_buffer_size = 8M # 聯集查詢操作所能使用的緩衝區大小,和sort_buffer_size一樣,該參數對應的分配
記憶體也是每串連獨享! myisam_sort_buffer_size = 64M table_cache = 512 thread_cache_size = 64 query_cache_size = 64M # 指定MySQL查詢緩衝區的大小。可以通過在MySQL控制台執行以下命令觀察: # > SHOW VARIABLES LIKE '%query_cache%'; # > SHOW STATUS LIKE 'Qcache%'; # 如果Qcache_lowmem_prunes的值非常大,則表明經常出現緩衝不夠的情況; # 如果Qcache_hits的值非常大,則表明查詢緩衝使用非常頻繁,如果該值較小反而會影響效率,
那麼可以考慮不用查詢緩衝;Qcache_free_blocks,如果該值非常大,則表明緩衝區中片段很多。 tmp_table_size = 256M max_connections = 768 # 指定MySQL允許的最大串連進程數。如果在訪問論壇時經常出現Too Many Connections的錯誤提
示,則需要增大該參數值。 max_connect_errors = 10000000 wait_timeout = 10 # 指定一個請求的最大連線時間,對於4GB左右記憶體的伺服器可以設定為5-10。 thread_concurrency = 8 # 該參數取值為伺服器邏輯CPU數量×2,在本例中,伺服器有2顆物理CPU,而每顆物理CPU又支援
H.T超執行緒,所以實際取值為4 × 2 = 8 skip-networking # 開啟該選項可以徹底關閉MySQL的TCP/IP串連方式,如果WEB伺服器是以遠端連線的方式訪問
MySQL資料庫伺服器則不要開啟該選項!否則將無法正常串連!

以上,我們對一份my.cnf做了簡單的說明,MySQL的最佳化是一項需要長期觀察,長期積累經驗,長期實驗的工作。有興趣的使用者可以邊查閱文檔資料邊做實驗,在實際應用中獲得更多的經驗的收穫。

最佳化部分至此就基本介紹完了,在所有最佳化操作完成後,需要重新啟動Apache和MySQL服務:

   # /usr/local/apache2/bin/apachectl restart  # /etc/rc.d/init.d/mysqld restart

六、伺服器iptables防火牆安全性原則定製參考對於Linux伺服器而言,使用iptables進行安全控制和包過濾是較好的選擇。該部分無意介紹iptables的使用方法,iptables的功能非常強大,有興趣的使用者可以在這裡 (http://www.netfilter.org)找到很多有關NetFilter/Iptables的資料。下面我們以一台裝有雙網卡的L.A.M.P伺服器為例,給出一個能夠滿足較為安全訪問需求的iptables指令碼。

伺服器雙網卡使用方式:

  • eth0: 串連公網WAN
  • eth1: 串連私網LAN

伺服器對公網WAN開放服務情況:

  • FTP on TCP Port 21
  • SSH on TCP Port 22
  • SMTP on TCP Port 25
  • HTTP on TCP Port 80
  • POP on TCP Port 110
   # vi /usr/local/sbin/fw.sh

將下面指令碼粘貼到fw.sh中:

   #! /bin/bash   # This Net-Filter script was create by Discuz! - Nanu.   # Support: nanu@discuz.com   # Set FTP Passive Transfer Mode   /sbin/modprobe ip_conntrack_ftp   /sbin/modprobe ip_nat_ftp   # Initalize   /sbin/iptables -F -t filter   /sbin/iptables -F -t nat   /sbin/iptables -P INPUT DROP   /sbin/iptables -P OUTPUT ACCEPT   /sbin/iptables -P FORWARD DROP   # Enable Private Network lo & eth1 Access   /sbin/iptables -A INPUT -i lo -j ACCEPT   /sbin/iptables -A INPUT -i eth1 -j ACCEPT   #################################   #### Server Security Settings ###   #################################   # ICMP Control   /sbin/iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT   # FTP Service   /sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT   # SSH Service   /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT   # Mail Service   /sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT   /sbin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT   # WWW Service   /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT   # Deny Other Connections   /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

儲存完畢後,執行以下命令:

   # chmod 755 /usr/local/sbin/fw.sh   # echo '/usr/local/sbin/fw.sh' >> /etc/rc.local   # /usr/local/sbin/fw.sh

查看當前iptables存取控制策略:

   # iptables -L

至此,本文全部內容介紹完畢。如果您對本文有不清楚或者值得探討的地方,可以訪問Discuz!論壇進行討論。 http://www.discuz.net

取自"http://kb.discuz.net/index.php?title=CentOS3_Linux_%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E4%BC%98%E5%8C%96%E8%AF%A6%E8%A7%A3"

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.