Что бы установить PHP 7 версии на CentOs или Red Hat Linux, http://rpms.remirepo.net/wizard/ сконфигурируйте себе тут пакеты и утсановите согласно инструкции
Рубрика: Без рубрики
Настройка и запуск NodeJS приложения
Быстрая настройка и простая поддержка NodeJS приложения
Под катом я поделюсь опытом нескольких дней исследований, проб и ошибок в процессе настройки NodeJS проекта на Ubuntu Server. В рамках руководства, мы пройдем по следующим темам:
- Вечный запуск процесса NodeJS аппликации и вывод на публику
- Базовая настройка NoSQL базы данных MongoDB
- Авто-запуск и менеджмент приложения
Введение
Прежде чем мы начнем, сразу предупрежу — приведенные ниже материалы описывают процессбазовой настройки окружения, не учитывая большие нагрузки. Приведенных в пример настроек должно хватить на первые запуски проекта и тем более для поддержки внутренних инструментов на NodeJS.
Что бы не раздувать руководство, мы начнем с момента, когда вы уже запустили Ubuntu Server и имеетеNodeJS на борту. Лично я предпочитаю DigitalOcean как VPS хостинг, где за 5$ можно быстро и удобно получить нужные мощности, а так же большой набор гайдов на английском.
Если у вас есть какие либо замечания, смело оставляйте их в комментариях что бы я мог внести их в руководство.
Вечный процесс
Начнем с самого простого — авто-запуск процесса при падании и удобный менеджмент NodeJS приложения. Тут нам спешит на помощь один из инструментов ранее упомянутого проекта Nodejitsu —forever.
Ставится forever как и обычная глобальная NodeJS аппликация:
$ [sudo] npm install forever -g
После чего вы можете запустить любое NodeJS приложение простой командой:
forever start app.js
И легко управлять процессом (или процессами) с помощью перечисленных команд:
forever list
forever stop app.js
forever restart app.js
Помимо названных команд есть конечно и другие, включая кучу настроек. Но так как для большинства простых случаев всегда хватает настроек по умолчанию, мы можем ограничится следующей командой запуска:
forever start -l /var/log/app.js.log -a app.js
Где мы определяем путь к файлу с логами приложения, и указываем параметр append
для склеивания логов.
На заметку
Процесс по умолчанию записывается на пользователя, который его запустил. Это значит, что если вы запустите forever через sudo
, то и команды forever list
/stop
и подобные, нужно будет запускать тоже через sudo
.
Если же вы хотите запустить приложение в определенном окружении:
NODE_ENV=production forever start -l /var/log/app.js.log -a app.js
Доступ из сети
Если вы запускаете веб сервер на ноде и хотите что бы он был доступен из глобальной сети, нужно лишь открыть необходимые порты. В Ubuntu Server стандартные порты (80, 8080) по умолчанию открыты, но открыть другие не составит никаких проблем:
sudo iptables -A INPUT -p tcp dport 777 -j ACCEPT
Вместо 777
поставьте номер необходимого порта.
80 порт
80
порт является стандартным для веба, но что бы запустить NodeJS процесс на этому порту, нужно запускать аппликацию от sudo
, что далеко не всегда удобно и теоретически не безопасно.
Что бы принимать трафик с 80 порта на порт вашего приложения (например 8080) можно сделать простое перенаправление:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Эту команду необходимо запускать каждый раз при запуске системы, как автоматизировать этот процесс я опишу ниже в руководстве.
Немного сложней, но надежней будет настроить nginx для перенаправления портов и распределения нагрузки между несколькими демонами и серверами.
На OSx, что бы удобно заходить на приложение по прямой ссылке тоже можно настроить перенаправление с авто-настройкой при запуске системы, но уже по чуть более сложной схеме. Ранее я подготавливал небольшое руководство по упомянутой настройке OSx.
MongoDB
Чаще всего с NodeJS используют MongoDB как решение для NoSQL базы данных. Что бы установить ее на Ubuntu, следуем этим простым шагам.
Что бы включить MongoDВ как сервис, активизируя авто-запуск в том числе, вводим команду:
sudo service mongodb start
Настройки базы можно найти по этому пути /etc/mongodb.conf
, там же сразу рекомендую включить авторизацию, что по умолчанию отключена:
auth=true
Это включит авторизацию для удаленных пользователей, оставив локальный доступ открытым. Что бы получить удаленные доступ к базе, можете создать пользователей в базе с любыми правами.
В качестве интерфейса для работы с базой, можно использовать Robomongo для OSx.
Авто-запуск проекта
Что бы спать спокойно, не волнуясь, что из за сбоя операционной системы или вины хостинг провайдера упадет ваше приложение, настраиваем сервис для авто-запуска.
Я подготовил заготовку скрипта на примере проекта DevShelf для сервиса Ubuntu. Вам останется лишь заполнить настройки:
NAME=devshelf # Название сервиса
SOUREC_DIR=/home/user/devshelf # Путь до приложения
COMMAND=node # Команда запуска
SOURCE_NAME=app.js # Файл запуска приложения
USER=user # Пользователь от которого запускать процесс
NODE_ENVIROMENT=production # Node environment
Логи приложения, судя по скрипту, будут доступны в директории /var/log/$NAME.log
.
Поместите скрипт в директорию /etc/init.d/
с удобным именем, например /etc/init.d/app
, после чего даем нужные права и прописываем в авто-загрузку:
sudo chmod a+x /etc/init.d/app
sudo update-rc.d app defaults
Теперь нам будут доступны следующие команды:
sudo service app start
sudo service app status
sudo service app restart
sudo service app stop
iftop спасает мир или как понять кто кладет канал
В дни безлимитного интернета уже никого не удивишь офисным 100-мегабитным каналом. И не смотря на то что домашний интернет стал дешевый как грязь, не перевелись люди которые предпочитают платить 150 рублей в месяц за 2-х мегабитный канал дома, и качать любимые сериалы или хрен-знает-что в офисе забивая всем остальным канал.
Понятное дело что нас могут спасти всякого рода шейперы, блокировки торрентов и прочие полезные вещи (и чтрого говоря так и надо делать), но бывает что конфигурация нужна максимально простая, и нужно понимать кто «ипортил интернет». Я в свое время писал разные программы, которые снифают траффик на роутере и выясняют кто все испортил.
Однако существует прекрасная утилита, которая называется iftop. запускаем ее с ключами iftop -n -i em1 (где em1 — ваш внутренний интерфейс) и сразу видим негодняя. Дальше добавляем его в таблицу nonat или просто идем и рассказываем как настроить торрент клиент, что бы он занимал полосу не более 5-6 мегабит.
Удачи.
Толик, тебе отдельный привет =)
.netrc — FTP-автологин
Файл ~/.netrc позволяет запоминать логин и пароль и создавать макросы для команды ftp:
machine ftp.freebsd.org login anonymous password edwin@mavetju.org machine myownmachine login myusername password mypassword macdef uploadtest cd /pub/tests bin put filename.tar.gz quit macdef dailyupload cd /pub/tests bin put daily-$1.tar.gz quit
Не забудьте сменить файлу права доступа, чтобы ваши пароли не подсмотрели посторонние:
$ chmod 0600 ~/.netrc
Подробнее о синтаксисе .netrc можно прочитать здесь.
Этот же файл для аутентификации понимает Net::FTP
Остановка перезагрузки windows 8 (windows 2012 server)
Всем привет!
И так, бывает такая замечательная ситуация, сидишь, работаешь себе. И поставил что-то делать на продолжительное время, например видео рендерить! и вот оно уже рендерится час, и еще час осталось. А тут Windiws на тебе: «На компьютер установлены обновления, компьютер будет перезагружен через 15 минут». Блииин! Ну зачем это? И комп неминуемо перезагрузится, это же ужас!
И тут, на выручку к нам приходит командная строка:
Открываем командную строку от имени администратора и вводим туда: NET STOP WUAUSERV
Служба обновления выключается, и комп никуда не перезагрузится. Только потом не забудьте сами его перезагрузить!