Я поддерживаю некоторые веб-приложения CGI, которые я переношу на новый веб-сервер Linux, на котором у меня есть учетная запись без прав администратора, скажем, www_maintainer.
Итак, я устанавливаю приложения CGI внутри /home/www_maintainer/
, и я хотел бы взять возможность навести порядок, в частности каталог cgi-bin/
можно было бы лучше организовать; Я хотел бы узнать о стандарте передовой практики для этого.
Например, нормально ли иметь подкаталоги с именами bin/
и lib/
внутри cgi-bin/
с двоичными файлами и библиотеками вспомогательных вещей?
Я опишу конкретный пример, а именно с приложением для построения графиков и математических данных gnuplot и его зависимостями (libfontconfig, libpng, libgd, libjpeg, libreadline.so, ...).
Python может быть другим примером (дистрибутив предоставляет 2.4, но мне нужно > 2.6), однако я надеюсь, что администратор сможет установить 2.6 из пакета, поэтому у меня нет беспокоиться об этом.
Новый веб-сервер имеет Scientific Linux (SL), основанный на Redhat RHEL. К сожалению, репозиторий дистрибутива для нашей текущей версии SL не предоставляет нужную мне версию gnuplot 4.4, поэтому его нельзя установить в обычном месте, таком как /usr/bin/
, поэтому я мог бы собрать и установить его и его зависимости в несистемном месте, например cgi-bin/tools/
. Фактические веб-приложения CGI представляют собой двоичные исполняемые файлы, запускаемые сценариями 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/
, и настроить веб-сервер, чтобы разрешить это?