[moodle][apache][網管]moodle 搬家到獨立網址
這是一篇筆記!
為了因應未來的系統調整,要先將 moodle 移至獨立網址。目前先以同一台機器上的虛擬主機處理。大致步驟如下:
- 新增 DNS 紀錄,分配 IP 與 Domain 。
- 開通防火牆規則。
- 建立虛擬網卡並指定 IP 。
- 建立 apache 虛擬主機。
- 複製資料庫。
- 搬移 moodle 目錄及更改設定檔。
- moodle 改用 ldap 認證。
其中, DNS 、防火牆與 ldap 現在不歸我管,這裡只做建立虛擬主機與 moodle 搬家的筆記。
建立虛擬網卡
目前主機還是 Mandriva ,其他 Linux 系統或有不同。
首先,在 /etc/sysconfig/networking/devices 建立一個 ifcfg-eth0:2 的檔案如下:
ifcfg-eth0:2BOOTPROTO=none
DEVICE=eth0:2
NETMASK=255.255.255.0
MTU=""
BROADCAST=192.168.5.255
ONPARENT=yes
IPADDR=192.168.5.23
NETWORK=192.168.5.0
ONBOOT=yes
因為這已經是網卡 bind 第三個 IP 了,所以是 ifcfg-eth0:2 。
然後,複製一份到 /etc/sysconfig/network-scripts 目錄:
cp ifcfg-eth0:2 /etc/sysconfig/network-scripts/
重新開機,然後用 ifconfig 確認一下 eth0:2 是否有跑起來。
建立 apache 虛擬主機
這裡使用 IP-base Virtual host 。因為 moodle 的身份認證要使用 https ,要簽一個專用的憑證給他,所以才會需要一個獨立的 IP 。
在 /etc/httpd/conf/vhosts.d/ 目錄加入 moodle.conf 設定檔:
moodle.conf<VirtualHost 192.168.5.23:80>
DocumentRoot "/home/moodle/html"
ServerName moodle.nlhs.tyc.edu.tw
<Directory "/home/moodle/html">
allow from all
AllowOverride All
DirectoryIndex index.php index.htm
SetEnvIf User-Agent ^Baidu baidu
Deny from env=baidu
SetEnvIf User-Agent ^Sogou sogou
Deny from env=sogou
</Directory>
ErrorLog /home/moodle/logs/error_log
TransferLog /home/moodle/logs/access_log
</VirtualHost>
<VirtualHost 192.168.5.23:443>
DocumentRoot "/home/moodle/html"
ServerName moodle.nlhs.tyc.edu.tw
SSLEngine on
SSLCertificateFile /etc/ssl/apache/moodle.nlhs.tyc.edu.tw_NLHSCA.crt
SSLCertificateKeyFile /etc/ssl/apache/moodle.nlhs.tyc.edu.tw_NLHSCA.key
<Directory "/home/moodle/html">
allow from all
AllowOverride All
DirectoryIndex index.php index.htm
SetEnvIf User-Agent ^Baidu baidu
Deny from env=baidu
SetEnvIf User-Agent ^Sogou sogou
Deny from env=sogou
</Directory>
ErrorLog /home/moodle/logs/ssl_error_log
TransferLog /home/moodle/logs/ssl_access_log
</VirtualHost>
先用 /etc/rc.d/init.d/httpd configtest_vhosts 檢查一下設定檔有沒有問題,然後重新啟動 apache 。
複製資料庫
為免生意外,將原來的 moodle 資料庫複製一份,並讓原來使用 moodle 資料庫的 dbuser 有對新資料庫有相同的存取權限。這部份我是用 phpMyAdmin 處理,可以輕鬆完成,略過不表。
搬移 moodle 目錄及更改設定檔
新的虛擬主機是放在 /home/moodle 下,要搬移的目錄有兩個:
/var/www/moodledata 搬到 /home/moodle/moodledata , /var/www/html/moodle 搬到 /home/moodle/html 下。這裡要配合前面的虛擬主機設定檔。
然後,修改 /home/moodle/html/config.php 裡的設定:
修改 moodle 的 config.php<?php
// 前略
// 修改下面這三行
$CFG->wwwroot = 'http://moodle.nlhs.tyc.edu.tw';
$CFG->dirroot = '/home/moodle/html';
$CFG->dataroot = '/home/moodle/moodledata';
// 後略
?>
這時應該可以用新網址連至 moodle 了。
moodle 改用 ldap 認證
huihui 已經建好了 ldap ,所以改用 ldap 認證。這裡要改兩個地方:
moodle 部份: 系統管理 > 帳號名稱 > 身份驗證選項 ,改用「使用一個LDAP伺服器」並填入相關參數。
資料庫部份: 要把之前使用 imap 驗證的使用者全改用 ldap 驗證,下面一個 SQL 就可以搞定:
改用 ldap 認證UPDATE `mdl_user` SET `auth`='ldap' WHERE `auth`='imap';
以上,收工。





23/04/2008, 16:31
您好,我架設了一台Ldap Server,而且也確定能運行
我參考了這篇來設定
但似乎登出後還是一樣用資料庫的帳號密碼認證,而不是使用Ldap認證
我想請教您的作法是如何?
23/04/2008, 20:12
hi yuchin:
就我的理解,修改系統認證方式之後,只有新建的帳號會改用修改後的認證方式,之前建立的帳號還是會延用原來的認證方式。
因此,文中才會有最後一個步驟,直接修改 mdl_user 資料表,把我原來使用 imap 認證時建立的帳號改為使用 ldap 。
如果原來是用資料庫驗證帳號的話,應該是修改 auth 欄位,把 manual 改成 ldap 。
希望能幫到你。 ^_^
lss
01/11/2008, 00:29
大哥您好:
>w