「筆記」FreeBSD 7.2R 安裝學務系統

FreeBSD 6.1學務系統架設記錄



FreeBSD 7.2R 學務系統架設、移機記錄
Description :

所有軟體安裝皆採用 ports 安裝,軟體安裝前已先更新過 ports tree。

Environment :

*OS:FreeBSD 7.2 Release
* mysql-server-4.1.25:/usr/ports/databases/mysql41-server/
* apache-2.2.11_7:/usr/ports/www/apache22
* php5-5.2.10:/usr/ports/lang/php5

進行時間校正︰

#ntpdate  clock.stdtime.gov.tw
設定make.conf
FreeBSD為您預先設置了個 make.conf 檔案,它的位置在 /usr/share/examples/etc/make.conf,請將 它複製一份成為 /etc/make.conf。
#cp /usr/share/examples/etc/make.conf /etc/make.conf
#vi /etc/make.conf
MASTER_SITE_BACKUP?= \
ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
ftp://ftp3.tw.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
ftp://ftp6.tw.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
ftp://ftp8.tw.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}

/etc/make.conf 這個檔案其實並非一定要存在的,沒有它的存在,您一樣能使用您的 FreeBSD,但是如果您使用了它,相信您會更加方便的。由 make.conf 這個檔案名稱中,我們不難聯想到與 make 這個編譯指令有關。我們可以將一些固定使用的 make 參數給加進這個 make 參數設置檔裡頭,像是針對所使用的中央處理器 (CPU) 型號所設定的編譯參數 CPUTYPE?=i686 或是指定使用 ports-tree 安裝套件時,抓取原始碼包的伺服器以加快原始碼包的下載速度︰

解決ssh到FreeBSD的中文亂碼
使用 CSH 方式如下:在 /etc/csh.cshrc 加入下面三行後重開機即可 show 中文編碼。
#vi /etc/csh.cshrc

setenv LANG zh_TW.Big5
setenv LC_CTYPE en_US.ISO8859-1

安裝  CVSup
#cd /usr/ports/net/cvsup-without-gui
不裝Xwindows時用此安裝才不會裝了一堆X11的東西
#make install clean
以下選項皆不選

在系統中有一份以 CVSup 更新 port tree 的設定檔範例,可以直接加以修改或著先複製一份後再修改。
我們將該設定檔範例複製到 /root 之後再加以修改:
# cp /usr/share/examples/cvsup/ports-supfile /root/
接著請以文書編輯軟體打開 /root/ports-supfile 後,找到 host 的部份來設定所要使用的 CVSup 伺服器。
# ee /root/ports-supfile
修改成
*default host=cvsup.tw.freebsd.org

上面的範例中,我們將 CVSup 伺服器設為 cvsup.tw.freebsd.org,您可以依您所在位置使用其它 cvsup1 ~ cvsup13.tw.freebsd.org 的伺服器。最後一行的 ports-all 表示我們要更新 /usr/ports 目錄下的所有檔案。您也可以只更新其中的部份目錄,只要將 ports-all 以井字號 "#" 標示起來,並將檔案中 ports-base 那一行的 # 移除,接著您就可以依您所要更新的目錄來要移除其它的 # 字號。例如,我們只要更新 /usr/ports/www 這個目錄,將 ports-all 以 # 標示起來之後,我們還要移除 ports-base 及 ports-www 開頭的 #。
設定完畢之後,我們就可以開始進行 ports 的更新了。
# reboot
ports 更新
# cvsup -g -L 2  /root/ports-supfile

安裝portupgrade
#cd /usr/ports/sysutils/portupgrade
#make install clean
# reboot

更新 PORTS-Tree 且升級已安裝的軟體
到/usr/ports下可以直接打make fetchindex,去抓現成的來用
#cd /usr/ports
#make fetchindex

更新locate資料庫
#/usr/libexec/locate.updatedb

安裝 MySQL41 ( Server/Client )

#cd /usr/ports/databases/mysql41-server/
修改Makefile 中的CONFIGURE_ARGS;新增--with-charset=big5
#make install clean

#ee /etc/rc.conf       #  設定 mysql 重開機自動啟動
加入
mysql_enable="YES"

#reboot     #  重開機讓 mysql 啟動
設定mysql密碼
# mysqladmin -u root password '*********'
測試mysql
#mysql –u root –p
Mysql>show databases;
Mysql>quit
#netstat -na |grep LISTEN      #  確認 mysql server 有啟動

tcp4       0      0  *.3306                *.*                   LISTEN

