我正在维护一些 CGI Web 应用程序,我正在将其迁移到一个新的 Linux Web 服务器,在该服务器上我有一个非管理员帐户,说www_maintainer.
所以我在里面安装 CGI 应用程序/home/www_maintainer/
,我想借此机会清理东西,特别是cgi-bin/
目录可以更好地组织;我想了解一个最佳实践标准。
例如,在内部调用 subdirsbin/
以及辅助事物的二进制文件和库是否正常?lib/
cgi-bin/
我将描述一个具体的例子,即数学和数据绘图应用程序gnuplot及其依赖项(libfontconfig、libpng、libgd、libjpeg、libreadline.so、...)。
Python 可能是另一个例子(发行版提供 2.4,但我需要 >2.6),但是我希望管理员可以从包中安装 2.6,这样我就不必担心了。
新的 Web 服务器具有基于 Redhat RHEL 的Scientific Linux (SL)。不幸的是,我们当前 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服务器以允许这样做?