Разное

Node wiki js: GitHub — Requarks/wiki: Wiki.js | A modern and powerful wiki app built on Node.js

Содержание

★★★★★ Wiki.js — обзор, плюсы и минусы программы, отзывы пользователей.

Описание

Напишите свой контент в широко используемом и простом формате Markdown, используя встроенный визуальный редактор. В отличие от других вики-программ, которые сохраняют контент в базе данных в сложном для извлечения формате, Wiki.js сохраняет весь ваш контент непосредственно в файлы Markdown (.md), и этот контент автоматически синхронизируется с вашим удаленным репозиторием Git. Таким образом, ваш контент безопасен и доступен для чтения прямо из вашего репозитория Git. Wiki.js работает на невероятно быстром движке Node.js и оптимизирован для использования ресурсов ЦП. Он в значительной степени опирается на кэширование для быстрой доставки контента пользователям и использует новейшие веб-технологии, такие как WebSockets, для обеспечения мгновенной интерактивности на веб-странице. Подробнее »Контент автоматически обрабатывается в красивый формат для чтения, представленный в элегантном пользовательском интерфейсе. Меню боковой панели создается для каждой страницы на основе ваших заголовков, а разделы отображаются в разных цветах для улучшения читабельности. Выберите, чтобы ограничить доступ к вашей вики для определенных пользователей или даже только для частей вашего контента. Вы в полном контроле с простым в использовании контролем доступа, встроенным в Wiki.js. Войдите в систему, используя локальную базу данных, или подключитесь к внешним поставщикам аутентификации, таким как учетная запись Microsoft, Google ID или Facebook, чтобы обеспечить беспрепятственный вход в систему для ваших пользователей. Вставляйте изображения, схемы, документы, видео, ссылки и многое другое в ваш Wiki.js, используя встроенный в управлении активами. Организуйте свои медиафайлы в папки и позвольте встроенному редактору сгенерировать подходящие теги Markdown для вас. Вы даже можете попросить Wiki.js получить изображение с внешнего сайта для вас. Еще раз, все ваши файлы автоматически синхронизируются с вашим удаленным Git-репозиторием для безопасного хранения. Быстро найдите вики-запись, которую вы ищете, используя встроенную поисковую систему, доступную с любой страницы. Он предоставляет релевантные результаты и предложения, анализируя ваши метаданные и контент вики.

Видео

Лучшие веб-приложения с открытым исходным кодом на базе Node.js для самостоятельного размещения вики (База знаний)

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

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

Github

openKB — это приложение базы знаний Markdown (FAQ), созданное с использованием Nodejs и ExpressJS. Приложение по умолчанию использует встроенную базу данных (nedb), но также может использовать сервер MongoDB, изменив конфигурацию (см. Ниже). Приложение разработано так, чтобы его было легко использовать и устанавливать, и оно основано на поиске, а не на вложенных категориях. Просто найдите то, что вы хотите, и выберите из результатов. Особенности этого проекта:

  • Поиск: openKB — это база знаний (FAQ) на основе поиска, поддерживаемая Lunr.js индексация для создания наилучших результатов поиска.
  • Backend: openKB использует чистый Javascript nedb встроенная база данных по умолчанию или сервер MongoDB.
  • Дизайн / ТемыopenKB предназначен для простого плоского дизайна. Темы могут быть добавлены путем создания папки темы в public/themes/, Смотрите пример темы для получения дополнительной информации.
  • отзывчивый: openKB построен с использованием Bootstrap, что позволяет ему быть отзывчивым и работать на всех устройствах. admin может быть немного сложнее редактировать Markdown на небольших экранах.
  • Русалочка: openKB позволяет Русалочка графики в статьях.
  • редактор: openKB использует Markdown-it, основанный на CommonMark spec. Это учитывает самый лучший опыт уценки.
  • Управление имиджем: openKB позволяет перетаскивать изображения в статьи. Изображение автоматически загружается на сервер в фоновом режиме. Пользователи Google Chrome также могут вставлять изображения прямо из буфера обмена.

Github

Jingo — это вики-движок на основе git, написанный для node.js, с достойным дизайном, возможностями поиска и хорошей типографикой. Цель этого вики-движка — предоставить простой способ создания централизованной области документации для людей, привыкших работать с git и markdown. Он должен хорошо вписываться в команду разработчиков без необходимости изучать сложное и обычно избыточное приложение. Jingo очень вдохновлен (и совместим с форматом) собственной вики-системой github Gollum, но он пытается быть более автономной и полной системой, чем Gollum. Думайте о дзинго как о «github wiki, без github, но с большим количеством функций». «Джинго» означает «Джинго не Голлум» по нескольким причинам. Особенности этого проекта:

  • Нет базы данных: Jingo использует репозиторий git в качестве архива документов
  • Уценка за все, Github со вкусом
  • Джинго использует CodeMirror или же Markitup как редактор разметки, с хорошим (ajax) предварительным просмотром (см. features введите файл конфигурации)
  • Он обеспечивает «почти без отвлечения», почти полноэкранный режим редактирования
  • Совместим с вики, созданной с Голлум вики
  • История изменений для всех страниц (с восстановлением)
  • Показать различия между версиями документа
  • Разбитый на страницы список всех страниц, с быстрым способом найти изменения между ревизиями
  • Поиск по содержанию и названиям страниц
  • Макет страницы принимает пользовательские боковую панель и нижний колонтитул
  • Граватарская поддержка
  • Может включать в документ IFRAME (например, вставлять документ Google Диска)
  • Создать оглавление для страниц
  • Может использовать пользовательские скрипты CSS и JavaScript
  • Белый список для авторизации на странице чтения и записи
  • Обнаруживает неписанные страницы (которые будут выделены красным цветом)
  • Автоматически нажимать на пульт (опционально)
  • Мобильный дружественный (на основе Bootstrap 3.x)
  • Вполне настраиваемый, но также работает из коробки
  • Хорошо работает за прокси-сервером (т. Е. Вики можно «смонтировать» как каталог на другом сайте)
  • Страницы могут быть встроены в другой сайт
  • Аутентификация через Google, Github, LDAP и локальное имя / пароль

Github

Raneto — это база знаний, основанная на уценке для Nodejs, которая использует статические файлы уценки для расширения базы знаний. Raneto можно назвать своего рода «генератором статического сайта», так как он не требует базы данных. Весь ваш контент хранится в content папка в уценке (.md) файлы и вся структура и контент базы знаний создаются Raneto. Это хорошо, потому что это:

  • Просто: Вы можете создавать и управлять всей базой знаний, используя ваш любимый текстовый редактор.
  • Плоский: Raneto — это CMS с «плоскими файлами», что означает отсутствие проблем с базами данных, запросов MySQL, ничего
  • Быстро: Raneto серьезно облегчает работу и не использует базу данных, что делает ее очень быстрой

Raneto также имеет:

Github

Matterwiki — это очень простая и красивая вики для команд, поэтому они могут использовать ее для хранения документации, заметок, руководств по культуре, учебных пособий, содержания сотрудников и всего, что они хотят. В отличие от традиционных программ для вики, Matterwiki использует простой редактор WYSIWYG. Это означает, что нет сложного форматирования или структуры для подражания. Среда редактирования, в которой вам удобно. WYSIWYG = То, что вы видите, это то, что вы получаете. Matterwiki использует API-интерфейс Node.js с внешним интерфейсом React.js и Sqlite3 для базы данных.

Github

Wiki.js — это современное и мощное вики-приложение с открытым исходным кодом, основанное на Node.js, Git и Markdown. Наиболее известными особенностями этой вики является использование простого формата Markdown, он очень легкий, имеет встроенный контроль доступа (служба регистрации), вход в социальную сеть, чтобы обеспечить бесперебойный вход в систему для ваших пользователей и полезное и интуитивно понятное управление активами. особенность.

Одним из самых удивительных факторов, которые ставят Wiki.js на первое место в этой статье, является их удивительная особенность в том, чтобы сделать весь ваш контент красивым графически. Содержание обрабатывается в красивый формат чтения, представленный в элегантном пользовательском интерфейсе. Меню боковой панели генерируется для каждой страницы на основе ваших заголовков, а разделы отображаются в разных цветах для улучшения читабельности, это очень хорошо, верно? И, как уже упоминалось в этой статье, вы можете свободно просматривать полный исходный код и добавлять новые функции! Разместите его на своих локальных серверах, в облаке или даже дома. Это абсолютно бесплатно.

Если вы знаете другое замечательное приложение с открытым исходным кодом для создания вики / базы знаний для размещения его на своих собственных серверах, не стесняйтесь и поделитесь им с сообществом в поле для комментариев.

Express/Node introduction — Изучение веб-разработки

В этой первой статье по Express мы ответим на вопросы «Что такое Node?» и «Что такое Express?», и сделаем обзор того, что делает веб-фреймворк Express таким особенным. Мы расскажем об основных функциях и покажем вам некоторые из основных строительных блоков приложения Express (хотя на данный момент у вас еще нет среды разработки, в которой можно ее протестировать).

Node (или более формально Node.js) — кросплатформенная среда исполнения с открытым исходным кодом, которая позволяет разработчикам создавать всевозможные серверные инструменты и приложения  используя язык JavaScript. Среда исполнения предназначена для использования вне контекста браузера (т.е. выполняется непосредственно на компьютере или на серверной ОС). Таким образом, среда исключает API-интерфейсы JavaScript для браузера и добавляет поддержку более традиционных OS API-интерфейсов, включая библиотеки HTTP и файловых систем.

С точки зрения веб-серверной разработки Node имеет ряд преимуществ:

  • Отличная производительность! Node был разработан для оптимизации пропускной способности и масштабируемости в веб-приложениях и очень хорошо справляется со многими распространенными проблемами веб-разработки (например, веб-приложения реального времени).
  • Код написан на «обычном старом JavaScript», а это означает, что затрачивается меньше времени при написании кода для браузера и веб-сервера связанное с  «переключением технологий» между языками.
  • JavaScript является относительно новым языком программирования и имеет преимущества от улучшения дизайна языка по сравнению с другими традиционными языками для веб-серверов (например, Python, PHP, и т.д.). Многие другие новые и популярные языки компилируются/конвертируются в JavaScript, поэтому вы можете также использовать CoffeeScript, ClosureScript, Scala, LiveScript, etc.
  • Менеджер пакетов Node (NPM) обеспечивает доступ к сотням тысяч многоразовых пакетов. Он также имеет лучшее в своем классе разрешение зависимостей и может также использоваться для автоматизации большинства инструментов построения.
  • Он портативен, имеет версии для  Microsoft Windows, OS X, Linux, Solaris, FreeBSD, OpenBSD, WebOS, и NonStop OS. Кроме того, он имеет хорошую поддержку среди многих хостинг-провайдеров, которые часто предоставляют конкретную инфраструктуру и документацию для размещения сайтов, работающих на Node.
  • Он имеет очень активную стороннюю экосистему и сообщество разработчиков, которые всегда готовы помочь.

Вы можете изпользовать Node.js для создания простого веб сервера используя пакет Node HTTP. 

Hello Node.js

Следующий пример создаёт веб сервер который прослушивает любой HTTP запрос на URL http://127.0.0.1:8000/ — когда запрос будет получен, скрипт ответит строкой «Hello World». Если Вы уже установили node, можете, следуя шагам инструкции попробовать пример:

  1. Откройте терминал (в Windows окно командной строки)
  2. Создайте папку, куда вы хотите сохранить программу, к примеру test-node и перейдите в нее с помощью следующей команды:
cd test-node
  1. Используя любимый текстовый редактор, создайте файл hello.js и вставьте в него код:

const http = require("http");

const hostname = "127.0.0.1";
const port = 8000;


const server = http.createServer((req, res) => {

   
   res.writeHead(200, {'Content-Type': 'text/plain'});

   
   res.end('Hello World\n');
});


