2015-01-05 4 views
1

Я только что закончил настройку своей CMS (запрограммированной в Go) на моем выделенном сервере Linux (Ubuntu Server 14.04) с NGINX в качестве моего основного веб-сервера I хотите использовать для статического контента в дополнение к веб-серверу Go (и Node.js) http и вместо использования своих соответствующих файловых серверов.Go/Node.js/PHP + NGINX/Apache веб-корневые соглашения/лучшие практики

Поскольку это мой первый опыт работы с Linux, выделенные серверы в целом и развертывание приложений Go в режиме онлайн, мне было бы очень интересно узнать ваше мнение о хороших соглашениях, где мы храним - в идеале - все наши разные веб-сайты/веб-приложения.

По умолчанию NGINX использует/usr/share/nginx/для обслуживания контента. Я знаю, что это самая легкая вещь в мире, чтобы изменить ее на все, что мы хотим, но мне нравится делать все с самого начала.

Прямо сейчас я хранил приложение CMS (Go) в/home/[myuser]/gocode/src/[projectname]. Здесь находится приложение go, но у меня есть папки «public» и «media», которые я бы идеально подавал с NGINX.

Поскольку я хотел бы иметь возможность переключаться на веб-серверы и размещать приложения Apache-, NGINX- и т. Д. Внутри одного и того же общего корневого местоположения, теперь у меня есть вторичные сомнения относительно использования/var/www или/var/www/html в качестве моего корневого каталога. Причина в том, что apache использует это местоположение по умолчанию, и я не хочу обслуживать свои файлы приложений - только мои статические файлы. Другие, похоже, используют/home/user/public_html, но это снова не будет хорошо работать для разных веб-серверов и языков программирования/платформ.

Есть ли у вас хорошие аргументы в отношении того, где мы идеально собираем/размещаем все наши приложения PHP/Apache, Go/NGINX, Node.js и т. Д.?

Я отметил это go и node.js, так как go - мой основной язык программирования по выбору, и большинство моих приложений будут на этом языке. Тем не менее, я также хочу размещать старые приложения PHP и Node.js - в идеале в том же корневом каталоге - в зависимости от того, есть ли у вас какие-либо золотые самородки, чтобы поделиться со мной тем, как организовать такую ​​многоплатформенную среду.

ответ

0

Я положил все заявки в /opt. Когда вы создадите свою программу, вы получите единый двоичный файл. Например, предположим у вас есть проект:

gocode/src/github.com/someorg/foo 

Убежишь:

go build -o /tmp/foo 

И положить, что на сервере:

/opt/foo/foo 

Для вашего статического контента просто скопировать файлы:

/opt/foo/public/images/logo.png 
/opt/foo/public/styles/site.css 
/opt/foo/public/scripts/site.js 

So в этом примере у вас всего 4 файла, вы не загружаете файлы .go, и вам не нужно сопоставлять структуру папок, которую вы локально.

Для nginx вам просто нужно перенаправить трафик на порт, поэтому ему не нужно ничего знать о том, где находятся файлы. Go более чем способен обслуживать файлы из ваших общедоступных и медиа-каталогов.

Если вам нужна папка для записи (большинство веб-приложений доступны только для чтения), я бы рекомендовал хранить эти данные в /tmp или /var, но не рядом с вашим приложением.