На данный момент занимаюсь разработкой игры, в которой некоторое кол-во данных нужно хранить на сервере. Изначально я собирался использовать LAMP стэк для своих целей, но потом подумал, что лучше буду использовать JavaScript, т.е. NodeJS, тк на JS я программировал больше года, а на PHP 1 неделю, а потом забросил эту идею (не потому, что ЯП плохой, а просто чёт потерял я энтузиазм к его изучению). Однако развернуть локальный сервер, и даже сделать на него пару AJAX-запросов я успел, но вот на NodeJS я ещё не работал, сейчас занимаюсь его изучением и уже появились некоторые вопросы.
На PHP всё просто, просто делаешь запрос на PHP файлик и получаешь ответ, а вот с NodeJS всё сложнее. Вначале я прописываю node имяфайла.js в консоли, он запускает сервер на каком-либо порту, и я уже начинаю получать результаты исполнения кода, но вот на VDS мне придётся делать то же самое? Т.е. я где-то в консоли админ панели моего сервера пишу node имяфайла.js и сервер будет круглосуточно работать и возвращать ответ при запросе по определённому пути? (т.е. если игра сделала запрос, допустим на mysite.com/getHello, то приложение получит в ответ строку "Hello, World").
И получается, что раз сервер будет без стэка LAMP, то я теряю возможность конфигурации через .htaccess?
Тут подход к разработке и деплойменту нужно чуток объяснить:
LAMP - это стак технологий: Linux, Apache, MySQL, PHP. node.js - это технология.
Чтобы удалённый сервер смог общаться с внешним миром, используются веб-сервера: nginx / Apache / IIS и т.п. Дальше запросы переходят к языку программирования. Лучше всего использовать фреймворки. А дальше, запросы обрабатываются (делаются запросы в БД, общение с файловой системой и т.д.).
Если вы говорите, что вам удобнее работать с JS, то тогда советую вам данный подход:
Виртульная машина VirtualBox. Виртуальная машина необходима для того, чтобы создать примерно такое же окружение, как и на сервере, а также для того, чтобы выделить исполнение кода из вашей системы в отдельное окружение.
Vagrant - это такая надстройка над виртуальными машинами. Коробки, внутри которых есть всё для ВМ.
В виде ОС - Linux Ubuntu (18.04 либо 20.04)
nginx в виде веб-сервера, он же как обратный прокси
nvm в виде менеджера версий node.js, с помощью nvm вы сможете устанавливать нужные версии node.js и npm
MongoDB в виде базы данных. Либо MariaDB, если нужна SQL-подобная БД
express.js в виде веб-фреймворка, который будет работать с БД, файлами и прочим
Если нужна визуальная админ-панель, то лучше взять один из мейнстрим фреймворков: Angular / Vue / Reqct
На счёт VirtualBox и Vagrant, просто сервер будет уровня «Записать/прочитать значение из БД», просто у меня железо слишком слабое, я не думаю, что мой i3 + 3GB RAM потянет 2 системы сразу. Такой подход необходим, или просто максимально удобен для разработки?
Т.е. может просто OpenServer с NGNX и NODE.JS для отладки и теста работоспособности будет достаточно, а потом уже с деплоем по бодаться, если вообще с этим могут быть траблы?
Такой подход необходим, или просто максимально удобен для разработки?
Максимально удобен. Разрабатываете - поднимаете виртуальную машину, выделив ей 256Мб ОЗУ. Не разрабатываете - выключаете.
Т.е. может просто OpenServer с NGNX и NODE.JS для отладки и теста работоспособности будет достаточно, а потом уже с деплоем по бодаться, если вообще с этим могут быть траблы?
Вы бы ещё Denwer взяли. OpenServer, Denwer и т.д. - устаревшие технологии. Вы можете и не ставить виртуальную машину. Вы можете всё локально запустить. Ту же БД можно и локально поставить. И в таком случае, вам не нужно будет даже веб сервер ставить, обращайтесь в запросах к localhost. Только после окончания проекта, как вы будете вычищать БД и ОС? Или напишите вы случайно рекурсивный цикл, который подвесит вашу систему, так как исполняется в вашей системе, а не в отдельной среде для разработки, что будете делать?
Roman Khegay, про очистку системы не совсем понял, VB ведь будет запущен на одном и том же компьютере => использует одну и ту же память, или речь идёт о каких-то квотах? Или на виртуалках всё живёт до выключения? (Я просто с VB никогда не работал)
Roman Khegay, и последнее, я разрабатываю именно на линуксе + среда разработки в ней же, или я просто разворачиваю сервак на ней, а запросы делаю уже с основной системы, то есть винды?
VB ведь будет запущен на одном и том же компьютере => использует одну и ту же память, или речь идёт о каких-то квотах?
Как раз выделение отдельного места на диске и в памяти – отличительная фишка виртуальных машин. Считайте, что у вас на данный момент одна большая комната в квартире. Виртуальная машина - это строительство отдельной комнаты в этой большой, при этом внутрь этой комнаты без разрешения нельзя попасть, так же как и выйти из этой маленькой комнаты.
Поэтому, если происходит критическая ошибка внутри ВМ, она никак не влияет на основную систему.
и последнее, я разрабатываю именно на линуксе + среда разработки в ней же, или я просто разворачиваю сервак на ней, а запросы делаю уже с основной системы, то есть винды?
Пишите код на вашей основной ОС, а исполняется он в ВМ. То есть, в вашем случае, ВМ – это арендованный сервер, просто он установлен на вашем компьютере.
LAMP - это Linux-Apache-MySQL- PHP.
Нодой ты заменяешь сразу A и P, и никакой это уже не LAMP получается. Я бы ещё посоветовал поверх ноды поставить Nginx (из стека LEMP :))
Так же и БД ты можешь использовать другую.
Не понимаю почему ты так привязался именно к стеку.
Т.е. я где-то в консоли админ панели моего сервера пишу node имяфайла.js и сервер будет круглосуточно работать и возвращать ответ при запросе по определённому пути?
Да, именно так.
Лучше это сделать через screen или tmux
И получается, что раз сервер будет без стэка LAMP, то я теряю возможность конфигурации через .htaccess?