NaviServer is a high performance web server written in C and Tcl. NaviServer 是 AOLserver 的分支。
如果要自己手動安裝:
./configure --prefix=/var/lib/naviserver --with-tcl=/usr/lib64 --with-zlib=/usr/lib64 --with-openssl=/usr/lib64
make
sudo make install
如果在 make 的時候遇到 -fstack-protector-strong 或者是 -fstack-clash-protection 無法辨識的問題, 修改 include/Makefile.global, 將 -fstack-protector-strong 或者是 -fstack-clash-protection 改為 -fstack-protector。 這是編譯套件時 GCC 新舊版本不同所造成的狀況。
sed -i s/stack-protector-strong/stack-protector/g include/Makefile.global
sed -i s/stack-clash-protection/stack-protector/g include/Makefile.global
NaviServer 預設的使用者是 nsadmin,所以需要使用下列的指令來增加使用者:
sudo useradd -r -c 'NaviServer' -d/var/lib/naviserver -U -M -s/bin/bash nsadmin
再來需要修改 NaviServer 目錄的擁用者設定,修改擁有者 user:group 為 nsadmin:nsadmin。
sudo chown -R nsadmin:nsadmin /var/lib/naviserver
再來要設定 nsadmin 帳號的密碼,使用 passwd 改變 nsadmin 使用者的密碼:
sudo passwd nsadmin
再來是執行 NaviServer
sudo -i -u nsadmin /var/lib/naviserver/bin/nsd -f -t /var/lib/naviserver/conf/nsd-config.tcl
再來瀏覽 http://localhost:8080/,如果出現 NaviServer 的訊息就表示成功了。
/var/lib/naviserver/conf 下還有其它的設定範例,包含 openacs-config.tcl, sample-config.tcl, simple-config.tcl, 也可以用來參考。
因為希望使用 80 port 與 443 port,所以修改 nsd-config.tcl:
dict set defaultConfig ipaddress "127.0.0.1 ::1"
dict set defaultConfig httpport 80
dict set defaultConfig httpsport 443
dict set defaultConfig nscpport ""
dict set defaultConfig home [file dirname [file dirname [info nameofexecutable]]]
dict set defaultConfig hostname localhost
dict set defaultConfig pagedir {$home/pages}
dict set defaultConfig logdir {$home/logs}
dict set defaultConfig certificate {$home/certificates/server.pem}
dict set defaultConfig vhostcertificates {$home/certificates/certificates}
如果要檢查設定是否格式正確,使用下列的指令(加上 -T),在檢查是否有打字錯誤時很有用:
/var/lib/naviserver/bin/nsd -t /var/lib/naviserver/conf/nsd-config.tcl -T
openSUSE 的 systemd service 檔案放在 /usr/lib/systemd/system,加入 nsd.service
[Unit]
Description=NaviServer
After=network.target
#After=network.target postgresql.service
#Wants=postgresql.service
[Service]
Type=forking
PIDFile=/var/lib/naviserver/logs/nsd.pid
Environment="LANG=en_US.UTF-8"
# In case, a site is using Google Perfortools malloc with the system-malloc patch for Tcl:
# Environment="LD_PRELOAD=/usr/lib/libtcmalloc.so"
ExecStartPre=-/bin/rm -f /var/lib/naviserver/logs/nsd.pid
# Standard startup with a privileged port
ExecStart=/var/lib/naviserver/bin/nsd -u nsadmin -g nsadmin -t /var/lib/naviserver/conf/nsd-config.tcl \
-b 127.0.0.1:80,[::1]:80#2,127.0.0.1:443,[::1]:443#2
Restart=on-abnormal
KillMode=process
[Install]
WantedBy=multi-user.target
讓 systemctl 重啟 daemon 並且重新載入設定:
sudo systemctl daemon-reload
啟動 nsd.service:
sudo systemctl start nsd.service
查詢 nsd.service:
sudo systemctl status nsd.service
停止 nsd.service:
sudo systemctl stop nsd.service
重新啟動 nsd.service:
sudo systemctl restart nsd.service
以上手動安裝的部份。在知道怎麼手動安裝以後,我就寫了 script 來產生 RPM 檔案,成果請看 naviserver-spec。
沒有留言:
張貼留言