安裝 Apache22

在/usr/ports/www/apache22中,先要修改Makefile中MPM为worker模式。然后就是
make WITH_CHARSET=big5 WITH_XCHARSET=all WITH_MPM=worker WITHOUT_IPV6=yes WITH_THREADS=yes WITHOUT_SSL=yes install clean

最后装完了需要在/etc/rc.conf中apache22_enable="YES"一下,就算ok了。
#cd /usr/ports/www/apache22
#make install
移除ipv6其他預設安裝即可

#ee /etc/rc.conf      #  設定 apache2 開機自動 up
加入
apache22_enable="YES"
建立網頁根目錄
#mkdir /var/www
編輯apache設定
#ee /usr/local/etc/apache22/httpd.conf    #編輯apache設定

//存放網頁的目錄,原來為DocumentRoot "",改成︰
DocumentRoot "/var/www"
//這句應該和DocumentRoot 的目錄保持一致,原來為<Directory "">,改成︰
<Directory "/var/www">
//Indexes︰當在目錄中找不到DirectoryIndex列表中指定的文件就生成當前目錄的文件列表
//FollowSymlinks︰允許符號鏈接跟隨,訪問不在本目錄下的文件
Options Indexes FollowSymLinks
//禁止讀取.htaccess配置文件的內容
AllowOverride None
//指定先執行Allow(允許)訪問規則,再執行Deny(拒絕)訪問規則
Order allow,deny
//設置Allow(允許)訪問規則,允許所有連接
Allow from all
</Directory>

ServerAdmin admin@test.edu.tw
ServerName 127.0.0.1
AddDefaultCharset big5
DirectoryIndex index.php index.html index.htm index.html.var

<Directory "/usr/local/www/sfs3">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

vi /usr/local/etc/apache22/Includes/sfs3.conf
Alias /upfiles/ '/usr/local/www/sfs3/data/'
<Directory '/usr/local/www/sfs3/data/'>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

vi /usr/local/etc/apache22/extra/httpd-vhosts.conf

<VirtualHost *:80>
ServerAdmin chiou@tshes.tcc.edu.tw
DocumentRoot /usr/local/www/sfs3
ServerName sfs3.tshes.tcc.edu.tw
ErrorLog /var/log/sfs3.tshes.tcc.edu.tw-error_log
CustomLog /var/log/sfs3.tshes.tcc.edu.tw-access_log common
</VirtualHost>
#/usr/local/sbin/apachectl  start
#ps -ax |grep http      #  確認 apache 有啟動

70558  ??  Ss     0:00.06 /usr/local/sbin/httpd -k start
70559  ??  S      0:00.01 /usr/local/sbin/httpd -k start
70560  ??  S      0:00.01 /usr/local/sbin/httpd -k start
70561  ??  S      0:00.01 /usr/local/sbin/httpd -k start

httpd啟動,ps xa | grep httpd 出現-DNOHTTPACCEPT訊息
82178 ?? Ss 0:00.43 /usr/local/sbin/httpd -DNOHTTPACCEPT
82179 ?? I 0:00.01 /usr/local/sbin/httpd -DNOHTTPACCEPT
若在/etc/rc.conf裡多增加
apache22_http_accept_enable="YES"
則該-DNOHTTPACCEPT就不會出現

[Wed Sep 13 13:15:24 2006] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

安裝 PHP4 + php4-session
#cd /usr/ports/lang/php5
#make install clean

如果下次安裝未出現此畫面可用#make config的指令

#ee /usr/local/etc/apache22/httpd.conf        #  修改 apache2 設定讓 php 運行在 apache2
找到#AddType application/x-tar .tgz 這行,在下面加兩行。

#php_mod4
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
找到下面一行在后面加上index.php,這表示網站的默認頁也能夠為index.php

DirectoryIndex index.html index.html.var index.php index.htm

#cd /usr/local/etc
#cp /usr/local/etc/php.ini-dist php.ini
#ee /usr/local/etc/php.ini
default_charset = "zh-TW"
session.save_path = /tmp
現在php4 的各個 extension 分開放在 ports 中。
像是 php4 mysql extension, it is in /usr/ports/database/php4-mysql directory.
安裝php4-mysql
#cd /usr/ports/databases/php4-mysql
#make install clean
#reboot

#ee /usr/local/etc/php.ini
session.auto_start 的值改為1
#  安裝 php4-session 是 postfixadmin 需要用到的,所以是必須要加裝的,在安裝 php4-extensions 的時候
會跳選項~~ 但是第二次 進行make install時 他怎樣都不會在跳選項讓我選了請打make config

