我正在尝试安装SML 服务器在我的计算机上。按照所有说明操作后(位于这里这时书在 2.2 章)我尝试通过添加新模块来配置 Apache,如下所示:
sml.conf
添加了一个新文件:
<IfModule mod_sml.c>
AddHandler sml-module .sml
SmlPrjId "web"
SmlPath "/usr/lib/smlserver/www/"
SmlInitScript "/usr/lib/smlserver/web_sys/init.sml"
</IfModule>
sml.load
以及包含以下数据的新文件:
LoadModule sml-module /usr/lib/apache2/modules/mod_sml.so
图书馆mod_sml.so
被从这里。
然后,当我尝试重新启动 Apache 时,我收到以下错误消息:
sudo apache2ctl restart
apache2: Syntax error on line 204 of /etc/apache2/apache2.conf: Syntax
error on line 1 of /etc/apache2/mods-enabled/sml.load: Cannot load
/usr/lib/apache2/modules/mod_sml.so into server:
/usr/lib/apache2/modules/mod_sml.so: undefined symbol: log
非常感谢任何想法/建议。
答案1
- 该软件包适用于 32 位系统。您不会遇到该问题,因为您不会收到有关“错误的 ELF 类”的警告。
- 该计划于 2007 年 4 月 12 日发布(根据其下载页面和 subversion 存储库)。
- 我怀疑该模块是为 Apache 2.0.x 而不是 2.2.x 构建的。2007 年 4 月 12 日之后的下一个 Apache 版本是Apache 2.2.6 和 2.0.61。
从源代码构建的说明:
安装一些要求:
sudo apt-get install subversion build-essential apache2-threaded-dev mlton smlnj bison flex
下载该版本的源代码树(下载大小约为 25MB,下载后占用 60MB 磁盘空间):
svn co https://mlkit.svn.sourceforge.net/svnroot/mlkit/tags/mlkit-4.3.2/kit mlkit-4.3.2
从先决条件开始:mlkit。运行以下命令:
cd mlkit-4.3.2 ./autobuild
如果您之前没有安装 mlkit,请运行:
./configure make nj
由于某种原因,上述步骤在我的计算机上失败(64 位 Natty 和 32 位 Lucid)。消息是:
Error: GenOpcodes.sml 20.60. Function applied to incorrect argument. expects: [<equality>] * [<equality>] but got: [<non-equality>] * [<non-equality>] in: = (OS.Process.system ("mv " ^ sou ... OS.Process.success)
如果您也失败了,请不要继续。
如果您确实安装了 mlkit,请运行:
./configure --with-compiler=mlkit make mlkit
如果上一步完成且没有出现致命错误,则继续运行下一个命令:
make bootstrap make mlkit_libs
安装至
/usr/local
:sudo make install
接下来,SML 服务器:
./configure --enable-SMLserver --with-apxs="$(which apxs2)" --with-compiler="$(which mlkit)" make smlserver make smlserver_libs
安装库:
sudo make install_smlserver sudo cp /usr/local/lib/smlserver/lib/mod_sml.so /usr/lib/apache2/modules/ echo "LoadModule sml_module /usr/lib/apache2/modules/mod_sml.so" | sudo tee /etc/apache2/mods-available/sml.load
/etc/apache2/mods-available/sml.conf
创建包含以下内容的文件:<IfModule mod_sml.c> AddHandler sml-module .sml SmlPrjId "web" SmlPath "/home/mael/web/www/" SmlInitScript "/home/mael/web/www/../web_sys/init.sml" </IfModule> #<Directory /home/mael/web/www/web/secret> # SetHandler None # RewriteEngine On # RewriteBase /web/secret # RewriteRule .* pub.sml #</Directory>
启用模块并重启服务器:
sudo ln -sf /etc/apache2/mods-available/sml.conf /etc/apache2/mods-enabled/sml.conf sudo ln -sf /etc/apache2/mods-available/sml.load /etc/apache2/mods-enabled/sml.load sudo /etc/init.d/apache2 restart
本指南汇编自: