【发布时间】:2012-05-14 15:38:51
【问题描述】:
我正在维护一些 CGI Web 应用程序,我正在将其迁移到一个新的 Linux Web 服务器,在该服务器上我有一个非管理员帐户,例如 www_maintainer. 所以我在 /home/www_maintainer/ 中安装 CGI 应用程序,我想借此机会清理一下,特别是cgi-bin/ 目录可以更好地组织;我想了解一个最佳实践标准。
例如,在cgi-bin/ 中包含名为bin/ 和lib/ 的子目录,以及辅助事物的二进制文件和库是否正常?
我将描述一个具体的示例,即数学和数据绘图应用程序gnuplot 及其依赖项(libfontconfig、libpng、libgd、libjpeg、libreadline.so、...)。
Python 可能是另一个例子(发行版提供了 2.4,但我需要 >2.6),但是我希望管理员可以从包中安装 2.6,这样我就不必担心了。
新的 Web 服务器有 Scientific Linux (SL),它基于 Redhat RHEL。不幸的是,我们当前 SL 版本的发行版存储库没有提供我需要的 gnuplot 4.4 版,所以它不能安装在像/usr/bin/ 这样的正常位置,所以我可以在非系统位置构建和安装它及其依赖项,例如cgi-bin/tools/。实际的 CGI Web 应用程序是由脚本 launch1.sh 或 launch2.sh 启动的二进制可执行文件。
这是目录树和其中一些文件的示意图(当然省略了许多目录和文件)。
cd /home/www_maintainer/www_root/
|-- html/
| |-- index.html
| `-- info.html
|-- cgi-bin/
| |-- gen/
| | |-- status.sh*
| | `-- sybase/
| | `-- DataAccess64/
| | `-- ODBC/
| | |-- lib/
| | |-- samples/
| | `-- spl/
| |-- exe1/
| | `-- launch1.sh*
| |-- exe2/
| | `-- launch2.sh*
| |-- javascript/
| | `-- check-input.js
| |-- scripts/
| | |-- decode.pl*
| | |-- generate-random-string.bash*
| | |-- gnuplot -> ../tools
| | `-- upload.php*
| |-- tools
| | |-- bin/
| | | |-- gnuplot*
| | | |-- python -> python2.6
| | | |-- python-config -> python2.6-config
| | | |-- python2.6*
| | | |-- python2.6-config*
| | | `-- xmlwf*
| | |-- etc
| | | `-- fonts/
| | |-- include/
| | |-- info/
| | |-- lib/
| | | |-- libfontconfig.so
| | | |-- libpdf.so
| | | |-- libreadline.so
| | | |-- libpng15.so
| | | |-- libpng15.so
| | | |-- pkgconfig/
| | | |-- libpng.so
| | | |-- libjpeg.so
| | | |-- libreadline.so
| | |-- libexec/
| | |-- man/
| | `-- share/
|-- tests/
| `-- results/
| `-- info/
| |-- readme.pdf
| `-- readme.html
|-- fonts/
|-- index.html -> html/index.html
|-- log/
| `-- log.txt
`-- tmp -> /tmp/
最好安装在www_root 之外,例如在目录/home/www_maintainer/bin/ 和/home/www_maintainer/lib/ 中并配置Web 服务器以允许这样做?
【问题讨论】:
标签: apache web-applications migration standards cgi-bin