#cd /usr/ports/www/php4-session/
#make install clean

#apachectl  restart        #  重新起動 apache
#ee /usr/local/www/apache22/data/index.php
<?
phpinfo();
?>
開個瀏覽器測試 php4 有無安裝成功:  http://88.88.88.88/index.php

安裝php4-pcre
#cd /usr/ports/devel/php4-pcre
#make install
安裝學務系統
#cp sfs_********.gz /usr/local/www/apache22/data/
#cd /usr/local/www/apache22/data/
#tar zxvf sfs-3.xxxx.tar.gz
#./setup.sh

參考文章:

FreeBSD 6.1學務系統架設記錄


雲林縣學務系統:


學務系統自動更新作業篇


自動更新篇:以下文章來自於雲林縣學務系統交流網
◎ 提供目前學務系統自動更新作業方法

【PHP自動更新程式作法】

1 請在/root下將底下的程式碼存成upsfs3.php

2.upsfs3.php程式碼內容如下:(參考自台中縣學務系統交流網)
#!/usr/local/bin/php
<?php
//sfs3 安裝目錄 (請根據貴校學務系統實際安裝路徑修改)
$SFS_INSTALL_PATH="/usr/local/www/apache22/data/sfs3";

$SFS_TEMP_DIR="/tmp/sfs3_stable";
if (is_dir($SFS_TEMP_DIR)) {
exec("rm -rf ".$SFS_TEMP_DIR);
}

if (file_exists("/tmp/sfs_stable.tar.gz")) {
exec("rm -f /tmp/sfs_stable.tar.gz");
}

if (!is_dir($SFS_INSTALL_PATH)) {
echo "Oh! Error! .... File *** sfs3 *** not exists!\n";
echo "Please run ./setup.sh first!\n";
exit;
}

$SFS_TAR_FILE="http://sfscvs.tcc.edu.tw/sfs_stable.tar.gz";

exec("wget -q ".$SFS_TAR_FILE." --directory-prefix=/tmp");
exec("tar zxf /tmp/sfs_stable.tar.gz -C /tmp");
exec("cp -a ".$SFS_TEMP_DIR."/* ".$SFS_INSTALL_PATH);

include $SFS_INSTALL_PATH."/sfs-release.php";

echo "Update to ".$SFS_BUILD_DATE."\n";
?>

3.變更權限:chmod 700 upsfs3.php 即可執行(./upsfs3.php)

4.自動排程:將執行upsfs3.php寫在/etc/crontab
# vi /etc/crontab,加入以下內容:(例:每天早上1時30分自動執行更新程式)
30 1 * * * root /root/upsfs3.php

《補充》上述程式需用到wget, 請用port來安裝(FreeBSD底下)
#cd /usr/ports/ftp/wget
#make install clean

【Shell Script自動更新程式作法】

1 請在/root下將底下的程式碼存成upsfs3.sh

2.upsfs3.sh程式碼內容如下:(參考自立仁國小陳勝元講義)
#! /bin/sh
# SFS_PATH為安裝目錄 (請根據貴校學務系統安裝路徑修改)
# LOGO_PATH為貴校自訂LOGO(檔名請命名為logo_bak.png)
SFS_PATH="/usr/local/www/apache22/data/sfs3"
LOGO_PATH="$SFS_PATH"/themes/new/images

rm -f /root/sfs_stable.tar.gz
rm -rf /root/sfs3_stable
cd /root
fetch http://sfscvs.tcc.edu.tw/sfs_stable.tar.gz
tar zxf /root/sfs_stable.tar.gz
cp -Rf -p /root/sfs3_stable/* $SFS_PATH/
rm -f $SFS_PATH/install.php
cp -p $LOGO_PATH/logo_bak.png $LOGO_PATH/logo.png
# 產生更新紀錄檔upsfs3.log (如不需要可在前面註解 #)
echo `date +%Y%m%d`" sfs3 update OK !" >> upsfs3.log

3.變更權限:chmod 700 upsfs3.sh 即可執行(./upsfs3.sh)

4.自動排程:將執行upsfs3.sh寫在/etc/crontab
# vi /etc/crontab,加入以下內容:(例:每天早上1時30分自動執行更新程式)
30 1 * * * root /root/upsfs3.sh

留言

這個網誌中的熱門文章

電腦科評語

拔河技巧

三小時架好 FreeNAS 私有雲(3)