tag:blogger.com,1999:blog-59465307047421309702024-03-06T16:20:07.273+08:00Jax 的工作紀錄除了在整理學習上的經驗,同時也能幫助其他需要的人Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.comBlogger22125tag:blogger.com,1999:blog-5946530704742130970.post-49095090587741562782013-05-30T22:21:00.000+08:002013-07-18T12:32:50.903+08:00[PHP] 從網頁執行 SVN 更新想說寫一個透過網頁就可以執行 SVN 更新的程式,結果並不是我想得那樣簡單,有一些眉角需要注意的說。<br />
<br />
先以 Apache 的使用者帳號執行 SVN checkout,這樣 Apache 才有 SVN 的連結權力,才可以透過網頁執行 SVN update<br />
<br />
<pre class="sh" name="code">su -s /bin/bash www-data
cd /var/www
svn checkout http://www.xxx.com/svn/my_site
</pre><br />
<br />
<ol><li>在用 PHP 執行 shell 指令前要加上 <strong>export LANG=C.UTF-8</strong> 的環境宣告,不然 SVN update 時遇到中文會出現 error,Ubuntu 的 Apache 預設是 LANG=C</li>
<li>接著要為 SVN 補上 <strong>--accept theirs-full</strong> 的參數,這是當衝突發生時,都以 SVN Server 的檔案版本為主</li>
<li>最後再加上 <strong>2>&1</strong>,讓 PHP 可以取得包含錯誤的所有訊息</li>
</ol><pre class="php" name="code"><?php
putenv('LANG=C.UTF-8');
$result = shell_exec('svn update --accept theirs-full /var/www/my_site 2>&1');
echo nl2br($result);
</pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-73823492425666495782013-05-29T20:38:00.000+08:002013-06-10T22:26:29.107+08:00[轉載][Ubuntu] 檔案系統格式簡介發信人: tdb.bbs@ptt.cc (tbd), 看板: Linux<br />
標 題: [分享] 檔案系統格式簡介<br />
發信站: 批踢踢實業 (Wed Jul 19 06:22:33 2006)<br />
轉信站: SayYa!ctu-reader!news.nctu!ptt<br />
Origin: sally.csie.ntu.edu.tw<br />
<br />
在 MS Winsows 的世界,硬碟可以格式化成 NTFS、FAT32、FAT16 等等。相同的,在 GNU/Linux 底下也是有很多不同的檔案系統格式可以選擇喔。目前在 GNU/Linux 底下,比較常用的有以下這幾種格式 Ext3, ReiserFS, XFS 和 JFS 等數種。當然各種格式都有其憂缺點,所以我們將在下面給與簡單的介紹。<br />
<br />
除了 Ext2 以外,其它幾種都是日誌型檔案系統。那什們是日誌系統呢?就是系統會多用一些額外的空間紀錄硬碟的資料狀態,因而在不正常開關機後,不需整個硬碟從新掃描,來恢復系統狀態。<br />
<br />
<br />
<strong>Ext2</strong><br />
此為一非常老舊且不支援日誌系統的檔案系統格式,早期 Linux 玩家還記得吧,每次不正常關機後,重新開機時錯誤檢查很久,且在沒有正常關機下,常常會讓您一次不見很多檔案,現在很少人使用這款檔案系統了!<br />
<br />
<strong>Ext3</strong><br />
為 Ext2 個改良版,所以 Ext2 可以直接升級成為 Ext3 而不必從新格式化,這也可以讓舊的 Ext2 系統更加穩定。而主要和 Ext2 的差別是,增加了日誌系統 (metadata),所以在不正常開關機時,可以迅速使系統恢復。而因為它舊有的系統相容,和所以很多發行版預設使用 Ext3。而在實際測試上,它的硬碟使用率不佳,大概只有真正空間的 93%會被使用到,並且其它效能測試表現中等。而且它在格式化與建立檔案系統的時間也是其它種類的數十倍。<br />
<br />
<strong>ReiserFS</strong> - <a target="_blank" href="http://www.namesys.com">http://www.namesys.com</a><br />
它是採用日誌型系統,為 Hans Reiser 所創使,所以以他的名子命名。技術上使用的是 B*-tree 為基礎的檔案系統,其特色為能很有效率地處理大型檔案到眾多小檔案都可以用很高的效率處理。實務上 ReiserFS 在處理檔案小於 1k 小檔案時,甚至效率可以比 Ext3 快約 10 倍,所以 ReiserFS 專長在處理很多小檔案。而在一般操作上,它的效能表現也有中上的程度。<br />
<br />
<strong>XFS</strong> - <a target="_blank" href="http://oss.sgi.com/projects/xfs/">http://oss.sgi.com/projects/xfs/</a><br />
為繪圖工作站公司 SGI 為了高級繪圖處理器系統 IRIX 所設計的檔案格式,也是日誌型系統。而 SGI 亦將其移植到 GNU/Linux 上。而他本來是針對高效能繪圖設計,且為高階工作站使用,所以他在穩定行和效率是無雍致疑的。而在實務上的表現,它的處理各種檔案大小混合的情況下效率最好,並且在一般使用上有不錯的表現。<br />
<br />
<strong>JFS</strong> - <a target="_blank" href="http://jfs.sourceforge.net">http://jfs.sourceforge.net</a><br />
為全球最大電腦供應商 IBM 為 AIX 系列設計的日誌型檔案系統,技術上使用的是 B+-tree 為基礎的檔案系統,和 ReiserFS 使用 B*-tree 不同。而在穩定度上,IBM AIX 伺服器使用它,而此系列機器很多都在金融上使用,所以穩定是沒話說的。而它最重要的特色是在處理檔案 I/O 的時候,是這些檔案系統裏面最不佔 CPU 資源的,也就是 CPU 使用率最低。但在這樣節省使用 CPU 的情況下,它的效率表現也有中上以上的程度。<br />
<br />
<br />
雖然 Ext3 效能不好 (在日誌型檔案系統中效率上最糟糕的),那為何那們多人使用?那是因為當時 Ext3 可以直接從 Ext2 升級,而不需要先備份然後格式化後再把檔案拷備回去,所以造成使用人數較多了。但這也是不能怪它,因為它為了和 Ext2 相容,所以有很多的歷史包袱存在。因此我建議新的電腦考慮使用 ReiserFX,XFS 或 JFS。若是以效能為考慮,則可以選擇 ReiserFS 或 XFS。若是系統資源不多,要使用最低的 CPU 使用率,那們可以選擇 JFS,它有著最好的效能資源比。<br />
<br />
而網路上有一些檔案系統效能評估,這裡列出來給讀者參考一下<br />
<br />
<a target="_blank" href="http://www.debian-administration.org/articles/388">http://www.debian-administration.org/articles/388</a><br />
<a target="_blank" href="http://fsbench.netnation.com/">http://fsbench.netnation.com/</a><br />
<a target="_blank" href="http://linuxgazette.net/122/TWDT.html">http://linuxgazette.net/122/TWDT.html</a><br />
<a target="_blank" href="http://linuxgazette.net/102/piszcz.html">http://linuxgazette.net/102/piszcz.html</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com4tag:blogger.com,1999:blog-5946530704742130970.post-89624465096605849712012-09-05T13:01:00.004+08:002023-02-25T21:38:11.120+08:00[Ubuntu] 用 logrotate 定期切割 Apache log 檔Ubuntu 預設已經為 Apache 建立了 log 分割管理,但在建立虛擬主機(Virtual Host),但又很龜毛的將 log 獨立到個別的子目錄下的話,預設的 logrotate 是沒有辦法處理到的,所以請記得為這龜毛的動作加上額外設定。<br />
<br />
編輯屬於 Apache 的設定檔,在檔案最後面加上額外的設定。<br />
<b>vim /etc/logrotate.d/apache2</b><br />
<pre class="cfg" name="code">/var/log/apache2/blog/*.log {
daily
missingok
rotate 52
dateext
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
</pre><br />
參數說明:<br />
<b>daily</b> 每天整理,其他還有 weekly, monthly, yearly<br />
<b>missingok</b> 允許 log 檔不存在<br />
<b>nomissingok</b> 不允許 log 檔不存在,會丟出錯誤 (預設)<br />
<b>rotate 7</b> 保留 7 次的分割<br />
<b>size 1M</b> 大小超過 1M 就執行分割,單位可以是 1024, 100k, 4M, 1G<br />
<b>dateext</b> 用日期來建立分割檔名,而非流水號<br />
<b>dateformat -%Y%m%d</b> 日期格式<br />
<b>compress</b> 壓縮分割,預設用 gzip (預設)<br />
<b>nocompress</b> 不壓縮分割<br />
<b>delaycompress</b> 延後壓縮直到下一次 rotate<br />
<b>notifempty</b> 如果 log 是空的就不執行<br />
<b>copytruncate</b> 以[複製清空]的方式分割 log,這樣可以用不到 postrotate 設定<br />
<b>mail xxx@address</b> 將分割內容用 mail 寄出<br />
<b>prerotate/endscript</b> 分割前要執行的指令<br />
<b>postrotate/endscript</b> 分割後要執行的指令 <br />
<br />
<br />
測試設定檔是否正確<br />
<b>logrotate -f /etc/logrotate.conf</b> <br />
<br />
<br />
參考來源:<br />
<a target="_blank" href="http://ihower.tw/blog/archives/3565/">使用 logrotate 定期整理 Rails Log 檔案</a><br />
<a target="_blank" href="http://blog.jsdan.com/3616">[ubuntu] 使用 logrotate 定期切割壓縮 apache2 的 log 檔</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-13295502360347923762012-05-05T01:53:00.000+08:002013-06-10T22:34:10.512+08:00[轉載] 让PHP更快的提供文件下载作者:<a target="_blank" href="http://www.laruence.com/">Laruence</a><br />
本文地址:<a target="_blank" href="http://www.laruence.com/2012/05/02/2613.html">http://www.laruence.com/2012/05/02/2613.html</a><br />
<br />
一般来说, 我们可以通过直接让URL指向一个位于Document Root下面的文件, 来引导用户下载文件.<br />
<br />
但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让PHP来做转发, 为用户提供文件下载.<br />
<br />
<pre class="php" name="code"><?php
$file = "/tmp/dummy.tar.gz";
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'
. basename($file) . '"');
header("Content-Length: ". filesize($file));
readfile($file);
</pre><br />
但是这个有一个问题, 就是如果文件是中文名的话, 有的用户可能下载后的文件名是乱码.<br />
<br />
于是, 我们做一下修改(参考: :<br />
<br />
<pre class="php" name="code"><?php
$file = "/tmp/中文名.tar.gz";
$filename = basename($file);
header("Content-type: application/octet-stream");
//处理中文文件名
$ua = $_SERVER["HTTP_USER_AGENT"];
$encoded_filename = urlencode($filename);
$encoded_filename = str_replace("+", "%20", $encoded_filename);
if (preg_match("/MSIE/", $ua)) {
header('Content-Disposition: attachment; filename="'
. $encoded_filename . '"');
} else if (preg_match("/Firefox/", $ua)) {
header("Content-Disposition: attachment; filename*=\"utf8''"
. $filename . '"');
} else {
header('Content-Disposition: attachment; filename="'
. $filename . '"');
}
header('Content-Disposition: attachment; filename="'
. $filename . '"');
header("Content-Length: ". filesize($file));
readfile($file);
</pre><br />
恩, 现在看起来好多了, 不过还有一个问题, 那就是readfile, 虽然PHP的readfile尝试实现的尽量高效, 不占用PHP本身的内存, 但是实际上它还是需要采用MMAP(如果支持), 或者是一个固定的buffer去循环读取文件, 直接输出.<br />
<br />
输出的时候, 如果是Apache + PHP mod, 那么还需要发送到Apache的输出缓冲区. 最后才发送给用户. 而对于Nginx + fpm如果他们分开部署的话, 那还会带来额外的网络IO.<br />
<br />
那么, 能不能不经过PHP这层, 直接让Webserver直接把文件发送给用户呢?<br />
<br />
今天, 我看到了一个有意思的文章: <a target="_blank" href="http://www.jasny.net/articles/how-i-php-x-sendfile/">How I PHP: X-SendFile</a>.<br />
<br />
我们可以使用Apache的module <a target="_blank" href="https://tn123.org/mod_xsendfile/">mod_xsendfile</a>, 让Apache直接发送这个文件给用户:<br />
<br />
<pre class="php" name="code"><?php
$file = "/tmp/中文名.tar.gz";
$filename = basename($file);
header("Content-type: application/octet-stream");
//处理中文文件名
$ua = $_SERVER["HTTP_USER_AGENT"];
$encoded_filename = urlencode($filename);
$encoded_filename = str_replace("+", "%20", $encoded_filename);
if (preg_match("/MSIE/", $ua)) {
header('Content-Disposition: attachment; filename="'
. $encoded_filename . '"');
} else if (preg_match("/Firefox/", $ua)) {
header("Content-Disposition: attachment; filename*=\"utf8''"
. $filename . '"');
} else {
header('Content-Disposition: attachment; filename="'
. $filename . '"');
}
header('Content-Disposition: attachment; filename="'
. basename($file) . '"');
//让Xsendfile发送文件
header("X-Sendfile: $file");
</pre><br />
X-Sendfile头将被Apache处理, 并且把响应的文件直接发送给Client.<br />
<br />
Lighttpd和Nginx也有类似的模块, 大家有兴趣的可以去找找看<br />
<br />
<hr />mod-xsendfile 在 Ubuntu 的安裝方法:<br />
<strong>sudo apt-get install libapache2-mod-xsendfile</strong>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-57973715503495346402012-05-05T01:27:00.001+08:002013-06-10T22:33:47.762+08:00[PHP] 使用 php5-ffmpeg 擷取影片圖片前幾天在玩 FFmpeg 的時後,突然發現 Ubuntu 上多了 php5-ffmpeg 這個擴充套件,就想來玩玩看,看好不好用,有兩個結論:<ol><li>讀取影片取決於 FFmpeg 的支援性,如果想要什麼格式都支援的話,建議自己重新編譯 FFmpeg。</li>
<li>效率並沒有我想像中的快,兩分鐘的影片取十張圖,大約 30 秒。</li>
</ol>安裝方法:<br />
<strong>sudo apt-get install ffmpeg php5-ffmpeg php5-gd</strong><br />
<br />
擷圖測試範例:<br />
<pre class="php" name="code"><?php
$page = 10;
$prefix = 'screencap';
$mov = new ffmpeg_movie('gt.avi');
$count = $mov->getFrameCount();
$range = (int)round($count/($page+1));
for($i=1; $i<=$page; $i++){
$frameNum = $range*$i;
$imgFile = $prefix.'_'.$i.'.png';
$frame = $mov->getFrame($frameNum);
if(!$frame){ continue; }
$gdImage = $frame->toGDImage();
if(!$gdImage){ continue; }
imagepng($gdImage, $imgFile);
imagedestroy($gdImage);
echo '<img src="'.$imgFile.'" border="1" /><br />';
}
</pre><br />
參考文件:<br />
<a target="_blank" href="http://ffmpeg-php.sourceforge.net/doc/api/ffmpeg_movie.php">ffmpeg_movie object methods</a><br />
<a target="_blank" href="http://www.sitepoint.com/forums/printthread.php?t=292670">FFmpeg and PHP</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-31691041480423325242012-05-03T14:49:00.003+08:002023-02-25T21:39:35.301+08:00[Ubuntu 11] HTTP Live Streaming 安裝與測試<strong>安裝 Apache</strong><br />
<pre class="sh" name="code">apt-get install apache2
</pre><br />
在 <strong>/etc/apache2/mods-available/mime.conf</strong> 加入以下內容: <br />
<pre class="cfg" name="code"># HLS file type
AddType application/x-mpegURL .m3u8
AddType video/MP2T .ts
</pre><br />
<br />
Ubuntu 11.04 預設的 FFmpeg 是沒有啟用 h.264 的支援,所以要自己編譯。<br />
<br />
<strong>安裝編譯時所需要的套件</strong><br />
<pre class="sh" name="code">apt-get update
apt-get install build-essential checkinstall subversion git libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev libx264-dev librtmp-dev
</pre><br />
<br />
<strong>編譯 FFmpeg</strong><br />
<pre class="sh" name="code">cd /opt
git clone git://git.videolan.org/ffmpeg
cd ffmpeg
./configure --prefix=/usr --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --disable-ffplay --enable-shared --enable-gpl --enable-postproc --enable-version3 --enable-nonfree --enable-avfilter --enable-pthreads --enable-vdpau --enable-librtmp
make -j$(grep processor /proc/cpuinfo |wc -l)
checkinstall --pkgname=ffmpeg --pkgversion="5.0.1" --backup=no --deldoc=yes --default
</pre><br />
<br />
segmenter 是用來切割 FFmpeg 轉好的 ts 檔<br />
<strong>編譯 segmenter</strong><br />
<pre class="sh" name="code">cd /opt
svn co http://httpsegmenter.googlecode.com/svn/trunk
cd trunk
sed 's/\/local//g' Makefile.txt > Makefile
make -j$(grep processor /proc/cpuinfo |wc -l)
checkinstall --pkgname=segmenter --pkgversion="2" --backup=no --deldoc=yes --default
</pre><br />
<br />
<br />
<strong>測試影片轉檔</strong> <br />
<pre class="sh" name="code">cd /var/www
ffmpeg -i gt4.avi -f mpegts -vcodec libx264 -acodec libmp3lame gt4_pre.ts
ffmpeg -i gt4.avi -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s 720x480 -vcodec libx264 -b 800k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 800k -bufsize 800k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 720:480 -g 30 -async 2 gt4_pre.ts
</pre><br />
<br />
<strong>測試 RTMP 串接轉檔</strong> <br />
<pre class="sh" name="code">ffmpeg -i rtmp://flashstream.adobe.com/ondemand/flash/cs5/prod/production-performance_400x224 -f mpegts -vcodec libx264 -acodec libmp3lame rtmp_pre.ts
</pre><br />
<br />
<strong>測試影片切割</strong> <br />
<pre class="sh" name="code">segmenter -i gt4_pre.ts -d 10 -o gt4_pre -x stream.m3u8 -p http://192.168.0.10/
</pre><br />
<br />
<strong>利用 pipe 從轉檔到切割</strong> <br />
<pre class="sh" name="code">ffmpeg -i gt4.avi -f mpegts -vcodec libx264 -acodec libmp3lame - |segmenter -i - -d 10 -o gt4_pre -x stream.m3u8 -p http://192.168.0.10/
</pre><br />
<br />
<strong>m3u8 檔案格式</strong> <br />
<pre class="cfg" name="code">#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:11,
http://192.168.0.10/gt4_pre-1.ts
#EXTINF:11,
http://192.168.0.10/gt4_pre-2.ts
#EXTINF:11,
http://192.168.0.10/gt4_pre-3.ts
#EXTINF:11,
http://192.168.0.10/gt4_pre-4.ts
#EXTINF:5,
http://192.168.0.10/gt4_pre-5.ts
#EXT-X-ENDLIST
</pre><br />
<br />
<strong>以 HTML5 播放影片</strong><br />
<pre class="xml" name="code"><html>
<head><title>Video Test</title></head>
<body>
<center>
<video tabindex="0" width="720" height="480"><source src="/stream.m3u8"></video>
</center>
</body>
</html>
</pre><br />
<br />
參考文件:<br />
<a href="http://buildall.wordpress.com/2011/05/09/how-to-compile-and-install-ffmpeg-in-ubuntu-11-04/">How to compile and install ffmpeg in Ubuntu 11.04</a><br />
<a href="http://ubuntuforums.org/showpost.php?p=9868359&postcount=1289">Install FFmpeg and x264 on Ubuntu Lucid Lynx 10.04 LTS</a><br />
<a href="http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/">iPhone HTTP Streaming with FFMpeg and an Open Source Segmenter</a><br />
<a href="http://tools.ietf.org/html/draft-pantos-http-live-streaming-08">HTTP Live Streaming draft-pantos-http-live-streaming-08</a><br />
<a href="http://southking.iteye.com/blog/1477533">http live streaming(m3u8 streaming)(m3u8)</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com2tag:blogger.com,1999:blog-5946530704742130970.post-6086723317997082992012-04-29T21:16:00.001+08:002012-04-29T21:16:51.090+08:00[Linux] 檢查 SAMBA 與 NFS Server 是否存在通常會透過 <strong>/etc/fstab</strong> 來處理掛載的設定,然後再使用 <strong>mount -a</strong> 來重新確認掛載,最好在排程的程序用到掛載目錄時也執行一次 mount -a,掛載目錄在斷線後是不會自動回復的,mount -a 的 Timeout 其實還蠻久的,尤其是 Server 不存在的時候,所以最好還是用對應的 client 先確認 server 是否存在。 <br />
<br />
而檢查 NFS 的 client 可以用 showmount 來處理,在 Ubuntu 上的安裝方式如下: <br />
<strong>sudo aptitude install nfs-common</strong><br />
<br />
而 SAMBA 的 client 則是用 smbclient,在 Ubuntu 上的安裝方式如下:<br />
<strong>sudo aptitude install smbclient</strong><br />
<br />
<br />
<strong>檢查 NFS Server 是否存在的流程</strong><br />
<br />
以 Shell 的方式檢查<br />
<pre class="sh" name="code"># 先以 client 確認 server 是否存在
/sbin/showmount 192.168.0.6 >/dev/null 2>&1
if [ "j$?" != "j0" ]; then
echo "NFS Server is not exist"
exit 1
fi
# 重新確認掛載
mount -a >/dev/null 2>&1
if [ "j$?" != "j0" ]; then
echo "NFS Server mount failed"
exit 1;
fi
</pre><br />
以 PHP 的方式檢查<br />
<pre class="php" name="code">/*先以 client 確認 server 是否存在*/
$state = shell_exec('/sbin/showmount 192.168.0.6 >/dev/null 2>&1; echo $?');
if(trim($state)!='0'){
echo "NFS Server is not exist";
exit;
}
/*重新確認掛載*/
if(shell_exec('mount -a 2>&1')){
echo "NFS Server mount failed"
exit;
}
</pre><br />
<br />
<br />
<strong>檢查 SAMBA Server 是否存在的流程</strong><br />
<br />
以 Shell 的方式檢查<br />
<pre class="sh" name="code"># 先以 client 確認 server 是否存在
smbclient -NL //192.168.0.6 >/dev/null 2>&1
if [ "j$?" != "j0" ]; then
echo "SAMBA Server is not exist"
exit 1
fi
# 重新確認掛載
mount -a >/dev/null 2>&1
if [ "j$?" != "j0" ]; then
echo "SAMBA Server mount failed"
exit 1;
fi
</pre><br />
以 PHP 的方式檢查<br />
<pre class="php" name="code">/*先以 client 確認 server 是否存在*/
$state = shell_exec('smbclient -NL //192.168.0.6 >/dev/null 2>&1; echo $?');
if(trim($state)!='0'){
echo "SAMBA Server is not exist";
exit;
}
/*重新確認掛載*/
if(shell_exec('mount -a 2>&1')){
echo "SAMBA Server mount failed"
exit;
}
</pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-23409275371862514732012-04-12T14:03:00.000+08:002013-06-10T22:39:24.361+08:00[Ubuntu] 時間同步設定繼上次<a href="/2009/07/ubuntu.html">Ubuntu 時間及時區設定 [Linux]</a>那篇文章後,最近有學到新的時間同步的設定方式。<br />
<br />
<b>vim /etc/cron.daily/ntpdate</b><br />
<pre class="sh" name="code">#!/bin/bash
# Sync NTP Server
ntpdate -s tock.stdtime.gov.tw watch.stdtime.gov.tw time.stdtime.gov.tw clock.stdtime.gov.tw tick.stdtime.gov.tw ntp.ubuntu.com pool.ntp.org
# Update BIOS time
hwclock --systohc
</pre><br />
<b>chmod +x /etc/cron.daily/ntpdate</b>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-61697428906592415472012-03-14T14:48:00.003+08:002013-06-10T22:38:24.354+08:00[Ubuntu 11] 安裝 Redmine 與 SVN<strong>安裝 LAMP & Redmine</strong><br />
<pre class="sh" name="code"># 安裝 LAMP
apt-get install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 libapache2-mod-auth-mysql
# 安裝 svn, dav_svn
apt-get install subversion libapache2-svn
# 安裝 redmine
apt-get install redmine redmine-mysql libapache2-mod-fcgid libapache2-mod-passenger
# 可以使用下面的方式重新設定 redmine DB 連結
#dpkg-reconfigure redmine
# 啟用 Apache 套件 php5, headers, expires
a2enmod php5 dav_svn auth_mysql cgid fcgid passenger rewrite ssl setenvif
# 安裝 git, phpmyadmin
apt-get install mercurial git-core phpmyadmin
# 連結 phpmyadmin 設定檔
cd /etc/apache2/conf.d/
ln -s ../../phpmyadmin/apache.conf phpmyadmin.conf
service apache2 restart
</pre><br />
<br />
<strong>安裝 Redmine 套件</strong><br />
<pre class="sh" name="code">gem install pandoc-ruby rdiscount rpeg-markdown bluefeather
cd /usr/share/redmine/vendor/plugins
# 安裝 Code Review 套件
hg clone https://bitbucket.org/haru_iida/redmine_code_review
rake db:migrate_plugins RAILS_ENV=production
# 安裝 Markdown Extra formatter 套件
git clone git://github.com/juno/redmine_markdown_extra_formatter.git
# 安裝 reStructuredText formatting 套件
git clone git://github.com/alphabetum/redmine_restructuredtext_formatter.git
cd redmine_restructuredtext_formatter
git checkout pandoc-ruby
</pre><br />
<br />
<strong>建立SVN庫</strong><br />
<pre class="sh" name="code">mkdir -p /home/repoadmin/repos
svnadmin create /home/repoadmin/repos/team1
svnadmin create /home/repoadmin/repos/team2
chown -R www-data:www-data /home/repoadmin/repos
</pre><br />
<br />
<strong>建立SVN認證時需要的DB使用者(redmine_svn_auth)</strong><br />
<pre class="sql" name="code">CREATE USER 'redmine_svn_auth'@'localhost' IDENTIFIED BY 'redmine_svn_auth';
GRANT SELECT(id, login, hashed_password, status ,type) ON redmine_default.users TO 'redmine_svn_auth'@'localhost';
</pre><br />
<br />
<strong>設定 Apache2 Site</strong> <br />
<pre class="sh" name="code">cd /etc/apache2/sites-available/
cp default redmine_svn
vim redmine_svn
</pre><br />
<pre class="xml" name="code"><VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /usr/share/redmine/public
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /usr/share/redmine/public>
Options ExecCGI FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
RewriteEngine On
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} dispatch.fcgi$
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
</Directory>
<Location /svn>
DAV svn
SVNParentPath /home/repoadmin/repos
SVNPathAuthz off
AuthBasicAuthoritative Off
AuthUserFile /dev/null
AuthType Basic
AuthName "Subversion Repository"
# auth_mysql help in http://localhost/doc/libapache2-mod-auth-mysql/DIRECTIVES.gz
Auth_MYSQL On
Auth_MySQL_Host localhost
Auth_MYSQL_DB redmine_default
Auth_MYSQL_Username redmine_svn_auth
Auth_MYSQL_Password redmine_svn_auth
Auth_MYSQL_Password_Table users
Auth_MYSQL_Username_Field login
Auth_MYSQL_Password_Field hashed_password
Auth_MySQL_Password_Clause " AND status=1 AND type='User' "
Auth_MYSQL_Empty_Passwords Off
Auth_MYSQL_Encryption_Types SHA1Sum
# Options: Crypt_DES, Crypt_MD5, Crypt, PHP_MD5, SHA1Sum, MySQL, Apache
Require valid-user
</Location>
LogLevel warn
CustomLog /var/log/apache2/redmine_access.log combined
ErrorLog /var/log/apache2/redmine_error.log
</VirtualHost>
</pre><br />
<br />
<strong>重新啟動 Apache</strong> <br />
<pre class="sh" name="code">a2dissite default
a2ensite redmine_svn
service apache2 restart
</pre><br />
<br />
<strong>測試網址</strong> <br />
<ul><li>Redmine: <a target="_blank" href="http://localhost/">http://localhost/</a></li>
<li>SVN: <a target="_blank" href="http://localhost/svn/team1/">http://localhost/svn/team1/</a></li>
</ul><br />
<br />
參考來源:<br />
<a target="_blank" href="http://blog.longwin.com.tw/2011/03/redmine-debian-ubuntu-linux-2011/">將 Redmine 安裝於 Debian、Ubuntu Linux</a><br />
<a target="_blank" href="http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_in_Ubuntu">Ubuntu 10.04 using Passenger</a><br />
<a target="_blank" href="http://www.pigo.idv.tw/archives/851">svn 使用和 redmine 相同帳號進行認證</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com4tag:blogger.com,1999:blog-5946530704742130970.post-58584606472707223002012-03-08T16:43:00.000+08:002012-03-08T16:43:48.455+08:00Ubuntu 10 設定預設語系<pre class="sh" name="code">sudo vim /etc/default/locale
LANG="zh_TW.UTF-8"
LANGUAGE="zh_TW:zh"
</pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-79472047259197573052012-03-08T16:00:00.000+08:002012-03-08T16:00:19.738+08:00[Linux] 使用 MD5 檢查 FTP 上傳的檔案<pre class="sh" name="code">#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
MAIL_TO="my_mail@gmail.com"
TARGET_PATH="/var/www/file/show.mp4"
FILE="upload_file"
EXTEND="mp4"
cd /home/ftp_user
# md5 file is not exist
if [ ! -f $FILE.md5 ]; then exit 0; fi
# MD5 check sum
md5sum -c $FILE.md5 >/dev/null 2>&1
if [ "j$?" != "j0" ]; then
# Notice: md5 check fail
echo "" |mail -s "[Failed] $FILE.$EXTEND md5 check sum fail" $MAIL_TO
rm -f ./$FILE.md5
exit 1;
fi
mv ./$FILE.$EXTEND $TARGET_PATH
rm -f ./$FILE.md5
exit 0;
</pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-7912197072555984552012-03-07T14:06:00.002+08:002013-06-10T22:40:22.436+08:00[Ubuntu] 安裝 Oracle Client 與 PDO_OCI於 <a target="_blank" href="http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html">Oracle Database Instant Client</a> 下載 Client/SDK <br />
(Version 10.2.0.4 Instant Client Package - Basic, Instant Client Package - SDK)<br />
<strong>oracle-instantclient-basic-10.2.0.4-1.i386.rpm</strong><br />
<strong>oracle-instantclient-devel-10.2.0.4-1.i386.rpm</strong><br />
<br />
<pre class="sh" name="code"># 安裝套件轉換器
apt-get install alien
# 轉換 rpm 套件到 deb,並安裝
alien -i oracle-instantclient-basic*.rpm
alien -i oracle-instantclient-devel*.rpm
# 安裝 Apache2,PHP,MySQL
apt-get install apache2 php5 mysql-server php5-mysql libapache2-mod-php5
# 安裝 PEAR
apt-get install php-pear php5-dev dh-make-php make re2c
# 下載 PDO_OCI 原始檔
pecl download pdo
pecl download pdo_oci
tar zxvf PDO-1.0.3.tgz
tar zxvf PDO_OCI-1.0.tgz
mkdir -p PDO_OCI-1.0/include/php/ext/
mv PDO-1.0.3 PDO_OCI-1.0/include/php/ext/pdo
cd PDO_OCI-1.0/
phpize
./configure --with-pdo-oci=instantclient,/usr,10.2.0.4
make -j$(grep processor /proc/cpuinfo |wc -l)
make install # /usr/lib/php5/20xxxxxx+lfs/pdo_oci.so
vim /etc/php5/conf.d/pdo_oci.ini # 建立 pdo_oci.ini, 內容如下:
extension=pdo_oci.so
vim /etc/apache2/envvars # 在最後面加入環境變數, 內容如下:
export NLS_LANG="TRADITIONAL CHINESE_TAIWAN.UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
# 重新啟動 Apache
service apache2 restart
</pre><br />
參考來源:<br />
<a target="_blank" href="http://blog.longwin.com.tw/2008/06/debian_php_oracle_ext_pdo_oci_2008/">Debian 安裝設定 PHP 連 Oracle extension 使用 PDO(PDO_OCI)</a><br />
<a target="_blank" href="https://help.ubuntu.com/community/Oracle%20Instant%20Client">Oracle Instant Client</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-63347940949406513472011-12-14T15:26:00.006+08:002023-02-26T14:14:51.949+08:00[Ubuntu] 掛載 Windows 分享目錄<ul><li>安裝 smbfs 套件<br />
<code>sudo apt-get install smbfs</code></li>
<li>建立掛載目錄<br />
<code>sudo mkdir /mnt/windows_share</code></li>
<li>開放最大權限<br />
<code>sudo chmod 777</code></li>
<li>測試掛載<br />
<pre class="sh" name="code">sudo mount -t cifs //192.168.0.10/my_share /mnt/windows_share -o username=jax,password=1234,noacl,noperm,codepage=cp950,iocharset=big5,file_mode=0666,dir_mode=0777
</pre></li>
<li>察看是否成功<br />
<code>df -h</code><br />
Filesystem Size Used Avail Use% Mounted on<br />
//192.168.0.10/my_share 7.9G 208K 7.9G 1% /mnt/windows_share</li>
<li>卸載<br />
<code>sudo umount /mnt/windows_share</code></li>
<li>修改開機掛載設定檔<br />
<code>sudo vim /etc/fstab</code><br />
<pre class="cfg" name="code">/mnt/windows_share was on //192.168.0.10/my_share
//192.168.0.10/my_share /mnt/windows_share cifs username=jax,password=1234,noacl,noperm,codepage=cp950,iocharset=big5,file_mode=0666,dir_mode=0777 0 0
</pre></li>
<li>套用開機設定檔<br />
<code>mount -a</code></li>
<li>再次察看是否成功<br />
<code>df -h</code><br />
Filesystem Size Used Avail Use% Mounted on<br />
//192.168.0.10/my_share 7.9G 208K 7.9G 1% /mnt/windows_share</li>
</ul><br />
參考資料:<br />
<a target="_blank" href="http://geek-garden.blogspot.com/2011/01/ubuntu-mount-windows.html">在 ubuntu 中 mount windows 分享的目錄</a><br />
<a target="_blank" href="http://indeepnight.blogspot.com/2007/05/mount.html">載掛(Mount)遠端資料夾的應用</a><br />
<a target="_blank" href="http://blog.sina.com.cn/s/blog_53d86b2d0100qeot.html">ubuntu的几个技巧: 自动连接Windows共享文件夹, 定时文件同步备份</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-41321001966529460582011-08-18T15:10:00.004+08:002011-08-18T16:00:42.422+08:00[Ubuntu] Apache 未設定 ServerName 造成的警告Ubuntu 下的 Apache 有時候在啟動時會出現以下的警告訊息:<br />
<strong style="background-color: white; color: red;">Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName</strong><br />
<br />
由於沒有任何 ServerName 的設定造成的警告,只要在 <strong>/etc/apache2/apache2.conf </strong> 中加入 <strong>ServerName localhost</strong> 的預設值就不會出現這個錯誤了。<br />
<br />
這個問題我之前也遇到過,但不常發生,久了就忘記該把設定寫在哪裡了,因為可以設定的地方有三四個,為了遵守統一的規則才不會亂。<br />
<br />
當要建立多個虛擬主機時,只要在 <strong><VirtualHost *:80></strong> 中才去覆寫 <strong>ServerName my_host_name</strong> 就不會衝突了。<br />
<br />
Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-35644184987187590672010-12-08T11:42:00.002+08:002023-02-26T14:16:28.796+08:00[Ubuntu] setup SVN base Apache note# 安裝 Apache & SVN<br />
<b>apt-get install apache2 apache2.2-common apache2-utils apache2-doc libapache2-svn subversion</b><br />
<br />
# 建立 Repositorys 的目錄<br />
<b>mkdir /var/lib/svn</b><br />
<br />
# 建立三個 Repository<br />
<b>svnadmin create /var/lib/svn/repo1<br />
svnadmin create /var/lib/svn/repo2<br />
svnadmin create /var/lib/svn/repo3</b><br />
<br />
# 變更 Repositorys 的權限給 Apache<br />
<b>chown -R www-data:www-data /var/lib/svn</b><br />
<br />
# 啟用 Apache 中的 dav_svn<br />
<b>a2enmod dav_svn</b><br />
<br />
# 設定 SVN 使用者帳號<br />
<b>htpasswd -c /etc/apache2/dav_svn.passwd user1<br />
htpasswd /etc/apache2/dav_svn.passwd user2<br />
htpasswd /etc/apache2/dav_svn.passwd user3</b><br />
<br />
# 編輯 SVN 配置檔<br />
<b>vim /etc/apache2/mods-available/dav_svn.conf</b><br />
<pre class="xml" name="code"><Location /svn>
DAV svn
SVNParentPath /var/lib/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
</pre><br />
# 編輯 SVN 資源權限<br />
<b>vim /etc/apache2/dav_svn.authz</b><br />
<pre class="cfg" name="code"># 設定使用者群組
[groups]
group1 = user1,user2
group2 = user1,user3
# 設定全域皆可讀取
[/]
* = r
# 指定 repo1 只有 group1 可以寫入
[repo1:/]
@group1 = rw
# 指定 repo1 中 blog 這個目錄只有 uesr2 可以寫入
[repo1:/blog/]
uesr2 = rw
# 指定 repo2 只有 group2 可以寫入
[repo2:/]
@group2 = rw
# 指定 repo3 只有 user1 可以寫入
[repo3:/]
user1 = rw
</pre><br />
# 重新啟動 Apache<br />
<b>/etc/init.d/apache2 restart</b><br />
<br />
<br />
參考來源:<br />
<a target="_blank" href="http://blog.xuite.net/gbisland/linux/14229857">Ubuntu - 安裝 SVN (Subversion Server)</a><br />
<a target="_blank" href="http://xok.la/2009/06/subversion_group_users_grant.html">Subversion用户,权限管理</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-54728118763539296252010-07-16T18:42:00.007+08:002013-06-10T23:25:22.711+08:00[Ubuntu] PHP 連接 Oracle 語系設定PHP 的環境變數必須在 Apache 中設定<br />
<br />
開啟:<br />
vim /etc/apache2/envvars<br />
<br />
在最後面加入:<br />
export NLS_LANG="AMERICAN_AMERICA.UTF8"<br />
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"<br />
<br />
參考來源:<br />
<a target="_blank" href="http://tony.strongniche.com.tw/linux/contents.php?sn=534">如何新增apache使用的環境變數</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com2tag:blogger.com,1999:blog-5946530704742130970.post-83131446826671715222010-06-29T11:07:00.006+08:002012-03-08T16:44:37.884+08:00Ubuntu 語系設定與變更<pre class="sh" name="code"># 更改預設語系,設定檔路徑:/var/lib/locales/supported.d/local
locale-gen zh_TW
locale-gen zh_TW.UTF-8
# 動態變更成[中文語系]
[root@linux ~]# export LANG=zh_TW.UTF-8
[root@linux ~]# export LC_ALL=zh_TW.UTF-8
# 動態變更成[英文語系]
[root@linux ~]# export LANG=C
[root@linux ~]# export LC_ALL=C
</pre><br />
<br />
參考來源:<br />
<a href="http://plog.longwin.com.tw/my_note-unix/2009/11/18/ubuntu-910-add-set-locale-gen-2009">Ubuntu 9.10 增加 / 設定 語系(Locale)</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-66369186015169037532010-06-29T11:00:00.008+08:002012-08-01T16:14:19.511+08:00Ubuntu 預設編輯器<pre class="sh" name="code"># 執行這個指令就會跳出 user 的編輯器選單
[root@linux ~]# /usr/bin/select-editor
# 如果要將系統的預設值變更的話,可以執行這個指令
[root@linux ~]# update-alternatives --config editor
# 如果不喜歡選項中的編輯器,可以藉由更改下面這個檔案,然後重新登入就會生效
[root@linux ~]# vim ~/.selected_editor
# Generated by /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/vim"
# 或者動態直接改變環境變數(一次性)
[root@linux ~]# export EDITOR=vim
</pre>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-89290160616570044782009-07-09T15:47:00.007+08:002011-08-18T15:19:19.258+08:00Ubuntu 時間及時區設定 [Linux]前面要先說一個很基礎的觀念<br />
系統時間與 BIOS 時間是不一樣的<br />
因為系統時間會再加上一個時區設定<br />
而 BIOS 則是以 UTC 時間為準<br />
<br />
<pre class="sh" name="code"># 取得時區設定檔,請選擇你需要的時區
sudo tzselect
# 更換系統時區檔
sudo ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
# 讓核心時間與網路時間伺服器對時
sudo ntpdate pool.ntp.org
# 更新 BIOS 的時間
sudo hwclock -w
# 編輯系統排程,再裏面加入下面這行,讓系統排程每日對時一次
sudo crontab -e
@daily /usr/sbin/ntpdate pool.ntp.org > /dev/null
</pre><br />
<br />
參考資料:<br />
<a href="http://philipatswarchy.wordpress.com/2007/03/19/ubuntu-change-time-zone/">[Ubuntu]Ubuntu 更改時區</a><br />
<a href="http://wiki.ubuntu-tw.org/index.php?title=Ntpdate">Ntpdate - Ubuntu 正體中文 Wiki</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-35303871199166348652008-01-27T23:02:00.004+08:002013-06-11T20:53:45.082+08:00Ubuntu CVS 安裝 for Eclipse現在工作時都要將 Eclipse 與 Dreamweaver 開啟,主要都是以 Eclipse 來編寫網頁,而 Dreamweaver 只是拿來做上傳同步,這兩個軟體都是出了名的肥,光是開啟就用 500 MB 的記憶體。<br />
原本想用 CVS 做遠端同步,可惜 CVS 不是拿來做這種簡單的事,CVS 是用在多人開發間的<strong style="color: rgb(255, 0, 0);">同步橋樑</strong>,透過一個版本管理伺服器,去協調多個開發者的同步問題,<strong style="color: rgb(255, 0, 0);">所以不適合用在網頁上傳的同步處理</strong>。<br />
<br />
由於花了很久的時間在安裝這套工具上,其實要安裝這個工具是很簡單的,但為什麼我會花那麼的時間呢?這是個好問題,所以想為這些光陰來寫個詳細的安裝流程。<br />
<br />
<span style="color: rgb(0, 0, 153);">架設 CVS Server</span><br />
1.安裝 CVS:<br />
$sudo apt-get install cvs<br />
<br />
2.安裝 CVSD:<br />
$sudo apt-get install cvsd<br />
<br />
3.在 /var/lib/cvsd 下建立 /myrepos 目錄,這是以後 CVS 的<span style="color: rgb(255, 0, 0);">專案集(工作區)</span>。<br />
$cd /var/lib/cvsd<br />
$sudo mkdir myrepos<br />
<br />
4.初始化這個/myrepos。<br />
$sudo cvs -d /var/lib/cvsd/myrepos init<br />
<br />
5.設置 myrepos 專案集的使用者認證方式,預設是使用系統中的帳號,為了安全還是使用 CVS 來管理使用者。<br />
$sudo vi /var/lib/cvsd/myrepos/CVSROOT/config<br />
<br />
加入以下設定:<br />
# 關閉系統帳號的使用者連結 CVS<br />
SystemAuth=no<br />
PamAuth=no<br />
# 設定 LockDir 的相對路徑<br />
LockDir=/tmp/myrepos<br />
然後保存退出。注意此處的/tmp/myrepos是指相對於RootJail的路徑。<br />
<br />
6.建立 LockDir 目錄<br />
$sudo mkdir /var/lib/cvsd/tmp/myrepos<br />
<br />
7.增加 CVS 的用戶帳號<br />
$sudo cvsd-passwd /var/lib/cvsd/myrepos cvsuser<br />
<br />
8.編輯 CVSD 的設定檔。<br />
$sudo vi /etc/cvsd/cvsd.conf<br />
# 預設設定如下:<br />
RootJail /var/lib/cvsd<br />
Repos /myrepos。<br />
# 連接阜(Port)<br />
Listen * 2401<br />
<br />
10.設定目錄權限,以後加入新專案時也要檢查權限設定。<br />
$sudo chown -R cvsd:cvsd /var/lib/cvsd<br />
<br />
11.重新啟動 CVSD。<br />
$sudo /etc/init.d/cvsd restart<br />
<br />
12.測試連線狀況<br />
$cvs -d :pserver:cvsuser@localhost:/myrepos login<br />
$cvs -d :pserver:cvsuser@localhost:/myrepos checkout<br />
<br />
<span style="color: rgb(0, 0, 153);">利用 Eclipse 連結 CVS (<span style="color: rgb(255, 0, 0);">PS:記得先將本地端的專案備份</span>)。</span><br />
1.在 /myrepos 中建立專案 test<br />
$cd /var/lib/cvsd/myrepos<br />
$sudo mkdir test<br />
$sudo chown -R cvsd:cvsd test<br />
<br />
2.在 Eclipse 中建立專案 test<br />
檔案→新建→專案<br />
專案類型:(自訂)<br />
專案名稱:test<br />
<br />
3.切換工作至:團對同步化<br />
<a href="http://picasaweb.google.com/lh/photo/mWKrRRkmC7amykMEyt9GMw?feat=embedwebsite"><img alt="CVS for Eclipse" src="http://lh6.ggpht.com/_b8lN_UbLoEc/Scu-bFwam6I/AAAAAAAAD-o/nNOIuCIndH0/s400/Noname1.jpg" /></a><br />
<br />
4.建立新同步<br />
<a href="http://picasaweb.google.com/lh/photo/F-SBmrlfKWgzzohSluY7Pw?feat=embedwebsite"><img alt="CVS for Eclipse" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiOqGDCk_8YoXYIriKOSt_hxSrQlZZqim9ymnIEw_wEzde4458NF44iWLcFPIoejxZBKPtyBq3QMN_lKZkyg6AcZoTnjZee-qADVY1xFECtDg6LD3pgGDywuJyRUvFJZw7QbPteJasjRfn/s400/Noname2.jpg" /></a><br />
<br />
5.選擇同步方式:CVS<br />
<a href="http://picasaweb.google.com/lh/photo/siJltIId0AiIqCSYBqM9hw?feat=embedwebsite"><img alt="CVS for Eclipse" src="http://lh4.ggpht.com/_b8lN_UbLoEc/Scu-UPoYU6I/AAAAAAAAD-Y/XTASYK1wPI8/s400/Noname3.jpg" /></a><br />
<br />
6.填入連線設定:<br />
在<span style="color: rgb(255, 0, 0);">儲存庫路徑</span>上記得加上<span style="color: rgb(255, 0, 0);">/</span><br />
<a href="http://picasaweb.google.com/lh/photo/9Sx9bw3chClVqaj0veqgKg?feat=embedwebsite"><img alt="CVS for Eclipse" src="http://lh6.ggpht.com/_b8lN_UbLoEc/Scu-Q_ijRwI/AAAAAAAAD-Q/YOACYBz1GHg/s400/Noname4.jpg" /></a><br />
<br />
7.填入同步的專案名稱 (myrepos 中 test)<br />
點選下一步<br />
<a href="http://picasaweb.google.com/lh/photo/BtXGcAxnX2ufqj9UPK65fg?feat=embedwebsite"><img alt="CVS for Eclipse" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj72TJcXXGsiRBPHHXcvFCXFD0Z9azXZq_i8a34we8R6Jmyo9Oj989X3X_FmndIBYUCLawNUGAzKH-mcn5Qouqp4CagYWxdE9epezNsvPh_Y9RGQ8fRGUl0T7yiLlpAh2uIHRftT5LronGk/s400/Noname5.jpg" /></a><br />
<br />
8.選擇初始的同步方式 <span style="color: rgb(255, 0, 0);">(PS:如果沒選第三個會將本地端的專案給清空)</span><br />
然後點選完成<br />
<a href="http://picasaweb.google.com/lh/photo/-fjnHLg-AimXVatVwzIdjQ?feat=embedwebsite"><img alt="CVS for Eclipse" src="http://lh5.ggpht.com/_b8lN_UbLoEc/Scu-FxlCzBI/AAAAAAAAD-A/8GqzmPZAidE/s400/Noname8.jpg" /></a><br />
<br />
9.再次點選新同步<br />
<a href="http://picasaweb.google.com/lh/photo/F-SBmrlfKWgzzohSluY7Pw?feat=embedwebsite"><img alt="CVS for Eclipse" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiOqGDCk_8YoXYIriKOSt_hxSrQlZZqim9ymnIEw_wEzde4458NF44iWLcFPIoejxZBKPtyBq3QMN_lKZkyg6AcZoTnjZee-qADVY1xFECtDg6LD3pgGDywuJyRUvFJZw7QbPteJasjRfn/s400/Noname2.jpg" /></a><br />
<br />
10.選擇同步方式:CVS<br />
<a href="http://picasaweb.google.com/lh/photo/siJltIId0AiIqCSYBqM9hw?feat=embedwebsite"><img alt="CVS for Eclipse" src="http://lh4.ggpht.com/_b8lN_UbLoEc/Scu-UPoYU6I/AAAAAAAAD-Y/XTASYK1wPI8/s400/Noname3.jpg" /></a><br />
<br />
11.這時候就會出現剛剛設定好的連線,選擇 test 按下完成。<br />
<a href="http://picasaweb.google.com/lh/photo/mznUAJxBiSBBPUd7AoZTXA?feat=embedwebsite"><img alt="CVS for Eclipse" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUi_mMxuaYlu0jnfFYFtDetnx4q-1q8GG73nDXQFBWzNg7hdmI9iYxOVOh5OCoEU7hGx2swPfPNXm52BTuhq2lzbKdoCEEEvZoJ7popf1HF1fRuApK1UhbNKvtrImpTT5D9yMkIedIHOXd/s400/Noname10.jpg" /></a><br />
<br />
參考資料:<br />
<a target="_blank" href="http://soft.zdnet.com.cn/software_zone/2007/0830/479038.shtml">分享Ubuntu Linux上边的CVS服务器的配置</a><br />
<a target="_blank" href="http://blog.csdn.net/farleyzhang/archive/2007/06/13/1651236.aspx">Ubuntu CVS服务器设置</a><br />
<a target="_blank" href="http://www.yuanma.org/data/2006/0424/article_299.htm">Ubuntu下CVS服务器的搭建</a><br />
<a target="_blank" href="http://tech.ddvip.com/2007-09/118957746634193.html">Ubuntu Linux操作系统CVS安装与配置详解</a><br />
Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-64666767740687962912007-10-25T22:41:00.003+08:002013-06-11T20:50:30.901+08:00為了 Web Server 忙一天! [Linux]今天又是做了很沒有效率的事,因為 Web Server 一直不能正常 Work,花了很多時間在找問題,原本是安裝系統選單中的 LAMP 套件,做了一些設定後,只有 Apache 運作是正常的,PHP 則是找不到相關 Lib,又是上網找了一堆資料,還到處求助同學,就因為效能的考量必須用到 Linux。<br />
<br />
想說套裝的 Ubuntu Linux 應該安裝好就能 Work,但卻不是我想的那麼快樂,雖然是有學到東西,但花的時間實在太多了,真想利用自己的時間慢慢做,不過所花的時間是值得的,在效能上的確比 Windows 快,而且所耗費的資源也很低,今天的問題就是預設的程序中少安裝了幾個套件。<br />
<br />
<span style="color: rgb(0, 0, 204);">sudo apt-get install apache2 </span><br />
<span style="color: rgb(0, 0, 204);">sudo apt-get install php5</span><br />
<span style="color: rgb(0, 0, 204);">sudo apt-get install mysql-server</span><br />
<span style="color: rgb(255, 0, 0);">sudo apt-get install php5-mysql </span><br />
<span style="color: rgb(255, 0, 0);">sudo apt-get install libapache2-mod-php5 </span><br />
<span style="color: rgb(255, 0, 0);">sudo apt-get install libapache2-mod-auth-mysql</span><br />
<span style="color: rgb(255, 0, 0);">sudo a2enmod php5</span><br />
<br />
藍色的指令是 LAMP 預設安裝的,紅色的指令是我自己後來裝上去的,安裝完後就可以正常 Work,真是給他卡到陰,出現了莫名其妙的怪問題,我還一直以為是我設定錯誤。<br />
<br />
相關教學:<a target="_blank" href="http://wiki.ubuntu.org.cn/index.php?title=LAMP%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E9%85%8D%E7%BD%AE&variant=zh-tw">LAMP伺服器的配置</a>Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com0tag:blogger.com,1999:blog-5946530704742130970.post-26112411527571179502007-10-24T23:26:00.002+08:002012-03-08T16:01:43.517+08:00初次使用 Ubuntu [Linux]今天為了將 Server 架起來,花了不少時間,由於以前很少使用 Linux 的作業系統,所以上網找了很多資料來看,為了安裝 FTP Server 找了半天,結果原來光碟裡已經有套裝軟體了,就是這行 <br /><span style="color: rgb(255, 0, 0);">sudo apt-get install vsftpd </span><br />安裝指令,既簡單又快速,囧!我花了那麼多時間是在幹嘛!!快炸掉了!而且有很多不常用的指令,Ubuntu 預設都沒有裝,反正也不會用到,後來去了 Ubuntu 論壇看到不少有用的資料,看來我有點跟不上時代了,原來已經不用像以前那麼麻煩了,真是方便的說,明天就可以將 Web 的設定完成了,今天進度有點落後!Jax Huhttp://www.blogger.com/profile/01953021685585893658noreply@blogger.com1