看著論壇上的高手們發表的帖子,經常想自己什麼時候也能寫一些這樣的帖子呢?
用Zope構件web服務是一個比較新的技術,最近想搞個電子商務的網站.反正又沒有客戶,自己玩玩的,就選了這個技術.國內資料並不多,所以基本上是模著石頭過河,我也只是初學.這僅當是自己的學習筆記吧.第一次寫,大家多提意見阿.
運行環境:althon 650+196M+freebsd 5.2+ zope2.6.2
一 安裝zope
我用的是freebsd,用ports collection裝的.
具體安裝不再討論之內.
二 必要的設置
更改Zope站點實例的位置,這是我使用zope面臨的第一個問題,zope裝好以後就可以使用(當然還要改一下var的權限,下面再講),但是實例是在 zope的安裝目錄下的,我的是/usr/locla/www/Zope/.對於大型的網站這當然不行.所以要更改實例的位置.同時還應該為網站專門設立一個專門的用戶.
看看我的做法:
首先建立一個用戶,我的是webroot,最好讓他屬於wheel組,可以用su切換用戶,這樣調試起來比較方便.
用make_instance創建實例.
zope有一些用於配制的實用程序,在安裝目錄的inst目錄下有一個make_instance.py,可以在指定目錄創建一個實例
代碼:
cd /usr/local/www/Zope/inst/
python make_instance.py
引用:
The instance home is the Directory from which you will run Zope.
Several instance homes, each with their own data and
configuration, can share one copy of Zope.
Instance home [/usr/local/www/Zope]: /home/www/site2
'/home/www/site2' does not exist.
Shall I create it [y]? y
Created.
Created 'Extensions' directory.
Created 'import' directory.
Created 'ProdUCts' directory.
Created 'var' directory.
Created default database
------------------------------------------------------------------------------
Now to create a starting user. Leave the username blank if you want to skip this step.
------------------------------------------------------------------------------
Please choose a username and passWord.
This will create the initial user with which you manage Zope.
Username: webroot
Password:
Verify password:
chmod 0644 /home/www/site2/inituser
冒號後面是要輸入的東西.先是創建實例的路徑"/home/www/site2",沒有這個目錄,提示是否建立,打"y",然後是zope管例員的名字、密碼.這裡的管理員不是freebsd裡的用戶,而是在Zope內部的管理員,以後登陸ZMI(Zope Management Interface)時要用到.
然後要將實例目錄中的var目錄改為root擁有,
代碼:
su
cd /home/www/site2
chown -R root var
改var的mod
代碼:
chmod -R 1777 var
這樣改的原因Zope Book上有說明.
啟動zope前必須設置環境變量INSTANCE_HOME,指向實例的目錄
代碼:
eXPort INSTANCE_HOME=/home/www/site2
然後啟動zope,以root用-u指定運行時的用戶.我以一般用戶身份啟動zope沒成功過,顯示
引用:
-bash-2.05b$ /usr/local/www/Zope/start
/usr/local/www/Zope/start: Can't open /usr/local/www/Zope/start: Permission denied
以root身份
引用:
su-2.05b# /usr/local/www/Zope/start -u webroot
------
2004-01-30T23:03:37 INFO(0) zdaemon Started subprocess: pid 821
------
2004-01-30T23:03:41 INFO(0) ZODB Opening database for mounting: '146941056_1075330297.506043'
------
2004-01-30T23:03:41 INFO(0) ZODB Mounted database '146941056_1075330297.506043' at /temp_folder
------
2004-01-30T23:03:41 INFO(0) ZServer HTTP server started at Fri Jan 30 23:03:41 2004
Hostname: hydrogen.lan
Port: 8080
------
2004-01-30T23:03:41 INFO(0) ZServer FTP server started at Fri Jan 30 23:03:41 2004
Hostname: hydrogen.lan
Port: 8021
------
2004-01-30T23:03:41 INFO(0) ZServer PCGI Server started at Fri Jan 30 23:03:41 2004
Unix socket: /usr/local/www/Zope/var/pcgi.soc
然後就就停在那裡了.用浏覽器試試,我在內網用windows看http://10.0.0.22:8080/就是zope的歡迎頁.需要注意的是zope默認的web服務是在8080端口的.
停止服務ctrl+c就行了.
如果要真正對這個zope實例進行修改的話,應該使實例目錄由-u指定的目錄擁有,
確認一些是否如此,否則以後實用會出現文件不能修改等問題.
可以在修改var屬性之前先
代碼:
chown -R webroot /home/www/site2
接著讓開機時就運行zope,我裝完zope的時候在/usr/local/etc/rc.d下已經有一個zope.sh.sample腳本了,以這個腳本為藍本,下面是我的zope.sh,可以自己修改參數
代碼:
su-2.05b# cat /usr/local/etc/rc.d/zope.sh
#!/bin/sh
#you can change it begin
export ZOPEROOT=webroot
export INSTANCE_HOME=/home/www/site1
#you can change it end
case "$1" in
start)
umask 077
nohup /usr/local/www/Zope/start \
-w 80 \
-f 21 \
-m '' \
-u $ZOPEROOT \
-p /usr/local/www/cgi-bin/Zope.cgi \
>> $INSTANCE_HOME/zope-output 2>&1 &
echo -n " Zope"
;;
stop)
/usr/local/www/Zope/stop
echo -n " Zope"
;;
*)
echo "Usage: `basename $0` {startstop}" >&2
;;
esac
exit 0
這樣zope服務器就基本配成了.
umask 077
nohup /usr/local/www/Zope/start \
-w 80 \
-f 21 \
-m '' \
-u $ZOPEROOT \
-p /usr/local/www/cgi-bin/Zope.cgi \
>> $INSTANCE_HOME/zope-output 2>&1 &
echo -n " Zope"
;;
stop)
/usr/local/www/Zope/stop
echo -n " Zope"
;;
*)
echo "Usage: `basename $0` {startstop}" >&2
;;
esac
exit 0
這樣zope服務器就基本配成了.