server.listen(port, hostname, () => {
   console.log(`Server running at http://${hostname}:${port}/`);
})
  1. Сохраните файл в папку, созданную выше.
  2. Вернитесь в терминал и выполните следующую команду:
node hello.js

В итоге, перейдите по ссылке http://localhost:8000 в вашем браузере; вы должны увидеть текст «Hello World» в верху слева на чистой странице.

Другие общие для веб-программирования задачи не поддерживаются на прямую Node. Если вы хотите добавить специфичную поддержку различных HTTP методов (например GETPOSTDELETE, и т.д.) по разному для разных URL путей («routes»), отдачу статических файлов, или использовать шаблоны для создания динамических ответов, вам нужно написать код самим, или можете отказаться от изобретения колеса и использовать фреймворк!

Express — самый популярный веб-фреймворк для Node. Он является базовой библиотекой для ряда других популярных веб-фреймворков Node. Он предоставляет следующие механизмы:

  • Написание обработчиков для запросов с различными HTTP-методами в разных URL-адресах (маршрутах).
  • Интеграцию с механизмами рендеринга «view», для генерации ответов, вставляя данные в шаблоны.
  • Установка общих параметров веб-приложения, такие как порт для подключения, и расположение шаблонов, которые используются для отображения ответа.
  • «промежуточное ПО» для дополнительной обработки запроса в любой момент в конвейере обработки запросов.

В то время как сам express довольно минималистичный, разработчики создали совместимые пакеты промежуточного программного обеспечения для решения практически любой проблемы с веб-разработкой. Существуют библиотеки для работы с куки-файлами, сеансами, входами пользователей, параметрами URL, данными POST, заголовками безопасности и многими другими. Вы можете найти список пакетов промежуточного программного обеспечения, поддерживаемых командой Express в Express Middleware (наряду со списком некоторых популярных пакетов сторонних производителей) .

Примечание: Гибкость это палка о двух концах. Существуют пакеты промежуточного программного обеспечения (middleware) для решения практически любых проблем или для удовлетворения любых ваших требований, но правильный выбор подходящих пакетов иногда может быть проблемой. Также нет «правильного пути» для структурирования приложения, и многие примеры, которые вы можете найти в Интернете, не являются оптимальными или лишь показывают небольшую часть того, что вам нужно сделать для разработки веб-приложения.

Node первоначально был выпущен только под Linux в 2009. Менеджер пакетов NPM был выпущен в 2010, а поддержка Windows была добавлена в 2012. Текущая LTS-версия Node v12.16.1 , в то время как последний выпуск Node версии 13.11.0. Это короткий экскурс в историю; обратитесь к Википедии, если вы хотите узнать больше).

Express первоначально был выпущен в ноябре 2010 и текущая версия API 4.17.1 Вы можете отследить изменения и текущий релиз, и GitHub для более детальной информации о релизах.

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

Не существует какого-либо доступного и точного измерения популярности серверных фреймворков (хотя сайты, такие как Hot Frameworks, пытаются оценить популярность, используя такие механизмы, как подсчет количества проектов на GitHub и вопросов на StackOverflow для каждой платформы). Лучший вопрос заключается в том, достаточно ли популярны Node и Express, чтобы избежать проблем с непопулярными платформами. Они продолжают развиваться? Можете ли вы получить помощь, если вам это нужно? Есть ли у вас возможность получить оплачиваемую работу, если вы изучаете Express?

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

Web-фрэймворки часто принято делить на «ограничивающие» и «неограничивающие».

Ограничивающими фрэймворки считаются фрэймворки, которые следуют «должным» ограничениям при выполнении отдельных задач. Довольно часто они ориентированы на ускоренную разработку в конкретной области  (решение задач определенного типа), поскольку должный подход  к произвольно выбранной задаче бывает не прост для понимания и плохо документирован. При этом они лишаются гибкости при решении задач выходящих за сферу их обычного применения, а так же проявляют тенденцию к ограничению выбора компонентов и подходов своего применения. 

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

Express не ограничивающий. Вы можете вставить в цепочку обработки (middleware) запросов практически любое совместимые промежуточные компоненты, которые вам нравятся. Вы можете структурировать приложение в одном файле или в нескольких, использую любую структуру каталогов. Иногда вы можете чувствовать, что у вас слишком много вариантов!

В традиционных динамических веб-сайтах, веб-приложение ожидает HTTP-запроса от веб-браузера (или другого клиента). Когда запрос получен, приложение определяет, какое действие необходимо выполнить на основе URL шаблна и, возможно, связанной информации, содержащейся в данных POST или GET. В зависимости от того, что требуется, Express может затем читать или записывать данные из/в базы данных или выполнять другие задачи, в соответствии с полученным запросом. Затем приложение возвращает ответ в веб-браузер, зачастую динамически создавая HTML страницу для отображения браузером, вставляя извлеченные данные в заполнители HTML шаблона.

Express предоставляет методы позволяющие указать, какая функция вызывается для конкретного HTTP запроса (GET, POST, SET, etc.), и URL шаблон («Route»), а также методы позволяющие указать, какой механизм шаблона («view») используется, где находятся шаблоныы файлов и какой шаблон использовать для вывода ответа. Вы можете использовать Express middleware для добавления поддержки файлов cookies, сеансов, и пользователей, получения POST/GET параметров, и т.д. Вы можете использовать любой механизм базы данных, поддерживаемый Node (Express не определяет поведение, связанное с базой данных).

В следующих разделах объясняются некоторые общие моменты, которые вы увидите при работе с кодом Express and Node.

Helloworld Express

Сначала давайте рассмотрим стандартный пример Express Hello World (мы обсудим каждую часть этого ниже и в следующих разделах).

Совет: Если у вас уже установлены Node и Express (или если вы устанавливаете их, как показано в следующей статье), вы можете сохранить этот код в файле с именем app.js и запустить его в командной строке, вызвав узел app.js. отражения).

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World!');
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});

Первые две строки требуют () (импорт) модуля Express и создания приложения Express. Этот объект, который традиционно называется app, имеет методы для маршрутизации HTTP-запросов, настройки промежуточного программного обеспечения, рендеринга представлений HTML, регистрации механизма шаблонов и изменения параметров приложения, которые управляют поведением приложения (например, режим среды, чувствительны ли определения маршрута к регистру). , и т.д.)

Средняя часть кода (три строки, начинающиеся с app.get) показывает определение маршрута. Метод app.get () указывает функцию обратного вызова, которая будет вызываться всякий раз, когда есть HTTP-запрос GET с путем (‘/’) относительно корня сайта. Функция обратного вызова принимает запрос и объект ответа в качестве аргументов и просто вызывает send () для ответа, чтобы вернуть строку «Hello World!»

Последний блок запускает сервер через порт «3000» и печатает комментарий журнала в консоль. Когда сервер работает, вы можете перейти к localhost: 3000 в вашем браузере, чтобы увидеть возвращенный пример ответа.

Импорт и создание модулей

Модуль — это библиотека / файл JavaScript, который вы можете импортировать в другой код с помощью функции require () Node. Express сам по себе является модулем, как и промежуточное программное обеспечение и библиотеки баз данных, которые мы используем в наших приложениях Express.

Приведенный ниже код показывает, как мы импортируем модуль по имени, используя в качестве примера платформу Express. Сначала мы вызываем функцию require (), определяя имя модуля в виде строки («express») и вызывая возвращенный объект для создания приложения Express. Затем мы можем получить доступ к свойствам и функциям объекта приложения.

var express = require('express');
var app = express();

Вы также можете создавать свои собственные модули, которые можно импортировать таким же образом.

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

Чтобы сделать объекты доступными вне модуля, вам просто нужно назначить их объекту экспорта. Например, модуль square.js ниже представляет собой файл, который экспортирует методы area () и perimeter ():

exports.area = function(width) { return width * width; };
exports.perimeter = function(width) { return 4 * width; };

Мы можем импортировать этот модуль, используя require (), а затем вызвать экспортированные методы, как показано:

var square = require('./square'); 
console.log('The area of a square with a width of 4 is ' + square.area(4));

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

Если вы хотите экспортировать полный объект в одном назначении, а не создавать его по одному свойству за раз, назначьте его для module.exports, как показано ниже (вы также можете сделать это, чтобы сделать корень объекта экспорта конструктором или другой функцией) :

module.exports = {
  area: function(width) {
    return width * width;
  },

  perimeter: function(width) {
    return 4 * width;
  }
};

Для получения дополнительной информации о модулях см. Modules (Node API docs).

Использование асинхронных API

Код JavaScript часто использует асинхронные, а не синхронные API для операций, выполнение которых может занять некоторое время. Синхронный API — это тот, в котором каждая операция должна завершиться до начала следующей операции. Например, следующие функции журнала являются синхронными и выводят текст на консоль по порядку (первый, второй).

console.log('First');
console.log('Second');

В отличие от этого, асинхронный API — это тот, в котором API начнет операцию и сразу же вернется (до завершения операции). После завершения операции API будет использовать некоторый механизм для выполнения дополнительных операций. Например, приведенный ниже код выведет «Second, First», потому что хотя метод setTimeout () вызывается первым и возвращается немедленно, операция не завершается в течение нескольких секунд.

setTimeout(function() {
   console.log('First');
   }, 3000);
console.log('Second');

Использование неблокирующих асинхронных API-интерфейсов еще более важно в Node, чем в браузере, поскольку Node — это однопоточная среда выполнения, управляемая событиями. «Однопоточный» означает, что все запросы к серверу выполняются в одном потоке (а не порождаются в отдельных процессах). Эта модель чрезвычайно эффективна с точки зрения скорости и ресурсов сервера, но это означает, что если любая из ваших функций вызывает синхронные методы, выполнение которых занимает много времени, они будут блокировать не только текущий запрос, но и любой другой запрос, обрабатываемый ваше веб-приложение.

Есть несколько способов, которыми асинхронный API уведомляет ваше приложение о том, что оно завершено. Наиболее распространенный способ — зарегистрировать функцию обратного вызова при вызове асинхронного API, который будет вызываться после завершения операции. Это подход, использованный выше.

