Server
======
Put rsyncd.conf to /etc/xinetd.d/ .
Put rsyncd.secrets to /etc.
Then turn on rsync service: chkconfig rsync on
Client
======
Edit a text file contained your password and named “password”.
Then,
export RSYNC_RSH=/usr/bin/ssh
Run this to get the source from rsync server:
rsync -vzrtopg –progress –delete root@172.16.97.212::cpp . –password-file=/root/password
If you modified some thing, want to put them to rsync, run this command:
rsync -vzrtopg –progress –delete . root@172.16.97.212::cpp –password-file=/root/password
Notice
======
1. Server: The owner and permission of secret file must be correct! (0600)
2. Client: The owner and permission of password file must be correct, too!! (0600)
3. You may refer the log file to find why error happened.
rsyncd.conf
===========
uid = root
gid = root
use chroot = no
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
lock file = /var/run/rsync.lock
[cpp]
path = /root/cpp
comment = root
ignore errors
read only = no
list = yes
auth users = root
secrets file = /etc/rsyncd.secrets
rsyncd.secrets
==============
root:your-password
rsyncd usual syntax
===================
rsync -a srcdir remotehost:/destdir # Local -> Remote
rsync -a remotehost:/srcdir destdir # Remote -> Local
rsync -a -e ssh srcdir user@remotehost:/destidr # via SSH
rsyncd switchs
==============
-n Dry-Run, only simulate rsyncing.
-v,-vv,-vvv verbose.
–delete Remote all files in destination that doesn’t appear in source.
–delete-exclude Like –delete, but exclude specified files.
-z With compression.
-s Efficient with sparse files.
-b Append ‘~’ for existed files in destication.
–backup-dir=DIR Move existed files in destincation to DIR.
–exclude FILE Exclude specified files.
Remote syslogging
1.確定 /etc/services 裡面有 syslog 514/udp 這一行.
2.執行 /sbin/syslogd -r 啟動 syslogd daemon.
-r 是告訴 syslogd 開始傾聽 UDP port 514.
3.如果你有使用 iptables 或 ipchain 把某些 port 關掉的話,記得要作必要設定.
以下的指令表示只允許某個網段的機器才能使用 UDP port 514,而其他所有的網段則完全不能.
以保障這台用來作為 syslog 機器的安全.
iptables -A INPUT -p udp -s 192.168.2.0/24 -d 0/0 –destination-port 514 -j ACCEPT
iptables -A INPUT -p udp -s 0/0 -d 0/0 –destination-port 514 -j REJECT 或
ipchains -A INPUT -p UDP -s 192.168.2.0/24 -d 0/0 514 -j ACEEPT
ipchains -A INPUT -p UDP -s 0/0 -d 0/0 514 -j REJECT
4.在每台要 log 的機器上,編輯 /etc/hosts, 把 syslog 機器的 ip 加進去
192.168.2.23 parent.somedomain.com parent
5.同樣在每台要 log 的機器上,編輯 /etc/syslog.conf, 將目的檔由原本的
/var/log/messages, /var/log/….. 等改為 @parent
6.重新啟動或用 kill -HUP 讓 syslog 重讀設定,就完成了!!
mono Overview & xsp-0.2
今天心血來潮,連上Mono 官方網站(http://www.go-mono.net/)一看,版本已經是 0.19 ,然後又加了許多新玩意兒~Debugger, asp.net, ado.net…已經快要把 M$ 的 .NET Framework 實作完成了呢 🙂
Mono 簡單的說就是 Linux 上的 .NET Framework.
安裝方法很簡單,現在網站上有提供各種 Package: rpm, deb…都有,所以只要找到適合你版本的 Package, 下載回去安裝就行了.
我用的是 Red Hat 7.3 的版本
所以用
rpm -ivh libgc-6.1-1.i386.rpm libgc-devel-6.1-1.i386.rpm mono-0.19-1.i386.rpm mon-devel-0.19-1.i386.rpm
就完成安裝了~~
mono 的編譯:
當你寫好一個 .cs (c#的 source)以後,就可以用
mcs your-source.cs
進行編譯.
mono 的執行是比較特別的一點
雖然它實作 .NET Framework ,但執行的方法卻不是跟 .NET 一樣,直接執行就好
而是比較類似 java, 用 mono hello.exe 來執行.
接著是 xsp, xsp 等同於是 asp.net 的實作,只是他還包含了一個小的 Web Server,不過還沒有完全實作好~也暫時沒辦法把她掛到 Apache ,當作一個 module. 🙁
令我驚訝的是,它是用.NET 寫的.想了解 asp.net 內部如何實作的人,這是一個很好的途徑.
安裝方法很簡單,執行 make, make install 就行了
她會把檔案都安裝到 Makefile 所在目錄的 server/test 下.
不過,這一版 0.2 還有一些缺陷,所以依照他的 INSTALL 去做以後,還是不能順利的執行
據我明察暗訪之後,發現要:
1.必須先切換到 server/test 下,執行 ln -s server.exe xsp.exe
2.用 browser 瀏覽的時候,必須確實指定路徑,假設你把 xsp 解在 /root/xsp-0.2 ,也安裝在 /root/xsp-0.2 下的話,那麼,你在 browser 上應該要打 http://localhost:8080/root/xsp-0.2/server/test/index.aspx
這樣子就可以執行了~~
蠻令人驚訝的~
與資料庫連結的部份,我沒有去仔細測這部份,不過我想應該是可以執行的!
嗯~~
希望大家用力多多測試,並且把 bug 回報回去~
這樣子,大家才會有好東西可以用啦 🙂
bacula Overview
Bacula 一個提供備份 Solution 的 Open Source Project
http://www.bacula.org/
裡面主要分成五個部份:
– Director 負責 Backup/Restore/Verify 和 Archive 這幾個動作,它是 Daemon.
– Console 用來跟 Director 溝通的 Interface
– Files Client Program,也是一個 Daemon, 負責提供檔案屬性跟 Director所需的資料.
– Storage 負責讀/寫你的 Tape 或其他媒體.
– Catalog 維護索引或 Volume Database.
架構圖:
安裝請依照慣例的 ./configure, make, make install 三部曲即可
安裝完成以後,測試 conf 檔案是否有問題:
#bacula-dir -t
#bacula-fd -t
#bacula-sd -t
#console -t
如果想讓 bacula daemon 在開機時自行啟動的話:
#make install-autostart
只裝 File Daemon(Client) 的話,用:
#make install-autostart-fd
主要設定都在 bacula-dir.conf 裡面
可以定義 Storage, Schedule, Job….等等資訊.
bacula-sd.conf 主要定義 Storage, Device 相關資訊.此處需要跟 bacula-dir.conf 中的 Storage 相配合.
bacula-dir.conf
FileSet{} 定義需要備份的目錄或檔案.
Storage{}表示要放Archive 的地方.
Schedule{} 定義執行的排程.
Job{} 則定義工作,裡面則會用到前面所提到的 FileSet, Storage, Schedule 等設定.也可以在執行的前後先執行 Script或程式(RunAfterJob, RunBeforeJob).
還可以設定 Job, Volume …等的保留時間( Retention ).
另外也支援自動換片的 Device, 只要在 Device {} 裡面指定 Change Command = /sbin/xxxx
換片的指令即可.
提供的 PDF 文檔非常詳盡,有兩百多頁~~
也支援 Windows 的 File Daemon(Client Program)
看完以後
覺得整個架構很清晰
也蠻便於管理的~
只是很多東西都必須在 conf 檔中定義好
而無法利用 Client 程式動態的指定Job, Schedule, FileSet …等~
rpm-update
網址:http://www.kleemann.org/rpm-update/
如果你因為不想去 Red Hat 而不使用 up2date,那麼,你可以試試這個程式.
目前最新的版本是 20030102 這個版本.
網站除了 Source 之外,也提供 rpm 可以下載.
(其實也沒有什麼 Source 不 Source 的,因為它是用 Python 寫的)
下載之後,使用 rpm -ivh rpm-update-1-20030102.noarch.rpm 安裝~
安裝應該會很順利,rpm檔裡面只有一個檔案而已.
ok~那麼怎麼使用呢??
先建立此目錄 /var/cache/rpm-update, 因為後面其實會用到此目錄.
但作者可能忘記了.
用 rpm-update -l 列出所有的站台,它是到 Red Hat 網站把 mirror 的網頁抓下來,然後把所有的ftp位址都 grep 出來.
知道位址之後,就可以下載啦~
用 rpm-update -d –host linux.sinica.edu.tw –single 下載
-d 是指 download
–host 是指定位址
–single 則是請 rpm-update 依據目前電腦的 ix86 去抓檔案,如 i386, i686…等等~
用 rpm-update -r –single 進行分析,並列出報告
-r 是指 report
最後,當然就是用 rpm-update -i –single 進行安裝啦.
如果你懶得打那麼多指令
你也可以編輯 ~/.rpm-update/default 這個檔案
把選項都放進去,如:
host = linux.sinica.edu.tw
single
version = 7.3
以後 rpm-update 的時候,就不需要打 –host, –single,直接打 rpm-update -d, rpm-update -r…就行了
安裝完了,不想保留那些 rpm 檔案的話
可以用 rpm-update -c 把 rpm 檔案清除掉.
要讓它自動定期去尋找更新的 rpm,當然也可以放在 crontab 裡面
作者提供了一個不錯的用法:
(rpm-update -d && rpm-update -r) | mail -s “RPM Update” yourname@yourdomain.com
這樣子就行了.
Journaling File Systems
原文出自http://www.linux-mag.com/2002-10/jfs_01.html,本文僅做筆記摘錄,並翻譯摘錄部分.
Linux now offers four alternatives to Ext2: Ext3, ReiserFS, XFS, and JFS.
Linux 現在提供四種不同於 Ext2 的選擇: Ext3, ReiserFS, XFS, and JFS.
They supports journaling, a feature certainly demanded by enterprise, can simplify restarts, reduce fragmentation, and accelerate I/O.
她們都支援日誌(journaling),一個企業級所需的特色,它可以簡單的重新啟動,減少碎裂(fragmentation)和加速I/O.
Some vernacular of file systems:
一些關於 file systems 的常用語:
A “logical block” is the smallest unit of storage, measured in bytes, and it may take several blocks to store a single file.
一個 “logical block” 是 Storage 中最小的單位,以bytes作單位,而通常一個檔案會花好幾個 block 來存放.
A “logical volume” can be a physical disk or some subset of the physical disk space.
一個 “logical volume” 可以是一個邏輯磁碟或實體磁碟空間的集合.
“Block allocation” is a method of allocating blocks where the file system allocates one block at a time.
“Block allocation”:索取 block 的方法.
“Internal fragmentation” occurs when a file does not a fill a block completely.
“Internal fragmentation” 內部碎列,當有很多 block, 而每個 block 都沒有完全塞滿時.
“External fragmentation” occurs when the logical blocks that make up a file are scattered all over the disk.
“External fragmentation” 外部碎列,當一個檔案分散在很多且不同的 block 上時.
An “extent” is a large number of contiguous blocks. described by a triple, consisting of (file offset, starting block number, length), where file offset is the offset of the extent’s first block from the beginning of the file, starting block number is the first block in the extent, and length is the number of blocks in the extent. For large files, extent allocation is a much more efficient technique than block allocation.
“extent” 一堆連續的 blocks, 包含 file offset, starting block number, length. file offset 就是相對於檔案的位址, starting block number 就是起始的 block 號碼, length 就是 block 的數目.
“meta-data” is the file system’s internal data structures. Meta-data includes date and time stamps, ownership information, file access permissions, other security information such as access control lists (if they exist), the file’s size and the storage location or locations on disk.
“meta-data” 就是 file system 的內部資料結構. 包含日期和時間戳記,擁有者,存取權限以及其他安全性資訊,檔案長度,和位置…
An “inode” stores all of the information about a file except the data itself. as a “bookkeeping” file for a file. An inode contains file permissions, file types, and the number of links to the file. It can also contain some direct pointers to file data blocks; pointers to blocks that contain pointers to file data bocks (so-called indirect pointers); and even double- and triple-indirect pointers. Every inode has a unique inode number.
“inode” 儲存檔案除了資料以外的所有資訊. 每個 inode 都有一個獨一無二的號碼.
A “directory” is a special kind of file that simply contains pointers to other files. Specifically, the inode for a directory file simply contains the inode numbers of its contents, plus permissions, etc.
“directory” 一種特殊的檔案,簡單的包含其他檔案的指標.當然也有 inode 和存取權限等資訊.
Corruption occurs because the logical operation of writing (or updating) a file is actually a sequence of I/O, and the entire operation may not be totally reflected on the media at any given point in time.
錯誤的發生是因為寫入(或更新)檔案的邏輯動作是循序的 I/O 動作,而這整個動作並未完全地反映到實際媒體上.
The magic of journaling file systems lies in transactions.
Journaling file system 的魔法是依賴於 transaction 之上.
treats a sequence of changes as a single, atomic operation.
就像是一個循序的改變,如同一個單一,極微的動作.
tracks changes to file system meta-data and/or user data.
追蹤 file system meta-data 和(或)使用者資料的變化.
The journal in a journaling file system is simply a list of transactions.
Journal 在 journaling file system 簡單的說就是一個 transaction 的列表.
In the event of a system failure, the file system is restored to a consistent state by replaying the journal.
在系統發生錯誤時,file system 就依照目前的狀態,回頭播放一次 journal.
inspects only those portions of the meta-data that have recently changed.
審查這些 meta-data 有被變動過的部份.
also address another significant problem: scalability.
但也有另外一個值得注意的問題: scalability 可靠性.
Features of modern file systems include:
現代檔案系統的特色:
– Faster allocation of free blocks. Extents (as described above) and B+ trees are used individually or together to find and allocate several free blocks, either by size or location, quickly.
快速地配置. Extents 和 B+ trees 被單獨(或一起)用來快速地尋找和配置數個閒置的 block.
– Large (or very large) numbers of files in a directory.
在一個目錄中能存在大量或很大量的檔案.
– Large files.
大量的檔案.
Ext3
designed to provide higher availability without impacting the robustness (at least the simplicity and reliability) of Ext2.
被設計來提供高可用度而使得 Ext2 不需面對太強的衝擊.
uses the same disk layout and data structures as Ext2, and it’s forward- and backward-compatible with Ext2
使用和 Ext2 相同的 disk 配置和資料結構, 而且它可以向前或向後相容於 Ext2.
limitations that Ext2 has. The fixed internal structures of Ext2 are simply too small (too few bits) to capture large file sizes, extremely large partition sizes, and enormous numbers of files in a single directory. Moreover, the bookkeeping techniques of Ext2, such as its linked-list directory implementation, do not scale well to large file systems (there is an upper limit of 32,768 subdirectories in a single directory, and a “soft” upper limit of 10,000-15,000 files in a single directory.)
限制和 Ext2 相同.固定的Ext2內部結構太小(太少bits),且使用的 Link list 在大磁碟環境下表現不佳.
Switching to Ext3
# tune2fs -j /dev/hdb3
Ext3 provides three data journaling modes that can be set at mount time: data=journal, data=writeback, and data=ordered. The data=journal mode provides both meta-data and data journaling. data=writeback mode provides only meta-data journaling. data=ordered mode, which is the default mode, provides meta-data journaling with increased integrity.
提供三種模式: data=journal(保護最完整), data=writeback(只保護 meta-data), data=ordered(預設,保護 meta-data之外,即較完整的journaling).
By the way, the 2.4 kernel has a limit of 2048 Gb for a single block device, so no file system larger than that can be created at this time (without patching the standard kernel). This restriction could be removed in the 2.5.x development kernel, and there are patches available to remove this limit, but as of 2.5.29, the patches haven’t been officially included yet.
目前 2.4 仍然有 2048Gb 的限制.
ReiserFS
One of the unique advantages of ReiserFS is support for small files — lots and lots of small files.
比較大的特色是支援小檔案,很多很多的小檔案.
ReiserFS is about eight to fifteen times faster than Ext2 at handling files smaller than 1K.
在處理很多小於1k的檔案時,它比 ext2 快七到八倍.
ReiserFS can actually store about 6% more data that Ext2 on the same physical file system.
在和 Ext2 相同的情況下,她也可以存比 Ext2 多 6% 的資料.
ReiserFS can allocate the exact space that’s needed. A B* tree manages all file system meta-data, and stores and compresses tails, portions of files smaller than a block.
只配置實際所需的空間. 使用了 B* tree 管理.
also has excellent performance for large files, but it’s especially adept at managing small files.
同時也對大檔案有很好的效能,但他特別適合用來處理小檔案.
JFS
JFS uses many advanced techniques to boost performance, provide for very large file systems,
使用了很多先進的技術來加速.
SGI’s XFS (described next) has many similar features. Some of the features of JFS include:
XFS 也用了相似的技術. 這些技術包含了:
– Extent-based addressing structures. along with aggressive block allocation policies to produce compact, efficient, and scalable structures for mapping logical offsets within files to physical addresses on disk. This feature yields excellent performance.
Extent-based 定址的資料結構.
– Dynamic inode allocation. JFS dynamically allocates space for disk inodes as required, freeing the space when it is no longer required. Additionally, this feature decouples disk inodes from fixed disk locations.
動態的 inode 配置.自動配置所需的空間,並釋放不需要的空間.
– Directory organization. Two different directory organizations are provided: one is used for small directories and the other for large directories.
目錄的組織,使用了不同的目錄組織來分別處理大的和小個檔案.
– 64-bits. JFS is a full 64-bit file system. This allows JFS to support large files and partitions.
64-bits. 完全的 64-bit file system.
– such as allocation groups (which speeds file access times by maximizing locality), and various block sizes ranging from 512-bytes to 4096-bytes (which can be tuned to avoid internal and external fragmentation).
還有,配置群組及可變動的 block-size.
XFS
A single XFS file system can be 18,000 petabytes (that’s 1015 bytes) and a single file can be 9,000 petabytes. XFS is also capable of delivering excellent I/O performance.
一個單一個 XFS file system 最大可以到 18,000 petabytes 和單一檔案可達 9,000 petabytes. 同時也有能力提供最好的I/O效能.
uses many of the same techniques found in JFS.
使用了許多和 JFS 相同的技術.
vsftpd Overview
網址: http://vsftpd.beasts.org
vsftpd 她是目前號稱最安全的 FTP Server.
也是目前 Red Hat 8, Open BSD, Suse 所採用的 ftp server.
最新的版本是 1.1.3.
下載 tarball 以後,解開~
她不需要特別 configure, 只需要 make, make install 就可以了
make會自動安裝到 /usr/local/sbin 下面去~
而 conf 檔,則需要自行把 tarball 內附的 vsftpd.conf 複製到 /etc 去才行.
預設的 Server Type 是 inetd, 而不是 Standalone 型態~
所以你需要用 kill -HUP xinetd-pid
來請求 xinetd 重新載入 configuration.
預設的 Configuration 也很安全,完全不讓人登入,也不讓你寫入….非常的…嗯…安全~
你需要在 vsftpd.conf 裡面修改這幾個設定才能讓一般的使用者能登入並擁有寫入的權限:
local_enable=YES
write_enable=YES
如果要讓他以 Standalone 型態起來,則可以在設定裡面置入
listen=YES
並在 /etc/rc.d/init.d 裡面放 script 就行了
至於其他的設定,可以自行用 man vsftpd.conf 來找到用法.
和 proftpd 比較起來
設定是簡單了許多
蠻有那種樸實無華的味道~
再加上檔案又小~
沒什麼可以挑剔的~
期待 2.0 吧
2.0 的 beta 已經 release 了~
相信正式版應該很快就會 Release.
CVS 簡易說明
我們先假設 192.168.0.1 有安裝 cvs server
並且有三個專案在上面
怎麼用??
0. 確定自己電腦上有安裝 cvs
一般來說,如果是 Red Hat 或 Mandrake,那麼預設會有安裝
如果是其他的,我就不知道了
請到 www.cvsroot.org 去下載套件並安裝之
1. 設定
#當然你如果習慣用 vi, 這邊的 EDITOR 就設為 vi 的路徑
export EDITOR=/usr/bin/vim
#此處的 username, 要替換為自己的 username
export CVSROOT=:pserver:username@192.168.0.1:/home/cvsroot
export CVSREAD=yes
你可以把這些敘述放到 /etc/profile 或 /root/.bash_profile 裡面
免得以後每次用的時候還要再打一次
2. login
輸入
cvs lgin
cvs 會要求你輸入密碼,此密碼就是你在 192.168.0.1 上的密碼
3. checkout 將專案下載到你的電腦上
所以你可以打
cvs checkout clockd
cvs checkout helloworld
cvs checkout qt
把專案下載到自己的電腦上
4.
做完 checkout 後,你可以看到自己的電腦上出現了專案
先輸入 cvs edit xxxx
然後就可以做編輯了,你可以試著亂改, 加上一些註解或無聊的程式碼
做完修改後,當然要放回 server 囉
你可以用
cvs commit [檔案名稱]
指令來更新回 server, 更新之前, cvs 會打開 editor 讓你輸入一些文字,為這次的修改作一些說明
對了,如果別人在你修改之前修改了這個檔案,那麼 cvs 會自動將檔案作合併,讓你再去做編輯,請務必玩一玩
5.
如果要看目前的狀況,就打
cvs status [檔案名稱]
cvs diff [檔案名稱]
cvs history [檔案名稱]
來查看各種狀況
6.
不想要這個檔案加入版本管理的話,得先刪除該檔案後,再使用
cvs remove [檔案名稱]
來移除
7.若要登出 cvs server,則輸入 cvs logout 即可
autofs 的應用
這是在這一期(2002/05)的 Linux Journal 看到的~~
以下是我的摘錄:
首先先假設你已經有了一堆 iso 檔案~
如果沒有
你可以用 cat /dev/cdrom > image1.iso 來建立 iso 檔案
要不然也可以利用免費的 iso buster 來建立 iso 檔案
再放到 Linux 上去
我們把這些 iso 檔案都放到 /mnt/images 下面
然後安裝 automount 套件~~
這個套件,CD 裡面應該就有附上了~
安裝以後,利用 chkconfig –list automount
確定 automount 會開機時自動啟動.
編輯 /etc/auto.master,
加上
/mnt/isosrv_auto /etc/auto.isorv –timeout=60
這表示 automount 會參考 /etc/auto.isorv 這個設定檔,自動掛載設定中的檔案系統到 /mnt/isosrv_auto 下
建立 /etc/auto.isorv
加上
image1 “tab” -fstype=iso9660,ro,loop “tab” :/mnt/images/redhat73_1.iso
上面這行的 表示要用 tab 分開(這是我自己實驗後的心得,automount 似乎會認格式)
image1 表示會在 /mnt/isosrv_auto 下建立的目錄名稱
-fstype=iso9660,ro,loop 表示檔案系統及參數
:/mnt/images/redhat73_1.iso 表示來源的所在位置
這樣設定之後
當你 ls /mnt/isosrv_auto/image1 的時候,linux 就會自動幫你掛載上去了
因為 ls /mnt/isosrv_auto 的時候,並沒有東西顯示,也因此無法得知有什麼目錄可以使用,此時可藉著 symbolic link 解決此問題
舉例來說,我們又另外建立 /mnt/CDs
然後在 /mnt/CDs 下建立 symbolic link 連結到 /mnt/isosrv_auto/image1
ln -s /mnt/isosrv_auto/image1 image1
這樣當你 ls /mnt/CDs 的時候
不就知道有什麼目錄了嗎?
套件的名字是叫做 autofs
後記:後來才知道除了 isofs 之外,這也能把一些其他的 filesystem 掛載進來,所以能應用的範圍就更廣囉.比如說可以配合 crond 用在自動備份上面,也是非常方便的呢. ^_^
cvsweb.cgi
前幾天, 友人找到一個不錯的 cvs web 介面,粉漂亮
是用 Perl 寫的CGI,於是我試著把他裝在 cvs server 上面~
一般的安裝方法,就是找到你的 httpd 伺服器,然後放在 cgi-bin/ 下面
以 redhat 為例,就是放在 /var/www/cgi-bin/ 下面
並且把執行的屬性改為執行~執行的擁有者改為適當的擁有者
但是在安裝以後
發現友人給我的檔案無法使用
於是我 follow 該檔裡面的網址前去下載~~
網址如下:
http://www.freebsd.org/cgi/cvsweb.cgi/www/en/cgi/cvsweb.cgi/
下載之後
發現仍然無法使用
他告訴我還需要
cgi-style.pl
我的老天,網海茫茫,到哪裡去找??
後來突然發現
http://www.freebsd.org/cgi/cvsweb.cgi/www/en/cgi/
這邊就可以看到 cgi-style.pl
下載之後
又發現我沒有 cvsweb.conf
於是再次從
http://www.freebsd.org/cgi/cvsweb.cgi/www/en/cgi/
找到 cvsweb.conf
這樣子,檔案就全部到齊了
請用編輯器打開 cvsweb.cgi, 找到以下這行
for (“$mydir/cvsweb.conf”, ‘/usr/local/etc/cvsweb/cvsweb.conf’) {
加入 /etc/cvsweb.conf,於是就變成
for (“$mydir/cvsweb.conf”, ‘/usr/local/etc/cvsweb/cvsweb.conf’,’/etc/cvsweb.conf’) {
然後再用編輯器打開 cvsweb.conf, 找到以下這行
@CVSrepositories = (
…….
);
這個 Perl 陣列裡面就是你的 CVS 存放的位置也就是 CVSROOT 所指的位置
請修改之以符合你的環境.
假設,你的 CVSROOT 是 /home/cvsroot/, 裡面有一個 respository 為 libs
那麼裡面就應該是
‘libs’ => [‘libs’, ‘/home/cvsroot’],
緊接著@CVSrepositories 下面,你會看到 %MIRRORS
如果你的 CVS Server 有 Mirror 的話
也請修改,否則的話,就把他清成空的,像是這樣~
%MIRRORS = (
);
修改之後,再打開瀏覽器去執行,果然看到 cvsweb 漂漂的畫面
一切就大功告成了~~