[[PageOutline]] = 2009-04-19 = * 由於把系統從 Etch 升級到 Lenny, Python 環境因而從 2.4 升級到 2.5, Trac 從 0.10 升級到 0.11, 不管是 trac 舊的設定檔以及 plugin 都不管用了。只好從頭把 Trac Plugin 重裝一次。 * 設定檔的部分:先用 trac-admin testbed initenv 產生一個全新的範本目錄,然後用 vimdiff 比對有哪些新參數要加進去。 * Plugin 部分: * 首先要注意的是 Trac 0.11 已經把 !TracAccountManager 跟 !TracWebAdmin 納入,因此不可以再裝,否則會有一堆錯誤。 * [http://trac-hacks.org/wiki/GraphvizPlugin Graphviz Plugin] - 用 graphviz 語法畫圖的擴充套件 {{{ $ w3m "http://trac-hacks.org/changeset/latest/graphvizplugin/0.11-0.7.4?old_path=/&filename=graphvizplugin/0.11-0.7.4&format=zip" $ unzip unzip graphvizplugin_0.11-0.7.4-r5537.zip $ cd graphvizplugin/0.11-0.7.4 graphvizplugin/0.11-0.7.4$ sudo python setup.py bdist_egg graphvizplugin/0.11-0.7.4$ sudo easy_install dist/graphviz-0.7.4-py2.5.egg }}} * [http://trac-hacks.org/wiki/WikiIncludePlugin WikiInclude] - 讓用 ![[WikiInclude(WikiStart)]] 語法來包含其他 Wiki 頁面中的內容 {{{ $ wget "http://trac-hacks.org/attachment/wiki/WikiIncludePlugin/0.11.versions.tbz2?format=raw" -O wikiincludeplugin-0.11.tar.gz $ tar jxvf wikiincludeplugin-0.11.tar.gz $ cd 0.11 0.11$ cat > setup.py << EOF from setuptools import setup PACKAGE = 'WikiInclude' VERSION = '0.2' DESCRIPTION = 'Page include plugin for Trac Wiki' setup(name=PACKAGE, version=VERSION, packages=['wikiinclude'], entry_points={'trac.plugins': ['wikiinclude.wikiinclude=wikiinclude.wikiinclude']}) EOF 0.11$ sudo python setup.py bdist_egg 0.11$ sudo easy_install dist/WikiInclude-0.2-py2.5.egg }}} * [http://svn.ipd.uni-karlsruhe.de/trac/javaparty/wiki/TracRedirect TracRedirect] - 用 ![[redirect(網址)]] 語法來作頁面自動轉址 {{{ $ svn co http://svn.ipd.uka.de/repos/javaparty/JP/trac/plugins/redirect-0.11/ $ cd redirect-0.11/ redirect-0.11$ sudo python setup.py bdist_egg redirect-0.11$ sudo easy_install dist/TracRedirect-0.11.3.dev_r3272-py2.5.egg }}} * [http://trac-hacks.org/wiki/SvnAuthzAdminPlugin Svnauthz File Administration Plugin] - 用來管理誰有權限讀取 SVN 目錄的擴充套件 {{{ $ svn co http://trac-hacks.org/svn/svnauthzadminplugin/0.11/ svnauthzadminplugin-0.11 $ cd svnauthzadminplugin-0.11 svnauthzadminplugin-0.11$ sudo python setup.py bdist_egg svnauthzadminplugin-0.11$ sudo easy_install dist/SvnAuthzAdminPlugin-0.1.2._Moved.to.Trac.0.11_-py2.5.egg }}} * 過去習慣會修改的字型大小 {{{ #!diff --- /usr/share/pyshared/trac/htdocs/css/trac.css.old 2009-04-19 19:38:06.000000000 +0800 +++ /usr/share/pyshared/trac/htdocs/css/trac.css 2009-04-19 19:37:47.000000000 +0800 @@ -1,6 +1,6 @@ body { background: #fff; color: #000; margin: 10px; padding: 0; } body, th, td { - font: normal 12px Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif; + font: normal 16px Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif; } h1, h2, h3, h4 { font-family: Arial,Verdana,'Bitstream Vera Sans',Helvetica,sans-serif; }}} * 以前的 template 也失效了,要改用 site.html 重新定義 - 參考 [http://trac.edgewall.org/wiki/TracInterfaceCustomization#SiteAppearance Site Appearance] = 2009-04-23 = * 把 /usr/share/pyshared/trac/wiki/default-pages 搬到 /usr/share/pyshared/trac/wiki/default-pages.dpkg,只留下 RecentChanges、TitleIndex、WikiStart 三個預設頁面。 * 安裝 [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager] 擴充套件 {{{ $ svn co http://trac-hacks.org/svn/accountmanagerplugin/0.11 TracAccountManager-0.11 $ cd TracAccountManager-0.11/ TracAccountManager-0.11$ sudo python setup.py bdist_egg TracAccountManager-0.11$ sudo easy_install dist/TracAccountManager-0.2.1dev_r5273-py2.5.egg }}} = 2009-05-05 = * 參考 [wiki:jazz/08-03-28 2008-03-28] 的紀錄,進行 Cloud 跟 Grid 兩個的 Ticket 攻擊清除。 {{{ ~$ sudo sqlite3 /forge/trac_pool/cloud/db/trac.db sqlite> delete from ticket where id >= 1; sqlite> delete from ticket_change where time >= 1241185964; sqlite> .quit ~$ sudo sqlite3 /forge/trac_pool/grid/db/trac.db sqlite> delete from ticket where id=10; sqlite> delete from ticket where id=11; sqlite> delete from ticket where id=12; sqlite> delete from ticket where id=27; sqlite> delete from ticket_change where time=1240251436; sqlite> delete from ticket_change where time=1240007219; sqlite> delete from ticket_change where time=1240031903; sqlite> .quit }}} * 由於 0.11 版會把 Timeline 的日期用中文表示,因此如果要自訂 Timeline 顯示的話,會出現錯誤。可能程式邏輯還是衍用 2009-05-05 的格式,因此就在範本加入格式的字串,讓 Form 送出的日期字串可以符合程式邏輯。 {{{ #!sh "2009年05月05日" is an invalid date, or the date format is not known. Try "YYYY年MM月DD日" instead. }}} {{{ #!diff --- timeline/templates/timeline.html.org 2009-05-05 12:00:39.000000000 +0800 +++ timeline/templates/timeline.html 2009-05-05 12:03:57.000000000 +0800 @@ -17,7 +17,7 @@
-
+
and .
}}} = 2009-06-09 = * 安裝 [http://piwik piwik] 來統計檔案下載次數 {{{ # apt-get install php5-mysql php5-gd libsparkline-php mysql-server phpmyadmin # apache2ctl restart # cd /var/www/ /var/www# wget http://piwik.org/latest.zip /var/www# unzip latest.zip /var/www# chown -R www-data:www-data piwik/ }}} * 完成設定後,系統會告知如何把像 Google Analytics 的 javascript 加到 HTML 裡 {{{ #!java }}} * 安裝 awstats 統計 deb 下載次數 * 把 /usr/share/doc/awstats/examples/apache.conf 的內容加入 /etc/apache2/sites-enabled/classcloud.conf {{{ #!sh ServerName www.classcloud.org ErrorLog /var/log/classcloud-error_log CustomLog /var/log/classcloud-access_log common DocumentRoot "/var/www/hadoop" Order deny,allow Allow from all Options None AllowOverride None Order allow,deny Allow from all Options None AllowOverride None Order allow,deny Allow from all Alias /icon/ /usr/share/awstats/icon/ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all }}} {{{ $ cat > /etc/awstats/awstats.classcloud.org.conf << EOF LogFile="/var/log/classcloud-access_log" LogFormat=4 SiteDomain="classcloud.org" AllowFullYearView=3 EOF }}} * 執行 /usr/lib/cgi-bin/awstats.pl --config=classcloud.org * 觀察 http://classcloud.org/cgi-bin/awstats.pl 有沒有內容 * 目前 hadoop 套件的下載量為 94 而已 * [[Image(2009-06_hadoop.jpg,width=400)]] = 2009-07-01 = * [備忘] 如果遇到 trac 啟動時出現 '''Database newer than Trac version''' 錯誤訊息,解決方法可參考以下步驟 - [http://trac.edgewall.org/ticket/6300 ticket #6300] * Reference: http://use.perl.org/~Beatnik/journal/35866 {{{ jazz@drbl-xen-srv:~$ sudo apt-get install sqlite3 jazz@drbl-xen-srv:~$ sudo sqlite3 /forge/trac_pool/grid/db/trac.db SQLite version 3.3.8 Enter ".help" for instructions sqlite> select * from system; database_version|20 repository_dir|svn:164b2d09-da6f-4c29-9524-243417f19678:/forge/trac_pool/maicl/svnroot youngest_rev|12 sqlite> update system set value = 19 where name = "database_version"; sqlite> .quit }}} * 例行性安全升級 - [http://www.linux.org.tw/node/671 Debian GNU/Linux "lenny" 第二次穩定版本更新 5.0.2] {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apache2 apache2-mpm-prefork apache2-utils apache2.2-common base-files gnupg gpgv libaprutil1 libglib2.0-0 libpango1.0-0 libpango1.0-common libxcb-render0 libxcb-xlib0 libxcb-xlib0-dev libxcb1 libxcb1-dev linux-image-2.6.26-2-686 phpmyadmin screen tzdata x11-common xutils 升級 22 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 }}} = 2009-09-06 = * 例行性安全升級 {{{ trac-pool:~# apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: base-files devscripts dhcp3-client dhcp3-common libcurl3 libmysqlclient15off libperl5.10 libssl0.9.8 libvolume-id0 linux-image-2.6.26-2-686 linux-libc-dev mysql-client-5.0 mysql-common mysql-server mysql-server-5.0 openssl perl perl-base perl-modules python-support tzdata udev wordpress x11-common xutils 25 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 74.5MB of archives. After this operation, 1382kB of additional disk space will be used. Do you want to continue [Y/n]? }}} = 2009-11-30 = * 例行性安全升級 {{{ trac-pool:~# apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: man-db libgnutls26 apache2-utils apache2.2-common apache2-mpm-prefork apache2 php5-common php5-cli libapache2-mod-php5 php5-mysql php5-mcrypt libgd2-xpm php5-gd libvorbis0a libvorbisenc2 libvorbisfile3 libvorbis-dev php-pear 18 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. }}} = 2009-12-04 = * 例行性安全升級 {{{ trac-pool:~# apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: exim4-config man-db liblockfile1 3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. }}} = 2010-02-08 = * 例行性安全升級 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: acpid base-files dhcp3-client dhcp3-common dpkg dpkg-dev gzip libc6 libc6-dev libc6-i686 libdbd-mysql-perl libexpat1 libglib2.0-0 libkadm55 libkrb53 libldap-2.4-2 libldap2-dev libltdl3 libltdl3-dev libmysqlclient15off libpq5 libssl0.9.8 libthai-data libthai0 linux-image-2.6.26-2-686 linux-libc-dev locales login mysql-client-5.0 mysql-common mysql-server mysql-server-5.0 ntpdate openssl passwd python-docutils python-roman python2.4 python2.4-dev python2.4-minimal python2.5 python2.5-dev python2.5-minimal tzdata usbutils 升級 45 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 98.5MB 的套件檔。 此操作完成之後,會多佔用 532kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} * 安裝 minin 監控系統 - http://trac.nchc.org.tw/munin {{{ jazz@trac-pool:~$ sudo apt-get install munin munin-node }}} = 2010-02-11 = * [除錯] trac 主機經常出現 "clocksource tsc unstable" 的錯誤訊息然後就進不去了.... * [參考] [http://blog.mosquito.tk/2009/12/clocksource-tsc-unstable.html 服務停止與Clocksource tsc unstable... ] * [參考] [http://blog.yam.com/gavint/article/25260718 Clocksource tsc unstable] * [參考] [http://kerneltrap.org/node/8306 Is "Clocksource tsc unstable" kernel msg a problem or not ?] * [檢測] 查看 /sys/devices/system/clocksource/clocksource0/available_clocksource 有沒有 acpi_pm {{{ jazz@trac-pool:~$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource tsc acpi_pm jiffies }}} * [修改] 改掉 /sys/devices/system/clocksource/clocksource0/current_clocksource 變成 acpi_pm {{{ trac-pool:~# echo acpi_pm > /sys/devices/system/clocksource/clocksource0/current_clocksource }}} = 2010-02-20 = * 因應 PHP5 安全更新,進行系統安全升級 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libapache2-mod-php5 libmysqlclient15off mysql-client-5.0 mysql-common mysql-server mysql-server-5.0 php-pear php5-cli php5-common php5-gd php5-mcrypt php5-mysql 升級 12 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 0B/42.2MB 的套件檔。 此操作完成之後,會空出 504kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2010-02-25 = * [除錯] trac 主機又再度出現 "clocksource tsc unstable" 的錯誤訊息然後就進不去了....不確定上次有沒有作 GRUB menu.lst 修改與否....還是因為 apt-get upgrade 更新到 kernel 被洗掉了....只好再手動加進去 :( {{{ #!diff --- /boot/grub/menu.lst.old 2010-02-25 15:08:29.000000000 +0800 +++ /boot/grub/menu.lst 2010-02-25 14:02:48.000000000 +0800 @@ -121,7 +121,7 @@ title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd0,0) -kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro +kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro clocksource=acpi_pm initrd /boot/initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode) }}} * 另外發現中午十二點附近都有大量 apache load 真不清楚是哪來的攻擊還是搜尋引擎....記憶體使用量最高 commited 到達 3.88 GB 可能要查一下原因了。 * [[Image(10-02-25-apache_processes-day.png)]] * [[Image(10-02-25-memory-day.png)]] * [[Image(10-02-25-apache_processes-week.png)]] * [[Image(10-02-25-memory-week.png)]] = 2010-02-26 = * 遇到沒品的 426 .... 沒事同時發起 176 個 web 連線到 trac 網站.... {{{ jazz@drbl:~$ cat 10-02-26_trac_down_reason.log | grep ":" | awk '{ print $5 }' | sed 's#\:.*##' | sort -n | uniq -c | sort -n ... 略 .... 3 114.25.224.118 176 124.254.15.50 }}} * 設了好幾個做法都很難阻擋,包括 /etc/hosts.deny ... 乾脆來一招狠的: 所有來自這個 IP 的封包全部 DROP 掉,北京使用這個 IP 的朋友....我也沒辦法了....你們有害群之馬 {{{ iptables -A INPUT -s 124.254.15.50 -j DROP }}} * [[Image(10-02-26-apache_processes-day.png)]] * [[Image(10-02-26-apache_processes-week.png)]] = 2010-03-08 = * 例行性安全升級:sudo 安全漏洞補強 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libcups2 libcupsimage2 libcupsys2 sudo 升級 4 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 493kB 的套件檔。 此操作完成之後,會空出 8192B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2010-03-23 = * 又來一個沒品的 426 .... 沒事同時發起多個 web 連線到 trac 網站....直接用上次那招,浙江無錫使用這個 IP 的朋友....我也沒辦法了....你們有害群之馬 {{{ iptables -A INPUT -s 222.191.249.106 -j DROP }}} * [[Image(10-03-23_apache_processes-week.png)]] * [[Image(10-03-23_abuse_ip.jpg)]] = 2010-03-24 = * 例行性安全升級:PHP 與 Linux Kernel {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: dpkg dpkg-dev libapache2-mod-php5 libpango1.0-0 libpango1.0-common linux-image-2.6.26-2-686 linux-libc-dev php-pear php5-cli php5-common php5-gd php5-mcrypt php5-mysql 升級 13 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 30.2MB 的套件檔。 此操作完成之後,會多佔用 73.7kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2010-03-26 = * 又來一個 426,怎麼這麼多網軍啊.... {{{ 129 tcp6 536 0 140.110.240.196:80 121.235.30.92:9508 CLOSE_WAIT - }}} * [[Image(10-03-23_abuse_ip.jpg)]] {{{ iptables -A INPUT -s 121.235.30.92 -j DROP }}} * 原來 iptables 可以計算過濾了幾個呀!! 加個 "-c" 參數就可以統計 {{{ jazz@trac-pool:~$ sudo iptables-save -c ... 略 ... [726:33684] -A INPUT -s 121.235.30.92/32 -j DROP [0:0] -A INPUT -s 222.191.249.106/32 -j DROP [0:0] -A INPUT -s 124.254.15.50/32 -j DROP ... 略 ... # Completed on Fri Mar 26 22:27:36 2010 }}} * 因為又遇到了兩次攻擊行為,所以想試試看有沒有辦法透過 iptable 的方式把同時連線太多次的加以刪除。參考 [http://www.debian-administration.org/articles/187 Using iptables to throttle incoming connections] 的文章,修改成統計 80 port 的連線,再用另一台跑 nc 模擬攻擊。發現每 10 個連線會暫停 10 秒鐘。 {{{ iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent --set --name DEFAULT --rsource iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 --name DEFAULT --rsource -j DROP }}} * [參考] [http://blog.toknow.idv.tw/?p=277 調整網路 TCP TIME_WAIT,快速釋放 connection] {{{ 在繁忙的server中我們常常會看到許多狀態已是「TIME_WAIT」的連線 透過調整系統參數可使連線更快速的釋放 修改系統預設tcp fin timeout echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout 調整為30sec 調整tcp參數 net.ipv4.tcp_tw_reuse = 0 net.ipv4.tcp_tw_reuse = 1 表示開啟重用。 允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0,表示關閉 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接中TIME-WAIT sockets的快速回收,預設為0,表示關閉 }}} * 彙整以上的規則,寫一隻 script 來當做開機時啟用安全防護的機制。 {{{ #!sh echo "clear rules" iptables -F iptables -X iptables -Z iptables -t nat -F echo "drop ping and traceroute" iptables -A INPUT -i eth0 -p icmp -s any/0 --icmp-type 8 -j DROP iptables -A OUTPUT -o eth0 -p icmp --icmp-type 3 -d any/0 -j DROP iptables -A OUTPUT -o eth0 -p icmp --icmp-type 11 -d any/0 -j DROP echo "drop abuse IP connections" iptables -A INPUT -s 124.254.15.50 -j DROP iptables -A INPUT -s 222.191.249.106 -j DROP iptables -A INPUT -s 121.235.30.92 -j DROP echo "drop connect more than 10 times in 10 seconds ..." iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent --set --name DEFAULT --rsource iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 --name DEFAULT --rsource -j DROP echo "decrease TCP socket TIME_WAIT time" echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout sysctl net.ipv4.tcp_tw_reuse=1 sysctl net.ipv4.tcp_tw_recycle=1 }}} = 2010-03-28 = * 繼續封鎖 {{{ 69 tcp6 0 1 140.110.240.196:80 117.85.101.39:26243 LAST_ACK 70 tcp6 0 10081 140.110.240.196:80 117.85.101.39:26347 FIN_WAIT1 71 tcp6 1 90721 140.110.240.196:80 117.85.101.39:26337 LAST_ACK }}} * [[Image(10-03-28_abuse_ip.jpg)]] * 3/26 縱使加了延遲反應還是沒有效果,反而增加了系統的負載,唉~想保持開放可以讓多一點初學者受益,又得防禦這些攻擊,真是令人為難啊~[[BR]][[Image(10-03-28_cpu-week.png)]] = 2010-04-07 = * [[Image(10-04-07_apache_processes-week.png)]] * [[Image(10-04-07_cpu-week.png)]] * [[Image(10-04-07_eth0-week.png)]] * [[Image(10-04-07_memory-week.png)]] * [[Image(10-04-07_swap-week.png)]] = 2010-04-12 = * 例行性安全升級 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libkadm55 libkrb53 libpng12-0 升級 3 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 801kB 的套件檔。 此操作完成之後,會空出 32.8kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} * 根據 munin 建議,安裝 ethtool 套件 {{{ Traffic of the eth0 interface. Maximum speed is undeterminable (please install ethtool). }}} {{{ jazz@trac-pool:~$ sudo apt-get install ethtool }}} = 2010-06-28 = * 新增封鎖 202.113.34.186 - [理由] 同時發起 80 個 apache 連線。 {{{ ~$ whois 202.113.34.186 inetnum: 202.113.32.0 - 202.113.47.255 netname: CAIC-CN descr: Civil Aviation Institute of China descr: Tianjin 300300, China }}} * 例行性更新:更新到 lenny 5.0.5 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apache2 apache2-mpm-prefork apache2-utils apache2.2-common apt apt-utils base-files cpio libapr1 libc6 libc6-dev libc6-i686 libgtk2.0-0 libgtk2.0-common libkadm55 libkrb53 libmysqlclient15off libpq5 libssl0.9.8 libxext-dev libxext6 linux-image-2.6.26-2-686 linux-libc-dev locales mysql-client-5.0 mysql-common mysql-server mysql-server-5.0 openssl phpmyadmin python-support sudo sun-java6-bin sun-java6-jdk sun-java6-jre tar tzdata usbutils 升級 38 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 149MB 的套件檔。 此操作完成之後,會多佔用 8788kB 的磁碟空間。 是否繼續進行 [Y/n]? jazz@trac-pool:~$ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 5.0.5 (lenny) Release: 5.0.5 Codename: lenny }}} = 2010-07-02 = * 封鎖整個網段:220.181.7.0/24 - 居然可以用一整個網段來爬網站,難道是在測試 Nutch ??!! {{{ jazz@trac-pool:~$ netstat -nap | grep ":80" | awk '{ print $5 }' | sed 's#:.*##' | sort -n | uniq -c (No info could be read for "-p": geteuid()=1000 but you should be root.) 1 3 61.64.143.131 1 220.181.7.117 1 220.181.7.121 1 220.181.7.123 1 220.181.7.124 1 220.181.7.132 1 220.181.7.55 1 220.181.7.56 1 220.181.7.57 1 220.181.7.59 1 220.181.7.62 1 220.181.7.65 1 220.181.7.66 1 220.181.7.67 1 220.181.7.70 1 220.181.7.72 2 220.181.7.78 1 220.181.7.79 1 220.181.7.83 1 220.181.7.88 1 220.181.7.90 2 220.181.7.93 1 220.181.7.94 2 220.181.7.95 1 220.181.7.96 ---------------------------- jazz@trac-pool:/var/log/apache2$ sudo grep 220.181.7 access.log | awk '{ print $1 }' | sort -n | uniq -c | sort -n | tail -n 20 39 220.181.7.130 39 220.181.7.132 39 220.181.7.70 39 220.181.7.88 39 220.181.7.94 40 220.181.7.122 40 220.181.7.129 40 220.181.7.60 40 220.181.7.65 40 220.181.7.84 41 220.181.7.92 42 220.181.7.117 43 220.181.7.126 43 220.181.7.128 43 220.181.7.71 43 220.181.7.90 44 220.181.7.61 44 220.181.7.83 46 220.181.7.127 47 220.181.7.77 }}} = 2010-09-03 = * 例行性更新 {{{ ~$ sudo apt-get autoremove --purge mysql-server phpmyadmin ~$ sudo apt-get update ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: ghostscript gs-common lftp libapache2-mod-php5 libfreetype6 libgs8 libldap-2.4-2 libldap2-dev libmikmod2 libpng12-0 libssl0.9.8 libtiff4 linux-image-2.6.26-2-686 linux-libc-dev openssl php-pear php5-cli php5-common php5-gd php5-mysql wget 升級 21 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 37.1MB 的套件檔。 此操作完成之後,會空出 401kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2010-09-26 = * 例行性更新 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: base-files bzip2 debian-archive-keyring dpkg iputils-ping libbz2-1.0 libfreetype6 libpango1.0-0 libpango1.0-common libwww-perl linux-image-2.6.26-2-686 linux-libc-dev w3m 升級 13 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 25.9MB 的套件檔。 此操作完成之後,會多佔用 106kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2010-10-10 = * 發現 IOWait 太重,重新啟動。 * [[Image(10-10-10_VM_IOWait_Status.png)]] = 2010-10-12 = * 例行性更新 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libapache2-svn libaprutil1 libfreetype6 libsvn1 python-subversion subversion 升級 6 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 3680kB 的套件檔。 此操作完成之後,會多佔用 4096B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2010-10-25 = * 例行性更新 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libc6 libc6-dev libc6-i686 libpq5 locales 升級 5 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 14.1MB 的套件檔。 此操作完成之後,會空出 111kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2010-11-23 = * 新增封鎖 125.33.180.62 - [理由] 同時發起 60~80 個 apache 連線。 {{{ jazz@trac-pool:~$ whois 125.33.180.62 inetnum: 125.33.0.0 - 125.33.255.255 netname: UNICOM-BJ descr: China Unicom Beijing province network descr: China Unicom }}} * [[Image(10-11-23_trac_apache_daily.png)]] * 例行性安全升級:剛好看到 openssl 需要更新,所以一併處理一下。 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libssl0.9.8 openssl 升級 2 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 4013kB 的套件檔。 此操作完成之後,會多佔用 0B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2010-11-29 = * 新增封鎖 IP - 113.94.159.119 * 原因:同時發起 270 個連線 {{{ 270 113.94.159.119 }}} {{{ ~$ whois 113.94.159.119 | head % [whois.apnic.net node-4] % Whois data copyright terms http://www.apnic.net/db/dbcopyright.html inetnum: 113.64.0.0 - 113.95.255.255 netname: CHINANET-GD descr: CHINANET Guangdong province network descr: Data Communication Division descr: China Telecom country: CN }}} * 安全性更新: {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: base-files dpkg dpkg-dev linux-image-2.6.26-2-686 linux-libc-dev sun-java6-bin sun-java6-jdk sun-java6-jre tzdata 升級 9 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 81.1MB 的套件檔。 此操作完成之後,會空出 1356kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2010-11-30 = * 新增封鎖 IP - 59.38.32.5 * 原因:同時發起 104 個連線 {{{ jazz@trac-pool:~$ set webcheck () { netstat -na | grep ':80' | grep -v 'LISTEN' | awk '{ print $5 }' | sed 's#:.*##' | sort | uniq -c | sort -n } jazz@trac-pool:~$ webcheck 104 59.38.32.5 }}} {{{ jazz@trac-pool:~$ whois 59.38.32.5 | head % [whois.apnic.net node-4] % Whois data copyright terms http://www.apnic.net/db/dbcopyright.html inetnum: 59.32.0.0 - 59.42.255.255 netname: CHINANET-GD descr: CHINANET Guangdong province network descr: China Telecom descr: No.31,jingrong street descr: Beijing 100032 country: CN }}} = 2010-12-03 = * 安全升級:由於一直看到有 rkhunter 的警訊,所以進行系統安全升級。 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libkadm55 libkrb53 libxml2 libxml2-dev 升級 4 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 2148kB 的套件檔。 此操作完成之後,會多佔用 0B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2010-12-24 = * 還有一些 rkhunter 的警訊,所以根據警訊描述重建系統安全檢查用的資料 {{{ jazz@trac-pool:~$ sudo rkhunter --propupd --check }}} * 安全升級: {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: exim4 exim4-base exim4-config exim4-daemon-light 升級 4 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 1769kB 的套件檔。 此操作完成之後,會空出 45.1kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-01-02 = * 安全升級 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libxml2 libxml2-dev 升級 2 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 1513kB 的套件檔。 此操作完成之後,會多佔用 0B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-01-06 = * 安全升級 - 今天看到 Debian 通知有 apache2 與 openssl 的更新,當然要趕快升級一下!! {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apache2 apache2-mpm-prefork apache2-utils apache2.2-common libssl0.9.8 openssl 升級 6 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 5234kB 的套件檔。 此操作完成之後,會多佔用 24.6kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-01-09 = * 安全升級 - 看到 Debian 通知有 dpkg 的更新,當然要趕快升級一下!! {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: dpkg dpkg-dev 升級 2 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 3127kB 的套件檔。 此操作完成之後,會多佔用 4096B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-01-16 = * 安全升級 - {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libc6 libc6-dev libc6-i686 libmysqlclient15off locales mysql-common 升級 6 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 15.6MB 的套件檔。 此操作完成之後,會多佔用 20.5kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-01-25 = * 安全升級 - {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: awstats base-files libperl5.10 libpq5 man-db perl perl-base perl-modules 升級 8 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 11.8MB 的套件檔。 此操作完成之後,會空出 20.5kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} * 安裝 [http://www.varnish-cache.org Varnish] - HTTP 加速引擎(HTTP acceleration) {{{ jazz@trac-pool:~$ sudo apt-get install varnish }}} = 2011-03-15 = * 安全升級 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libapache2-svn libcups2 libcupsimage2 libcupsys2 libsvn1 python-subversion subversion 升級 7 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 3553kB 的套件檔。 此操作完成之後,會多佔用 0B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-03-27 = * 安全升級 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libapache2-mod-php5 php-pear php5-cli php5-common php5-gd php5-mysql 升級 6 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 5759kB 的套件檔。 此操作完成之後,會多佔用 0B 的磁碟空間。 是否繼續進行 [Y/n]? }}} * 又來一個同時開 90 個連線的傢伙,擋~ {{{ 90 218.66.59.169 }}} {{{ jazz@trac-pool:~$ whois 218.66.59.169 | head % [whois.apnic.net node-5] % Whois data copyright terms http://www.apnic.net/db/dbcopyright.html inetnum: 218.66.0.0 - 218.67.127.255 netname: CHINANET-FJ descr: CHINANET Fujian province network descr: China Telecom descr: A12,Xin-Jie-Kou-Wai Street descr: Beijing 100088 country: CN }}} * 根據 rkhunter 的 e-mail 警訊描述重建系統安全檢查用的資料 {{{ jazz@trac-pool:~$ sudo rkhunter --propupd --check }}} = 2011-04-02 = * 新增封鎖 IP - 221.223.104.190 - [原因] 同時發動 74 個連線。 {{{ 74 221.223.104.190 }}} {{{ sysctl net.ipv4.tcp_tw_recycle=1 jazz@trac-pool:~$ whois 221.223.104.190 | head % [whois.apnic.net node-3] % Whois data copyright terms http://www.apnic.net/db/dbcopyright.html inetnum: 221.216.0.0 - 221.223.255.255 netname: UNICOM-BJ descr: China Unicom Beijing province network descr: China Unicom country: CN admin-c: CH1302-AP tech-c: SY21-AP }}} = 2011-04-04 = * 升級系統至 Debian Squeeze (6.0.1) 穩定版 {{{ ~$ sudo apt-get upgrade ~$ sudo apt-get dist-upgrade }}} * <1> 首先,解決 PHP 無法正常啟動的問題。 * 原來是 userdir 模組加了限制,害我移除又重裝了 apache2 跟 php5 相關套件都沒效。當然某種程度,也算系統瘦身一下,清掉了一些很少用的套件。 * <解法> 開啟 userdir 模組 public_html 的 php5 支援 {{{ #!diff --- /etc/apache2/mods-available/php5.conf.org 2011-04-05 19:52:00.000000000 +0800 +++ /etc/apache2/mods-available/php5.conf 2011-04-04 12:41:43.000000000 +0800 @@ -8,9 +8,9 @@ # To re-enable php in user directories comment the following lines # (from to .) Do NOT set it to On as it # prevents .htaccess files from disabling it. - - - php_admin_value engine Off - - + # + # + # php_admin_value engine Off + # + # }}} * 其次,由於升級到 Squeeze,trac 原本作過的一些修改,又得再作一次。先從 plugin 著手。 * 發現套件庫多了幾個擴充套件: {{{ trac-email2trac - Creates and amends Trac tickets from e-mail trac-accountmanager - account management plugin for Trac trac-authopenid - OpenID authentication plugin for Trac trac-bitten - continuous integration plugin for Trac trac-bzr - Bazaar version control (bzr) backend for Trac trac-customfieldadmin - panel for administrating custom ticket fields in Trac trac-git - Git version control backend for Trac trac-graphviz - Graphs printing plugin for Trac trac-icalviewplugin - Provides iCalendar feeds for ticket queries trac-ja-resource - Japanese resources for trac trac-mastertickets - adds inter-ticket dependencies to Trac trac-mercurial - Mercurial version control backend for Trac trac-spamfilter - Spam-prevention plugin for Trac trac-wikiprint - Make Trac wiki pages printable, exporting to PDF or printable HTML trac-wikirename - trac plugin which allows to rename wiki pages trac-wikitablemacro - Table from an arbitrary SQL for Trac trac-wysiwyg - WYSIWYG style editor for the Trac issue tracking system trac-xmlrpc - XML-RPC interface to the Trac wiki and issue tracking system }}} * <2> 裝幾個常用的擴充套件跟覺得有必要的新套件,並重新啟動 apache2。最後進 Admin 介面重新設定 plugin {{{ ~$ sudo apt-get install trac-accountmanager trac-graphviz trac-wikiprint trac-wikirename trac-wysiwyg }}} * <3> 讓 graphviz 支援中文字 - ([wiki:jazz/09-02-05 2009-02-05]) * [改法] (1) 安裝中文字型 (2) 修改 trac.ini {{{ ~$ sudo apt-get install ttf-arphic-uming }}} {{{ [graphviz] default_graph_fontname = "/usr/share/fonts/truetype/arphic/uming.ttf" default_graph_fontsize = 10 }}} {{{ #!graphviz digraph "test" { "中文測試"->"一切正常"; } }}} * <4> 修改 accesskey 支援,與 css 預設字型大小 - 詳[attachment:wiki:jazz/Trac_Updates:trac.0.11.7-4.accesskey.patch trac.0.11.7-4.accesskey.patch] = 2011-04-06 = * 新增封鎖 IP :218.207.217.226、188.64.145.252,原因:發動超過 30 個以上的連線攻擊。 {{{ 34 218.207.217.226 80 188.64.145.252 }}} = 2011-04-08 = * 由於從 Lenny 升級到 Squeeze,Python 也從 2.5 升級到 2.6,所以需要重新安裝慣用的 Trac Plugin。 * (1) [http://trac-hacks.org/wiki/WikiIncludePlugin WikiInclude] - 讓用 ![[WikiInclude(WikiStart)]] 語法來包含其他 Wiki 頁面中的內容 {{{ wget "http://trac-hacks.org/changeset/latest/wikiincludeplugin?old_path=/&filename=wikiincludeplugin&format=zip" -O wikiincludeplugin.zip unzip wikiincludeplugin.zip cd wikiincludeplugin/0.11/ sudo python setup.py bdist_egg sudo easy_install dist/WikiInclude-0.2-py2.6.egg }}} * (2) [http://svn.ipd.uni-karlsruhe.de/trac/javaparty/wiki/TracRedirect TracRedirect] - 用 ![[redirect(網址)]] 語法來作頁面自動轉址 {{{ $ svn co http://svn.ipd.uka.de/repos/javaparty/JP/trac/plugins/redirect-0.11/ $ cd redirect-0.11/ redirect-0.11$ sudo python setup.py bdist_egg redirect-0.11$ sudo easy_install dist/TracRedirect-0.11.3.dev_r3280-py2.6.egg }}} * (3) [http://trac-hacks.org/wiki/SvnAuthzAdminPlugin Svnauthz File Administration Plugin] - 用來管理誰有權限讀取 SVN 目錄的擴充套件 {{{ $ svn co http://trac-hacks.org/svn/svnauthzadminplugin/0.11/ svnauthzadminplugin-0.11 $ cd svnauthzadminplugin-0.11 svnauthzadminplugin-0.11$ sudo python setup.py bdist_egg svnauthzadminplugin-0.11$ sudo easy_install dist/SvnAuthzAdminPlugin-0.1.2._Moved.to.Trac.0.11_-py2.6.egg }}} = 2011-04-13 = * 新增封鎖網段 - 123.125.71.0/24 * Apache 效能調校(Performance Tuning) * 4/11~4/13 多次重新開機 trac 網站,一直無法找出記憶體需求突然高漲的主因是因為升級到 Squeeze,改用 Apache MPM 版本([http://packages.debian.org/apache2-mpm-prefork apache2-mpm-prefork]),還是其他原因。 * [[Image(jazz/11-04-13:11-04-14_memory-week.png)]] * 花了兩天時間,總算找出造成 trac 網站大量記憶體需求的特徵:刻意發起造成 CLOSE_WAIT 的攻擊行為。 {{{ PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15652 www-data 20 0 783m 763m 4624 R 97.0 75.4 17:31.07 apache2 20059 www-data 20 0 52836 31m 4732 S 2.7 3.2 0:06.86 apache2 jazz@trac-pool:~$ sudo netstat -nap | grep 15652 tcp6 1 0 140.110.X.X:80 220.181.93.1:55903 CLOSE_WAIT 15652/apache2 }}} * 手動砍掉 15652 這個 process 之後,同樣這個 IP,後來又產生了一次 CLOSE_WAIT 現象,不禁懷疑這是一種網站攻擊方式。 {{{ PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 23708 www-data 20 0 414m 396m 4544 R 99.7 39.2 2:44.46 apache2 23025 www-data 20 0 74940 55m 4752 S 0.0 5.5 0:27.58 apache2 tcp6 0 0 140.110.X.X:80 220.181.93.1:64932 TIME_WAIT - tcp6 0 0 140.110.X.X:80 220.181.93.1:47074 TIME_WAIT - tcp6 0 0 140.110.X.X:80 220.181.93.1:50047 TIME_WAIT - tcp6 0 0 140.110.X.X:80 220.181.93.1:43913 TIME_WAIT - }}} * <解決方法> 降低 net.ipv4.tcp_keepalive_time 的數值,預設是 7200 秒(兩小時),真的太長了!! {{{ echo "decrease TCP socket TIME_WAIT time" sysctl -w net.ipv4.tcp_fin_timeout=10 sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w net.ipv4.tcp_tw_recycle=1 echo "decrease TCP socket CLOSE_WAIT time" sysctl -w net.ipv4.tcp_keepalive_time=30 sysctl -w net.ipv4.tcp_keepalive_probes=2 sysctl -w net.ipv4.tcp_keepalive_intvl=2 }}} * <參考> [http://tw.myblog.yahoo.com/yaitoo-richzal/article?mid=212&sc=1 大量 CLOSE_WAIT 的影響] {{{ 大量的 CLOSE_WAIT 連接,直接佔滿 TCP 連線佇列, 導致 Apache 失去回應,且 CPU 使用量與記憶體使用量快速提高!! }}} * <參考> [http://haka.sharera.com/blog/BlogTopic/32309.htm CLOSE_WAIT 生成的原因] * 另外我也做了兩個小調校: * <1> 限制每個 process 的記憶體使用 - 在 /etc/profile 中加入 {{{ ulimit -v 524288 }}} * 其結果是最高可以使用的記憶體是 524288 = 512 * 1024 kbytes = 512 MB。 {{{ virtual memory (kbytes, -v) 524288 }}} * <2> 把 /etc/apache2/apache2.conf 改成只使用 prefork 模組,並且降低 !KeepAliveTimeout 的時間(15秒降低到2秒),還有降低預設開啟的 apache process 數量。 {{{ #!diff --- /etc/apache2/apache2.conf.org 2011-04-12 10:32:53.000000000 +0800 +++ /etc/apache2/apache2.conf 2011-04-14 00:38:39.000000000 +0800 @@ -64,7 +64,7 @@ # # Timeout: The number of seconds before receives and sends time out. # -Timeout 300 +Timeout 30 # # KeepAlive: Whether or not to allow persistent connections (more than @@ -83,7 +83,7 @@ # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # -KeepAliveTimeout 15 +KeepAliveTimeout 2 ## ## Server-Pool Size Regulation (MPM specific) @@ -96,11 +96,11 @@ # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves - StartServers 5 - MinSpareServers 5 - MaxSpareServers 10 - MaxClients 150 - MaxRequestsPerChild 0 + StartServers 1 + MinSpareServers 1 + MaxSpareServers 1 + MaxClients 5 + MaxRequestsPerChild 100 # worker MPM @@ -113,15 +113,15 @@ # and starting Apache. # ThreadsPerChild: constant number of worker threads in each server process # MaxRequestsPerChild: maximum number of requests a server process serves - - StartServers 2 - MinSpareThreads 25 - MaxSpareThreads 75 - ThreadLimit 64 - ThreadsPerChild 25 - MaxClients 150 - MaxRequestsPerChild 0 - +# +# StartServers 1 +# MinSpareThreads 1 +# MaxSpareThreads 1 +# ThreadLimit 1 +# ThreadsPerChild 1 +# MaxClients 5 +# MaxRequestsPerChild 50 +# # event MPM # StartServers: initial number of server processes to start @@ -130,15 +130,15 @@ # MaxSpareThreads: maximum number of worker threads which are kept spare # ThreadsPerChild: constant number of worker threads in each server process # MaxRequestsPerChild: maximum number of requests a server process serves - - StartServers 2 - MaxClients 150 - MinSpareThreads 25 - MaxSpareThreads 75 - ThreadLimit 64 - ThreadsPerChild 25 - MaxRequestsPerChild 0 - +# +# StartServers 1 +# MinSpareThreads 1 +# MaxSpareThreads 1 +# ThreadLimit 1 +# ThreadsPerChild 1 +# MaxClients 5 +# MaxRequestsPerChild 50 +# # These need to be set in /etc/apache2/envvars User ${APACHE_RUN_USER} }}} * <參考> [http://bobcares.com/blog/?p=71 Configuring Apache for Maximum Performance] * <參考> [http://wiki.vpslink.com/Low_memory_MySQL_/_Apache_configurations Low memory MySQL / Apache configurations] * <參考> [http://www.devside.net/articles/apache-performance-tuning Apache Performance Tuning] {{{ prefork [default MPM for Apache 2.0 and 1.3]: * Apache 1.3-based. * Multiple processes, 1 thread per process, processes handle requests. * Used for security and stability. * Has higher memory consumption and lower performance over the newer Apache 2.0-based threaded MPMs. worker: * Apache 2.0-based. * Multiple processes, many threads per process, threads handle requests. * Used for lower memory consumption and higher performance. * Does not provide the same level of isolation request-to-request, as a process-based MPM does. }}} {{{ MaxClients ≈ (RAM - size_all_other_processes)/(size_apache_process) }}} = 2011-05-19 = * 安全升級 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: exim4 exim4-base exim4-config exim4-daemon-light libapr1 升級 5 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 2,116 kB 的套件檔。 此操作完成之後,會多佔用 4,096 B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-05-22 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libapr1 升級 1 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 86.0 kB 的套件檔。 此操作完成之後,會多佔用 0 B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-06-26 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apt apt-utils base-files deborphan dpkg e2fslibs e2fsprogs klibc-utils libapr1 libcomerr2 libgssapi-krb5-2 libk5crypto3 libklibc libkrb5-3 libkrb5support0 libldap-2.4-2 libss2 linux-libc-dev perl perl-base perl-modules tzdata 升級 22 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 17.0 MB 的套件檔。 此操作完成之後,會空出 422 kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-07-06 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libapache2-mod-php5 libcurl3-gnutls perl perl-base perl-modules php5-cli php5-common 升級 7 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 14.8 MB 的套件檔。 此操作完成之後,會多佔用 483 kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-10-05 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common ca-certificates dhcp3-client isc-dhcp-client isc-dhcp-common libfreetype6 libpng12-0 libssl0.9.8 libxfont1 linux-libc-dev openssl 升級 15 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 8,222 kB 的套件檔。 此操作完成之後,會空出 8,192 B 的磁碟空間。 是否繼續進行 [Y/n]? }}} * 新增封鎖 IP :113.253.17.87 = 2011-11-09 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common base-files ca-certificates grub-common grub-pc libfreetype6 libgssapi-krb5-2 libk5crypto3 libkrb5-3 libkrb5support0 libpam-modules libpam-runtime libpam0g libpcap0.8 libssl0.9.8 linux-libc-dev openssh-client openssh-server openssl ssh tzdata 升級 25 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 13.4 MB 的套件檔。 此操作完成之後,會空出 496 kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2011-12-11 = * 安全升級 {{{ $ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libfreetype6 libssl0.9.8 openssl 升級 3 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 4,484 kB 的套件檔。 此操作完成之後,會多佔用 0 B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2012-02-07 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common base-files bzip2 dpkg iotop libapache2-mod-php5 libbz2-1.0 libc-bin libc-dev-bin libc6 libc6-dev libc6-i686 libcurl3-gnutls libgnutls26 libgssapi-krb5-2 libk5crypto3 libkrb5-3 libkrb5support0 libssl0.9.8 libxml2 linux-libc-dev locales module-init-tools mutt openssl perl perl-base perl-modules php5-cli php5-common tzdata x11-common 升級 36 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 44.7 MB 的套件檔。 此操作完成之後,會空出 532 kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2012-03-05 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: file libapache2-mod-php5 libmagic1 libpng12-0 libxml2 php5-cli php5-common 升級 7 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 7,584 kB 的套件檔。 此操作完成之後,會多佔用 24.6 kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2012-03-20 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libfreetype6 升級 1 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 361 kB 的套件檔。 此操作完成之後,會多佔用 0 B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2012-06-03 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common base-files file initscripts libapache2-mod-php5 libapr1 libc-bin libc-dev-bin libc6 libc6-dev libc6-i686 libcurl3-gnutls libgnutls26 libmagic1 libpng12-0 libssl0.9.8 libtasn1-3 libxml2 linux-libc-dev locales openssh-client openssh-server openssl php5-cli php5-common procps python python-minimal ssh sudo sysv-rc sysvinit sysvinit-utils tzdata 升級 38 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 34.3 MB 的套件檔。 此操作完成之後,會多佔用 692 kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2012-06-11 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: libapache2-mod-php5 php5-cli php5-common 升級 3 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 是否繼續進行 [Y/n]? }}} = 2012-10-29 = * 安全升級 {{{ ~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common base-files debian-archive-keyring dhcp3-client dpkg exim4 exim4-base exim4-config exim4-daemon-light isc-dhcp-client isc-dhcp-common libapache2-mod-php5 libc-bin libc-dev-bin libc6 libc6-dev libc6-i686 libexpat1 libgc1c2 libgssapi-krb5-2 libk5crypto3 libkrb5-3 libkrb5support0 libxml2 linux-libc-dev locales lockfile-progs php5-cli php5-common 升級 33 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 31.3 MB 的套件檔。 此操作完成之後,會多佔用 73.7 kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2012-12-31 = * 安全升級 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common libxml2 perl perl-base perl-modules 升級 9 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 10.9 MB 的套件檔。 此操作完成之後,會多佔用 0 B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2013-03-04 = * 安全升級 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: base-files gnupg gnupg-curl gpgv gzip libldap-2.4-2 libssl0.9.8 linux-libc-dev openssh-client openssh-server openssl perl perl-base perl-modules ssh tzdata 升級 16 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 17.8 MB 的套件檔。 此操作完成之後,會空出 365 kB 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2013-03-31 = * 安全升級 {{{ jazz@trac-pool:~$ sudo apt-get upgrade 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 下列套件將會被升級: apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common libapache2-mod-php5 libxml2 perl perl-base perl-modules php5-cli php5-common sudo 升級 13 個,新安裝 0 個,移除 0 個,有 0 個未被升級。 需要下載 17.8 MB 的套件檔。 此操作完成之後,會多佔用 0 B 的磁碟空間。 是否繼續進行 [Y/n]? }}} = 2013-08-28 = * 安全升級 = 2013-11-14 = * 因應資安進行升級,自 squeeze 升級到 wheezy,結果造成系統不穩定。改重頭安裝 wheezy 並重新設定新版 trac 0.12.5 的環境。 * Trac 升級: {{{ trac-admin upgrade }}} * 安裝模組 {{{ ## wiki incloud cd wikiincludeplugin/0.11/ sudo python setup.py bdist_egg sudo easy_install dist/WikiInclude-0.2-py2.7.egg ## wiki redirect cd redirect-0.11/ sudo python setup.py bdist_egg sudo easy_install dist/TracRedirect-0.11.3.dev_r3280-py2.7.egg ## svn authz svn co http://trac-hacks.org/svn/svnauthzadminplugin/0.12/ svnauthzadminplugin-0.12 cd svnauthzadminplugin-0.12/ sudo python setup.py bdist_egg sudo easy_install dist/SvnAuthzAdminPlugin-0.2-py2.7.egg }}} * 自訂 trac 0.12 版本的 accesskey {{{ #!diff diff -Naur /usr/share/pyshared/trac/admin/web_ui.py.org /usr/share/pyshared/trac/admin/web_ui.py --- /usr/share/pyshared/trac/admin/web_ui.py.org 2013-11-14 00:16:35.729482060 +0800 +++ /usr/share/pyshared/trac/admin/web_ui.py 2013-11-14 00:28:13.661458857 +0800 @@ -64,7 +64,7 @@ panels, providers = self._get_panels(req) if panels: yield 'mainnav', 'admin', tag.a(_('Admin'), href=req.href.admin(), - title=_('Administration')) + title=_('Administration'), accesskey='a') # IRequestHandler methods diff -Naur /usr/share/pyshared/trac/wiki/templates/wiki_edit_form.html.org /usr/share/pyshared/trac/wiki/templates/wiki_edit_form.html --- /usr/share/pyshared/trac/wiki/templates/wiki_edit_form.html.org 2013-11-14 00:25:06.765460600 +0800 +++ /usr/share/pyshared/trac/wiki/templates/wiki_edit_form.html 2013-11-14 00:26:22.117451981 +0800 @@ -65,14 +65,14 @@
-   +           -   +  
diff -Naur /usr/share/pyshared/trac/wiki/templates/wiki_edit.html.org /usr/share/pyshared/trac/wiki/templates/wiki_edit.html diff -Naur /usr/share/pyshared/trac/htdocs/css/trac.css.org /usr/share/pyshared/trac/htdocs/css/trac.css --- /usr/share/pyshared/trac/htdocs/css/trac.css.org 2013-11-14 00:16:51.205481694 +0800 +++ /usr/share/pyshared/trac/htdocs/css/trac.css 2013-11-14 00:29:44.193454972 +0800 @@ -1,6 +1,6 @@ body { background: #fff; color: #000; margin: 10px; padding: 0; } body, th, tr { - font: normal 13px Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif; + font: normal 14px Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif; } h1, h2, h3, h4 { font-family: Arial,Verdana,'Bitstream Vera Sans',Helvetica,sans-serif; diff -Naur /usr/share/pyshared/trac/prefs/web_ui.py.org /usr/share/pyshared/trac/prefs/web_ui.py --- /usr/share/pyshared/trac/prefs/web_ui.py.org 2013-11-14 00:16:42.301482867 +0800 +++ /usr/share/pyshared/trac/prefs/web_ui.py 2013-11-14 00:28:58.921450655 +0800 @@ -49,7 +49,7 @@ def get_navigation_items(self, req): yield ('metanav', 'prefs', - tag.a(_('Preferences'), href=req.href.prefs())) + tag.a(_('Preferences'), href=req.href.prefs(), accesskey='t')) # IRequestHandler methods diff -Naur /usr/share/pyshared/trac/web/auth.py.org /usr/share/pyshared/trac/web/auth.py diff -Naur /usr/share/pyshared/trac/web/chrome.py.org /usr/share/pyshared/trac/web/chrome.py --- /usr/share/pyshared/trac/web/chrome.py.org 2013-11-13 23:57:02.945531198 +0800 +++ /usr/share/pyshared/trac/web/chrome.py 2013-11-14 00:19:54.501481638 +0800 @@ -143,9 +143,11 @@ msg %= args req.chrome['notices'].append(msg) -def add_ctxtnav(req, elm_or_label, href=None, title=None): +def add_ctxtnav(req, elm_or_label, href=None, title=None, accesskey=None): """Add an entry to the current page's ctxtnav bar.""" - if href: + if accesskey: + elm = tag.a(elm_or_label, href=href, title=title, accesskey=accesskey) + elif href: elm = tag.a(elm_or_label, href=href, title=title) else: elm = elm_or_label @@ -855,8 +857,8 @@ if doctype: if req.form_token: stream |= self._add_form_token(req.form_token) - if not int(req.session.get('accesskeys', 0)): - stream |= self._strip_accesskeys + #if not int(req.session.get('accesskeys', 0)): + # stream |= self._strip_accesskeys links = req.chrome.get('links') scripts = req.chrome.get('scripts') diff -Naur /usr/share/pyshared/trac/versioncontrol/web_ui/browser.py.org /usr/share/pyshared/trac/versioncontrol/web_ui/browser.py --- /usr/share/pyshared/trac/versioncontrol/web_ui/browser.py.org 2013-11-14 00:16:26.529476663 +0800 +++ /usr/share/pyshared/trac/versioncontrol/web_ui/browser.py 2013-11-14 00:27:17.841454891 +0800 @@ -293,7 +293,7 @@ rm = RepositoryManager(self.env) if 'BROWSER_VIEW' in req.perm and rm.get_real_repositories(): yield ('mainnav', 'browser', - tag.a(_('Browse Source'), href=req.href.browser())) + tag.a(_('Browse Source'), href=req.href.browser(), accesskey='5')) # IPermissionRequestor methods }}} = 2014-02-28 = * 例行性升級 {{{ ~$ sudo apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common apt apt-utils base-files denyhosts gnupg gpgv graphviz libapache2-mod-php5 libapt-inst1.5 libapt-pkg4.12 libc-bin libc6 libc6-i686 libcdt4 libcgraph5 libcurl3-gnutls libexpat1 libgraph4 libgtk-3-0 libgtk-3-bin libgtk-3-common libgvc5 libgvpr1 libnet-server-perl libpathplan4 libpixman-1-0 librsvg2-2 librsvg2-bin librsvg2-common libssl1.0.0 libxdot4 linux-image-3.2.0-4-686-pae localepurge locales multiarch-support munin munin-common munin-doc munin-node munin-plugins-core munin-plugins-extra openssl php5-cli php5-common tzdata wget whois 51 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 61.0 MB of archives. After this operation, 3,130 kB disk space will be freed. Do you want to continue [Y/n]? }}} = 2016-04-24 = * 例行安全升級 * 今天偶然在 http://2014.hadoopcon.org 後台發現高達數萬則「迴響」(comments),根據幫友人處理的經驗,直接清除 wordpress 資料庫中的 wp_comments 最快。 * 接著,參考了幾篇文章進行 MySQL 資料庫的最佳化(Optimization): * [https://blog.longwin.com.tw/2012/03/mysql-myisam-innodb-optimize-2012/ MySQL 對 MyISAM、InnoDB 使用 Optimize Table] * [http://meinit.nl/optimize-only-fragmented-tables-mysql Optimize only fragmented tables in MySQL] * http://stackoverflow.com/questions/5474662/mysql-optimize-all-tables * 學著用幾個工具: * '''mysqlcheck''' * `-o` : 作 Optimization * `-A` : 針對所有的資料庫、資料表 * `-u` : 指定 MySQL 使用者 * `-p` : 詢問密碼 {{{ ~$ mysqlcheck -o -A -u user -p Enter password: hadoopcon.wp_commentmeta note : Table does not support optimize, doing recreate + analyze instead status : OK hadoopcon.wp_comments note : Table does not support optimize, doing recreate + analyze instead status : OK }}} * '''mysqlanalyze''' * `-a` : 作分析 analyse * '-c` : 作檢查 check * `-A` : 針對所有的資料庫、資料表 * `-u` : 指定 MySQL 使用者 * `-p` : 詢問密碼 {{{ ~$ mysqlanalyze -A -a -u user -p Enter password: hadoopcon.wp_commentmeta OK hadoopcon.wp_comments OK }}} * mysqltuner.pl - http://mysqltuner.com/ * 安裝 {{{ wget http://mysqltuner.pl/ -O mysqltuner.pl wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv perl mysqltuner.pl }}} * 執行 {{{ sudo ./mysqltuner.pl --dbstat --idxstat --sysstat --nogood --noinfo }}}