Совет: Использование обратных вызовов может быть довольно «грязным», если у вас есть последовательность зависимых асинхронных операций, которые должны выполняться по порядку, потому что это приводит к нескольким уровням вложенных обратных вызовов. Эта проблема широко известна как «ад обратного вызова». Эту проблему можно решить с помощью хороших методов кодирования (см. Http://callbackhell.com/), использования такого модуля, как async, или даже перехода к функциям ES6, таким как Promises.

Примечание. Общим соглашением для Node и Express является использование обратных вызовов с ошибками. В этом соглашении первое значение в ваших функциях обратного вызова является значением ошибки, в то время как последующие аргументы содержат данные об успехе. В этом блоге есть хорошее объяснение того, почему этот подход полезен: путь Node.js — понимание обратных вызовов с ошибками (fredkschott.com).

Создание обработчиков маршрута

В нашем примере Hello World Express (см. Выше) мы определили функцию обработчика маршрута (обратного вызова) для HTTP-запросов GET к корню сайта (‘/’).

app.get('/', function(req, res) {
  res.send('Hello World!');
});

Функция обратного вызова принимает запрос и объект ответа в качестве аргументов. В этом случае метод просто вызывает send () в ответе, чтобы вернуть строку «Hello World!» Существует ряд других методов ответа для завершения цикла запрос / ответ, например, вы можете вызвать res.json () для отправки ответа JSON или res.sendFile () для отправки файла.

Совет по JavaScript: вы можете использовать любые имена аргументов, которые вам нравятся, в функциях обратного вызова; при вызове обратного вызова первый аргумент всегда будет запросом, а второй всегда будет ответом. Имеет смысл назвать их так, чтобы вы могли идентифицировать объект, с которым работаете, в теле обратного вызова.

Объект приложения Express также предоставляет методы для определения обработчиков маршрутов для всех других HTTP-глаголов, которые в основном используются одинаково: post (), put (), delete (), options (), trace (), copy ( ), lock (), mkcol (), move (), purge (), propfind (), proppatch (), unlock (), report (), mkactivity (), checkout (), merge ( ), m-search (), notify (), subscribe (), unsubscribe (), patch (), search () и connect ().

Существует специальный метод маршрутизации app.all (), который будет вызываться в ответ на любой метод HTTP. Это используется для загрузки функций промежуточного программного обеспечения по определенному пути для всех методов запроса. В следующем примере (из документации Express) показан обработчик, который будет выполняться для запросов к / secret независимо от используемого глагола HTTP (при условии, что он поддерживается модулем http).

app.all('/secret', function(req, res, next) {
  console.log('Accessing the secret section ...');
  next(); 
});

Маршруты позволяют сопоставлять определенные шаблоны символов в URL-адресе, извлекать некоторые значения из URL-адреса и передавать их в качестве параметров обработчику маршрута (в качестве атрибутов объекта запроса, передаваемого в качестве параметра).

Часто полезно группировать обработчики маршрутов для определенной части сайта и получать к ним доступ с помощью общего префикса маршрута (например, сайт с вики может иметь все связанные с вики маршруты в одном файле и иметь к ним доступ с префиксом маршрута из / вики /). В Express это достигается с помощью объекта express.Router. Например, мы можем создать наш вики-маршрут в модуле с именем wiki.js, а затем экспортировать объект Router, как показано ниже:



var express = require('express');
var router = express.Router();


router.get('/', function(req, res) {
  res.send('Wiki home page');
});


router.get('/about', function(req, res) {
  res.send('About this wiki');
});

module.exports = router;

Примечание. Добавление маршрутов к объекту Router аналогично добавлению маршрутов к объекту приложения (как показано ранее).

Чтобы использовать маршрутизатор в нашем главном файле приложения, нам потребуется () модуль route (wiki.js), а затем вызовите use () в приложении Express, чтобы добавить маршрутизатор в путь обработки промежуточного программного обеспечения. Эти два маршрута будут доступны из / wiki / и / wiki / about /.

var wiki = require('./wiki.js');

app.use('/wiki', wiki);

Мы покажем вам намного больше о работе с маршрутами, и в частности об использовании маршрутизатора, позже в связанном разделе Routes and controllers .

Использование промежуточного программного обеспечения

Промежуточное программное обеспечение широко используется в приложениях Express для задач от обслуживания статических файлов до обработки ошибок и сжатия HTTP-ответов. Принимая во внимание, что функции маршрута заканчивают цикл запроса-ответа HTTP, возвращая некоторый ответ клиенту HTTP, функции промежуточного программного обеспечения обычно выполняют некоторую операцию над запросом или ответом и затем вызывают следующую функцию в «стеке», которая может быть большим количеством промежуточного программного обеспечения или маршрута обработчик. Порядок вызова промежуточного программного обеспечения зависит от разработчика приложения.

Примечание. Промежуточное программное обеспечение может выполнять любую операцию, выполнять любой код, вносить изменения в объект запроса и ответа, а также может завершать цикл запрос-ответ. Если он не завершает цикл, он должен вызвать next (), чтобы передать управление следующей функции промежуточного программного обеспечения (или запрос останется зависшим).

Большинство приложений используют стороннее промежуточное программное обеспечение для упрощения общих задач веб-разработки, таких как работа с файлами cookie, сессиями, аутентификацией пользователя, доступом к данным запросов POST и JSON, ведение журнала и т. д. Список пакетов промежуточного программного обеспечения, поддерживаемых командой Express, можно найти. (который также включает в себя другие популярные сторонние пакеты). Другие экспресс-пакеты доступны в диспетчере пакетов NPM.

Для использования стороннего промежуточного программного обеспечения сначала необходимо установить его в свое приложение с помощью NPM. Например, чтобы установить промежуточное программное обеспечение средства регистрации HTTP-запросов morgan, вы должны сделать следующее:

$ npm install morgan

Затем вы можете вызвать use () для объекта приложения Express, чтобы добавить промежуточное программное обеспечение в стек:

var express = require('express');
var logger = require('morgan');
var app = express();
app.use(logger('dev'));
...

Примечание. Промежуточное программное обеспечение и функции маршрутизации вызываются в том порядке, в котором они были объявлены. Для некоторого промежуточного программного обеспечения важен порядок (например, если промежуточное программное обеспечение сеанса зависит от промежуточного программного обеспечения cookie, то сначала должен быть добавлен обработчик cookie). Почти всегда случается так, что промежуточное ПО вызывается перед настройкой маршрутов, иначе ваши обработчики маршрутов не будут иметь доступа к функциям, добавленным вашим промежуточным ПО.

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

Вы можете добавить функцию промежуточного программного обеспечения в цепочку обработки с помощью app.use () или app.add (), в зависимости от того, хотите ли вы применить промежуточное программное обеспечение ко всем ответам или к ответам с определенным глаголом HTTP (GET, POST и т. д.). ). Маршруты задаются одинаково в обоих случаях, хотя маршрут необязателен при вызове app.use ().

В приведенном ниже примере показано, как можно добавить функцию промежуточного программного обеспечения, используя оба метода, а также с / без маршрута.

var express = require('express');
var app = express();


var a_middleware_function = function(req, res, next) {
  
  next(); 
}


app.use(a_middleware_function);


app.use('/someroute', a_middleware_function);


app.get('/', a_middleware_function);

app.listen(3000);

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

Документация по Express содержит намного больше отличной информации по использованию и написанию промежуточного программного обеспечения Express.

Обслуживание статических файлов

Вы можете использовать промежуточное программное обеспечение express.static для обслуживания статических файлов, включая ваши изображения, CSS и JavaScript (static () — единственная функция промежуточного программного обеспечения, которая фактически является частью Express). Например, вы должны использовать строку ниже для обслуживания изображений, файлов CSS и файлов JavaScript из каталога с именем public на том же уровне, где вы вызываете узел:

app.use(express.static('public'));

Любые файлы в публичном каталоге обслуживаются путем добавления их имени файла (относительно базового «публичного» каталога) к базовому URL. Так, например:

http://localhost:3000/images/dog.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/about.html

Вы можете вызывать static () несколько раз для обслуживания нескольких каталогов. Если файл не может быть найден одной функцией промежуточного программного обеспечения, он будет просто передан последующему промежуточному программному обеспечению (порядок вызова промежуточного программного обеспечения основан на вашем порядке объявления).

app.use(express.static('public'));
app.use(express.static('media'));

Вы также можете создать виртуальный префикс для ваших статических URL-адресов, вместо добавления файлов к базовому URL-адресу. Например, здесь мы указываем путь монтирования, чтобы файлы загружались с префиксом «/ media»:

app.use('/media', express.static('public'));

Теперь вы можете загружать файлы, находящиеся в публичном каталоге, из префикса / media path.

http://localhost:3000/media/images/dog.jpg

http://localhost:3000/media/cry.mp3

Для получения дополнительной информации см. Serving static files in Express.

Обработка ошибок

Ошибки обрабатываются одной или несколькими специальными функциями промежуточного программного обеспечения, которые имеют четыре аргумента вместо обычных трех: (err, req, res, next). Например:

app.use(function(err, req, res, next) {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

Они могут возвращать любой требуемый контент, но должны вызываться после всех других app.use () и маршрутизировать вызовы, чтобы они были последним промежуточным ПО в процессе обработки запросов!

Express поставляется со встроенным обработчиком ошибок, который заботится обо всех оставшихся ошибках, которые могут возникнуть в приложении. Эта промежуточная функция обработки ошибок по умолчанию добавляется в конец стека функций промежуточного программного обеспечения. Если вы передаете ошибку в next () и не обрабатываете ее в обработчике ошибок, она будет обработана встроенным обработчиком ошибок; ошибка будет записана клиенту с трассировкой стека.

Примечание. Трассировка стека не включена в производственную среду. Чтобы запустить его в производственном режиме, необходимо установить переменную среды NODE_ENV в «производство».

Примечание. HTTP404 и другие коды состояния «ошибка» не считаются ошибками. Если вы хотите справиться с этим, вы можете добавить функцию промежуточного программного обеспечения для этого. Для получения дополнительной информации см. FAQ.

Для получения дополнительной информации см. Error handling (Express docs).

Использование баз данных

Приложения Express могут использовать любой механизм базы данных, поддерживаемый Node (сам по себе Express не определяет каких-либо дополнительных действий / требований для управления базой данных). Есть много вариантов, включая PostgreSQL, MySQL, Redis, SQLite, MongoDB и т. Д.

Чтобы использовать их, вы должны сначала установить драйвер базы данных, используя NPM. Например, чтобы установить драйвер для популярной NoSQL MongoDB, вы должны использовать команду:

$ npm install mongodb

Сама база данных может быть установлена локально или на облачном сервере. В вашем экспресс-коде вам требуется драйвер, подключиться к базе данных, а затем выполнить операции создания, чтения, обновления и удаления (CRUD). Пример ниже (из документации Express) показывает, как вы можете найти записи «млекопитающих», используя MongoDB.

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/animals', function(err, db) {
  if (err) throw err;

  db.collection('mammals').find().toArray(function (err, result) {
    if (err) throw err;

    console.log(result);
  });
});

Другим популярным подходом является косвенный доступ к вашей базе данных с помощью Object Relational Mapper («ORM»). При таком подходе вы определяете свои данные как «объекты» или «модели», и ORM отображает их в базовый формат базы данных. Этот подход имеет то преимущество, что как разработчик вы можете продолжать думать с точки зрения объектов JavaScript, а не семантики базы данных, и что есть очевидное место для выполнения проверки и проверки входящих данных. Подробнее о базах данных мы поговорим в следующей статье.

Для получения дополнительной информации см. Database integration (Express docs).

Рендеринг данных (просмотров)

Механизмы шаблонов (в Express называемые «механизмами просмотра») позволяют указывать структуру выходного документа в шаблоне, используя заполнители для данных, которые будут заполняться при создании страницы. Шаблоны часто используются для создания HTML, но могут также создавать другие типы документов. В Express есть поддержка ряда шаблонных движков, и здесь есть полезное сравнение более популярных движков: Сравнение шаблонизаторов JavaScript: Jade, Mustache, Dust и More.

В своем коде настроек приложения вы задаете механизм шаблонов для использования и место, где Express должен искать шаблоны, используя настройки «views» и «engine», как показано ниже (вам также нужно будет установить пакет, содержащий вашу библиотеку шаблонов). !)

var express = require('express');
var app = express();


app.set('views', path.join(__dirname, 'views'));


app.set('view engine', 'some_template_engine_name');

Внешний вид шаблона будет зависеть от того, какой движок вы используете. Предполагая, что у вас есть файл шаблона с именем «index. <Template_extension>», который содержит заполнители для переменных данных с именами «title» и «message», вы должны вызвать Response.render () в функции обработчика маршрута для создания и отправки ответа HTML. :

app.get('/', function(req, res) {
  res.render('index', { title: 'About dogs', message: 'Dogs rock!' });
});

Для получения дополнительной информации см. Using template engines with Express (Express docs).

Файловая структура

Express не делает никаких предположений относительно структуры или компонентов, которые вы используете. Маршруты, представления, статические файлы и другая логика конкретного приложения могут находиться в любом количестве файлов с любой структурой каталогов. Хотя вполне возможно иметь все приложения Express в одном файле, обычно имеет смысл разделить ваше приложение на файлы на основе функций (например, управление учетными записями, блоги, доски обсуждений) и проблемной области архитектуры (например, модель, представление или контроллер, если вы случайно используете MVC architecture).

В более поздней теме мы будем использовать Express Application Generator, который создает модульный каркас приложения, который мы можем легко расширить для создания веб-приложений.

Поздравляем, вы завершили первый шаг в своем путешествии Express / Node! Теперь вы должны понимать основные преимущества Express и Node, а также примерно то, как могут выглядеть основные части приложения Express (маршруты, промежуточное ПО, обработка ошибок и код шаблона). Вы также должны понимать, что с Express, который является непонятным фреймворком, то, как вы собираете эти части вместе, и библиотеки, которые вы используете, в значительной степени зависит от вас!

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

База знаний // DEVPEW

Больше всего вы просили меня рассказать про базу знаний.

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

Что такое база знаний и зачем она

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

Ты что-то делаешь, а через время забываешь решение.

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

Столкнулся с проблемой — описал ее.

Чтобы и ты и люди после тебя не наступали на те же самые грабли.

Что важно в базе знаний?

Тут уж каждый решает сам что ему важно. Если вам удобно хранить все в обычном текстовом файлике на рабочем столе, то на здоровье. Но такой вариант работает, только если у вас слишком мало знаний.

Я перечислю вещи, которые важны мне.

  • Удобное форматирование. Мне должно быть удобно читать все в своей базе. Поэтому там должно быть ясное форматирование. Поэтому в любом случае я буду использовать маркдаун.
  • Гибкость. Я не хочу привязываться к какой-то системе. Поэтому я не использую какие-нибудь сервисы вроде Evernote или Notion. Завтра эти сервисы могут поменять политику или закрыться. А я не хочу ничего менять в своем wofkflow.
    Поэтому я просто создаю .md файлы локально, а дальше уже выбираю инструмент, который их отображает.
  • Красивое отображение md файлов. Отображать тоже надо адекватно. Так, например, mardown выглядит отлично на гитлабе и ужасно в каком-нибудь Raneto.
  • Роли. Если пользователь не один, и вы, например, используете базу в компании, то для вас будут важны роли.
  • Логинка. Я не хочу выности базу в паблик, поэтому инструменты позволяющие задать пароль мне нравятся больше.
  • Редактирование. Совсем круто если ты можешь редактировать свою базу прям там где просматриваешь, но редко такое возможно.

Markdown

Некоторые люди ведут свою базу просто в текстовых файлах. Другие в каких-нибудь гугл документах.

И все эти варианты они ужасны.

В текстовых файлах нет форматирования. А какие-нибудь гугл-доки вообще не предназначены для документации. У них даже вид листика. Это значит, что они нужны для бумажных документов. Которые ты собственно будешь распечатывать. Иначе я не понимаю зачем там форма листка.

Можно так же использовать различные сервисы NOTION, Confluence.

Это отличные решения. У них только два минуса:

  • Платные.
  • Отсутствие гибкости. Какой дали тебе интерфейс, такой ты используешь. Ты не можешь ничего поменять.

Поэтому, мне лично нравится вариант, который уже сто лет используют программисты. Он используется как стандарт для описания проектов. Например, вы можете зайти практически на любой проект в гитхабе и увидеть там файл README.md он же отображается когда вы смотрите описание проекта.

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

Можете посмотреть тут как это работает — https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet

И мне этот вариант нравится тем, что ты никак не ограничен инструментами. Ты можешь редактировать свою базу знаний в любом удобном лично для тебя редакторе. Я, например, редактирую в редакторах Vim или в Typora.

Мне оба варианта нравятся.

Для отображения базы знаний на локальной машине в принципе ничего не нужно.

Но при этом надо понимать, что во-первых, мы с вами можем захотеть синхронизировать нашу базу знаний между нашими устройствами. Ну, например, мы хотим что-то посмотреть с планшета.

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

VIM + MARKDOWN

Мне больше всего, все-таки нравится использовать Vim при написании чего-то в базу знаний.

Во-первых это просмотрщик. Как только вы открываете какой-то *.md файл у вас разу же открывается рядом браузер, в котором вы видите как это все будет выглядеть.

Во-вторых таблицы. Их тут очень легко создавать и редактировать из-за различных плагинов. Во-первых довольно легко создать таблицу снипетом. (Например. tb5x5 создаст таблицу с 5 колонками и 5 ячейками). Так же есть удобный плагин, который автоматически расширяет колонки если в какой-то колонке появляется значение с большой шириной. Это трудно объяснить, но легко показать, так что смотрите гифку ниже.

Так же довольно легко обрамлять код делая его жирным или курсивом. Так же легко обрамлять блоки кода. Быстро добавлять ссылки или картинки.

Но так же мне нравится использовать и другую программу, которая называется Typora. Я использую ее на маке. Она отлично выглядит, имеет очень минималистичный интерфейс. И показывает только одно окно, когда пишешь md, то он сразу же сворачивается и разворачивается только та область, на которой сейчас находится курсор. Но если надо развернуть весь md, то можно просто нажать cmd+/

Выглядит там все вот так:

Синхронизация

Естественно нам нужно синхронизировать наши записи между нашими девайсами. Поэтому будем использовать git.

Я использую свой GitLab сервер. Я уже говорил как его можно развернуть.

Можете посмотреть видео тут.

Отображение

А для того чтобы отображать данные, есть различный софт. Но сразу хочу сказать, что он весь не идеальный. У каждого есть свои плюсы и минусы. Я вот так или иначе использую сейчас пять вариантов. По крайней мере слежу за развитием каждого из этих инструментов.

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

Все, что делают эти штуковины так это берут ваши статичные файлы и показывают вам их в интернете.

Raneto

Raneto — очень легкая штука, просто отображает md файлы, но при этом имеет какой-то прям уродский дизайн. Самый большой недостаток в том, что там нет фолдинга. У меня прям большое количество документов и из-за этого сайдбар у рането просто бесконечный. Выглядит ужасно. И еще цветовая гамма, ну прям тоже так себе.

Отображение кода прям уродское. Не понятно кто придумал этот желтый стиль.

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

Короче говоря, рането странный. Скорее всего я его не рекомендую.

GitLab

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

У него самый нормальный дизайн. Самый приятный. Именно того как отображается текст. Цветовая гамма, отступы, выделения. Прям очень здорово.

Но, конечно, не удобно постоянно логиниться в гитлаб, когда нужно что-то посмотреть. Ведь там постоянно надо вводить длинный пароль и двухфакторку. Поэтому это не удобно.

Wiki.js

Wiki.js — эта штука уже гораздо мощнее. В ней есть роли. И если у вас компания, то для вас это большое преимущество. Вы можете сделать базу знаний для сейлзов отдельно, для менеджеров отдельно, для программистов отдельно, для дизайнеров отдельно. И у каждого будет своя область видимости. Для каждого раздела можно назначить кого-то кто будет только просматривать и кого-то кто сможет делать правки.

И да, правки можно делать прям на сайте. То есть если все остальные инструменты в списке только отображают md файлы, то wikijs работает с гитом туда-сюда.

То есть вы прям там можете нажать на кнопку “New page” и прям там создать новую статью, отредактировать ее, и она автоматически закачается в GIT.

Это круто.

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

Ну и не очень большой минус это дизайн, опять же. Он какой-то такой. Из 2005 года. Уродство.

И еще, я не сразу вижу все файлы, когда я захожу туда. Я вижу пустую страницу, а чтобы увидеть все статьи мне надо нажать “All Pages”. Это странно. Там автоматически не подгружаются картинки. Я не знаю почему, возможно, это я что-то не так настроил.

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

Но опять же, минусы мелкие. Особенно по сравнению с плюсами. Это редактирование прям на сайте, и синхронизация с гитом. Ну и разделение прав. Такое мало где есть.

MarkServ

Эта штука похожа на Raneto. Она тоже просто отображает статичные файлы.

Главная страница, конечно, выглядит не очень.

Тут нет поиска, но зато тут отличное отображение самих файлов. Такое же как в гитхабе.

Gitbook

И вот мы дошли до моего любимого инструмента.

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

Мне, конечно, второй вариант нравится куда больше.

Тут отличное отображение файлов. И вообще сам дизайн у гитбука отличный.

Мне так же очень нравится что тут есть классный фолдинг. Работает просто отлично.

Так же тут есть одна особенность, в отличие от всех остальных инструментов, которые были выше. Тут нет автоматической генерации. Если в предыдущие решения вы просто скидывали маркдаун файлы и все происходило автоматом, то тут есть еще файлик, который называется SUMMARY.md и в нем вы описываете дерево файлов, которое будет отображаться слева.

В этом подходе есть как плюсы так и минусы. Плюсы в том, что вы сами формируете вот эту ветку. А минусы в том, что при добавлении файла надо менять файл SUMMARY.md

Но как я уже сказал, мне этот подход скорее нравится, чем не нравится.

Кстати, файл SUMMARY.md в самом начале можно просто сгенерировать, чтобы не писать все вручную.

В общем-то единственный минус Gitbook, который есть для меня это отсутствие логинки. Приходится как-то городить ее самостоятельно.

УСТАНОВКА

Теперь давайте покажу как это все можно установить.

Как устанавливать GitLab я уже показывал тут.

Наверное не буду показывать как установить Raneto и MarkServ, так как там это делается одной командой.

Давайте покажу как устанавливать wiki.js и gitbook

Wiki.js

Довольно большое количество мануалов по установке wiki.js являются нерабочими. Этот работает.

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

Устанавливаем таймзону:

sudo dpkg-reconfigure tzdata

Обновляем убунту:

sudo apt update && sudo apt upgrade -y

Устанавливаем пакеты:

sudo apt install -y curl wget vim git unzip socat bash-completion apt-transport-https build-essential

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

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

Проверяем версии:

node -v && npm -v
# v10.15.1
# 6.4.1

Обновим npm

sudo npm install -g [email protected]

Проверим версию

npm -v# 6.8.0

Устанавливаем монгу:

sudo apt install -y mongodb

Проверяем версию:

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3

Стартуем монгу:

sudo systemctl start mongodb.service
sudo systemctl enable mongodb.service

Получаем сертификат:

Скачиваемacme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Проверяем версию:

acme.sh --version# v2.8.1

Просим сертификат для нашего домена. Замените example.com на ваш домен.

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Проверяем:

acme.sh --list

Перемещаем сертификаты:

mkdir -p /etc/letsencrypt/example.com
mkdir -p /etc/letsencrypt/example.com_ecc

Устанавливаем:

# RSA
acme.sh --install-cert -d example.com \ 
        --cert-file /etc/letsencrypt/example.com/cert.pem \
        --key-file /etc/letsencrypt/example.com/private.key \
        --fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
        --reloadcmd "sudo systemctl reload nginx.service"

# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
        --cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
        --key-file /etc/letsencrypt/example.com_ecc/private.key \
        --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
        --reloadcmd "sudo systemctl reload nginx.service"
exit

Устанавливаем Nginx:

wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx

Проверяем версию:

sudo nginx -v
# nginx version: nginx/1.15.8

Стартуем NGINX:

sudo systemctl enable nginx.service
sudo systemctl start nginx.service

Меняем конфиг:

sudo vim /etc/nginx/conf.d/wiki.js.conf
server {
    
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    listen [::]:80;
    listen 80;
    
    server_name example.com;

    charset utf-8;
    client_max_body_size 50M;

    ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/example.com/private.key;
    ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
    
    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_next_upstream error timeout http_502 http_503 http_504;
    }
    
}

Тут измените строку “server name” и строки “ssl_sertificate”

Тестируем конфиг:

sudo nginx -t

Перегружаем NGINX:

sudo systemctl reload nginx.service

Настраиваем wiki.js. Создаем папку:

sudo mkdir -p /var/www/wiki.js
cd /var/www/wiki.js

Создаем пользователя:

sudo useradd -d /var/www/wiki.js wikijs

Меняем права:

sudo chown -R wikijs:wikijs /var/www/wiki.js

Запускаем скрипт из под нового пользователя:

cd /var/www/wiki.jssudo su wikijs
curl -sSo- https://wiki.js.org/install.sh | bash

Проверяем версию:

node wiki --version# 1.0.117

Когда все установилось начинаем конфигурацию

node wiki configure

И теперь переходим в браузер. Там все стандартно. Нужно просто указать свой домен (вместе с https, но без последнего слеша. Пример: https://bfg.dev). Так же нужно указать порт 3000.

Установка GitBook

Точно так же, создаем дроплет в DigitalOcean. Если вы вдруг забыли, но я напоминаю вам, что можно воспользоваться моей рефералкой

Устанавливаем таймзону:

sudo dpkg-reconfigure tzdata

Обновляем убунту:

sudo apt update && sudo apt upgrade -y

Устанавливаем пакеты:

sudo apt install -y curl wget vim git unzip socat bash-completion apt-transport-https build-essential

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

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

Проверяем версии:

node -v && npm -v
# v10.15.1
# 6.4.1

Обновим npm

sudo npm install -g [email protected]

Проверим версию

npm -v# 6.8.0

Далее создаем директорию

sudo mkdir /var/www/gitbook
cd /var/www/gitbook

Сразу же сюда клонируем нашу репу из гитлаба, моя будет создана в папке “knowledge_base”.

Теперь установим гитбук глобально

npm install gitbook-cli -g

И установим его в текущую папку

gitbook init

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

Создаем файл book.json

vim book.json

Со следующим содержимым

{
        "root": "./docs",
        "title": "dpkb",
        "author": "devpew",
        "description": "just my knowledge",
        "plugins": [
                "folding-chapters-2",
                "theme-code",
                "-sharing"
        ],
        "pluginsConfig": {
                "theme-default": {
                        "showLevel": false
                }
        }
}

Там мы указали некоторые модули, которые мы будем использовать. Теперь их нужно установить командой:

gitbook install

Переместим файлы README.md и SUMMARY.md

mv README.md SUMMARY.md /knowledge_base

Практически все готово. Теперь если мы запустим нашу базу знаний то там будет только один файл. И это потому, что до запуска нам нужно сгенерировать файл SUMMARY. Мы, конечно, можем это делать вручную. Но когда у нас 230 файлов это делать тяжеловато.

На помощь нам приходит плагин

npm install -g gitbook-summary

Теперь запускаем его

book sm g

Все. Файл сгенерирован. Теперь можем запускать нашу базу.

gitbook serve

Программная платформа Node.js | Русскоязычная документация по Ubuntu

Node.js — программная платформа, основанная на движке V8 (разработанном в Google для браузера Chrome, транслирующем JavaScript в машинный код), превращающая JavaScript из узкоспециализированного языка в язык общего назначения.
Node.js добавляет возможность JavaScript взаимодействовать с устройствами ввода-вывода через свой API (написанный на C++), подключать другие внешние библиотеки, написанные на разных языках, обеспечивая вызовы к ним из JavaScript-кода. Node.js применяется преимущественно на сервере, выполняя роль веб-сервера, но есть возможность разрабатывать на Node.js и десктопные оконные приложения (при помощи NW.js, AppJS или Electron для Linux, Windows и macOS) и даже программировать микроконтроллеры (например, tessel и espruino). В основе Node.js лежит событийно-ориентированное и асинхронное (или реактивное) программирование с неблокирующим вводом/выводом.

Инструменты для работы с Node.js

npm

npm(Node.js Package Manager) — менеджер пакетов, входящий в состав Node.js.

Установка npm

npm устанавливается вместе с Node.js, но так-же есть возможность установить его отдельно командой:

curl https://npmjs.org/install.sh | sh
Обновление npm

Есть несколько способов обновить npm:

curl https://npmjs.org/install.sh | sh

или

npm install npm -g
Установка пакетов

Установка пакета производится при помощи команды:

npm install <packagename>

или

npm i <packagename>

Все доступные для установки пакеты и их краткое описание:

npm search

Этой же командой можно производить выборочный поиск пакетов.

nvm

nvm(Node.js Version Manager) — это довольно простой скрипт, который позволяет устанавливать, переключать и удалять версии Node.js на лету. Проще говоря, nvm даёт вам возможность держать на одной машине любое количество версий Node.js. При установке новой версии для неё создаётся отдельная директория, например, 5.0.0 или 4.2.2. При переключении версий скрипт подменяет путь до Node.js в PATH.

Ссылки

Вики

Убедитесь, что вы прочитали страницу предварительных требований, чтобы убедиться, что ваш сервер соответствует минимальным требованиям.

Linux / macOS

Создайте пустую папку , в которую должен быть установлен Wiki.js.

Из этой папки в командной строке запустите следующую команду:

  curl -sSo- https://wiki.js.org/install.sh | трепать
  

Wiki.js будет установлен в текущий каталог.

Windows

В командной строке PowerShell запустите следующую команду:

  [Net.ServicePointManager] :: SecurityProtocol = [Net.SecurityProtocolType] :: Tls12; iex ((Новый объект System.Net.WebClient) .DownloadString ('https://wiki.js.org/install.ps1'))
  

Вам будет предложено установить Wiki.js. Папка назначения будет создана автоматически, если она не существует.

Политика исполнения

Для политики выполнения PowerShell необходимо установить значение «Обход», чтобы разрешить выполнение этого сценария:
Set-ExecutionPolicy Bypass

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

Запустите мастер настройки, выполнив команду node wiki configure . Чтобы использовать настраиваемый порт, используйте следующую команду: node wiki configure 1234 , где 1234 — настраиваемый порт.

Используя свой веб-браузер, перейдите по адресу http: // localhost: 3000 / (замените localhost IP-адресом вашего сервера / настраиваемым портом, если применимо) и следуйте инструкциям на экране.

Все настройки, введенные в мастере настройки, сохраняются в файле config.yml . См. Руководство по файлу конфигурации, чтобы узнать обо всех возможных вариантах, которые вы можете использовать.

Мастер настройки автоматически запустит Wiki.js.

Чтобы запустить Wiki.js вручную, в командной строке запустите следующую команду: node wiki start
— При использовании командной строки Powershell (по умолчанию в Windows 10) вы можете вместо этого использовать . \ Wiki start команда.
Подождите , пока команда завершится. Это может занять несколько секунд.
Найдите в своей Wiki из браузера. Вы должны увидеть экран приветствия Wiki.js.

Wiki.js работает как фоновый процесс, используя pm2 в качестве диспетчера процессов.

Остановить Wiki.js

Чтобы остановить Wiki.js, выполните команду:

  node wiki stop
  

Перезапустить Wiki.js

Чтобы перезапустить Wiki.js, выполните команду:

  node wiki restart
  

Запускать при запуске

По умолчанию Wiki.js не запускается автоматически после перезагрузки системы. Чтобы он запускался при загрузке, нам нужно настроить pm2 как глобальный модуль npm и установить его как службу запуска:

  1. Все еще в командной строке установить pm2 глобально, выполнив следующую команду: npm install -g pm2
    • Дождитесь завершения установки.
  2. Теперь нам нужно указать pm2 настроить себя в качестве службы запуска .
    • В Linux / macOS просто выполните следующую команду: pm2 startup
      • pm2 сгенерирует команду для выполнения.Скопируйте команду и выполните ее.
    • В Windows нам нужно установить дополнительную зависимость:
      • Выполните команду: npm install pm2-windows-startup -g
      • После завершения запустите команду: pm2-startup install
  3. Наконец, сохранит текущую конфигурацию pm2 , выполнив команду: pm2 save

Просмотр установленной версии

Чтобы просмотреть текущую установленную версию, выполните команду:

  node wiki -V
  

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

Если вы не можете использовать описанные выше методы установки, вы можете установить Wiki вручную.js:

  1. Загрузите файлы wiki-js.tar.gz и node_modules.tar.gz непосредственно из выпусков GitHub.
  2. Распакуйте wiki-js.tar.gz в выбранное вами место.
  3. Распакуйте node_modules.tar.gz в папку с именем node_modules в той же папке, в которую вы извлекли пакет wiki-js.tar.gz .
  4. Переименуйте файл config.sample.yml в config.yml
  5. См. Шаги выше, чтобы настроить и запустить Wiki.js.

Подробнее

Дополнительные возможности устранения неполадок см. Здесь.

Вики

Wiki.js является кроссплатформенным (Windows, Linux и Mac) и не зависит от каких-либо платных коммерческих продуктов / услуг.

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

  • Сервер Ubuntu 16.04 LTS
  • Windows Server 2012 R2

CPU: Прекрасно работает на одноядерной машине.Однако, чтобы максимально использовать возможности фонового агента Wiki.js, настоятельно рекомендуется использовать 2 ядра.

ОЗУ: Wiki.js использует от 100 до 200 МБ ОЗУ. Хотя сам Wiki.js может работать только с 512 МБ системной оперативной памяти, настоятельно рекомендуется использовать машину с объемом оперативной памяти не менее 1 ГБ. Обратите внимание, что машинам с Windows может потребоваться больше оперативной памяти, чем их аналогам с Linux.

Дисковое пространство: Wiki.js требует около 300 МБ дискового пространства, включая зависимости. Фактическое общее пространство, необходимое для вашей установки, зависит от содержимого и, что наиболее важно, от загружаемых файлов.Вики с только текстовым содержимым будет использовать всего несколько мегабайт даже для тысяч статей. Однако, если вы начнете добавлять изображения, документы, видео и т. Д., Вы должны соответствующим образом спланировать необходимое дисковое пространство.

Рекомендуемые облачные провайдеры

Node.js

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

Node.js 6.11.1 или новее.

Веб-сервер

Wiki.js (или любое приложение HTTP Node.js) может работать без какого-либо реального веб-сервера (например, nginx или Apache).
Однако настоятельно рекомендуется поставить стандартный веб-сервер перед Wiki.js. Это гарантирует, что вы можете использовать такие функции, как SSL, несколько веб-сайтов, кеширование и т. Д.

MongoDB

MongoDB — это бесплатная кроссплатформенная программа для работы с документами с открытым исходным кодом.Классифицируемая как программа базы данных NoSQL, MongoDB использует документы, подобные JSON, со схемами.

MongoDB 3.2 Требуется или более поздняя версия.

Дополнительную информацию см. В Руководстве по базам данных.

Git

Git 2.7.4 Требуется или более поздняя версия. В более ранних версиях есть ошибка, приводящая к сбою удаленной синхронизации во время инициализации.

Хотя Linux обычно поставляется с предустановленным Git, скорее всего, это устаревшая версия.Вы можете проверить текущую установленную версию, запустив git --version

. Последнюю версию можно загрузить с официального сайта Git.

Пустой репозиторий Git (необязательно)

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

Хотя это не рекомендуется, можно использовать Wiki.js в полном автономном режиме без удаленной синхронизации.

Дополнительную информацию см. В Руководстве по репозиторию Git.

Поддерживаются следующие современные браузеры:

  • Google Chrome
  • Mozilla Firefox
  • Microsoft Edge
  • Microsoft Internet Explorer 11
  • Apple Safari
  • Opera

Неподдерживаемые браузеры

  • Для вечнозеленых браузеров, перечисленных выше (также называемых автоматически обновляющимися браузерами), поддерживается только последняя версия.
  • Internet Explorer 10 и ниже не поддерживаются. Wiki.js активно использует последние стандарты HTML / CSS / JS, которые просто не работают в этих браузерах. Они также устарели и больше не поддерживаются Microsoft.

Как установить и настроить Wiki.js в Alibaba Cloud ECS

В этом руководстве мы установим и настроим Wiki.js в Alibaba Cloud Elastic Compute Service (ECS) с Ubuntu 16.04.

Арслан Уд Дин Шафик, автор блога сообщества Alibaba Cloud.

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

В этом руководстве мы установим и настроим Wiki.js в Alibaba Cloud Elastic Compute Service (ECS) с установленной Ubuntu 16.04.

Предварительные требования

  • У вас должна быть активирована служба Alibaba Cloud Elastic Compute Service (ECS) и подтвержден действующий способ оплаты. Если вы новый пользователь, вы можете получить кредиты Alibaba Cloud на сумму от 300 до 1200 долларов для своей новой учетной записи. Если вы не знаете, как настроить свой экземпляр ECS, вы можете обратиться к этому руководству или краткому руководству. Ваш экземпляр ECS должен иметь как минимум 1 ГБ ОЗУ и 1 ядерный процессор).
  • Доменное имя, зарегистрированное в Alibaba Cloud. Если вы уже зарегистрировали домен из Alibaba Cloud или любого другого хоста, вы можете обновить записи его сервера имен доменов.
  • Доменное имя должно быть указано на IP-адрес вашего Alibaba Cloud ECS
  • Доступ к консоли VNC в вашем Alibaba Cloud или клиенту SSH, установленному на вашем ПК
  • Задайте имя хоста вашего сервера и создайте пользователя с привилегиями root.

Настройка сервера

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

sudo apt update && sudo apt upgrade

Установить необходимую сборку

Кроме того, вам необходимо установить build-essential, выполнив команду ниже.

sudo apt-get install build-essential -y

Установить Apt-Transport-HTTPS

Установите Apt-Transport-HTTPS, выполнив следующую команду.

sudo apt-get install apt-transport-https -y

Установить общие свойства программного обеспечения

Для установки общих свойств программного обеспечения выполните команду ниже.

sudo apt-get install software-properties-common

Установить Git

Выполните следующие действия, чтобы установить последнюю версию Git.

Шаг 1: Добавьте репозиторий, выполнив команду ниже.

sudo add-apt-repository -y ppa: git-core / ppa

Шаг 2: Обновите систему, чтобы загрузить добавленный репозиторий, выполнив команду ниже.

обновление sudo apt

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

sudo apt install git -y

Шаг 4. Чтобы проверить установку Git, выполните следующую команду и проверьте текущую версию Git.

git - версия

Установить Node.js

Далее нам понадобится Node.js для целей этого руководства. Чтобы установить Node.js, выполните шаги, перечисленные ниже.

Шаг 1. Загрузите установочные файлы с помощью следующей команды.

curl -sL https: //deb.nodesource.com / setup_8.x | sudo -E bash -

Шаг 2: Теперь установите Node.js, выполнив команду ниже.

sudo apt install -y nodejs

Установите MongoDB

Для Wiki.js обязательно установить MongoDB. В этом руководстве мы установим версию сообщества MongoDB, выполнив следующую команду.

sudo apt install -y mongodb

Чтобы убедиться, что установка MongoDB выполняется правильно, проверьте установленную версию MongoDB, выполнив следующую команду.

mongo - версия | head -n 1 && mongod --version | голова -n 1

Установите сервер Nginx

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

Шаг 1. Получите ключ подписи Nginx, выполнив команду ниже.

wget https://nginx.org/keys/nginx_signing.key

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

sudo apt-key добавить nginx_signing.key

Шаг 3: Добавьте репозиторий в sources.list, выполнив команду ниже.

судо-s

printf "deb https://nginx.org/packages/mainline/ubuntu/ $ (lsb_release -sc) nginx \ ndeb-src https://nginx.org/packages/mainline/ubuntu/ $ (lsb_release -sc) nginx \ n ">> /etc/apt/sources.list.d/nginx_mainline.list

выход

Шаг 4: Теперь обновите вашу систему, выполнив следующую команду.

обновление sudo apt

Шаг 5: Выполните команду ниже, чтобы начать установку Nginx.

sudo apt установить nginx -y

Шаг 6: Чтобы проверить правильность установки, выполните следующую команду и подтвердите версию Nginx.

судо nginx -v

Шаг 7. Теперь включите Nginx, чтобы он запускался автоматически при перезагрузке системы.

sudo systemctl включить nginx.сервис

Шаг 8: Теперь выполните следующую команду, чтобы запустить сервер Nginx.

sudo systemctl start nginx.service

Настройка обратного прокси

Wiki.js работает с портом 3000. Следовательно, вам необходимо настроить обратный прокси. Чтобы реализовать это, создайте файл конфигурации Nginx для Wiki.js с помощью следующей команды.

судо нано /etc/nginx/conf.d/wiki.conf

Откроется текстовый файл. Скопируйте и вставьте приведенный ниже текст в файл и сохраните его.

  сервер {

    слушать [::]: 80;
    слушать 80;

    имя_сервера softpedia.xyz;

    корень / usr / share / nginx / html;

    charset utf-8;
    client_max_body_size 50M;

    location /.well-known/acme-challenge/ {
        позволять все;
    }

    место расположения / {
        proxy_set_header Хост $ http_host;
        proxy_set_header X-Real-IP $ remote_addr;
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Обновить $ http_upgrade;
        proxy_set_header Соединение «апгрейд»;
        proxy_next_upstream error timeout http_502 http_503 http_504;
    }
}  

Не забудьте сменить софтпедию.xyz на ваше доменное имя или IP-адрес. Выполните следующую команду, чтобы проверить правильность синтаксиса и правильность файла конфигурации Nginx.

судо nginx -t

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

sudo systemctl перезагрузить nginx.service

Установите Wiki.js

Чтобы установить Wiki.js., выполните указанные ниже действия.

Шаг 1. Перейдите в / var / www / html, используя команду ниже.Если следующая команда приводит к какой-либо ошибке, у вас, должно быть, отсутствует папка / var / www / html. Вы можете исправить это, создав папку www и html.

cd / var / www / html

Шаг 2: Теперь измените владельца каталога / var / www / html, как показано ниже.

судо чоун -R aareez: aareez / var / www / html

Шаг 3. Удалите файл index.html, используя команду ниже.

sudo rm index.html

Также загрузите последнюю стабильную версию Wiki.js, используя команду ниже.

curl -sSo- https://wiki.js.org/install.sh | Баш

Шаг 4: Чтобы настроить Wiki.js, выполните команду ниже.

узел wiki настройка

Поскольку обратный прокси-сервер уже настроен, нет необходимости объединять порт 3000 в конце URL-адреса. Вы можете просто получить доступ к странице конфигурации из своего браузера, войдя в свой домен или IP-адрес, чтобы перейти на следующую страницу.

Нажмите кнопку «Пуск», чтобы проверить, соответствует ли система требованиям.Вы будете перенаправлены на следующий экран.

Нажмите кнопку «Продолжить», чтобы возобновить процесс настройки. После того, как вы будете перенаправлены на следующую страницу, добавьте заголовок вашего сайта, имя хоста и порт по умолчанию, через который вы хотите получить к нему доступ. Затем выберите желаемый язык и предоставьте ему общий доступ, если вы хотите, чтобы он был доступен без входа в систему. Если вы планируете использовать SSL, не забудьте использовать HTTPS на хосте вместо HTTP.

После того, как вы нажмете «Продолжить», вы будете перенаправлены на следующий экран.

На следующем экране вам нужно выбрать базу данных и щелкнуть Connect, чтобы продолжить.

Затем вы увидите экран с сообщением «Подключено успешно!» положение дел. Нажмите кнопку «Продолжить», чтобы перейти к следующему шагу.

Теперь настройте пути для данных и локального репозитория и нажмите «Продолжить».

Если у вас есть репозиторий Git, вы можете настроить его в следующем разделе, в противном случае вы можете пропустить этот шаг.

Теперь вам необходимо настроить учетную запись администратора для доступа к панели администратора, заполнив следующую форму.

После завершения настройки вы увидите следующий экран. Нажмите кнопку «Пуск», чтобы запустить Wiki.js.

Настройка брандмауэров и портов

Если у вас активированы брандмауэры, вам необходимо определить правило в группе безопасности Alibaba Cloud для вашего облачного сервера, чтобы добавить исключение для порта 80 / TCP, 443 / TCP и 3000 / TCP. Вы можете включить эти порты при создании экземпляра ECS, но в случае, если вы забыли разблокировать эти порты, вы можете выполнить процедуру, описанную в этом руководстве: https: // www.alibabacloud.com/help/doc-detail/25471.htm

Установить сертификат SSL

Вам необходимо использовать Certbot для установки SSL-сертификата с помощью Let’s Encrypt. Для этого выполните следующие шаги.

Шаг 1. Обновите пакет, используя следующую команду

sudo apt-get update

Шаг 2: Установите общие свойства программного обеспечения, выполнив команду ниже.

sudo apt-get install software-properties-common

Шаг 3. Добавьте репозиторий Certbot с помощью следующей команды.

sudo add-apt-репозиторий ppa: certbot / certbot

Шаг 4. Используйте команду ниже, чтобы обновить пакет для загрузки добавленного репозитория Certbot.

sudo apt-get update

Шаг 5: Теперь установите python-certbot-nginx, используя команду ниже.

sudo apt-get install python-certbot-nginx

Шаг 6: Выполните следующую команду, чтобы получить Let’s Encrypt SSL.

sudo certbot --nginx -d softpedia.xyz

Выберите Option 2 , чтобы перенаправить ссылку на https и обновить настройки виртуального хоста для SSL.

После успешной выдачи сертификата SSL вы перейдете к следующему экрану.

Теперь выполните следующую команду, чтобы перезапустить сервер Nginx.

sudo systemctl перезапуск nginx

Теперь вы можете получить доступ к своему Wiki.js, нажав свой URL.

Вот и все! Вы успешно установили и настроили Wiki.js на вашем сервере.

Как установить Wiki.js в Ubuntu 18.04 / CentOS 7

Это руководство проведет вас через шаги по установке Wiki.js NodeJS-приложения в Ubuntu 18.04 и CentOS 7. Wiki.js — это современный и мощный вики с открытым исходным кодом. приложение, построенное на Node.js, Git и Markdown. Wiki.js работает в операционных системах Linux, macOS и Windows.

В Wiki.js вы пишете весь контент в широко используемом и простом формате Markdown, используя встроенный визуальный редактор.Контент сохраняется напрямую в файлы Markdown (.md ) и автоматически синхронизируется с вашим удаленным репозиторием Git. Весь ваш контент доступен для чтения прямо из вашего репозитория Git.

Особенности Wiki.js

  • Красиво разработанный для современного Интернета
  • Редактировать контент в простом формате Markdown
  • Имеет интегрированный контроль доступа — локальная база данных или внешние поставщики аутентификации, такие как учетная запись Microsoft, Google ID, Facebook, GitHub, Slack или LDAP (Active Directory).
  • имеет интуитивно понятное управление активами
  • Легковесный и чрезвычайно мощный
  • Wiki.js имеет встроенную поисковую систему
  • Он бесплатный для использования и имеет открытый исходный код

Требования к серверу

  • Node.js 6.9.0 или более поздняя версия
  • MongoDB 3.2 или более поздняя
  • Git 2.7.4 или более поздняя версия
  • Git-совместимый репозиторий (общедоступный или частный) (необязательно)

Обратите внимание, что версия git , доступная в репозитории CentOS 7, немного устарела , установите последнюю версию git, используя руководство Как установить последнюю версию Git (Git 2.x) в CentOS 7

Мы будем использовать Nginx для прокси-доступа к Wiki.js и pm2 для запуска приложения при загрузке.

Шаг 1. Установите Node.js 10.x и Nginx

на CentOS 7

 curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
sudo yum install -y nodejs nginx gcc-c ++ make
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn 

Для Ubuntu 18.04 / Ubuntu 16.04

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

Шаг 2. Установка MongoDB

Wiki.js хранит административные данные, такие как пользователи, разрешения и метаданные активов, в базе данных MongoDB.

Содержание статьи и загрузки не хранятся в БД. Вместо этого они хранятся на диске и автоматически синхронизируются с удаленным репозиторием git по вашему выбору.

Используйте наши руководства для установки MongoDB

Как установить MongoDB 4 на CentOS 7

Как установить последнюю версию MongoDB на Ubuntu 18.04 / Ubuntu 16.04

Шаг 3. Загрузите и установите Wiki.js

Создайте каталог проекта

 mkdir / srv / wikijs 

Перейдите в каталог проекта

 cd / srv / wikijs 

Установите Wikijs

 ВЕРСИЯ = $ (завиток -L -s -S https://beta.requarks.io/api/version/stable) 
завиток -L -s -S https://github.com/Requarks/wiki/releases/download/v$ ВЕРСИЯ / wiki-js.tar.gz | tar xz -C.
curl -L -s -S https://github.com/Requarks/wiki/releases/download/v$VERSION/node_modules.tar.gz | tar xz -C.

Создать файл конфигурации Wiki

 cp -n config.sample.yml config.yml 

Для просмотра установленной версии используйте

 #  node wiki --version 
1.0.102 

Шаг 4: Настройка Wiki.js

Запустите мастер настройки, выполнив команду:

 node wiki configure 

Чтобы использовать настраиваемый порт, используйте следующую команду:

 node wiki configure 1234 

Где 1234 — настраиваемый порт. В качестве примера я настрою Wiki.js для использования порта 8080 на моем сервере

 node wiki configure 8080 

Оставьте этот терминал активным и откройте новый сеанс терминала для настройки nginx

 sudo vim /etc/nginx/conf.d/wikijs.conf 

Для http соединение без ssl, добавить:

  # Wikijs файл конфигурации Nginx
server {
    слушать 80;
    имя_сервера wiki.example.com;

    место расположения / {
        proxy_set_header Хост $ http_host;
        proxy_set_header X-Real-IP $ remote_addr;
        proxy_pass http: // 127.0.0.1: 8080;
        proxy_http_version 1.1;
        proxy_set_header Обновить $ http_upgrade;
        proxy_set_header Соединение «апгрейд»;
        proxy_next_upstream error timeout http_502 http_503 http_504;
    }
}  

Следующий фрагмент конфигурации предназначен для http и https, но с перенаправлением с http на https.

  # Перенаправить http на https
server {
    слушать 80;
    имя_сервера wiki.example.com;
    return 301 https: // $ server_name $ request_uri;
}

# Обслуживать https-трафик

server {
    прослушать 443 ssl http2;
    имя_сервера вики.example.com;

    ssl_session_cache общий: SSL: 50 м;
    ssl_session_tickets off;

    ssl включен;
    ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem;
    ssl_session_timeout 5 мин;
    ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSAULL + SHA254ES! ! PSK! SRP! DSS »;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers на;

    место расположения / {
        proxy_set_header Хост $ http_host;
        proxy_set_header X-Real-IP $ remote_addr;
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Обновить $ http_upgrade;
        proxy_set_header Соединение «апгрейд»;
        proxy_next_upstream error timeout http_502 http_503 http_504;
    }
}  

Перезапустите службу nginx и убедитесь, что она запускается при загрузке

 sudo systemctl restart nginx
sudo systemctl enable nginx 

Теперь откройте ссылку http: // wiki.example.com/ и следуйте указаниям мастера установки:

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

Установить заголовок сайта

Установить соединение с базой данных MongoDB

Если ваш MongoDB установлен на том же хосте, что и Wiki.js, используйте:

Строка подключения: mongodb: // localhost: 27017 / wiki

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

Войдите в панель управления Wiki.js, чтобы начать добавлять контент

Чтобы остановить Wiki.js, выполните команду:

 node wiki stop 

Restart Wiki.js

Чтобы перезапустить Wiki.js, выполните команду:

 node wiki restart 

Все настройки, введенные во время мастера настройки, сохраняются в файле config. .yml

Шаг 5. Настройте Wiki.js для запуска при загрузке

По умолчанию Wiki.js не запускается автоматически после перезагрузки системы. Чтобы он запускался при загрузке, нам нужно настроить pm2 как глобальный модуль npm и установить его как службу запуска:

PM2 — это диспетчер производственных процессов для Node.js со встроенным балансировщиком нагрузки.

 npm install -g pm2 

Теперь нам нужно указать pm2 настроить себя как службу запуска.

 pm2 startup 

Наконец, сохраните текущую конфигурацию pm2, выполнив команду:

 pm2 save 

Чтобы удалить сценарий инициализации через:

 pm2 unstartup systemd 

Спасибо за использование нашего руководства по установке Wiki.js на Ubuntu 18.04 / CentOS 7. См. Другие руководства по Wiki ниже.

Как установить «ДокуВики» на Ubuntu 18.04 с Nginx и Letsencrypt

Установить Dokuwiki с Nginx и Letsencrypt SSL на CentOS 7

Как установить Gollum Wiki на Ubuntu 18.04 LTS

node.js — Невозможно начать новую установку wiki.js на моем виртуальном сервере

Я пытаюсь установить последнюю версию wiki.js 2.5.170 на мою автономную виртуальную машину под управлением Centos 7

https://docs.requarks.io/install/linux

Nodejs также является последним.

  [root @ server101 wiki] # узел -v
v14.0,0
  

Блок БД в файле config.yml:

  дБ:
  тип: mariadb
  # Только для PostgreSQL / MySQL / MariaDB / MS SQL Server:
  хост: localhost
  порт: 3306
  пользователь: myuser_wiki
  пройти: xxxxxx
  db: myuser_wiki
  ssl: false

  # Необязательно - только PostgreSQL / MySQL / MariaDB:
  # -> Раскомментируйте строки, которые вам нужны ниже, и установите для `auto` значение false
  # -> Полный список допустимых параметров: https://nodejs.org/api/tls.html#tls_tls_createsecurecontext_options
  sslOptions:
    авто: правда
    # rejectUnauthorized: false
    # ca: путь / к / ca.crt
    # cert: путь / к / cert.crt
    # ключ: путь / к / key.pem
    # pfx: путь / к / cert.pfx
    # кодовая фраза: xyz123

  # Только SQLite:
  # хранилище: путь / к / database.sqlite
  

При запуске:

  [root @ server101 wiki] # сервер узла
Загрузка конфигурации из /home/myuser/wiki/config.yml ... ОК
2020-11-08T12: 57: 57.126Z [МАСТЕР] информация: =================================== ====
2020-11-08T12: 57: 57.129Z [МАСТЕР] информация: = Wiki.js 2.5.170 =====================
2020-11-08T12: 57: 57.129Z [МАСТЕР] информация: =======================================
2020-11-08T12: 57: 57.129Z [MASTER] информация: Инициализация ...
2020-11-08T12: 57: 57.928Z [MASTER] info: Использование драйвера базы данных mysql2 для mariadb [OK]
2020-11-08T12: 57: 57.933Z [MASTER] информация: Подключение к базе данных ...
2020-11-08T12: 57: 57.950Z Ошибка [MASTER]: ошибка подключения к базе данных: ER_HOST_NOT_PRIVILEGED undefined: undefined
2020-11-08T12: 57: 57.950Z [МАСТЕР] предупреждение: повторная попытка через 3 секунды ... [Попытка 1 из 10]
2020-11-08T12: 58: 00.954Z [MASTER] info: Подключение к базе данных...
2020-11-08T12: 58: 00.958Z [MASTER] ошибка: ошибка подключения к базе данных: ER_HOST_NOT_PRIVILEGED undefined: undefined
2020-11-08T12: 58: 00.958Z [МАСТЕР] предупреждает: повторите попытку через 3 секунды ... [Попытка 2 из 10]
2020-11-08T12: 58: 03.962Z [MASTER] info: Подключение к базе данных ...
2020-11-08T12: 58: 03.968Z Ошибка [MASTER]: ошибка подключения к базе данных: ER_HOST_NOT_PRIVILEGED undefined: undefined
2020-11-08T12: 58: 03.968Z [МАСТЕР] предупреждает: повторите попытку через 3 секунды ... [Попытка 3 из 10]
2020-11-08T12: 58: 06.970Z [MASTER] info: Подключение к базе данных...
2020-11-08T12: 58: 06.975Z Ошибка [MASTER]: ошибка подключения к базе данных: ER_HOST_NOT_PRIVILEGED undefined: undefined
2020-11-08T12: 58: 06.975Z [МАСТЕР] предупреждение: повторная попытка через 3 секунды ... [Попытка 4 из 10]
2020-11-08T12: 58: 09.979Z [MASTER] info: Подключение к базе данных ...
2020-11-08T12: 58: 09.981Z [MASTER] ошибка: ошибка подключения к базе данных: ER_HOST_NOT_PRIVILEGED undefined: undefined
2020-11-08T12: 58: 09.982Z [MASTER] warn: повторит попытку через 3 секунды ... [Попытка 5 из 10]
2020-11-08T12: 58: 12.983Z [MASTER] info: Подключение к базе данных...
2020-11-08T12: 58: 12.988Z [MASTER] ошибка: ошибка подключения к базе данных: ER_HOST_NOT_PRIVILEGED undefined: undefined
2020-11-08T12: 58: 12.988Z [МАСТЕР] предупреждение: повторная попытка через 3 секунды ... [Попытка 6 из 10]
2020-11-08T12: 58: 15.992Z [MASTER] информация: Подключение к базе данных ...
2020-11-08T12: 58: 15.996Z Ошибка [MASTER]: ошибка подключения к базе данных: ER_HOST_NOT_PRIVILEGED undefined: undefined
2020-11-08T12: 58: 15.996Z [МАСТЕР] предупреждение: повторная попытка через 3 секунды ... [Попытка 7 из 10]
2020-11-08T12: 58: 18.999Z [MASTER] info: Подключение к базе данных...
2020-11-08T12: 58: 19.002Z [MASTER] ошибка: ошибка подключения к базе данных: ER_HOST_NOT_PRIVILEGED undefined: undefined
2020-11-08T12: 58: 19.002Z [MASTER] warn: повторит попытку через 3 секунды ... [Попытка 8 из 10]
2020-11-08T12: 58: 22.006Z [MASTER] info: Подключение к базе данных ...
2020-11-08T12: 58: 22.008Z Ошибка [MASTER]: ошибка подключения к базе данных: ER_HOST_NOT_PRIVILEGED undefined: undefined
2020-11-08T12: 58: 22.009Z [MASTER] warn: повторит попытку через 3 секунды ... [Попытка 9 из 10]
2020-11-08T12: 58: 25.013Z [MASTER] info: Подключение к базе данных...
2020-11-08T12: 58: 25.020Z Ошибка [MASTER]: ошибка подключения к базе данных: ER_HOST_NOT_PRIVILEGED undefined: undefined
2020-11-08T12: 58: 25.020Z [МАСТЕР] предупреждение: повторная попытка через 3 секунды ... [Попытка 10 из 10]
2020-11-08T12: 58: 28.023Z [MASTER] информация: Подключение к базе данных ...
2020-11-08T12: 58: 28.033Z Ошибка [MASTER]: ошибка инициализации базы данных: узлу 127.0.0.1 не разрешено подключаться к этому серверу MariaDB
  

Я проверил подключение к БД (используя ту же информацию, что и в config.yml) через CLI, и он отлично подключается.

Что мне здесь не хватает ?.

Устаревшая версия (1.x) Wiki.js

Wiki.js может работать практически на всех платформах, на которых может работать Node.js (Windows, Mac, Linux и т. Д.).

  • Node.js 6.11.1 или более поздняя версия
  • MongoDB 3.2 или более поздняя версия
  • Git 2.7.4 или более поздняя версия
  • Пустой репозиторий Git (необязательно)

Прочтите полную статью о предварительных требованиях для получения полной информации.

Образ докера доступен в Docker Hub.
Вы также можете использовать Dockerfile (см. Пример) или Docker Compose (см. Пример) для запуска Wiki.js.

Разверните в Heroku, используя этот предварительно созданный шаблон развертывания:

Разверните в IBM Cloud Foundry с помощью этого предварительно созданного шаблона развертывания (спасибо @seafre) :

На устаревшем сайте документации Wiki.js на самом деле работает Wiki.js! Проверить это »

Мы не предоставляем демонстрацию с доступом на запись из-за потенциальных проблем безопасности / спама.Лучший способ попробовать это — установить на свой сервер / компьютер. Это просто!

1.0.117 — Стабильная

Примечание : Это последний выпуск 1.x, новые функции в ветке 1.0 не разрабатываются. Рассмотрите возможность обновления до последней основной версии.

1.0.102 — Стабильная

Следите за нашей лентой в Твиттере, чтобы узнавать о предстоящих обновлениях и новых выпусках!

Хотите сделать пожертвование для этого проекта, но получить что-то взамен? Ознакомьтесь с нашими удивительными футболками для мужчин, женщин и детей, а также другими вкусностями: Wiki.js магазин

Мы ищем переводчиков, чтобы сделать Wiki.js доступным на нескольких языках. Если вашего языка нет в списке ниже и вы хотели бы внести свой вклад в этот проект, свяжитесь с нами на нашем канале gitter, и мы предоставим вам необходимый инструмент для добавления переводов, кодирование не требуется!

Уже переведенные языки:

Algolia за предоставление доступа к их невероятной поисковой системе.

Browserstack за предоставление доступа к отличным инструментам кросс-браузерного тестирования.

Cloudflare за предоставление отличных CDN, SSL и продвинутых сетевых сервисов.

DigitalOcean за предоставление хостинга сайта документации Wiki.js.

Этот проект существует благодаря всем людям, которые вносят свой вклад. [Делать вклад].

Спасибо всем нашим спонсорам! 🙏 [Стать спонсором]

Поддержите этот проект, став спонсором. Здесь будет отображаться ваш логотип со ссылкой на ваш веб-сайт. [Стать спонсором]

Как установить Wiki.js на FreeBSD 11

Используете другую систему?

Wiki.js — это бесплатное современное вики-приложение с открытым исходным кодом, построенное на Node.js, MongoDB, Git и Markdown. Исходный код Wiki.js публично размещен на Github. Это руководство покажет вам, как установить Wiki.js на новый экземпляр FreeBSD 11 Vultr с помощью Node.js, MongoDB, PM2, Nginx, Git и Acme.sh.

Требования

Требования для запуска Wiki.js следующие:

  • Node.js версии 6.11.1 или более поздней
  • MongoDB версии 3.2 или новее
  • Git версии 2.7.4 или более поздней
  • Веб-сервер, например Nginx, Apache, IIS, Caddy или h3O. В этом руководстве будет использоваться Nginx.
  • Репозиторий, совместимый с Git (общедоступный или частный) Это необязательно
  • Минимум 512 МБ ОЗУ. Настоятельно рекомендуется использовать машину с объемом оперативной памяти не менее 1 ГБ.
  • Доменное имя

  • с настроенными записями A / AAAA .В этом руководстве мы будем использовать wiki.example.com в качестве примера домена.

Прежде чем начать

Проверьте версию FreeBSD.

  uname -ro
# FreeBSD 11.2-РЕЛИЗ
  

Убедитесь, что ваша система FreeBSD обновлена.

  freebsd-update fetch установить
обновление pkg && обновление pkg -y
  

Установите пакеты sudo , vim , unzip , wget , git , bash и socat , если они отсутствуют в вашей системе.

  pkg install -y sudo vim unzip wget git bash socat
  

Создайте новую учетную запись пользователя с предпочитаемым именем пользователя (мы будем использовать johndoe ).

  приводной

# Имя пользователя: johndoe
# Полное имя: Джон Доу
# Uid (оставьте пустым по умолчанию): 
# Группа входа [johndoe]: 
# Группа входа - johndoe. Пригласить джондо в другие группы? []: колесо
# Класс входа [по умолчанию]: 
# Shell (sh csh tcsh nologin) [sh]: bash
# Домашний каталог [/ home / johndoe]: 
# Разрешения домашнего каталога (оставьте пустым по умолчанию): 
# Использовать аутентификацию на основе пароля? [да]: 
# Использовать пустой пароль? (да / нет) [нет]: 
# Использовать случайный пароль? (да / нет) [нет]: 
# Введите пароль: your_secure_password
# Введите пароль еще раз: your_secure_password
# Заблокировать учетную запись после создания? [нет]: 
# OK? (да / нет): да
# Добавить еще одного пользователя? (да / нет): нет
# До свидания!
  

Запустите команду visudo и раскомментируйте строку % wheel ALL = (ALL) ALL , чтобы позволить членам группы wheel выполнять любую команду.

  # Раскомментируйте, удалив знак решетки (#)
% wheel ALL = (ВСЕ) ВСЕ
  

Теперь переключитесь на вашего вновь созданного пользователя.

  su - johndoe
  

ПРИМЕЧАНИЕ: Замените johndoe своим именем пользователя.

Установите часовой пояс.

  судо tzsetup
  

Установить Node.js

Wiki.js требует Node.js 6.11.1 или более поздней версии, поэтому сначала необходимо установить соответствующую версию Node.js.

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

  sudo pkg install -y node8 npm-node8
  

Проверить версии.

  узел -v && npm -v
# v8.12.0
# 6.4.1
  

Установите MongoDB

Wiki.js использует MongoDB в качестве движка базы данных.

Установите MongoDB.

  sudo pkg install -y mongodb36
  

Проверить версию.

  mongo - версия | head -n 1 && mongod --version | голова -n 1
# Версия оболочки MongoDB v3.6,6
# db версия v3.6.6
  

Включите и запустите MongoDB.

  sudo sysrc mongod_enable = да
sudo service mongod start
  

Установите Acme.sh и получите сертификат Let’s Encrypt (

необязательно )

Защищать вашу вики с помощью HTTPS не обязательно, но это хорошая практика для защиты трафика вашего сайта. Для получения SSL-сертификата от Let’s Encrypt воспользуемся клиентом Acme.sh. Acme.sh — это чистая программа оболочки unix для получения SSL-сертификатов от Let’s Encrypt без каких-либо зависимостей.Это делает его очень легким по сравнению с некоторыми другими клиентами протокола Acme, которым для успешной работы требуется множество зависимостей.

Загрузите и установите Acme.sh.

  судо mkdir / и т. Д. / Letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home / etc / letsencrypt --accountemail [email protected]
cd ~
  

Проверьте версию acme.sh .

  /etc/letsencrypt/acme.sh --version
# v2.8.0
  

Получите сертификаты RSA и ECDSA для wiki.example.com .

  # RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home / etc / letsencrypt -d wiki.example.com --ocsp-must-staple --keylength 2048
# ECDSA / ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --standalone --home / etc / letsencrypt -d wiki.example.com --ocsp-must-staple --keylength ec-256
  

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

  • RSA: / etc / letsencrypt / wiki.example.com
  • ECC / ECDSA: /etc/letsencrypt/wiki.example.com_ecc

ПРИМЕЧАНИЕ: Не забудьте заменить wiki.example.com своим доменным именем.

После получения сертификатов от Let’s Encrypt нам нужно настроить Nginx, чтобы использовать их в своих интересах.

Установить и настроить Nginx

Wiki.js может работать без какого-либо реального веб-сервера, однако настоятельно рекомендуется поставить перед ним стандартный веб-сервер.Это гарантирует, что вы можете использовать такие функции, как SSL, несколько веб-сайтов, кеширование и другие. В этом руководстве мы будем использовать Nginx, но подойдет любой другой сервер, вам просто нужно правильно его настроить.

Установите Nginx.

  sudo pkg install -y nginx
  

Проверить версию.

  nginx -v
# версия nginx: nginx / 1.14.0
  

Включите и запустите Nginx.

  sudo sysrc nginx_enable = да
запуск службы sudo nginx
  

Настройте Nginx в качестве обратного прокси-сервера HTTPS (если вы используете SSL) для Wiki.js-приложение.

Запустите sudo vim /usr/local/etc/nginx/wiki.js.conf и заполните его базовой конфигурацией обратного прокси ниже.

  сервер {

  слушайте [::]: 443 ssl http2;
  прослушать 443 ssl http2;
  слушать [::]: 80;
  слушать 80;

  имя_сервера wiki.example.com;

  charset utf-8;
  client_max_body_size 50M;

  # RSA
  ssl_certificate /etc/letsencrypt/wiki.example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/wiki.example.com/wiki.example.com.ключ;
  # ECDSA
  ssl_certificate /etc/letsencrypt/wiki.example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/wiki.example.com_ecc/wiki.example.com.key;

  место расположения / {
    proxy_set_header Хост $ http_host;
    proxy_set_header X-Real-IP $ remote_addr;
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Обновить $ http_upgrade;
    proxy_set_header Соединение «апгрейд»;
    proxy_next_upstream error timeout http_502 http_503 http_504;
  }

}
  

Единственное, что вам нужно изменить в приведенной выше конфигурации, — это директива server_name и, возможно, директива proxy_pass , если вы решите настроить какой-либо порт, отличный от 3000 .Wiki.js по умолчанию использует порт 3000 . Сохраните файл и выйдите с : + W + Q

.

Теперь нам нужно включить файл wiki.js.conf в основной файл nginx.conf .

Запустите sudo vim /usr/local/etc/nginx/nginx.conf и добавьте следующую строку в блок http {} .

  включает wiki.js.conf;
  

Проверьте конфигурацию.

  судо nginx -t
  

Перезагрузите Nginx.

  sudo service nginx перезагрузка
  

Установите Wiki.js

Создайте пустую корневую папку для документов, в которую будет установлен Wiki.js.

  судо mkdir -p /usr/local/www/wiki.example.com
  

Перейдите в корневую папку документа.

  компакт-диск /usr/local/www/wiki.example.com
  

Измените владельца папки /usr/local/www/wiki.example.com на пользователя johndoe .

  sudo chown -R johndoe: johndoe / usr / local / www / wiki.example.com
  

Из папки /usr/local/www/wiki.example.com выполните следующие команды, чтобы загрузить и установить Wiki.js.

  curl -sSo- https://wiki.js.org/install.sh | трепать

ВЕРСИЯ = $ (curl -L -s -S https://beta.requarks.io/api/version/stable)
curl -L -s -S https://github.com/Requarks/wiki/releases/download/v$VERSION/wiki-js.tar.gz | tar -f - -xz -C.
curl -L -s -S https://github.com/Requarks/wiki/releases/download/v$VERSION/node_modules.tar.gz | tar -f - -xz -C.
cp -n config.sample.yml config.yml
  

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

  узел вики --версия
# 1.0.102
  

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

Запустите мастер настройки, запустив.

  узел wiki настроить
  

Это уведомит вас о необходимости перейти к http: // localhost: 3000 для настройки Wiki.js. Если у вас есть Nginx перед Wiki.js, это означает, что вы можете открыть свое доменное имя (например, http://wiki.example.com ) вместо перехода на localhost.

Используя веб-браузер, перейдите по адресу http://wiki.example.com и следуйте инструкциям на экране. Все настройки, введенные в мастере настройки, сохраняются в файле config.yml . Мастер настройки автоматически запустит Wiki.js за вас.

Установка и настройка диспетчера процессов PM2

По умолчанию Wiki.js не запускается автоматически после перезагрузки системы. Чтобы он запускался при загрузке, нам нужно установить и настроить диспетчер процессов PM2.

Установите PM2 глобально через npm .

  sudo npm install -g pm2
  

Проверить версию.

  pm2 -v
# 3.2.2
  

Перейдите в корневую папку с документами, если вы еще не в ней, и остановите Wiki.js.

  компакт-диск /usr/local/www/wiki.

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

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

2021 © Все права защищены. Карта сайта