Free 主機維護參考手冊
Contents of "Free 主機維護參考手冊"
此文記錄 free.twaren.net 上之相關軟、硬體配置,其中包含:
用來作為日後系統維護時之參考
10G Switch list 使用網段為 192.168.108.X,既有設備列表:
- 192.168.108.61, libre vm server, Thomas/2U/
- 192.168.108.241 free3-dell-idrac
- IP : 211.73.64.9
- DN :
- (TWAREN domain) free.twaren.net
- (NCHC domain) : free2(free, openoffice, opensource,drbl 尚未轉移名稱).nchc.org.tw
- 開放服務 :
Service | Package name | Detail |
ssh | openssh-server | |
web | apache2 | http :80 , https :443 |
svn | subversion, libapache2-svn | http://free.twaren.net/svn/project-name |
ftp | pure-ftpd | port: 21 |
- Local drive
- /dev/cciss/c0d0 : 160.0 G : 160G x2 :RAID 1
- 給 swap, /, home 使用
- /dev/cciss/c0d0 : 160.0 G : 160G x2 :RAID 1
- /dev/cciss/c0d1 : 4000.6 G : 1T x6 : RAID 5 + 1 for hot Spare
- 切單一分割區,--> /mnt/RAID1
- /dev/cciss/c0d1 : 4000.6 G : 1T x6 : RAID 5 + 1 for hot Spare
- SAN storage
- /dev/sda : 5997.9 GB : HBA WWN: 0x2000001b32908073 How to
- 切單一分割區,--> /mnt/SAN-STORAGE
- /dev/sda : 5997.9 GB : HBA WWN: 0x2000001b32908073 How to
主要針對在進行此主機維護時,會用到的路徑與設計說明。基於使用與管理設定方便,我將系統因為提 供服務所會用到的目錄,依被使用屬性分類放置於 /home 下(多數使用 symbolic link), 以下就 /home 下相關目錄(個人的家目錄不列入說明)做說明:
/home/aptadm |
作為主機 mirror 其他儲存庫實際執行帳號(aptadm) 之家目錄
|
/home/cvsroot |
為主機 cvs 服務存藏庫位置
|
UID:ftp 的家目錄, 作為 pubilc ftp access (Anonymous) 時的 fake user
| |
為鏡射資料的邏輯位置,主要用來給 web, ftp, mirror source 的統一路徑
dists type: debian -> /mnt/SAN-STORAGE/mirror/dists/debian linuxmint -> /mnt/RAID1/mirror/dists/linuxmint ... package typs: drbl-core -> /mnt/SAN-STORAGE/mirror/packages/drbl-core syslinux -> /mnt/SAN-STORAGE/mirror/packages/syslinux .... 之後,要用到這些資料,路徑統一用 /home/mirror/[dists or package name] 即可,如: 1. miroor script : Ex: /home/aptadm/bat/mirror-debian line 25: TO="/home/mirror/debian" Ex: /home/aptadm/bat/mirror-syslinux line4 : local_mirror_dir="/home/mirror/syslinux/" 2. Mirror service via http : /home/webroot/free.nchc.org.tw/debian -> /home/mirror/debian /home/webroot/free.nchc.org.tw/syslinux -> /home/mirror/syslinux 3. Mirror service via ftp : /home/ftproot/debian -> /home/mirror/debian /home/ftproot/syslinux -> /home/mirror/syslinux | |
/home/svnroot |
svn 專案存藏庫位置
|
/home/tracroot |
trac 專案存藏庫位置
|
/home/webadm |
|
| |
/home/webroot |
$ ls -l /home/webroot/free2.nchc.org.tw/ 總計 4 lrwxrwxrwx 1 ceasar ceasar 31 2010-01-26 15:41 drbl -> /home/mirror/packages/drbl-core lrwxrwxrwx 1 root root 31 2010-01-26 14:44 drbl-core -> /home/mirror/packages/drbl-core lrwxrwxrwx 1 ceasar ceasar 34 2010-01-26 14:42 drbl-winroll.web.en -> /home/web.arch/drbl-winroll.web.en lrwxrwxrwx 1 ceasar ceasar 26 2010-01-26 14:52 ezgo -> /home/mirror/packages/ezgo -rw-r--r-- 1 ceasar ceasar 338 2010-01-26 14:50 index.html lrwxrwxrwx 1 ceasar ceasar 28 2010-01-26 14:40 pmwiki -> /home/web.arch/pmwiki-2.2.10 lrwxrwxrwx 1 ceasar ceasar 28 2010-01-26 14:40 vm-image.arch -> /home/web.arch/vm-image.arch
e$ ls -l /home/webroot/drbl.nchc.org.tw lrwxrwxrwx 1 root root 29 2010-01-28 10:39 /home/webroot/drbl.nchc.org.tw -> /home/web.arch/drbl.web.zh_TW
|
其他重要目錄
/mnt/RAID1/Backup.arch |
主機定時備份資料存放路徑,擬採 aptadm account 進行備份,將備份系統重要設定檔,如: svn , apache, trac, mirror script,... 等其他無交附 svn 管理之資料
|
SVN 使用 列出目前 svn 上所管理的列表與說明
管理目前維護之網頁資料,有
需帳號、密碼存取 存取: 以 checkout drbl 中文網頁為例 svn co https://free.twaren.net/svn/web.arch/drbl.web.zh_TW drblweb |
SVN 同步
- svn 同步主機(svn slave)為 (ip: 140.110.27.54)主機上進行,由 svnadm 執行,script:/home/svnroot/bat/syncsvn, 詳細資料如下 :
$ sudo su - svnadm -c "crontab -l" # m h dom mon dow command # sync svn 0 * * * * /home/svnroot/bat/syncsvn
- Slave 上一樣提供 webdav + svn ,所以可由 'svn co http://140.110.27.54/svn/project-name/ 取得 svn 資料
svn co http://140.110.27.54/svn/web.arch/drbl.web.zh_TW svn co http://140.110.27.54/svn/drbl-winroll/trunk/ drbl-winroll
- 如何在 slave 上新增一個自動接受 rsync 的 svn (已 demo 為例)
- 準備 project 的 svn 目錄
sudo mkdir /home/svnroot/repository/demo sudo svnadmin create /home/svnroot/repository/demo sudo chown -R svnadm.www-data /home/svnroot/repository/demo; sudo find /home/svnroot/repository/ -type d -exec chmod 2775 {} \; sudo find /home/svnroot/repository/ -type f -exec chmod 664 {} \;
- 加入 "pre-revprop-change" , "start-commit" 到各 svn project hooh 中。此舉主要是避免此 slave 接受從其他來源的 commit
sudo cp /home/svnroot/hook.shell/{pre-revprop-change,start-commit} \ /home/svnroot/repository/demo/hooks
- pre-revprop-change 只允許 svnadmin 帳號變專案資訊
- start-commit 只允許 svnadmin 帳號進行 commit
- 要被同步的 project 進行初始化
svnsync init --sync-username 'svn admin account' file:///home/svnroot/repository/demo \ --source-username 'reader account' --source-password 'passord?' http://source.host/svn/demo/
- 之後要與 master 同步使用
svnsync sync --sync-username 'svn admin account' file:///home/svnroot/repository/demo \ --source-username 'reader account' --source-password 'passord?'
如何以 svn 進行網頁維護
- 以維護 drbl 中文網頁為例:
- 找台主機先把 drbl.web.zh_TW 透過 https checkout, 由於網頁內容可能有安全疑慮,所以需帳號密碼認証
svn co https://free.twaren.net/svn/web.arch/drbl.web.zh_TW/
或直接在 free 上的 /home/web.arch/drbl.web.zh_TW/ 以 webadm 身分修改
- 確認修改無誤後 commit ($ svn ci) 回去
- 登入 free 主機, 切換成 webadm 身分
$ sudo su - webadm
- 切換到 drbl.web.zh_TW 網頁實際儲藏庫下($ cd /home/web.arch/drbl.web.zh_TW)
- 做 svn update 動作即可(不需要重新 co or export)
$ svn update
- 當初在為避免安全問題,所以使用 local repository check out 方式
- 可參考 新增一個以 svn 管理的網頁專案
新增一個以 svn 管理的網頁專案
- 以新增 drbl-winroll 中文網頁為例
- 先將完成的專案網頁 import 進 svn, 需帳號密碼並建議以 https 連線
svn import drbl-winroll.web.zh_TW https://free.twaren.net/svn/web.arch/drbl-winroll.web.zh_TW/ \ -m "Import drbl-winroll zh_TW web pages"
- 登入到 server 上,並切換至 webadm 身分, 並切換至 /home/web.arch 目錄
$ sudo su - webadm; cd /home/web.arch
- 為避免安全問題,所以使用 local repository check out 方式建立
$ svn co file:///home/svnroot/repository/web.arch/drbl-winroll.web.zh_TW
說明建置此備援主機 (free2.nchc.org.tw)之流程:
sudo addgroup --gid 1005 git sudo addgroup --gid 6666 mirror_adm sudo adduser --system --home /home/aptadm --shell /bin/bash --uid 6666 --gid 6666 --disabled-password aptadm sudo adduser --system --home /home/webroot --shell /bin/false --uid 6667 --gid 65534 --disabled-password webadm sudo adduser --system --home /home/svnroot --shell /bin/false --uid 6668 --gid 65534 --disabled-password svnadm sudo adduser --system --home /home/gitpool --shell /bin/false --uid 1005 --gid 1005 --disabled-password git sudo adduser --system --home /home/ftproot --shell /bin/false --uid 110 --gid 65534 --disabled-password --disabled-login ftp # 同步 /home/aptadm 資料 sudo rsync -avP --delete --exclude=".lftp/*" free:/home/aptadm/ /home/aptadm/ # 同步 Backup.arch, gitpool, svnroot, web.arch 資料 sudo rsync -avP --delete --exclude="mirror/*" --exclude="ftproot/*" --exclude="webroot/*" \ free:/mnt/RAID1/ //mnt/sdb1/ # 同步 packages 資料 sudo rsync -avP --delete-before free:/mnt/SAN-STORAGE/mirror/packages/ /mnt/sdb1/mirror/packages/ # 同步 dists part-1 : skip fedora sudo rsync -avP --delete-before \ --exclude="centos/*" --exclude="debian-cd/*" --exclude="gentoo/*" \ --exclude="mandriva/*" --exclude="ubuntu-dvd/*" --exclude="scientific/*" \ --exclude="fedora/*" \ root@free:/mnt/SAN-STORAGE/mirror/dists/ /mnt/sdc1/mirror/dists/ # 同步 dists Prat-2 : skip manjaro sudo rsync -avP --delete-before \ --exclude="manjaro/*" \ free:/mnt/RAID1/mirror/dists/ /mnt/sdb1/mirror/dists/ # pure-ftpd Passive mode 設定 sudo vi /etc/pure-ftpd/conf/PassivePortRange 0000 50128
- How to get HBA WWN code in Linux
$ cat /sys/class/scsi_host/*/device/fc_host:*/node_name 0x2000001b12345678
- Import zh_TW version of drbl-winroll web page
svn import drbl-winroll.web.zh_TW https://free.twaren.net/svn/web.arch/drbl-winroll.web.zh_TW/ \ -m "Import drbl-winroll zh_TW web pages"
- Import FS lab pmwiki web page as a branch for demo project
svn import /path-to-pmwiwki/pmwiki/ https://server.url/svn/demo/pmwiki -m "Import FS lab pmwiki web pages"
- Export zh_TW version of drbl-winroll web page
svn co https://free.twaren.net/svn/web.arch/drbl-winroll.web.zh_TW/
- Export zh_TW version of drbl web page
svn co https://free.twaren.net/svn/web.arch/drbl.web.zh_TW/
- Apache2 中所使用的 RewriteEngine 模組
# Add by Ceasar RewriteEngine On # Avoid to access ".svn", "CVS" information via web RewriteCond %{REQUEST_URI} /\.svn.*$ RewriteRule ^(.*)(\.svn.*)$ /$1 [R] RewriteCond %{REQUEST_URI} /CVS.*$ RewriteRule ^(.*)(CVS.*)$ /$1 [R] # redirect http to https #RewriteCond %{HTTPS} off #RewriteRule !\..*$ https://%{HTTP_HOST}%{REQUEST_URI} #RewriteRule (/.*) https://%{HTTP_HOST}%{REQUEST_URI}