網頁

顯示具有 Maintain 標籤的文章。 顯示所有文章
顯示具有 Maintain 標籤的文章。 顯示所有文章

2010年5月5日 星期三

用 ramdisk 加速 freebsd 編譯 ports 的速度

剛剛在很苦命的編譯 ports , 機八鴨提供了一個很有用的方式,就是把編譯過程中會產出的 object file 全都塞到 RAMDISK 中(反正現在 RAM 都很大也不知道拿來做什麼),加上 FreeBSD 8 的 ports 開始支援多核心的 make jobs 編譯,速度可說真是飛快。

作法很簡單:

先蓋一個 RAMDISK (這裡是開 512M, 可以自己調整)
/sbin/mdmfs -M -S -o async -s 512m md0 /tmp/portsobj

然後讓他能寫入
/bin/chmod 777 /tmp/portsobj

接下來去 /etc/make.conf 把 obj 會產生的目錄指過去
WRKDIRPREFIX=/tmp/portsobj

然後去編看看,就會發現速度差很多。
然後懶人大法當然是要 shell script 一下:
#!/bin/sh

case "$1" in
create)
/sbin/mdmfs -M -S -o async -s 512m md0 /tmp/portsobj
/bin/chmod 777 /tmp/portsobj
echo "512M ramdisk created on md0 and mounted on /tmp/portsobj"
exit 0
;;
destory)
/sbin/umount /tmp/portsobj
/sbin/mdconfig -d -u 0
echo "ramdisk umounted from /tmp/portsobj and destory from md0"
;;
*)
echo "Usage: `basename $0` {create|destory}" >&2
exit 64
;;
esac

然後機八鴨還好心建議不要直接打 make install clean 而是用先用 pkg_add 把 package 裝完,然後再用 portmaster -bDGtw -m FORCE_PKG_REGISTER=yes 來升級,那他每次在編完每一個 ports 後都會自動清掉 obj 而不是像原本的 ports system 會全部裝完成功後才 clean。

2008年6月11日 星期三

mu-wordpress

由於不想維護太多份的 wordpress code (之前手上有四份左右),很久之前就想要換成 mu-wordpress 。但是以前怎麼找都找不到 wordpress.com 那邊用的 nightly build 的 subversion repo 又懶得自己從 tarball import ,所以就一直找藉口沒動。直到暑假某次無意中終於發現了神秘的位置,才又想起這件事。

題外話:打到這裡 FireFox BonEcho 2.0 nightly build 0930 連續當了兩次,當我正在懊惱我還沒裝 AutoSave Plugin 時,發現竟然大部分已經被存成草稿,只漏了一句,不過馬上又當了一次。(不過 Firefox 2 真的速度快很多!)wordpress 真是太酷了。

事實上之前已經有敢死隊衝過 mu-wordpress 了,可是後來跑一跑之後這位胸毛男說,mu-wordpress 的資料表那樣建太機車了,看他不爽,於是就又跳槽去 lyceum ,所以害我很猶豫是要跟隨胸毛男的 技術支援,還是跟 mu-wordpress 就好。 反正到最後也不知道怎麼搞的,我就去 svn co 下了 mu-wordpress ,然後玩到現在。事實上,mu-wordpress 已經把大部分的工作都做的很懶人,以前還需要自己去動 wp-config.php ,現在根本就全部都在 web 上面點一點之後就可以動了,並且目錄權限不對他也會幫你檢查,然後很貼心的告訴你指令該怎麼打。既然胸毛男之前也寫過「wordpress 多人板安裝手札」其實這裡大概也不需要介紹,反正都是很直覺的點一點填一填。我是選用 sub-domain 的方式,原因有機會以後再說,所以對應的 DNS 以及 WEB Server 都需要做些對應的設定。

例如在 BIND 當中的話可以直接用 WILDCARD record 來設定:
* CNAME blog

然後在對應的 APACHE 上面也要有對應的 VHOST 設定:
<VirtualHost *:80>

ServerAdmin admin@domain.tld
DocumentRoot /path/to/mu-wordpress
ServerName blog.domain.tld
ServerAlias *.domain.tld
ErrorLog /path/to/logs/httpd-error.log
CustomLog /path/to/logs/httpd-access.log combined

<Directory />
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>

<Directory “/path/to/mu-wordpress”>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

# RedirectMatch 301 (*) http://xxx.domain.tld$1
LogLevel debug

</VirtualHost>

然 後接下來就可以直接從 SiteAdmin panel 開始 add user/add blog 了。因為我要轉的 blog 其實並不多且版本差異沒很大(最舊的也有 WP1.6) ,所以我直接用 export/import 的方式解決。如果沒有跟在 SVN 後面當白老鼠的,可能還沒有 import/export 功能怎麼辦?沒關係,有好心人幫我們做成了 「WordPress-to-WordPress Import Plugin」,不過如果你版本真的太舊,裝了 plugin 也不行的話,那看是先升級一下,或是直接從 DATABASE 裡面轉換囉。

值 得一提的是,一開始我 export 的檔案很大,大概快 5MB ,我還沾沾自喜說,哇,我真會寫,寫這麼多喔。後來 import一直死在奇怪的地方,才把 XML 打開看,才發現原來他會連 SK2 擋下來的 SPAM (只要還沒刪掉)一起 EXPORT ,於是如果先去 SK2 清一下然後再 EXPORT ,就只剩下 880kb 。在轉換過程中大至上順利,除了一開始又發生 table 的 charset 沒弄對的問題(看來還是得在 ports.conf 裡面強制把 mysql 預設成 UTF-8,我以為 5.x 預設就已經是了沒想到還跳回去 LATIN1),另外還有 cdst 上面那淫魔荒廢已久的 blog 一整個早就爛了,查一下才發現是「MySQL 5.0.15 亂碼」這篇提到的問題,處理一下也很順利完成。

最 後比較麻煩的部份是之前放在 uploads 目錄底下的檔案,雖然可以直接 cp 一份過來(丟到 wp-content/blogs.dir/ID裡面),不過網頁路徑要對應換成相對的「/files/2006/…」,一開始 inport 的時候沒發現,不然就在 xml 檔案裡面全部掃一次再匯入就好了。

至於以前很擔心的 plugin / theme倒是沒遇到很大的問題, K2 可以正常的使用,除了需要改一下下面這檔案以外:
Index: app/includes/info.php
===================================================================
— app/includes/info.php (revision 192)
+++ app/includes/info.php (working copy)
@@ -115,16 +115,17 @@
$posts_per = 1;
}

- if (strpos($wp_version, ‘2.1′) === false) {
+ if (strpos($wp_version, ‘2.1′) === false && strpos($wp_version, ‘mu’) ===false) {
$search = ‘/FROM\s+?(.*)\s+?GROUP BY/siU’; // Wordpress 2.0.x
} else {
$search = ‘/FROM\s+?(.*)\s+?ORDER BY/siU’; // Wordpress 2.1
}

另外,SK2 好像也正常,雖然說現在還沒看到 spam 進來 XD,剩下的就見招拆招囉。

喔 還有,我又惡搞了本來兩個很好看的 theme ,現在被我搞得不三不四噁心八啦,但是我還是不禁要念,為什麼可以這麼機車,同樣的語法在 IE 跟 Firefox 看的感覺就不一樣!一整個暴走之後只好祭出 try and error 大法亂調,所以現在就產生出這個很奇怪的東西出來啦。(沒辦法,原來的雖然好看但是我一整個完全無法接受 fixed width 的東西,所以又浪費了半天在搞 CSS)。

最後,因為暫時沒空去看 mu-wordpress 的 code ,所以我先把 blog.cookys.org 送 redirect 到這裡來了,還請多加包涵。

UPDATED: 剛剛晃了一下 Lyceum 官方網站 ,忽然瞭解為啥胸毛男的 pagerank 忽然變這麼高了。原來 Whatup 為 Lyceum 貢獻這麼多了,那沒去投靠免費技術支援好像是個錯誤的決定? XD。

2006年12月6日 星期三

wordpress-mu sitemap plugin



抓取「Google Sitemap Generator 3 Beta」丟到 plugin 目錄,然後作些 dirty hack:
<blockquote>
<pre style="text-align: left">--- /home/admin/cookys/work/sitemap.php Thu Nov 16 22:26:58 2006
--- /home/admin/cookys/work/sitemap.php Thu Nov 16 22:26:58 2006
+++ sitemap.php Wed Dec 6 20:37:50 2006
@@ -865,6 +865,7 @@

[sourcecode language='php']
//the get_home_path function in our own...
$home = get_settings('home');
$home_path="";
+/*
if ( $home != '' && $home != get_settings('siteurl') ) {
$home_path = parse_url($home);
$home_path = $home_path['path'];
@@ -873,8 +874,10 @@
} else {
$home_path = ABSPATH;
}
+*/
$res = $home_path;
}
+ $res =ABSPATH.UPLOADS; //str_replace('/files','',ABSPATH.UPLOADS); // cookys dirty hack for wp-mu
return $res;
}

@@ -1313,7 +1316,7 @@
if(!$forceAuto && $this->GetOption("b_location_mode")=="manual") {
return $this->GetOption("b_fileurl_manual");
} else {
- return trailingslashit(get_bloginfo('siteurl')). $this->GetOption("b_filename");
+ return trailingslashit(get_bloginfo('siteurl')).'files/'. $this->GetOption("b_filename");
}
}

@@ -2705,4 +2708,4 @@
#endregion
}

-?>
No newline at end of file
+?>
[/sourcecode]
然後把 .htaccess 補上一條
<pre>RewriteRule ^sitemap.xml /wp-content/blogs.php?file=sitemap.xml [L]</pre>
搞定收工。


2006年10月3日 星期二

mu-wordpress 以及 virtual host 的三兩事

上一篇當 中提到剛做完轉換的動作,所以現在想到就會去對那可惡的 css 修修補補(改不好總是很討厭,雖然知道明明就是 ie 的問題)。現在目前遇到的問題跟以前一樣,如果用 ie 開的話,當你的 100% 超過 100% 的時候他並不會自動縮成 100% ,反而是直接繼續加下去(詳細情形可以比較一下用 ie/firefox 去開一下這篇 ,會發現我的 theme 只要解析度比較小的狀況下,ie 會被暴走的圖給撐大,然後把右邊的 sidebar 擠到下面去),色小外說他看到「max-width in Internet Explorer」這篇當中有提到透過 js 去算然後塞 fixed width ,可是我實在很懶惰,不想為了 IE 把事情弄的這麼複雜,以後貼圖的時候注意一下就好了,或是用 lightbox plugin 可能也是一個方法。

在 昨天晚上喀完某篇 42 pages 的 paper 之後就一整個呈現腦死狀態,幾乎完全不能思考,於是早早就去睡,沒想到才睡不到七小時就自然醒過來。本想繼續賴床,卻睡沒十分鐘就又醒了,起來東摸西摸, 沒想到竟然發現並且解決了幾個小問題。現在的 CSS 在 ie 底下應該正常不少了,不過難免還是會有意外,還是推薦大家去用 Firefox,尤其是 Firefox 2.0 RC1 真 的是快到很明顯。另外無意間跳到 screen 正在 tail -f httpd_error.log 的裝,看到不少 redirect error 的問題,才想到其實我可以透過送 301/302 的方式來暫時解決路徑不對的問題,於是去把 blog.cookys.org 的 vhost整個送 302 過來(不用 301 是因為「希望」有一天能夠再改回去)然後寫一行
RedirectMatch 301 ^/wp-content/uploads/(.*) /files/$1

暫 時把路徑作處理,才不會看到一堆叉叉。(不過我現在才發現,wordpress 在文中用上傳方式插入的圖片,竟然是直接寫死的用絕對位址,那只要搬家換名稱就一定一整個爆炸阿!應該要把他給改一下。)然後我又發現,在 httpd_access.log 的檔案中,由於我是直接設定成 wildcard virtualhost ,所以大家的 access log 都會在同一個檔案,那樣根本就看不出來是 access 哪個站阿,這樣要作 awstat 也有困難。還好 google 馬上告訴我們答案,在這邊有提到可以透過 LogFormat 來更動格式,當然 awstat 的設定也要一併修改。於是依樣畫葫蘆一下:
CustomLog /home/websites/iecs.us/wildcard.iecs.us/logs/httpd-access.log vhost_wildcard_combined
LogFormat “%{Host}i %h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”" vhost_wildcard_combined

就可以看到了。

意 外發現要報告的 paper 竟然長達 42 pages ,然後意外的發現 paper 描述要解決的問題跟我們一樣但是卻用了老王說他需要的方法。意外早起的早上,意外修好了一寫小蟲,意外的在 heather 的 tutorial hour看到正妹,意外的抓阿漂去上西班牙文,意外的收到牛盃背的電腦同時發現原來他女朋友是西班牙系。充滿意外的生活,其實也挺愜意。