Перейти к содержимому

Как запустить скрипт node js на хостинге

  • автор:

Хостинг Node.js https сервера с авто-обновляемым SSL в облаке и как я настроил цикл разработки (+ git, react)

Начну с того, что однажды мне захотелось создать приложение. Желание такое возникло из-за того, что я люблю читать, а нормальных книжных агрегаторов на просторах русского интернета просто нет. Собственно из боли поиска чего бы почитать и попыток вспомнить как называлась та книжка, которую я недавно читал и на какой же главе я остановился, родилось желание сделать веб-приложение, в котором всё это было бы возможно и удобно. Стоит отметить, что никакого опыта разработки, программирования и т.п. у меня не было, моя работа вообще с этим не связана. Тем не менее желание перебороло лень и переросло в конкретные действия, своеобразное хобби.

Не буду рассказывать как я изучал javascript, node.js, react, html, css и т.п., перейдём к тому, к чему я пришел на данный момент, чем хотел бы с вами поделится и, конечно, послушать конструктивную критику специалистов.

Как и многие я тренировался на собственном ПК на localhost:3000, создавал front/back-end’ы, верстал, работал с api и т.д., но меня всегда тревожила мысль а том, как же всё это потом перенести на хостинг? Будет ли оно работать? Нужно ли будет переписывать из-за этого код? И самое главное, нельзя ли всё настроить так, чтобы я мог работать над приложением с любого ПК и легко переносить всё на хостинг на production? Об этом я и расскажу.

Выбор хостинга

На своё хобби я готов был тратить 10$ в месяц, поэтому выбирал тот хостинг, с которым планировал и остаться в будущем. Как я и говорил, до этого у меня был 0 опыт, в том числе и с хостингом сайтов. Я попробовал и отказался от следующих:

Jelastic: красивый и удобный интерфейс, вроде всё интуитивно, масштабируемо и понятно. Тем не менее столкнулся с трудностями при настройке (nginx почему-то из vps не хотел работать, только их отдельным модулем) и подключении SSL(и автоматическом обновлении) к русскоязычном домену стандартными средствами (обещали баг пофиксить, но я не хочу ждать)

Облачный хостинг REG.RU: тут же у меня и домен, поэтому решение казалось логичным, однако у них не было отдельно настроенного PostgreSQL, а так как с администрированием базы мне связываться не хотелось, начал искать дальше.

AWS и Google облака: попробовал, всё вроде хорошо, но вспомнил про наши «замечательные» законы и требование размешать данные пользователей на сервера в РФ. У этих ребят, к сожалению, серверов в РФ не оказалось. Не юрист, но от греха решил поискать облака с серверами в РФ. Если же ваше приложение маловероятно будет иметь проблемы с законом, то хороший выбор.

Облака с серверами в РФ хоть и были, но хотелось всё же что-то, что избавит меня от необходимости погружаться в администрирование PostgreSQL. Порыв немного наткнулся на не так давно ставшие доступными Яндекс.Облака, попробовал, вроде всё просто и удобно, поэтому остановился пока на них. Стоит отметить, что хостинг PostgreSQL у них сразу идёт с 1core и 4гб RAM, что по стоимости около 2к рублей в месяц, поэтому на время разработки и невысокой нагрузки я планирую запустить PostgreSQL на VPS за ~300р, а с повышением нагрузки перенести базу и пусть Яндекс занимается администрированием и обновлением.

Настройка Яндекс.Облака

Virtual Private Cloud

1) Создаём каталог под свой сайт:

image

2) Создаём Virtual Private Cloud:

Главное что он даёт для меня на текущем этапе — это IP для доступа к созданному ресурсу из вне. С подсетями, зонами, изоляцией и отказоустойчивостью ознакомился поверхностно, при необходимости наверстаю.

3) Создаём подсеть и присваиваем ей внутренний IP (как я понял, это примерно как локальная сеть)

image

4) Переходим на вкладку IP и резервируем себе статический IP.

По нему мы будем подключаться из дома и других мест. Вероятно можно и с динамическим работать, но я не разбирался в каких случаях он меняется.

image

Compute Cloud

Тут у нас будут происходить вычисления 🙂 То есть мы создадим виртуальную машину с Linux (я выбрал ubuntu 18.04), установим node.js приложения и postgreSQL.

image

Жмём создать ВМ, выкручиваем все настройки на минимум, так как при разработке нагрузки не будет (когда наше приложение выйдет в свет, тогда и подкрутим побольше, ну и будем мониторить по графикам).

SSH

Проблемный момент, с которым я столкнулся на этом этапе, это SSH:

image

Что это и зачем понятия не имел, поэтому пошел изучать. Оказалось — это просто метод доступа, но не по паролю, а по сгенерированному SSH ключу. Чтобы собственно его сгенерировать, скачиваем и устанавливаем Putty как нам советуют.

Запускаем C:\Program Files\PuTTY\puttygen.exe

image

Нажимаем кнопку Generate и водим мышкой, чтобы придать случайности сгенерированному ключа (как я понял). Далее копируем появившуюся строку начинающуюся с ssh-rsa куда-нибудь в текстовый файл и жмём Save private key, Save public key. Скопированный в текстовый файл ключ вставляем в поле SSH ключ открытой страницы Яндекса. Логин указываем root, иначе у вас не будет доступа при работе с графической файловой системой приложения по которому будете подключаться к облаку из дома/работы (возможно и есть способ, но я не разбирался).
Как заметил andreymal, лучше не использовать root, чтобы китайские боты не подобрали пароль к вашему облаку, но так как в яндекс.облаке доступ только по SSH, то жить вроде можно.

Приложение на хостинге же стоит запускать исключительно не root пользователем, чтобы не позволить злоумышленникам выполнять вредный код через возможные уязвимости в вашем приложении.

Подключаемся к облаку с ПК и выбираем бесплатный SSH клиент

Стандартный Putty позволяет работать только командной строкой, а так как мне пользователю windows это непривычно, то я начал искать клиент с псевдо-проводником. Сначала я попробовал Mobaxterm, но он после какого-то времени простоя отключается, проводник вообще зависает, поэтому сейчас работаю с bitvise ssh и пока проблем как у Mobaxterm не наблюдаю.

Настройка bitvise ssh

image

Тут в поле Server>Host указываем наш внешний IP облака. Порт 22. Нажимаем client key manager>import указываем в нём сгенерированный Putty ранее private ключ. Может ещё потребоваться ключевая фраза, выберите что-нибудь что не забудете. Закрываем это окошко и в поле authentication указываем username: root, method publick key, client key — выбираем импортированный ранее. Жмём login и если мы всё сделали правильно, то подключимся к облаку:

image

Устанавливаем Node.js

Тут я рекомендую пользоваться инструкциями digitalocean.com, они очень подробны и многие есть на русском. Обычно я так и гуглю «digitalocean ubuntu 18.04 node.js» или что вы там захотите установить или настроить.

Как установить Node.js можно почитать тут.

Если коротко, то заходим на nodesource (тут последние версии node.js можно установить), листаем сюда:

image

Копируем и по-очереди запускаем команды:

curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash - sudo apt-get install -y nodejs 

Проверяем как установилось командой

nodejs -v

Нам покажет версию node.js

npm -v

Нам покажет версию менеджера пакетов для node.js.

Далее идём в папку /opt/mysuperapp (my_super_app_name — эту папку вы должны создать). Каталог opt был выбран в качестве места расположения приложения после долгих гуглений «где уместно положить файлы node.js приложения в ubuntu».

Наконец-таки создаём файл server.js, который будет входной точкой приложения и вставляем туда код простого сервера на node.js:

const http = require('http'); const hostname = 'localhost'; const port = 80; const server = http.createServer((req, res) => < res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World!\n'); >); server.listen(port, hostname, () => < console.log(`Server running at http://$:$/`); >);

Порт 80 — это для http запросов, 443 — для https. Пока у нас сервер на http.

Сохраняем всё и запускаем командной:

node server.js

В консоли должно появиться строка ‘Server running at localhost:80/’

Теперь можно открыть браузер, ввести внешний IP (тот что в облаке яндекса у вашей ВМ ubuntu) и мы увидим «Hello World!»

Делаем всё удобно или цикл разработки с помощью git

Всё вроде работает, но мы же не будем работать всё время подключаясь к облаку. К тому же вдруг мы будем в будущем работать не одни.

Github

Github — это место, где будет лежать код нашего приложения. Если коротко, принцип работы для одного человека следующий:

  • На домашнем ПК разрабатываем наше приложение.
  • Сохраняем и в один клик выгружаем код на Github.
  • На хостинге или на другом ПК скачиваем наше приложение с github, перезагружаем сервер (если это хостинг) и новая версия нашего веб-приложения доступна во всемирной паутине.

Собственно регистрируемся на Github и создаём private репозиторий для нашего приложения (он будет доступен только нам):

image

Копируем строку github.com/ReTWi/mysuperapp.git для скачивания приложения.

image

  1. Возвращаемся в командную строку bitvise, останавливаем приложение нажав ctrl+c (если оно ещё работает).
  2. Переходим в каталог /opt и удаляем созданную нами папку с приложением
sudo apt update sudo apt install git

Проверяем всё ли хорошо установилось:

git --version

Должна показаться версия git.

Заполняем данные git (так и не понял зачем, но видимо могут быть какие-то занудные предупреждения).

git config --global user.name "Your Name" git config --global user.email "youremail@domain.com"

Наконец-таки загружаем наше приложение на хостинг командой:
(тут должна быть ссылка на ваше приложение )

git clone https://github.com/ReTWi/mysuperapp.git 

В каталоге /opt появится новый mysuperapp, где будут находится файлы нашего приложения загруженные из github.

Теперь пора повторить тоже самое для ПК и замкнуть цепочку ПК(разные) —> Github —> Хостинг

Visual studio code

Для начала выберем редактор исходного кода, где будем работать. Я выбрал Visual studio code, так он прост, удобен, в нём много плагинов и можно настроить синхронизацию настроек если вы работаете с нескольких устройств. Собственно скачиваем, устанавливаем, запускаем, выбираем общую папку приложений, так как git clone создаст нам свою.

Плагины я использую следующие:

image

Устанавливаем git для ПК.
Открываем консоль в VScode с помощью ctrl+shift+` или terminal>new terminal

В консоли windows плохо с русскими символами и чтобы не было крякозяблов нужно открыть file>preferences>settings, ввести в поле terminal.integrated.shellArgs.windows, нажать

image

И добавить строку «terminal.integrated.shellArgs.windows»: [«-NoExit», «/c», «chcp 65001»],

image

Повторяем команду для загрузки файлов с github:

git clone https://github.com/ReTWi/mysuperapp.git 

В VScode нажимаем File>Open Folder и открываем папку нашего приложения.

Создаём файл server.js с тем же кодом простого сервера:

const http = require('http'); const hostname = 'localhost'; const port = 80; const server = http.createServer((req, res) => < res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World!\n'); >); server.listen(port, hostname, () => < console.log(`Server running at http://$:$/`); >);

Устанавливаем nodemon для автоматической перезагрузки сервера при изменениях в коде:

npm i nodemon -g

i — сокращение от install
g — глобальная установка (чтобы было доступно в консоли), а не только для нашего приложения.

nodemon server.js

Открываем в браузере localhost:80/ или просто localhost:80 и видим Hello World.

Теперь настало время проверить нашу цепочку ПК>Github>Hosting.

Скачиваем Github desktop для большего удобства, подключаем свой github аккаунт, затем нажимаем файл add local repository и указываем каталог нашего приложения.

В приложении мы видим изменения которые мы сделали по сравнению с загруженной с Github версией (мы добавили server.js):

image

Жмём «commit to master»>«push origin», таким образом загружая файлы с ПК на Github.

image

Заходим в браузере на наш github аккаунт и видим загруженный файл server.js:

image

Потренируемся ещё немного, в VScode заменим строку «res.end(‘Hello World !\n’);» на «res.end(‘OmNomNom’);». Увидим, что сервер сам перезагрузился:

image

Проверим в браузере и увидим там сделанные нами изменения «OmNomNom».

Desktop github тоже покажет нам что мы поменяли строку:

image

Опять жмём «commit to master»>«push origin», чтобы отправить файлы на github.

Переключаемся на командную строку хостинга.

Останавливаем наше приложение, если оно ещё запущено (ctrl+c).

Скачиваем наше обновлённое приложение командами:

git config credential.helper store git pull 

Первая сохранит наши данные, чтобы постоянно не вводить логин и пароль. В дальнейшем нам достаточно будет git pull.

Установим pm2 — нечто похожее на nodemon, только для хостинга:

npm i pm2 -g

Запустим приложение с помощью pm2, которые при следующем git pull на хостинге сам перезагрузит наш сервер:

pm2 start server.js --watch

Откроем браузер по нашему внешнему IP облака и увидим наше «OmNomNom».

Таким образом мы замкнули цепочку работы с приложением и быстрым его развёртыванием на хостинге.

Создаём временные SSL сертификаты для HTTPS на localhost и хостинга

image

В поле domains, ip… вписываем сначала localhost, нажимаем generate и скачиваем 2 файла по кнопке:

image

Сохраняем их у нас в проекте в папке ssl/localhost.

Повторяем процедуру для внешнего IP Облака и сохраняем в ssl/myapp.

Запускаем более сложный https сервер node.js

image

  • client — тут будет лежать наш front-end. У меня react.
  • logs — сюда будут падать логи на хостинге
  • node_modules — модули node.js
  • private — ваши приватные файлы, я там храню SSH доступы к облаку
  • server — ваш backend
  • ssl — ssl сертификаты для работы https на localhost и на хостинге
  • .babelrc — настройки сборки react приложения webpack’om (позволяет использовать более современный JS при разработке frontend)
  • .gitignore — файлы, которые не будут перемещаться на github (git их как бы не видит)
  • client.js — точка входа для генерации react сборки
  • package.json — используемые вами node_modeles и различные снипеты команд.
  • package-lock.json — изменения в модулях (насколько я понял, по файлу будет проверяться одинаковые ли у вас установлены модули на хостинге и на ПК).
  • pm2-watch.json — настройки запуска pm2 для хостинга
  • README.md — обложка для github
  • server.js — точка запуска нашего backend сервера Node.js
  • webpack.config.js — конфигурация сборки react

.gitignore

Тут мы указываем те файлы/папки, которые мы не хотим выгружать на github. Они будут только на данном устройстве и git не будет отслеживать/показывать их изменения. Открываем и вставляем:

/node_modules/ /logs/* # exception to the rule !logs/.gitkeep /public/react_bundle.js /public/isProd.js

Так как github не выгружает пустые папки, то можно внутрь что-нибудь положить, к примеру пустой файл .gitkeep. Сохраняем файл и закрываем.

package.json

Открываем и вставляем следующее (после // добавил комментарии)

< "name": "myapp", // название вашего приложения "version": "1.0.0", "description": "OmNomNom", "main": "server.js", "scripts": < "server": "pm2 start pm2-watch.json", // командой npm run server можно запустить этот скрипт "client": "webpack -w --mode development", // командой npm client можно запустить этот скрипт. Собирает приложение реакт и отслеживает изменения в коде, автоматически обновляя сборку. "client-prod": "webpack --mode production", // собирает сжатый вариант для production "client-analyze": "webpack --mode production --analyze true" // собирает сжатый вариант для production и позволяет посмотреть размеры разных модулей приложения. Полезно для оптимизации >, "repository": < "type": "git", "url": "git+https://github.com/myapp/knigam.git" // ссылка на ваш репозиторий github >, "author": "rtw", "license": "UNLICENSED", // запрет на любое использование (личное приложение) "bugs": < "url": https://github.com/myapp/knigam.git" >, "homepage": "https://github.com/myapp/knigam.git#readme", "dependencies": < "@babel/core": "^7.2.2", // Современный js для frontend "@babel/plugin-transform-runtime": "^7.2.0", // Современный js для frontend "@babel/preset-env": "^7.3.1", // Современный js для frontend "@babel/preset-react": "^7.0.0", // Современный js для frontend "ajv": "^6.8.1", // Проверка типов переменных "babel-loader": "^8.0.5", // Современный js для frontend "babel-plugin-styled-components": "^1.10.0", // Работа со styled-components "css-loader": "^2.1.0", // Для сборки webpack'om css "fastify": "^2.0.0-rc.6", // аналог express, более живой и активно развивающийся "fastify-cookie": "^2.1.6", // Работа с куки "fastify-static": "^2.2.0", // Работа со статичными файлами "moment": "^2.24.0", // Работа со временем "pg": "^7.8.0", // Работа со временем "pino": "^5.11.1", // Работа с postgreSQL из node.js "pino-pretty": "^2.5.0", // Читаемые логи в консоли "react": "^16.8.1", // Frontend библиотека. Выбор был между ней и Vue.js, но второй больше фрэймворк. В реакте больше нужно делать руками, что полезно для обучения "react-dom": "^16.8.1", // React для работы с браузером "style-loader": "^0.23.1", // Для сборки webpack'om стилей, уже не помню "styled-components": "^4.1.3", // CSS in JS, очень удобно для динамических стилей и локализации стилей в компонентах "webpack": "^4.29.3", // Сборщик реакт приложения "webpack-bundle-analyzer": "^3.0.3", // Анализатор размеров модулей собранного реакт приложения "webpack-cli": "^3.2.3" // Консоль сборщик реакт приложения, не помню уже зачем >> 

Остановлюсь на двух основных фрэймворках/библиотеках выбранных для приложения:
Fastify был выбран в качестве альтернативы express.js, так как в первом уже есть экспериментальная поддержка htpp2, он активно развивается и мне кажется у него больше будущего, нежели у express.js, который стал очень неповоротлив и кое-как развивается. С другой стороны express.js уже долгое время в работе и по нему вам легче будет найти информацию.

React был выбран так как мне с ним было проще работать, понять и пробовать всё своими руками. Vue — показался уже чем-то со своими правилами, направлением. Хотя во Vue может и меньше придётся писать что-то своими руками, но так как приоритет сделан на обучении и для человека ранее не программировавшего react пошел как-то легче.

Сохраняем файл package.json и устанавливаем все модули указанные в dependencies командой:

npm i

У нас появится папка node_modules, в которой будут все модули для нашего приложения.

client — пока пустая папка
logs — внутри лежит файл .gitkeep, чтобы папка перекочевала на хостинг и логи успешно туда падали. При разработке мы всё будем выводить в консоль.

public

Тут статические файлы нашего сайта будут лежать, изображения там, фавиконки и т.д.
Отдельно остановимся на двух файлах:
index.html:

     MyApp  
Этот текст заменится содержимым react_bundle после его загрузки
Система: онлайн подключение возможно только при наличии Javscript

— тут у нас подгружается react-фронтэнд и рендерится в тег по его id.

isProd.js содержит единственную строку «module.exports = false»
Так как он находится в исключениях .gitignore, то не переносится. Соответственно на ПК мы устанавливаем его в false, а на хостинге в true. Затем используем этот файл, чтобы понять в какой мы сейчас среде (разработка/продакшн). Мне показалось наиболее удобным, к тому же можно частично в коде поменять при разработке и проверить работу модулей в продакшне.

ssl — там лежат сохранённые ранее сертификаты в папках localhost и myapp

.babelrc

< "presets": [ [ "@babel/preset-env", < "targets": < "browsers": [">0.25%", "not ie 11", "not op_mini all"] > > ], "@babel/preset-react" ], "plugins": [ "babel-plugin-styled-components", "@babel/plugin-transform-runtime" ] > 

Настройки для создания нашего react_bundle с поддержкой браузеров используемых более >0.25% пользователей.

client.js

import React from 'react' import < render >from 'react-dom' render(
Реакт!!
, document.getElementById('cookies'))

Рендерит наш фронтэнд в div с тегом cookies.

pm2-watch.json — позволяет на хостинге командой «npm run server» запустить сервер с отслеживанием изменений в коде и автоматической перезагрузкой.

webpack.config.js

Сборщик реакт приложения:

const webpack = require('webpack'), path = require('path'), BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin module.exports = (env, argv) => < let prod = argv.mode == 'production' let config = < entry: './client.js', output: < path: path.resolve('./public'), filename: 'react_bundle.js' >, module: < rules: [ < test: /\.(js|jsx)$/, exclude: /node_modules/, loader: 'babel-loader' >, < test: /\.css$/, use: ['style-loader', 'css-loader'] >] >, resolve: < alias: < client: path.resolve('./client/shared'), public: path.resolve('./public') >>, plugins: [ argv.analyze ? new BundleAnalyzerPlugin() : false, prod ? new webpack.optimize.AggressiveMergingPlugin() : false, new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /ru/) ].filter(Boolean), optimization: < minimize: prod ? true : false >, performance: < hints: false >> return config > 

Если коротко, то он открывает файл client.js и все что у него внутри, собирая react_bundle и помещая его в папку public, откуда потом через открытый index.html он будет загружен.

server.js

const isProd = require('./public/isProd'), fs = require('fs'), log = require('./server/logger'), path = require('path') // Ошибки среды node.js, чтобы приложение никогда не падало process.on('unhandledRejection', (reason, promise) => < log.error(< reason, promise >, 'серверный процесс unhandledRejection') >) process.on('uncaughtException', err => < log.error(< err >, 'серверный процесс uncaughtException') >) // Redirect server from http port 80 to https 443 const fastifyHttp = require('fastify')(< logger: log, ignoreTrailingSlash: true >) fastifyHttp.listen(80, '::', (err, address) => < if (err) < log.error(< err, address >, 'Ошибка при запуске HTTP сервера') > else < log.warn('Http cервер запущен') >>) // Let's Encrypt challenge fastifyHttp.get('/.well-known/acme-challenge/:file', (req, res) => < let stream = fs.createReadStream( path.join(__dirname + '/ssl/.well-known/acme-challenge/' + req.params.file) ) res.type('text/html').send(stream) >) fastifyHttp.get('/*', (req, res) => < res.redirect(301, 'https://' + req.headers.host + req.raw.url) >) fastifyHttp.get('/', (req, res) => < res.redirect(301, 'https://' + req.headers.host + req.raw.url) >) // Сервер let fastifyOptions = < logger: log, ignoreTrailingSlash: true, http2: true >fastifyOptions.https = isProd ? < allowHTTP1: true, key: fs.readFileSync('./ssl/myapp/key.txt'), cert: fs.readFileSync('./ssl/myapp/crt.txt') >: < allowHTTP1: true, key: fs.readFileSync('./ssl/localhost/cert.key'), cert: fs.readFileSync('./ssl/localhost/cert.pem') >const fastify = require('fastify')(fastifyOptions) fastify.listen(443, '::', (err, address) => < if (err) < log.error(< err, address >, 'Ошибка при запуске сервера') > else < log.warn( `Сервер запущен в $< isProd ? 'продакшен' : 'режиме разработки' >` ) > >) // Валидатор fastify.setSchemaCompiler(schema => < return ajv.compile(schema) >) // Ошибки fastify fastify.setErrorHandler((err, req, res) => < log.error(< err, req >, 'fastify errorHandler') // Ошибка валидации данных запроса if (err.validation) < return res.send(< error: 'Ошибка валидации данных запроса' >) > else < return res.send(< error: 'Ошибка errorHandler' >) > >) // Статические файлы fastify.register(require('fastify-static'), < root: path.join(__dirname, './public') >) // Куки fastify.register(require('fastify-cookie'), err => < if (err) log.error(< err >, 'fastify-cookie') >) // Ответ на любой запрос исключая апи / несуществующая страница // Тут мы на любой запрос отдаём index.html, по сути наш фронэнд // Запросы фронтэнда у нас принимаются с префиксом api, то есть GET /api/userdata fastify.setNotFoundHandler((req, res) => < res.sendFile('index.html') >) // Routes fastify.register( async openRoutes => < // Пути доступные всем openRoutes.register(require('./server/api/open')) openRoutes.register(async withSession => < // Пути доступные только после авторизации и проверки сессии // Проверяем прямо тут хуком, пример: ///withSession.addHook('preHandler', async (req, res) =>< // if (!(await sessionManagerIsOk(req, res))) return // >) withSession.register(require('./server/api/with_session')) >) >, < prefix: '/api' >// префикс всех путей ) 

Папка server

Тут лежит на бэкэнд и все пути.
logger.js — в зависимости от среды isProd логирует или в консоль или в errors.log

'use strict' const pino = require('pino'), isProd = require('../public/isProd') let logOptions = isProd ? < level: 'warn', // уровень логирования timestamp: () => < return ',"time":"' + new Date() + '"' >> : < level: 'warn', prettifier: require('pino-pretty'), prettyPrint: < levelFirst: true, translateTime: true >> let dest = isProd ? pino.destination('./logs/errors.log') : pino.destination(1) let log = pino(logOptions, dest) module.exports = log 

server/api/
open.js — сюда добавляем наши пути.

'use strict' module.exports = function(fastify, options, next) < fastify.route(< method: 'GET', url: '/', handler: async (req, res) => < res.send('api / route') >>) fastify.route( < method: 'GET', url: '/hi', handler: async (req, res) => < res.send('api / route hi') >>) next() >

После настройки и проверки всего на Localhost, просто выгружаем всё на github, а оттуда git pull на хостинг. Всё что на хостинге нужно будет сделать, это установить модули node.js командой «npm i» и создать файл isProd.js

Автоматически обновляемый SSL

Когда вы купите себе домен и привяжете его к IP облака, пример инструкции для REG.RU, можно установить на сервере автоматически обновляемый бесплатный SSL для работы сайта по https.

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

Перед установкой в папке ssl создадим папку .well-known, а в ней acme-challenge. Получится /opt/myapp/ssl/.well-known/acme-challenge

Для установке на сервере с node.js без nginx автоматически обновляемого SSL переходим по ссылке. По очереди выполняем команды в консоли хостинга:

sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install certbot sudo certbot certonly 

Выбираем второй способ проверки, который разместит в папке /opt/myapp/ssl/.well-known/acme-challenge определённый файл, а после подтверждения владельца сервера его удалит.

Указываем по запросу наш домен, к примеру: «example.com» и путь к ssl папке нашего приложения (сервер настроен так, что отдаст созданный ботом файл) «/opt/myapp/ssl».

Бот сам настроит cron-задачу для обновления сертификата до срока его истечения в течение 90-дней.

Не думал, что займёт столько времени всё написать, к 4 часам ночи уже мог что-то упустить :/

Интересно мнение хабравчан и специалистов, кто осилил это полотно или прочитал какие-то отдельные моменты. Как у вас устроен цикл разработки? Есть ли какие-то моменты в которых я ошибаюсь или поступаю не лучшим образом?

# Установка

Vue.js изначально разрабатывался быть инкрементально адаптируемым. Это значит, что он может быть интегрирован в проект несколькими способами, в зависимости от требований.

Есть четыре основных способа добавления Vue.js в проект:

  1. Импорт CDN пакета на странице
  2. Скачивание файлов JavaScript и их самостоятельный хостинг
  3. Установка с использованием npm
  4. Использование официального CLI для развёртывания проекта, предоставляющего продвинутые инструменты для создания современного рабочего процесса разработки фронтенда (например, горячая перезагрузка, линтинг при сохранении и многое другое).

# История изменений

Подробная история изменений для каждой версии доступна на GitHub

# Инструменты разработчика

На данный момент в бета-тестировании — интеграция с Vuex и Router в разработке

При использовании Vue рекомендуем установить расширение Vue Devtools

(opens new window) для браузера, которое позволит легче проверять и отлаживать приложения на Vue в удобном интерфейсе.

# CDN

Для прототипов и в обучающих целях можно использовать последнюю версию с CDN:

script src="https://unpkg.com/vue@next"> script> 

Для production рекомендуется указывать конкретную версию и сборку, чтобы избежать неожиданных поломок при выходе новых версий.

# Скачивание и самостоятельный хостинг

Если нужно избежать использования систем сборки, но нет возможности использовать CDN в production — в таком случае можно скачать соответствующий .js файл и разместить его на собственном веб-сервере. После чего подключать его, с помощью тега , точно также, как и при подключении с CDN.

Можно просматривать и скачивать файлы с CDN, например unpkg

(opens new window) . Различия файлов сборок подробнее объясняются ниже, но обычно потребуется загрузить обе сборки: для разработки и для production.

# npm

npm — рекомендованный способ установки при создании больших приложений на Vue. Он прекрасно сочетается с системами сборки, такими как webpack

# установка последней стабильной версии $ npm install vue@next 

Также Vue предоставляет инструменты для создания однофайловых компонентов (также именуемых как SFC). Если хотите их использовать, то также потребуется установить @vue/compiler-sfc :

$ npm install -D @vue/compiler-sfc 

Обратите внимание, если выполняете миграцию с Vue 2, то @vue/compiler-sfc заменяет используемый ранее vue-template-compiler .

Кроме @vue/compiler-sfc также понадобится подходящий загрузчик SFC или плагин для системы сборки. Более подробную информацию можно найти в разделе про однофайловые компоненты.

В большинстве случаев предпочтительным способом создания сборки с webpack и минимальной конфигурацией будет использование Vue CLI.

# CLI

(opens new window) для быстрого создания каркаса одностраничных приложений (SPA). Предлагаемые шаблоны содержат всё необходимое для организации современной фронтенд-разработки. За несколько минут можно получить работающую конфигурацию с горячей перезагрузкой модулей, линтингом кода при сохранении и настроенной конфигурацией production-сборки.

Использование CLI предполагает наличие знаний о Node.js и связанных с ней инструментов сборки. Новичкам во Vue или в инструментах сборки фронтенда настоятельно рекомендуем сначала прочитать руководство без применения каких-либо систем сборки прежде чем начинать использовать CLI.

Для Vue 3 требуется использовать Vue CLI v4.5, доступная в npm по имени @vue/cli . Для обновления необходимо переустановить последнюю версию @vue/cli глобально:

yarn global add @vue/cli # ИЛИ npm install -g @vue/cli 

После установки в проекте Vue необходимо выполнить:

vue upgrade --next 

# Vite

(opens new window) — инструмент для сборки веб-приложений, предлагающий исключительно быструю обработку кода, благодаря применяемому подходу по использованию нативных импортов ES-модулей.

Быстро развернуть проект на Vue используя Vite можно с помощью следующих команд.

# npm 6.x $ npm init vite@latest project-name> --template vue # npm 7+, НУЖНО дополнительное двойное тире: $ npm init vite@latest project-name> -- --template vue $ cd project-name> $ npm install $ npm run dev 

1
2
3
4
5
6
7
8
9

или используя Yarn:

$ yarn create vite project-name> --template vue $ cd project-name> $ yarn $ yarn dev 

или с помощью pnpm:

$ pnpm create vite project-name> -- --template vue $ cd project-name> $ pnpm install $ pnpm dev 

# Объяснение различий сборок

(opens new window) можно обнаружить несколько различных сборок Vue.js. Рассмотрим подробнее какой файл из dist для каких случаев должен использоваться.

# Из CDN или без системы сборки

# vue(.runtime).global(.prod).js :
  • Для использования напрямую, через в браузере, предоставляет глобальный доступ к Vue.
  • Компиляция шаблонов в браузере:
    • vue.global.js — «полная» сборка, которая включает в себя и компилятор шаблонов и runtime, поэтому поддерживает компиляцию шаблонов «на лету».
    • vue.runtime.global.js — содержит только runtime и требует чтобы шаблоны были предварительно скомпилированы на этапе сборки.

    Глобальные сборки не являются UMD

    (opens new window) и предназначаются только для использования напрямую через .

    # vue(.runtime).esm-browser(.prod).js :
    • Для использования в нативных импортах ES-модулей (в браузере через ).
    • Предоставляет ту же компиляцию в runtime, содержит все внутренние зависимости и жёстко заданное поведение для production/разработки глобальной сборки.

    # С использованием системы сборки

    # vue(.runtime).esm-bundler.js :
    • Для использования с системами сборки, такими как webpack , rollup и parcel .
    • Определение поведения для production/разработки условиями с process.env.NODE_ENV (значение будет подменяться системой сборки)
    • Нет готовых минифицированных сборок (минификация должна выполняться системой сборки, как и для всего остального кода)
    • Импорт зависимостей (например, @vue/runtime-core , @vue/runtime-compiler )
      • Импортируемые зависимости также являются esm-сборками и, в свою очередь, будут импортировать свои зависимости (например, @vue/runtime-core импортирует @vue/reactivity )
      • Это означает, что можно устанавливать/импортировать зависимости по-отдельности и не оказаться в ситуации с разными экземплярами этих зависимостей, но всё равно следует убедиться, что все они разрешаются одной и той же версией.
      • vue.runtime.esm-bundler.js (по умолчанию) — содержит только runtime и требует чтобы все шаблоны были предварительно скомпилированы. По умолчанию это точка входа для систем сборки (через поле module в package.json ), потому что обычно при их применении шаблоны компилируются на этапе сборки (например, в файлах *.vue ).
      • vue.esm-bundler.js — содержит компилятор шаблонов. Следует использовать когда есть система сборки, но всё равно нужна компиляция шаблонов «на лету» (например, шаблоны в DOM или в виде инлайн-строк JavaScript). Потребуется настроить систему сборки, чтобы псевдоним vue вёл к этому файлу.

      # Для отрисовки на стороне сервера (SSR)

      # vue.cjs(.prod).js :
      • Для использования отрисовки на стороне сервера в Node.js через require() .
      • При сборке приложения с помощью webpack с опцией target: ‘node’ и корректной экстернализацией vue — это та сборка, которая будет загружена.
      • Есть предварительно собранные файлы для разработки/production, но соответствующий файл будет автоматически выбираться на основе значения process.env.NODE_ENV .

      # Runtime + Компилятор vs. Runtime-only

      При необходимости компилировать шаблоны на клиенте (например, если передаёте строку в опцию template или монтируетесь к элементу DOM, используя его HTML в качестве шаблона) потребуется компилятор шаблонов, а с ним и подключение полной сборки:

      // нужен компилятор шаблонов Vue.createApp( template: 'div>< hi >>div>' >) // можно обойтись без него Vue.createApp( render()  return Vue.h('div', >, this.hi) > >) 

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11

      При использовании vue-loader шаблоны внутри файлов *.vue будут предварительно компилироваться в JavaScript на этапе сборки. Поэтому в итоговой сборке компилятор шаблонов уже не будет нужен и можно использовать более лёгкую runtime-only сборку.

      (opens new window)
      Последнее обновление страницы: больше 1 года назад

      Discord bot на Js | самый информативный гайд | Discord Js 12

      Так-же увы, но я не буду объяснять, как создать бота и установить node.js, моя цель показать вам функционал discord.js, а не то, как делаются базовые действия бота.

      Создаём папку скажем. на рабочем столе, и называем её любым названием, например это будет имя нашего бота! у меня это бот Pixi (Все права защищены, за использование названия вас приведут к ответственности!)

      И так, для начала установим библиотеки!

      npm i discord.js node-fetch

      Далее после установки данных библиотек мы можем приступить к формулировке проекта!

      Для этого в консоль пишем:

      npm init

      Далее мы просто нажимаем enter, хотя можно ещё заполнить последнее поле.. Это автор! Указываем ваше имя на Английском.

      Далее создаём файл config.json, index.js, и в файл config.json пишем:

      И меняем на свои значения, префикс — это начальная точка команды, например $help, где $ выступает префиксом, а токен — это циферки и буквы которые можно получить в настройках бота), так-же токен никому нельзя говорить, иначе вашим ботом смогут управлять другие!

      Далее в файле index.js пишем:

      const Discord = require('discord.js') const fs = require('fs') // подключаем fs к файлу const client = new Discord.Client() const config = require('./config.json') const fetch = require('node-fetch') client.commands = new Discord.Collection() // создаём коллекцию для команд fs.readdir('./commands', (err, files) => < // чтение файлов в папке commands if (err) console.log(err) let jsfile = files.filter(f =>f.split('.').pop() === 'js') // файлы не имеющие расширение .js игнорируются if (jsfile.length команд`) jsfile.forEach((f, i) => < // добавляем каждый файл в коллекцию команд let props = require(`./commands/$`) client.commands.set(props.help.name, props) >) >) client.on('ready', () => < console.log(`Бот $запустился`); >) client.on('message', message => < let prefix = config.prefix if (!message.content.startsWith(prefix) || message.author.bot) return; let messageArray = message.content.split(' ') // разделение пробелами let command = messageArray[0] // команда после префикса let args = messageArray.slice(1) // аргументы после команды let command_file = client.commands.get(command.slice(prefix.length)) // получение команды из коллекции if (command_file) command_file.run(client, message, args, prefix) >) client.login(config.token)

      Что мы сделали можно посмотреть в подсказках, а теперь расскажу зачем нужна эта коллекция команд!

      Дело в том, что по факту можно писать команды в client.on(‘message’, message => <>, но это не правильно и именно по этому мы создаём коллекцию команд и делаем следующие действия.

      После этого создаём в папке с нашим ботом ещё одну папку — commands, в этой папке и буду хранится все наши команды!

      И так, давайте создадим первую команду!

      Пускай это будет.. команда hi, бот будет отвечать нам привет!

      И так. Создаём файл hi.js и пишем в него следующее:

      const Discord = module.require("discord.js"); const fs = require("fs"); module.exports.run = async (client,message,args,prefix) => < const exampleEmbed = new Discord.MessageEmbed() // Создаём наш эмбэд .setColor('#43e2f7') // Цвет нашего сообщения .setTitle('Приветик :>') // Название эмбэд сообщения .setAuthor(message.guild.name) // Автором будет название сервера .setDescription(':^Мы любим вас!^:') // комментарий .setTimestamp() // Дата отправки сообщения .setFooter('Ваш бот Bot © 2021''); message.channel.send(exampleEmbed); // Отправляем сообщение >; module.exports.help = < name: "hi" // Название команды >;

      Дальше запускаем бота (Переходим в консоль и идём через неё в папку с ботом и пишем node index.js) и видим.

      Хорошо, у нас получилось!

      Давайте.. Сделаем пинг! (Бот будет отправлять нам задержку к отправки сообщения в миллисекундах)

      В папке commands создаём ещё один файл (ping.js) и там пишем:

      const Discord = module.require("discord.js"); const fs = require("fs"); module.exports.run = async (client,message,args,prefix) => < const ping = new Date(message.createdTimestamp); const timeTaken = Date.now() - message.createdTimestamp; message.channel.send(`Пинг: $ms`); >; module.exports.help = < name: "ping" >;

      Далее я хочу научить вас работать с рандомными изображениями и гифками, ну и эффектами :3

      Создаём файл fox.js и пишем в него следующее:

      const Discord = require('discord.js') // подключение discord.js к файлу const fetch = require('node-fetch') module.exports.run = (client, message, args) => < let res = fetch('https://some-random-api.ml/img/fox') //Извлекаем json от сайта .then(res =>res.json()) // Просматриваем текст .then(json => < const embed = new Discord.MessageEmbed() .setColor("RANDOM") .setTitle(`$, лисички :)`) .setImage(json.link) // Ставим лисичку картинкой! message.channel.send(embed); // Отсылаем сообщение >); > module.exports.help = < name: 'fox' // название команды >

      Вы сможете сделать больше рандомных картинок зная сайт. Так вот!

      Нажимаем например на картинку котика и пишет этот-же код, но вставляем вместо https://some-random-api.ml/img/fox -> https://some-random-api.ml/img/cat/ , а ещё меняем название команды и файла на cat.js / cat

      Далее поговорим про эффекты, это будет экран wasted на аватарке пользователя дискорд!

      Создаём файл wasted.js ( Вы уже знаете где) )

      const Discord = module.require("discord.js"); const fetch = require('node-fetch') const fs = require("fs"); module.exports.run = async (client,message,args) => < if (!message.mentions.users.size) < // если написано $wasted, то показываем аватарку автора сообщения let link = `https://some-random-api.ml/canvas/wasted/?avatar=$)>` // Считываем эффект и говорим что картинка для эффекта - аватарка const attachmentt = new Discord.MessageAttachment(link, 'triggered.gif'); const embed = new Discord.MessageEmbed() .setTitle(`$ ПОТРАЧЕНО!`) .attachFiles(attachmentt) .setImage('attachment://triggered.gif') return message.channel.send(embed); > const WastedList = message.mentions.users.map(user => < // Если написали $wasted @test, то показываем триггер аватарки пользователя test let link = `https://some-random-api.ml/canvas/wasted/?avatar=$)>` const attachmentt = new Discord.MessageAttachment(link, 'triggered.gif'); const embed = new Discord.MessageEmbed() .setTitle(`$ ПОТРАЧЕНО!`) .attachFiles(attachmentt) .setImage('attachment://triggered.gif') return embed >); message.channel.send(WastedList); return >; module.exports.help = < name: "wasted" >;

      Теперь сделаем команду say, бот будет удалять команду пользователя и напишет то что написано собственно после самой команды! Пример: $say Привет *Сообщение удалено * И бот пишет — Привет!

      В файл say.js пишем:

      // client.channels.cache.get('CHANNEL ID').send('Hello here!') const Discord = module.require("discord.js"); const fs = require("fs"); module.exports.run = async (client,message,args) => < if (message.member.hasPermission('MANAGE_MESSAGES'))< // Делаем проверку, что-бы не все могли использовать эту команду, смогут только те, кто может удалять сообщения на сервере let sms = args.join(" "); // Считываем то, что хотим отправить! message.channel.bulkDelete(1); // Удаляем сообщение с командой message.channel.send(sms); // Отправляем сообщение console.log(`Пользователь $отправил через say: $`); // Пишем в консоль о том, что кто-то написал сообщение через бота) >else < const adminerr2 = new Discord.MessageEmbed() // Если права нет, то пишем это .setColor('#fc5184') .setTitle(`$, вы не имеете прав на эту команду!`) .setAuthor(message.guild.name) .setFooter('Ваш бот bot © 2021') message.channel.send(adminerr2) // Отправка ошибки > >; module.exports.help = < name: "say" >;

      И. На этом всё! Спасибо за чтение данной статьи и пока!

      Как запустить node js на хостинге reg ru

      Если вы используете Node.js как средство серверной разработки для своего сайта или web-приложения, то эта статья для вас, поскольку в ней мы рассмотрим настройку данной программной платформы и правильную организацию структуры папок для корректного функ­цио­ни­ро­ва­ния вашего проекта.

      Для начала вам необходимо установить Node.js на свой аккаунт. Скачать любую версию Node.js можно с официального репозитория https://nodejs.org/dist/. На момент написания данного руководства, последним релизом являлась версия v10.6.0, скачать её можно здесь.

      Выбирать нужно версию для Linux, битность x64, архиватор GZIP. Скачиваем файл https://nodejs.org/dist/v10.6.0/node-v10.6.0-linux-x64.tar.gz

      Для нужной версии вы сможете также установить и необходимые модули (см. ниже).

      На хостинге функционирование Node.js реализовано через специальную библиотеку Passenger, которая осуществляет взаимодействие Вашего сайта с обработчиком Node.js

      Рассмотрим структуру папок и файлов. Мы предлагаем реализовать ее примерно следующим образом:

      • site-name.com (корневая папка вашего сайта)
      • htdocs
      • www

      Ваша цель — создать идентичную структуру и разместить файлы в соответствующих схеме директориях. Далее мы наполним их содержимым.

      Чтобы сразу начать пользоваться необходимой вам версией Node (при условии, что Вы уже получили доступ по SSH), можете ввести следующие команды в терминале для загрузки и распаковки архива с файлами:

      Чтобы Passenger мог взаимодействовать с Node.js, в файле .htaccess (мы рекомендуем располагать его здесь ./site-name.com/htdocs/www/.htaccess) необходимо прописать следующее:

      • Вместо hostXXXXXXX вы прописываете номер своего аккаунта
      • site-name.com — это имя папки с вашим проектом
      • app.js — название файла, который запускает работу серверной части (вы можете назвать его как захотите, главное, пропишите соответствующее имя в .htaccess)
      • PassengerNodejs — путь до исполняемого файла Node.js
      • PassengerFriendlyErrorPages — опция для отображения ошибок, в случае, когда приложение работает не корректно, или не запускается (по умолчанию — PassengerFriendlyErrorPages off). Данная опция выводит сообщения об ошибке, некоторые предложения по решению проблемы, трассировку и дамп переменных среды выполнения. Рекомендуется включать эту опцию только на этапе разработки. После её окончания удалите или закомментируйте в .htaccess эту опцию.

      При разработке любого сайта или приложения разработчики допускают ошибки. По умолчанию, они записываются в папку logs, которая находится в корне сайта. Также, убедитесь, что у вас включена данная опция в панели управления. Во вкладке «Домены»→«Прикрепление домена», рядом с надписью «Лог-файлы веб сервера» есть переключатель, который включает/выключает данную опцию. После включения, логи начнут писаться в течение 5 минут (при обычной загруженности сервера).

      Файлы restart.txt и always_restart.txt необходимы для того, чтобы при внесении вами каких-либо изменений в рабочие файлы (к примеру, app.js) Passenger, применяя правила записанные в .htaccess, мог перехватывать их и применять в работе сайта. Отличие заключается в том, что restart.txt сработает только один раз, а always_restart.txt перезапускает процесы веб-сервера при каждом поступившем запросе. Рекомендуется использовать always_restart.txt только при разработке. После того, как разработка проекта будет завершена, не забудьте удалить этот файл, чтобы избежать задержек при отображении страницы посетителям.

      Если Вы уверены в том, что ваш код работает без багов, но всё-равно видите ошибки на странице, можно принудительно завершить все процессы с помощью следующей команды через SSH-соединение:

      После чего перезагрузить страницу.

      И напоследок, осталось добавить скрипт для запуска Node в app.js. Ниже представлен код с официального сайта Node.js (в дальнейшем вы можете изменять его по своему усмотрению, сейчас мы лишь хотим убедиться, что всё работает):

      Итак, все настройки произведены. Откройте сайт в новой вкладке. Если выводится Hello world, то всё работает, как и ожидалось. В противном случае, ещё раз пройдите по вышеприведённому алгоритму действий. Возможно, вы что то упустили.

      Чтобы установить какой-либо модуль в директорию с файлами приложения, при этом используя установленную версию Node.js, необходимо для начала прописать путь до исполняемого файла node в .bash_profile (он лежит в корне вашего аккаунта). После этого вы сможете обращаться к нему из любой директории вашего проекта.

      Итак, откройте .bash_profile и допишите следующую строку:

      Для примера, рассмотрим подключение модуля mysql для работы с базой данных (предварительно, создайте таблицу под любым названием и поместите туда несколько записей). Чтобы установить даный модуль, зайдите через SSH-соединение в директорию «nodejs_app/www» и введите в терминале команду:

      Таким обазом создастся файл package.json с данными о вашем приложении. После этого наберите команду:

      Вы увидите, что автоматически создастся новая директория «node_modules» и подгрузятся необходимые нам для работы файлы.

      Также, рекомендуем загрузить 2 часто используемых модуля — fs (для работы с файлами) и util (для красивого вывода объектов в консоль)

      Далее, открываем файл нашего приложения app.js и добавляем следующий код:

      В коде выше мы, с помощью модуля fs, создаём новый файл debug.log, в который будем помещать вывод функции console.log

      Далее, переопределяем саму функцию console.log, задействуя поток на запись.

      Теперь, при помощи модуля mysql, подключаемся к своей БД и выбираем все записи из нужной нам таблицы, прописывая их в созданный нами файл.

      Проверим, всё ли сработало: перезагрузите страницу своего сайта и откройте файл debug.log — вы должны увидеть вывод всех записей из таблицы.

      Для запуска приложений Node.js через crontab создайте shell скрипт и определите в нём переменную окружения PATH исходя из ваших требований, или можно указать полный путь к бинарному файлу nodejs и скрипту. Простейший Shell скрипт для запуска nodejs приложения:

      Или команда для запуска целиком:

      Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из панели управления хостингом, раздел «Помощь и поддержка».

      Name already in use

      If nothing happens, download GitHub Desktop and try again.

      Launching GitHub Desktop

      If nothing happens, download GitHub Desktop and try again.

      Launching Xcode

      If nothing happens, download Xcode and try again.

      Launching Visual Studio Code

      Your codespace will open once ready.

      There was a problem preparing your codespace, please try again.

      Latest commit

      Git stats

      Files

      Failed to load latest commit information.

      README.md

      Библиотека Node.js для упрощения работы с REG.API 2

      Для использования REG.API необходимо добавить свой IP адрес в список разрешённых. Для этого перейдите в раздел Настройки API, желательно сразу установить Альтернативный пароль для работы с API.

      Для авторизации необходимо использовать логин и пароль от вашего аккаунта.

      Указанные данные авторизации будут автоматически добавлены в запрос. Наибольшим приоритетом обладает логин и пароль указанные в query объекте.

      Пример с указанием логина и пароля в запросе, на примере получения списка лотов.

      Установка Node.js на VPS-сервер

      Node.js — это платформа с открытым исходным кодом, которая помогает пользователям JavaScript выполнять свой код вне веб-браузера. Это бесплатное решение, которое хорошо работает практически в любой операционной системе. Что касается хостинга, VPS-серверы предоставляют идеальную среду для интеграции приложений Node.js с инструментами разработчика и API.

      Давайте посмотрим, что вам нужно сделать, чтобы использовать Node.js как на управляемых, так и на самоуправляемых серверах VPS.

      Что такое Node.js?

      Node.js — это кроссплатформенная среда выполнения JavaScript, управляемая событиями. Он построен на движке JavaScript V8 Chrome наряду с другими средами разработки, такими как MongoDB, Express.js и AngularJS. Node.js позволяет использовать JavaScript для создания веб-серверов, сетевых инструментов и модулей, отвечающих за ряд основных функций.

      Поскольку Node.js работает только с JavaScript, он более доступен для широкого сообщества разработчиков. В то же время API, используемые его модулями, упрощают процесс написания серверных приложений.

      Хотя вы можете запускать свои приложения NodeJS без него, эксперты рекомендуют установить npm — официальный менеджер пакетов Node.js. Он состоит из клиента и онлайн-базы данных (реестра npm), содержащей более 1 миллиона бесплатных и платных пакетов. Благодаря npm разработчики со всего мира могут использовать огромный пул готовых ресурсов, которые помогают им ускорить процесс разработки.

      Установка Node.js на VPS-сервер

      Почему Node.js?

      Node.js дает множество преимуществ. Во-первых, это уже молниеносная среда написания сценариев, и, поскольку она построена на движке Google, ее производительность, вероятно, со временем улучшится. Реестр npm также расширяется, поэтому разработчикам, вероятно, будет еще легче найти то, что они ищут в будущем.

      Однако скорость — далеко не единственное, чем славится Node.js. Прочтите об этом в Интернете, и вы увидите, что большинство людей много говорят об его асинхронной, управляемой событиями архитектуре.

      Давайте посмотрим на это поближе и посмотрим, какую выгоду могут извлечь разработчики.

      Чтобы понять, как это работает, нам нужно сравнить его с одной из альтернатив. PHP используется почти на 80% веб-сайтов в мире, поэтому мы будем использовать его в качестве примера. Если приложению PHP предлагается открыть файл, оно не будет обрабатывать другие запросы, прежде чем откроет указанный файл. Все последующие запросы зависят от выполнения первого.

      В отличие от этого, архитектура Node.js является асинхронной, что означает, что несколько запросов могут обрабатываться одновременно. Один запрос не должен ждать выполнения другого, а доставка контента намного эффективнее. В результате приложения, созданные с помощью Node.js, являются быстрыми, надежными и легко масштабируемыми.

      В свете всего этого неудивительно, что такие технологические гиганты, как IBM, LinkedIn, Netflix и PayPal, использовали Node.js при разработке некоторых своих продуктов.

      Установка Node.js на VPS-сервер

      Для чего используется Node.js?

      Node.js существует с 2009 года, что не так давно по сравнению с другими веб-технологиями. Тем не менее, он уже зарекомендовал себя как надежная среда разработки с десятками применений в различных сферах.

      Вот где он наиболее ярко проявляется:

      Чат-приложения

      Возможность эффективно доставлять динамический контент в сочетании с наличием библиотек JavaScript для веб-приложений в реальном времени делает Node.js идеальным для разработки отличных служб обмена мгновенными сообщениями.

      Браузерные игры

      HTML5 и развитие других технологий означают, что теперь вы можете создавать отличные браузерные игры, не полагаясь на ужасные Flash-анимации. Node.js — одна из лучших новых альтернатив.

      Потоковые приложения

      И снова асинхронный ввод-вывод в Node.js позволяет потоковым сервисам предоставлять высококачественное видео в реальном времени сотням тысяч пользователей одновременно.

      Бэкэнд-инструменты

      JavaScript в основном связан с интерфейсной разработкой, но правда в том, что существуют библиотеки JS, которые позволяют разработчикам создавать быстрые и надежные приложения командной строки с помощью Node.js.

      Системные требования Node.js

      Легкий дизайн Node.js — одна из вещей, которые сделали его таким популярным среди разработчиков. Вы должны помнить, что вам понадобится достаточно мощное оборудование, если вы хотите использовать Node.js в Windows. Однако, когда дело доходит до Linux, использование ресурсов настолько низкое, что вы можете запускать стандартные приложения Node.js даже на Raspberry Pi.

      Существуют версии Linux для ARM и 64-битных архитектур, а в Windows он работает как на 32-, так и на 64-битных машинах. Серверы macOS нуждаются в 64-битных чипах для запуска Node.js, а также есть официальный образ для контейнеров Docker.

      В общем, Node.js может работать на большинстве современных установок.

      Установка Node.js на VPS-сервер

      Установка Node.js и npm

      Поскольку он доступен во многих различных операционных системах и установках, не существует универсального учебника, который бы показал вам точные шаги по установке Node.js. Большинство VPS-серверов веб-хостинга работают на Linux, поэтому мы сосредоточимся на нем. Однако даже при этом процесс установки варьируется от дистрибутива к дистрибутиву. Вот два наиболее распространенных сценария.

      Установка Node.js и npm из официального репозитория Ubuntu

      Node.js достаточно популярен, чтобы попасть в официальные репозитории программного обеспечения одного из самых популярных в мире дистрибутивов Linux — Ubuntu. Если ваш VPS использует Ubuntu, установка Node.js включает несколько простых шагов. Давайте посмотрим на них.

      1. Обновите свой VPS

      Перед установкой Node.js рекомендуется обновить индекс пакетов для вашего виртуального сервера Ubuntu. Вы можете сделать это с помощью следующей команды:

      sudo apt-get update

      2. Установите Node.js.

      Поскольку Node.js является частью официального репозитория Ubuntu, вы можете установить его с помощью одной команды:

      sudo apt-get install nodejs

      ПРИМЕЧАНИЕ. Если вы воспользуетесь этим подходом, Ubuntu установит последний доступный пакет из репозитория. Этот метод установки не подходит, если вам нужна конкретная версия Node.js.

      3. Установите npm

      И снова вы можете установить последнюю версию npm с помощью одной команды:

      sudo apt-get install npm

      4. Убедитесь, что установка прошла успешно.

      Самый простой способ убедиться, что установка прошла успешно — спросить Ubuntu, какие версии Node.js и npm вы используете в настоящее время.

      Для Node.js команда:

      а для npm вам нужно ввести:

      Установка Node.js на VPS-сервер

      Установка Node.js вручную

      Если вы не используете Ubuntu или предпочитаете установить версию Node.js, отличную от последней, вы можете выполнить установку вручную. Это немного сложнее, чем настроить его прямо из репозитория, но если вы будете осторожны, у вас не должно возникнуть проблем с этим. Вот шаги:

      1. Скачайте и распакуйте архив Node.js.

      Сначала вам нужно убедиться, что вы находитесь в своем домашнем каталоге. Команда идти прямо там:

      Затем вы можете использовать следующую команду для загрузки архива Node.js:

      ПРИМЕЧАНИЕ. С помощью этой команды вы загрузите версию 14.18.1 ( последняя на момент написания ). Если вы хотите загрузить другую версию Node.js, вам необходимо соответствующим образом изменить URL-адрес.

      2. Распаковать архив

      Чтобы извлечь только что загруженный архив Node.js, используйте следующую команду:

      tar xvf node-v14.18.1-linux-x64.tar.xz

      Файлы будут извлечены в новый каталог с именем node-v14.18.1-linux-x64.

      3. Переименуйте каталог Node.js, чтобы облегчить себе жизнь.

      Хотя это и не обязательно, этот шаг упростит процесс установки. Что мы сделаем, так это переименуем папку с извлеченными файлами из node-v14.18.1-linux-x64 во что-то менее громоздкое, например, node Вот команда:

      mv узел-v14.18.1-linux-x64 узел

      4. Установите двоичные файлы Node.js и npm.

      Последние три команды создадут требуемый каталог, скопируют в него двоичные файлы и создадут необходимые символические ссылки:

      / bin
      cp node / bin / node

      bin
      ln -s ../node/lib/node_modules/npm/bin/npm-cli.js npm

      5. Убедитесь, что установка прошла успешно.

      Еще раз, вы можете спросить Linux, какие версии Node.js и npm установлены на сервере, чтобы убедиться, что все в порядке. Команды следующие:

      В нашем случае ответы должны быть v14.18.1 и 6.14.15 соответственно.

      Установка Node.js на VPS-сервер

      Запуск приложений Node.js

      Установив на свой сервер Node.js и npm, вы, вероятно, задаетесь вопросом, как запустить с ними приложение. Как вы собираетесь это делать, зависит от самого приложения.

      Использование npm

      Если вам нужно запустить готовое к работе приложение с допустимым файлом package.json, вы можете использовать диспетчер пакетов npm. Команда такая:

      nohup npm start –производство и

      Использование узла

      Если в вашем приложении нет файла package.json, вам нужно использовать сам Node.js. Вы можете сделать это с помощью следующей команды.

      nohup node [название вашего приложения] .js &

      Обратите внимание: если вы решите запустить приложение, не имеющее включенного файла package.json, вы не сможете управлять им с помощью npm.

      Как остановить приложение

      Чтобы завершить работающее приложение, нам нужно убить процесс. К счастью, есть простая команда, чтобы остановить любые процессы Node.js на сервере:

      Установка Node.js на VPS-сервер

      Подключите свой веб-сервер к работающему приложению Node.js

      Из — за различные комбинации технологий а VPS может обрабатывать, есть много способов подключения вашего сайта в приложение Node.js. Поскольку Apache — один из наиболее распространенных веб-серверов, мы будем использовать его в качестве демонстрационной платформы.

      Мы хотим использовать файл .htaccess для установления соединения между веб-сайтом и приложением Node.js.

      Файл .htaccess находится в корневой папке документа ( home / [ваше имя пользователя] / public_html / ). Если на вашем сервере установлена ​​панель управления веб-хостингом, вы можете получить к ней доступ через встроенный файловый менеджер. В противном случае вы можете получить доступ к серверу через SSH и открыть его в текстовом редакторе.

      Вот что вам нужно добавить в ваш файл .htaccess:

      DirectoryIndex отключен
      RewriteEngine On
      RewriteRule ^ $ http://127.0.0.1:XXX/ [P, L] RewriteCond% ! -F
      RewriteRule ^ (. *) $ Http://127.0.0.1:XXX/$1 [P, L]

      Замените «XXX» номером порта вашего приложения Node.js. После этого не забудьте сохранить изменения в файле .htaccess перед выходом из редактора.

      Развертывание приложения Node.js с помощью SPanel

      Те из вас, кто находит все эти шаги немного пугающими, будут счастливы узнать, что, если у вас есть SPanel VPS, вам не нужно проходить ни один из них.

      Интеграция Node.js была одной из наиболее востребованных функций нашими клиентами SPanel, и у нас не было другого выбора, кроме как ее реализовать. Серверы SPanel всегда поддерживали Node.js, но сейчас вам не нужно устанавливать его самостоятельно или просить об этом кого-то другого.

      Node.js устанавливается и настраивается на всех серверах SPanel, а внутри нашей проприетарной платформы управления вы найдете простой в использовании инструмент, который поможет вам запускать приложения в несколько кликов. Вот все шаги:

      1. Загрузите приложение в любую папку по вашему выбору.

      Вы можете использовать свой любимый FTP-клиент или диспетчер файлов SPanel для загрузки приложения Node.js с локального компьютера на виртуальный сервер.

      2. Разверните приложение с помощью диспетчера NodeJS в SPanel.

      Диспетчер NodeJS от SPanel доступен в пользовательском интерфейсе.

      Установка Node.js на VPS-сервер

      Кнопка « Развернуть новое приложение» открывает всплывающее окно, позволяющее быстро запустить приложение. Все, что вам нужно сделать, это указать URL-адрес приложения, порт, который оно будет прослушивать, и путь к самому приложению.

      Установка Node.js на VPS-сервер

      ПРИМЕЧАНИЕ. Для приложений Node.js вы можете использовать только порты от 3000 до 3500.

      Щелкните Развернуть, чтобы завершить процесс.

      3. Управляйте своими приложениями на Node.js.

      Диспетчер NodeJS от SPanel отображает список всех развернутых на данный момент приложений Node.js. Выпадающие меню « Действия» позволяют вам по очереди останавливать, перезапускать и отменять развертывание.

      Заключение

      Если вы хотите создать простой блог или небольшой интернет-магазин, вам, вероятно, не понадобится Node.js. Среда выполнения JavaScript больше подходит для более сложных проектов, обычно возглавляемых людьми с большим опытом в этой области.

      С правильными командами у них не должно возникнуть проблем с установкой и использованием Node.js на самоуправляемом виртуальном сервере. Однако даже самые большие мастера командной строки оценят удобство запуска приложений из удобного графического пользовательского интерфейса, такого как NodeJS Manager от SPanel.

      Часто задаваемые вопросы

      Должен ли я платить за использование Node.js?

      Node.js имеет открытый исходный код и бесплатен для использования. При этом, если вы разрабатываете свой проект Node.js в проприетарной интегрированной среде разработки (IDE), вероятно, будет взиматься плата, поскольку это коммерческий продукт.

      Что такое НПМ?

      NPM — это сокращение от Node Package Manager. Он служит репозиторием для пакетов JavaScript, которые разработчики включают в свои проекты. Это также дает веб-разработчикам возможность управлять определенной версией каждого пакета.

      Хостинг Google Code для файлов JavaScript, CSS, PHP. Хостинг js

      Приветствую начинающих кодеров на своём блоге, которые интересуются созданием программ и скриптов на JavaScript. Если вас интересует, какой выбрать хостинг Node Js, то вы попали точно по адресу. Найти качественную компанию, предоставляющую услуги с поддержанием такого окружения, не так-то просто. Я расскажу вам о лучших в России.

      Node.Js — платформа, работающая на V8, которую разработали специалисты Google. Платформа конвертирует JS из узкоспециализированного языка в язык общего назначения. Сразу хочу сказать, что работать новичку с ней не рекомендую. Эта тема подойдёт только тем кодерам, которые уже обладают определённым опытом и хотят решать интересные и сложные задачи.

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

      А начать основную часть хотел бы с высказывания великого учёного Альберта Эйнштейна: «Стремитесь не к тому, чтобы добиться успеха, а к тому, чтобы ваша жизнь имела смысл». Помните, что, в первую очередь, вы должны наслаждаться работой над своими проектами и приносить через них пользу другим людям, а уже потом собирать сливки в виде прибыли. Тогда ваша жизнь будет наполнена смыслом.

      Reg.Ru

      Reg.Ru — лидер российского сегмента регистраторов, оказывающий услуги с 2006 года. По данным с сайта компании, сейчас они обслуживают 2,9 млн. доменов, а число клиентов находится на отметке 1,3 миллиона. За 11 лет с момента основания различные услуги предоставлены 21 миллион раз.

      Компания предлагает VPS на Linux:

      Если вы не уверены в своих силах, установить Node.Js на сервер можно с поддержкой регистратора. Причём компания не берёт плату за оказание дополнительной услуги подобного рода. Я считаю, это большой плюс.

      По опыту работы с этой организацией выделяю следующие преимущества:

      • В работе используется современное оборудование, которое регулярно обновляется для соответствия современным требованиям;
      • Через несколько минут после оплаты заказа VPS функционирует в штатном режиме, поэтому начинать работать можно сразу же;
      • Если заканчиваются доступные ресурсы, можно перейти на другой тарифный план. Всё проходит в автоматическом режиме, перенастраивать свой сервер вам не придётся;
      • Reg.Ru несёт ответственность за предоставление тех ресурсов, которые заявлены в описании тарифного плана. Сказано — сделано. Всё так и есть в действительности.

      Приятными допами является выбор Windows из нескольких редакций и доступ к удалённому рабочему столу. Данная компания давно зарекомендовала себя на отечественном рынке. Оказывает качественные услуги, идёт в ногу со временем. Если вы ищите качественный сервер для Node.Js, то можете смело воспользоваться Reg.Ru.

      Unihost

      Unihost — международная фирма, оказывающая услуги на российском рынке уже несколько лет. Основана в 2001 году. Сразу хочу сказать, что цена тарифов привязана к доллару. Это вызывает постоянное колебание стоимости в рублёвом эквиваленте. Поэтому не удивляйтесь, если информация в действительности будет отличаться от указанной ниже.

      Регистратор предлагает четыре тарифа VPS, на которые можно установить Node:

      Unihost предлагает своим клиентам возврат средств, если они недовольны качеством предоставляемых услуг. Это возможно только при первом заказе. То есть вы можете взять бесплатно пробный период. Преимущества VPS этой компании:

      • Сервера подключены к интернет-каналу со скоростью 500 Мбит/с и 1 Гбит/с при пиковых нагрузках;
      • При заказе виртуального сервера пользователь получает один IPv4 и 10 IPv Если вам потребуется больше, заказать дополнительный IPv4 можно за 124 рубля в месяц, а дополнительные IPv6 предоставляются бесплатно;
      • Пользователь после оплаты получает данные к root доступу. Через него осуществляется контроль работы сервера, состояния ресурсов. Можно сделать остановку, перезагрузку или установить дополнительные компоненты;
      • При возникновении проблем можно обратиться в службу поддержки. Для связи используется онлайн-чат на сайте, тикетная система или электронная почта, указанная на сайте.
      TimeWeb

      Конечно, не включить в данный список свой любимый хостинг я не мог. Как вы уже догадались, TimeWeb также предлагает поддержку Node.Js на своих VDS-серверах. Организация работает с 2006 года. На своём оборудовании содержит более 370 тысяч сайтов различной величины. В работе используются только современные технологии, расположенные в двух дата-центрах в Санкт-Петербурге. Чётких тарифов здесь нет. Компания предлагает гибкие настройки: Пользователь может выбрать столько ресурсов, сколько ему требуется. Также можно выбрать необходимую операционную систему и панель администрирования. На виртуальный сервер от TimeWeb можно установить любое количество сайтов, доменов, почтовых ящиков и т.п. Преимущества:

      • Панель управления VDS с интуитивно понятным интерфейсом — авторская разработка команды российских специалистов TimeWeb;
      • Компания гарантирует защищённость данных пользователя. Также каждый сервер имеет надёжную защиту от хакерских атак;
      • Если ваш проект растёт и ресурсы используются на пределе, вы можете легко добавить оперативной памяти или процессоров. Это не повлияет на работу проекта, все настройки сохранятся;
      • Вы получаете столько ресурсов, сколько заказали. Соседи по физическому серверу никак не влияют на стабильность работы вашего сайта;
      • Команда контролирует работу оборудования круглые сутки, что обеспечивает стабильность на протяжении 24 часов.

      Как человек, который давно сотрудничает с этой фирмой, я рекомендую рассмотреть этот вариант в первую очередь. Хотя, есть небольшой недостаток — поддержка не оказывает помощи при установке Node.Js и не несёт ответственности за последствия размещения платформы на виртуальном сервере.

      Также рекомендую рассмотреть HandyHost. Здесь можно арендовать VPS на Linux или Windows и установить платформу Node.Js.

      Есть ли халява?

      Если вы только начинаете осваивать данную технологию, рекомендую воспользоваться услугами Appfog или Heroku. Здесь вы сможете воспользоваться аккаунтами, поддерживающими Node, бесплатно. Таким образом, можно заниматься самообучением, тестировать свои разработки и многое другое. А главное — это сократит ваши расходы.

      Какой можно сделать вывод?

      Node.Js стремительно набирает популярность. Многие крупные компании подключают поддержку этой технологии. Например, на Amazon недавно появилось AWS SDK, поддерживающее работу Node.

      Как я уже говорил выше, данная статья предназначена для продвинутых юзеров. Для новичков попытка осознать описанный материал — значит, перепрыгнуть через несколько ступеней. Этого я делать не советую, образование должно быть последовательным. О теоретической составляющей мы поговорим в следующих материалах.

      Пришло время прощаться. Надеюсь, что я помог людям найти то, что они искали. Занимайтесь, создавайте, экспериментируйте! Создавайте что-то новое и сполна раскрывайте свой творческий потенциал. Не забудьте подписаться на мой блог, чтобы быть в курсе будущих обновлений.

      Свой Node.js хостинг на VPS / Хабр

      О том, как организовать такой хостинг, и будет идти речь в этой статье. Если по ходу руководства у вас возникнут проблемы, поищите их решение в конце статьи.

      Создаем VPS
      1. Регистрация на DigitalOcean
      2. Создаем SSH-ключ

      Выполните следующие две команды в терминале, чтобы сгенерировать ssh-ключ:

      /.ssh $ ssh-keygen -t rsa -C «[email protected]» И тут нас просят ввести имя файла ключа. Рекомендую использовать что-нибудь вроде id_rsa_digitalocean_dropletname, где имя дроплета — это либо имя домена, на который мы привяжем наш сервер, либо просто какое-нибудь осмысленное название. Парафразу можно оставить пустой, и так сойдет.

      После этого будет создано два файла: ssh-ключ и public-ключ. Скопируем публичный ключ в буфер обмена модным способом:

      /.ssh/id_rsa_digitalocean_dropletname.pub | pbcopy Теперь зайдем в админку в digitaloceans в раздел SSH-keys и создадим там новый ключ, вставив его из буфера обмена.

      3. Создаем дроплет
      • В качестве hostname укажите доменное имя или что-нибудь осмысленное, это название роли не играет
      • Размер выбирайте самый маленький, его потом можно будет увеличить из терминала
      • Регион любой, я выбрал Амстердам
      • Образ выберите на вкладке Applications, c названием «Dokku v0.2.3 on Ubuntu. » или похожим
      • Укажите SSH-ключ, который мы создали на предыдущем шаге
      4. Настройка Дроплета и DNS

      Если у вас нет доменного имени, то оставьте все, как есть, жмите «Finish setup» и переходите к следующему пункту. Ваше приложение будет доступно примерно так: «19.19.197.19:46667», по IP адресу и номеру порта. Если вас это не устраивает — срочно купите доменное имя. В любом случае, настроить доменное имя можно будет позже, о чем я расскажу в конце.

      Если вы укажете доменное имя, у вас будет возможность настроить доступ к приложениям через поддомены. Например, если ваше доменное имя mydomain.com, тогда ваше приложение будет доступно по адресу app.mydomain.com. Также есть возможность привязать приложение на главный домен, но об это я в данной статье не расскажу.

      Укажите в поле Hostname ваше доменное имя и поставьте галочку «Use virtualhost naming for apps». Теперь идите в панель управления вашим доменным именем и впишите две новые настройки примерно так:

      apps.mydomain.com. IN A [Droplet IP address] *.apps.mydomain.com. IN A [Droplet IP address] Или так:mydomain.com. IN A [Droplet IP address] *.mydomain.com. IN A [Droplet IP address] Точный синтаксис уточните у себя в админке доменного имени или у домен-провайдера.

      Теперь возвращайтесь на страницу настройки дроплета и жмите «Finish setup».

      5. Настраиваем использование SSH

      /.ssh/ Если у вас еще нет файла «config» в этой папке (проверка — $ ls), то его необходимо создать:$ touch config Теперь открываем config($ open config) и записываем в него следующие данные: Host YOUR.DROPLET.IP.ADDRESS IdentityFile

      /.ssh/id_rsa_digitalocean_dropletname Где в первой строчке IP адрес или доменное имя, на второй строчке — имя созданного ssh-ключа для этого дроплета.

      $ ssh [email protected] Где после «@» надо указать или доменное имя, или IP.

      Если вы пропустили создание SSH-ключа, войти можно по паролю, который пришел к вам на почту. Для этого выполните ту же команду:

      $ ssh [email protected] и на вопрос о продолжении соединения напишите «yes». После этого введите пароль.

      Если вы увидели приветственный экран, значит все хорошо. Закроем соединение командой exit и перейдем к следующему пункту.

      Деплоим приложение
      1. Подготавливаем проект

      3.0″ > > Содержание файла package.json важно, так как по нему dokku будет устанавливать модули для приложения. А Procfile должен выглядеть так:web: node server.js Инициализируем в папке проекта репозиторий (если его не было), добавляем все файлы и коммитим:$ git init && git add -A && git commit -m «Initial commit» Теперь наш проект готов к разворачиванию на сервере.

      2. Заливаем и запускаем проект

      Теперь вызываем команду push:

      $ git push dokku master И начинается загрузка приложения, установка модулей. В конце на экране покажется url, по которому можно запустить проект. Это будет ссылка вида 192.88.67.168:46567 или app1.mydomain.com, в зависимости от настроек dokku.

      По идее проект должен быть запущен после этого. Но если нет, то заходим в по ssh в наш дроплет и выполняем две команды

      $ cd /home/dokku/YOUR-APP-NAME $ dokku run YOUR-APP-NAME node app.js Запускаем в браузере ссылку, полученную ранее, и радуемся!

      Проблемы и их устранение
      1. Мою банковскую карточку не приняли для оплаты
      2. Создал дроплет, но по IP адресу нет страницы настройки dokku
      • указать образ с Dokku
      • нажмите кнопку «Rebuild from Image».
      3. Не могу получить доступ к дроплету ни по паролю, ни по SSH
      1. Наверное, вы как-то пропустили шаг настройки dokku, или dokky создался не правильно.
      2. Проверьте, если доступна страница настройки dokku по IP адресу дроплета, то вернитесь к шагу 4 создания VPS.
      3. Если страницы настроек нет, тогда попробуйте сбросить пароль и повторить попытку доступа через терминал. Если даже в этом случае доступ по паролю будет неудачным, тогда переустановите дроплет, как описано в предыдущем пункте.
      4. Я не знаю пароля от дроплета
      5. Проект не запускается по указанной ссылке
      6. Я пропустил создание SSH, и теперь хочу сделать авторизацию по SSH-ключу
      7. Как добавить доменное имя к уже существующему дроплету

      /.ssh/config новые строчки: Host YOUR.DROPLET.IP.ADDRESS IdentityFile

      /.ssh/id_rsa_digitalocean_dropletname Смело пушаем проект:$ git push dokku master

      Теперь проекты будут доступны на поддоменах.

      Всем спасибо за внимание, хороших выходных!

      Бесплатный хостинг Google Code для файлов JavaScript, CSS, PHP

      Привет, дорогие читатели! Все сервисы Google весьма полезны для пользователей и большинство из них для нас являются бесплатными. Взять к примеру тот же Blogger (к стати можно завести до 100 блогов) который мы все любим и с большим удовольствием пользуемся.

      А к Blogger, как раз нужен бесплатный надежный хостинг, чтобы хранить файлы JavaScript, CSS, jQuery, PHP, Flash для различных виджетов. Google Code, наравне с Dropbox очень подходит для этого. Все зарубежные разработчики популярных виджетов, используют именно Google Code для хранения различных сценариев, css и так далее.

      Google Code

      Хостинг Google Code

      Google Code — это сервис для разработчиков программного обеспечения. В первую очередь предназначен для продуктов, связанных с продуктами компании Google. Однако сайт также предоставляет сервис для сторонних разработок. Сервис хостинг для проектов Google Code — разрешено свободно загружать и хранить файлы в объёме 4GB. Вы можете загрузить все, что угодно, в пределах 200 МБ для каждого файла. Пусть это будет Java, PHP, MySQL, CSS, jQuery, Script.

      Как загрузить файлы JavaScript, CSS на Google Code и получить прямую ссылку

      Заходим на сайт Google Code с вашим Gmail ID. Для начала мы создадим новый проект. Затем, надо дать название проекту, заполнив небольшую форму.

      google_ code_proekt

      Новый проект на Google Code

      • Project name — дайте название проекту,можно по имени вашего блога, пример: у меня new-school-blogger;• Project summary — краткое описание проекта,можно по первым буквам названия блога; пример у меня nsb;• Description — описание проекта,можно также по первым буквам названия блога;• Version control system — выбрать средний Mercurial;• Source code license — лицензию выбрать Массачусетского технологического института — MIT license;• Project label(s) — ярлыки которые лучше всего описывают ваш проект (например: — JavaScript, CSS, jQuery и другие).

      Далее нажимаем «Создать проект» (Create Project). В следующем окне нажмите «Downloads» затем нажмите «New Download»:

      New_ Download

      Новая загрузка файлов на хостинг Google Code

      Дайте файлу уникальное имя, потом описание и как обычно выберите файл на жёстком диске который нужно загрузить. Ярлык можете присвоить OpSys-All, далее нажмите «Отправить файл». И так, мы загрузили ваш файл на хостинг Google Code.Теперь, если нужно получить прямую ссылку на файл, нажмите на сам файл который загрузили и мы попадём на страницу для скачивание файла.

      fale

      Скачать или получить прямую ссылку на файл

      Но нам не нужно его загружать на компьютер, просто кликаем правой кнопкой мыши на файл, затем выберите из выпадающего списка «Копировать адрес ссылки». Вот эта прямая ссылка на файл нам и нужна. Вот дорогие друзья, совсем кратко я показал, как пользоваться хостингом Google Code. Всего доброго. Удачи.

      Related posts:

      1. Как настроить почту яндекс в outlook
      2. Как подключить варочную индукционную панель
      3. Как пронумеровать столбец в excel по порядку
      4. Как сделать скролл клик

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *