One place for hosting & domains

      Установка

      Установка и настройка Postfix в качестве сервера SMTP только для отправки в Ubuntu 20.04


      Автор выбрал фонд Free and Open Source Fund для получения пожертвования в рамках программы Write for DOnations.

      Введение

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

      В этом обучающем модуле мы установим и настроим Postfix как сервер SMTP, доступный только для отправки. Также мы запросим бесплатные сертификаты TLS от Let’s Encrypt для вашего домена и настроим их использование для шифрования исходящей электронной почты.

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

      • Один сервер Ubuntu 20.04, настроенный в соответствии с инструкциями по начальной настройке сервера с Ubuntu 20.04, а также пользователь без привилегий root с привилегиями sudo.
      • Зарегистрированное полное доменное имя. В этом обучающем руководстве мы будем использовать your_domain. Вы можете купить доменное имя на Namecheap, получить его бесплатно на Freenom или воспользоваться услугами любого предпочитаемого регистратора доменных имен.
      • Запись DNS A с your_domain​​​, указывающая на публичный IP-адрес вашего сервера. В руководстве Введение в DigitalOcean DNS содержится подробная информация по их добавлению.

      Примечание. Имя хоста вашего сервера и имя вашего дроплета должны соответствовать your_domain, т. к. DigitalOcean автоматически задает записи PTR для IP-адреса дроплета по его имени.

      Для проверки имени хоста сервера можно ввести hostname в командной строке. Вывод должен соответствовать имени, которое вы присвоили дроплету при его создании.

      Шаг 1 — Установка Postfix

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

      Вначале обновите базу данных пакетов:

      Затем выполните установку Postfix, запустив следующую команду:

      • sudo apt install mailutils

      Перед окончанием установки вы увидите окно настройки конфигурации Postfix:

      Выберите в меню пункт Internet Site (Сайт), нажмите TAB для выбора<Ok>, а затем нажмите ENTER

      По умолчанию используется опция Internet Site (Сайт). Это наиболее подходящая опция для нашего случая, поэтому нажмите TAB, а затем нажмите ENTER. Если вы увидите только текст описания, нажмите TAB для выбора пункта OK, а затем нажмите ENTER.

      Если опция не отображается автоматически, запустите следующую команду:

      • sudo dpkg-reconfigure postfix

      После этого откроется еще один диалог настройки конфигурации System mail name (имя системной почты):

      Введите свое доменное имя, а затем нажмите TAB для выбора<Ok>, ENTER

      Имя системной почты System mail name должно совпадать с именем, которое вы присвоили своему серверу при его создании. После завершения настройки нажмите TAB, а затем нажмите ENTER.

      Мы установили Postfix и готовы приступить к настройке.

      Шаг 2 — Настройка Postfix

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

      Для этого нужно настроить Postfix для прослушивания только интерфейса виртуальной сети loopback, который сервер использует для внутренней связи. Для внесения изменений потребуется отредактировать главный файл конфигурации Postfix с именем main.cf, хранящийся в каталоге etc/postfix.

      Откройте его для редактирования в предпочитаемом текстовом редакторе:

      • sudo nano /etc/postfix/main.cf

      Найдите следующие строки:

      /etc/postfix/main.cf

      . . .
      mailbox_size_limit = 0
      recipient_delimiter = +
      inet_interfaces = all
      . . .
      

      Задайте для параметра inet_interfaces значение loopback-only:

      /etc/postfix/main.cf

      . . .
      mailbox_size_limit = 0
      recipient_delimiter = +
      inet_interfaces = loopback-only
      . . .
      

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

      /etc/postfix/main.cf

      . . .
      mydestination = $myhostname, your_domain, localhost.com, , localhost
      . . .
      

      Измените строку, чтобы она выглядела следующим образом:

      /etc/postfix/main.cf

      . . .
      mydestination = localhost.$mydomain, localhost, $myhostname
      . . .
      

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

      /etc/postfix/main.cf

      ...
      masquerade_domains = your_main_domain
      

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

      После внесения изменений сохраните и закройте файл.

      Примечание. В случае хостинга нескольких доменов на одном сервере другие домены также можно передать Postfix с помощью директивы mydestination.

      Затем перезапустите Postfix, выполнив следующую команду:

      • sudo systemctl restart postfix

      Вы настроили Postfix только для отправки почты с вашего сервера. Теперь протестируем настройку, отправив тестовое сообщение на адрес электронной почты.

      Шаг 3 — Тестирование сервера SMTP

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

      Выполните следующую команду для отправки тестового письма:

      • echo "This is the body of the email" | mail -s "This is the subject line" your_email_address

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

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

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

      С этой конфигурацией адрес в поле «От» в отправляемых тестовых письмах будет иметь вид your_user_name@your_domain, где your_user_name — имя пользователя сервера, от лица которого вы запустили команду.

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

      Шаг 4 — Переадресация системной почты

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

      Файл /etc/aliases содержит список альтернативных имен получателей электронных писем. Откройте его для редактирования:

      По умолчанию он выглядит так:

      /etc/aliases

      # See man 5 aliases for format
      postmaster:    root
      

      Единственная содержащаяся в нем директива предписывает пересылать сгенерированные системой электронные сообщения пользователю root.

      Добавьте в конец файла следующую строку:

      /etc/aliases

      ...
      root:          your_email_address
      

      Эта строка предписывает пересылать электронные письма, отправленные пользователю root, на указанный адрес электронной почты. Обязательно замените your_email_address своим личным адресом электронной почты. После внесения изменений сохраните и закройте файл.

      Для вступления изменений в силу выполните следующую команду:

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

      Протестируйте отправку электронных писем пользователю root с помощью следующей команды:

      • echo "This is the body of the email" | mail -s "This is the subject line" root

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

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

      Шаг 5 — Включение шифрования SMTP

      Теперь вы можете включить шифрование SMTP, запросив бесплатный сертификат TLS от Let’s Encrypt для вашего домена (с помощью Certbot) и настроив Postfix для использования этого сертификата при отправке сообщений.

      Certbot содержится в репозиториях пакетов Ubuntu по умолчанию, и вы можете установить его с помощью следующей команды:

      В диалоге подтверждения введите Y и нажмите ENTER.

      При начальной настройке сервера вы установили простой брандмауэр ufw. Вам нужно настроить его, чтобы разрешить трафик через порт HTTP 80, и тем самым завершить подтверждение вашего домена. Запустите следующую команду для его активации:

      Итоговый результат будет выглядеть следующим образом:

      Output

      Rule added Rule added (v6)

      Теперь порт открыт, и мы можем запустить Certbot для получения сертификата:

      • sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d your_domain

      Эта команда предписывает Certbot выдавать сертификаты с размером ключа RSA 4096 бит, запустить временный отдельный веб-сервер (--standalone) для проверки и выполнить проверку через порт 80 (--preferred-challenges http). Перед запуском команды обязательно замените your_domain именем вашего домена и введите свой адрес электронной почты, когда система его запросит.

      Результат будет выглядеть примерно следующим образом:

      Output

      Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for `your_domain` Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your cert will expire on 2020-07-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

      Как указано в примечаниях, ваши сертификат и файл закрытого ключа сохранены в каталоге /etc/letsencrypt/live/your_domain.

      Получив сертификат, откройте файл main.cf для редактирования:

      • sudo nano /etc/postfix/main.cf

      Найдите следующий раздел:

      /etc/postfix/main.cf

      # TLS parameters
      smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
      smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
      smtpd_tls_security_level=may
      
      smtp_tls_CApath=/etc/ssl/certs
      smtp_tls_security_level=may
      smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
      

      Замените your_domain именем вашего домена, где это необходимо. Ваши настройки TLS для Postfix будут обновлены:

      /etc/postfix/main.cf

      # TLS parameters
      smtpd_tls_cert_file=/etc/letsencrypt/live/your_domain/fullchain.pem
      smtpd_tls_key_file=/etc/letsencrypt/live/your_domain/privkey.pem
      smtpd_tls_security_level=may
      
      smtp_tls_CApath=/etc/ssl/certs
      smtp_tls_security_level=may
      smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
      

      Закончив, сохраните и закройте файл.

      Перезапустите Postfix, чтобы применить изменения:

      • sudo systemctl restart postfix

      Попробуйте отправить электронное письмо еще раз:

      • echo "This is the body of an encrypted email" | mail -s "This is the subject line" your_email_address

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

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

      Заключение

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

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



      Source link

      Установка MongoDB в Ubuntu 20.04


      Предыдущая версия данного руководства была написана Мелиссой Андерсон.

      Введение

      MongoDB (или Mongo) — это документоориентированная база данных с открытым исходным кодом, используемая во многих современных веб-приложениях. Она относится к базам данных типа NoSQL, поскольку не опирается на традиционную табличную структуру реляционных баз данных.

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

      В этом руководстве мы установим MongoDB на сервере Ubuntu 20.04, протестируем ее и узнаем, как управлять ею как службой systemd.

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

      Для данного обучающего модуля вам потребуется следующее:

      • Один сервер Ubuntu 20.04. На сервере должен быть пользователь без привилегий root с правами администратора и брандмауэр, настроенный с помощью UFW. Вы можете выполнить настройку, следуя указаниям руководства Начальная настройка сервера для Ubuntu 20.04.

      Шаг 1 — Установка MongoDB

      Официальные репозитории пакетов Ubuntu включают стабильную версию MongoDB. Однако на момент написания этого документа версия MongoDB, доступная в репозиториях Ubuntu по умолчанию, — это версия 3.6, в то время как последний стабильный выпуск — это версия 4.4.

      Чтобы получить самую последнюю версию этого программного обеспечения, вам нужно добавить выделенный репозиторий пакетов MongoDB в ваши источники APT. Теперь вы сможете установить mongodb-org, метапакет, который всегда указывает на последнюю версию MongoDB.

      Для начала импортируйте публичный ключ GPG для последней стабильной версии MongoDB. Вы можете найти соответствующий файл ключа на сервере ключей MongoDB. Вам нужно найти файл, который включает номер последней стабильной версии и заканчивается на .asc. Например, если вы хотите установить MongoDB версии 4.4, необходимо искать файл с именем server-4.4.asc.

      Нажмите правой кнопкой мыши на файл и выберите опцию Copy link address (Скопировать адрес ссылки). Затем вставьте эту ссылку в следующую команду curl, заменив выделенный URL:

      • curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

      cURL — это инструмент командной строки, который доступен во многих операционных системах и используется для передачи данных. Он читает все данные, хранящиеся в переданном URL, и выводит содержание в вывод системы. В следующем примере cURL выводит содержание файла ключа GPG, а затем вводит его в команду sudo apt-key add -, добавляя ключ GPG в ваш список доверенных ключей.

      Также обратите внимание, что команда curl использует опции -fsSL, которые вместе указывают cURL не выполнять скрипт без каких-либо обязательств. Это означает, что, если по какой-либо причине cURL не может связаться с сервером GPG, либо сервер GPG не работает, он не добавит полученный код ошибки к вашему списку доверенных ключей случайно.

      Эта команда покажет вывод OK, если ключ добавлен успешно:

      Output

      OK

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

      Эта команда возвращает ключ MongoDB в выводе:

      Output

      /etc/apt/trusted.gpg -------------------- pub rsa4096 2019-05-28 [SC] [expires: 2024-05-26] 2069 1EEC 3521 6C63 CAF6 6CE1 6564 08E3 90CF B1F5 uid [ unknown] MongoDB 4.4 Release Signing Key <packaging@mongodb.com> . . .

      На этом этапе ваша система APT все еще не знает, где искать пакет mongodb-org, который необходим для установки последней версии MongoDB.

      На вашем сервере есть два места, где APT ищет онлайн-источники пакетов для загрузки и установки: файл sources.list и каталог sources.list.d. sources.list — это файл, который перечисляет активные источники данных APT (по одному источнику в строке, наиболее предпочтительные указываются первыми). Каталог sources.list.d позволяет добавлять такие записи sources.list в качестве отдельных файлов.

      Запустите следующую команду, которая создает файл в каталоге sources.list.d под именем mongodb-org-4.4.list. В этом файле содержится только одна строка: deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse:

      • echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

      Эта единственная строка указывает APT все, что необходимо знать об источнике, и где его найти:

      • deb: означает, что источник ссылается на обычную архитектуру Debian. В других случаях эта часть строки может выглядеть как deb-src. Это означает, что источник представляет исходный код дистрибутива Debian.
      • [ arch=amd64,arm64 ]: указывает, в какие архитектуры загружать данные APT. В данном случае это архитектуры amd64 и arm64.
      • https://repo.mongodb.org/apt/ubuntu: это URI, представляющий местоположение данных APT. В данном случае URI указывает на адрес HTTPS, где находится официальный репозиторий MongoDB.
      • focal/mongodb-org/4.4: репозитории Ubuntu могут содержать несколько разных выпусков. Это означает, что вам нужна только версия 4.4 пакета mongodb-org, доступная для выпуска Ubuntu focal («Focal Fossa» — это кодовое название Ubuntu 20.04).
      • multiverse: эта часть указывает APT на один из четырех основных репозиториев Ubuntu. В данном случае — на репозиторий multiverse.

      После запуска этой команды обновите локальный индекс пакетов вашего сервера, чтобы APT знал, где найти пакет mongodb-org:

      После этого вы можете установить MongoDB:

      • sudo apt install mongodb-org

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

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

      Шаг 2 — Начало работы службы MongoDB и тестирование базы данных

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

      Выполните следующую команду systemctl, чтобы запустить службу MongoDB:

      • sudo systemctl start mongod.service

      Затем проверьте статус службы. Обратите внимание, что эта команда не включает .service в определение служебного файла. systemctl будет автоматически добавлять этот суффикс для любого аргумента, который вы передаете, если он еще не присутствует, поэтому нет необходимости включать его:

      • sudo systemctl status mongod

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

      Output

      ● mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2020-06-09 12:57:06 UTC; 2s ago Docs: https://docs.mongodb.org/manual Main PID: 37128 (mongod) Memory: 64.8M CGroup: /system.slice/mongod.service └─37128 /usr/bin/mongod --config /etc/mongod.conf

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

      • sudo systemctl enable mongod

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

      • mongo --eval 'db.runCommand({ connectionStatus: 1 })'

      connectionStatus проверяет и возвращает статус подключения базы данных. Значение 1 поля ok в ответе означает, что сервер работает нормально:

      Output

      MongoDB shell version v4.4.0 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("1dc7d67a-0af5-4394-b9c4-8a6db3ff7e64") } MongoDB server version: 4.4.0 { "authInfo" : { "authenticatedUsers" : [ ], "authenticatedUserRoles" : [ ] }, "ok" : 1 }

      Также обратите внимание, что база данных работает на порту 27017 на 127.0.0.1, локальном циклическом адресе, представляющем локальный хост localhost. Это номер порта MongoDB по умолчанию.

      На следующем шаге мы рассмотрим, как управлять экземпляром сервера MongoDB с помощью systemd.

      Шаг 3 — Управление службой MongoDB

      Как уже упоминалось ранее, процесс установки, описанный в шаге 1, настраивает MongoDB для работы в качестве службы systemd. Это означает, что вы можете управлять ею, используя стандартные команды systemctl, используемые для работы с другими службами системы Ubuntu.

      Как уже упоминалось ранее, команда systemctl status проверяет статус службы MongoDB:

      • sudo systemctl status mongod

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

      • sudo systemctl stop mongod

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

      • sudo systemctl start mongod

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

      • sudo systemctl restart mongod

      На шаге 2 вы установили активацию MongoDB автоматически при загрузке сервера. Если вы хотите отключить автоматический запуск, введите:

      • sudo systemctl disable mongod

      Для повторной установки активации при загрузке запустите команду enable снова:

      • sudo systemctl enable mongod

      Дополнительную информацию о том, как управлять службами systemd, можно найти в статье Основы работы с Systemd: работа со службами, блоками и журналом.

      Заключение

      В ходе выполнения этого обучающего руководства вы добавили официальный репозиторий MongoDB в ваш экземпляр APT и установили последнюю версию MongoDB. Затем вы протестировали функциональность Mongo и попробовали использовать некоторые команды systemctl.

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

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



      Source link

      Установка комплекса ERPNext в Ubuntu 18.04


      Автор выбрал Software in the Public Interest для получения пожертвования в рамках программы Write for DOnations.

      Введение

      ERPNext — это набор планирования ресурсов предприятия (Enterprise Resource Planning, ERP), который позволяет использовать производительность и гибкость технологий с открытым кодом. Он отлично справляется с такими бизнес-процессами, как финансы, продажи, человеческие ресурсы, производство, снабжение, обслуживание, служба поддержки и многое другое. В числе преимуществ внедрения системы, как ERPNext, можно отметить следующее:

      • Повышение производительности за счет автоматизации повторяющихся рабочих процессов
      • Повышение эффективности ИТ путем совместного использования базы данных всеми подразделениями компании
      • Оптимизация принятия решения благодаря комплексному видению взаимосвязи между структурными единицами

      ERPNext создан на базе Frappe, платформы комплексной разработки веб-приложений, написанной на Python, со всеми преимуществами среды выполнения Node/JavaScript и использует MariaDB в качестве сервера базы данных. Одним из многих преимуществ приложений на базе Frappe, в том числе ERPNext, является утилита командной строки bench. CLI bench экономит время администратора за счет автоматизации таких задач, как установка, обновление, настройка и управление многочисленными сайтами Frappe/ERPNext.

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

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

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

      • Зарегистрированное полное доменное имя с записью A, указывающее на ваш сервер. Если вы используете дроплет DigitalOcean, воспользуйтесь этим руководством для надлежащей настройки DNS. В этом обучающем руководстве мы будем использовать your_domain.

      Шаг 1 — Настройка брандмауэра

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

      Вам потребуется открыть следующие порты на вашем сервере ERPNext:

      • 80/tcp и 443/tcp для HTTP и HTTPS соответственно
      • 3306/tcp для подключения MariaDB (рекомендуется только при необходимости удаленного доступа к базе данных)
      • 143/tcp и 25/tcp для IMAP и STMP соответственно
      • 22/tcp для SSH (если вы еще не включили OpenSSH)
      • 8000/tcp для тестирования разработки перед развертыванием вашего сайта

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

      • sudo ufw allow 22,25,143,80,443,3306,8000/tcp

      Также можно разрешить подключения с определенных IP-адресов на конкретных портах с помощью этой команды:

      • sudo ufw allow from server_IP to any port port_number

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

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

      Дополнительную информацию о настройке брандмауэра можно найти в нашем руководстве «Настройка брандмауэра с UFW в Ubuntu 18.04».

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

      Шаг 2 — Конфигурация локальных настроек

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

      Сначала обновите ваш сервер:

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

      • sudo localectl set-keymap us && sudo localectl set-locale LANG=en_US.utf8

      Утилита localectl используется Ubuntu 18.04 и другими дистрибутивами Linux для контроля и изменения языковых настроек всей системы, а также настроек раскладки клавиатуры перед входом пользователя, что требует ERPNext 12.

      Также вам потребуется добавить следующие строки в файл /etc/environment. Используйте nano или предпочитаемый текстовый редактор, чтобы открыть файл:

      • sudo nano /etc/environment

      Добавьте в него следующее содержание:

      /etc/environment

      LC_ALL=en_US.UTF-8
      LC_CTYPE=en_US.UTF-8
      LANG=en_US.UTF-8
      

      Сохраните и закройте файл.

      Перезагрузите ваш сервер для внесения всех изменений:

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

      Шаг 3 — Установка MariaDB 10.4

      Теперь добавьте MariaDB в стек сервера. Для работы ERPNext 12 требуется версия MariaDB 10.2 или выше, однако в официальный репозиторий Ubuntu 18.04 входит версия 10.1, то есть вам нужно будет самостоятельно установить нужную версию. В этом обучающем модуле мы будем использовать последнюю стабильную версию MariaDB (версия 10.4 на момент написания этого документа).

      Для установки MariaDB 10.4 в Ubuntu 18.04 вам нужно будет добавить соответствующий ключ подписи и репозиторий. Эту информацию можно найти в мастере репозитория MariaDB Foundation. Откройте этот URL-адрес в браузере. В разделе 1. Choose a Distro нажмите Ubuntu. Откроется второй столбец с заголовком 2. Choose a Release. Нажмите под этим заголовком 18.04 LTS “bionic”. Появится третий столбец с заголовком 3.Choose a Version. Под этим столбцом нажмите 10.4 stable. Появится еще один столбец с заголовком 4.Choose a Mirror. Выберите зеркало в зависимости от вашего расположения, и MariaDB заполнит необходимые команды для выбранной установки.

      Мастер репозитория MariaDB

      Запустите три заполненные команды, которые надлежащим образом добавят репозиторий и ключ MariaDB. Ваши собственные команды будут выглядеть следующим образом:

      • sudo apt-get install software-properties-common && sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' && sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.klaus-uwe.me/mariadb/repo/10.4/ubuntu bionic main'

      После добавления репозитория выполните установку MariaDB:

      • sudo apt install mariadb-server

      После установки mariadb-server установите следующие пакеты:

      • sudo apt install libmysqlclient-dev python3-mysqldb

      ERPNext 12 — приложение Python, и ему требуется библиотека python3-mysqldb для управления базами данных. Пакеты libmysqlclient-dev, mariadb-client и libmariadbclient18 позволяют пользователям взаимодействовать со службой MariaDB, а ntpdate и libdate-manip-perl используются ERPNext для синхронизации времени сервера.

      Затем добавьте базовый уровень безопасности на сервер MariaDB, запустив скрипт mysql_secure_installation:

      • sudo mysql_secure_installation

      Скрипт mysql_secure_installation будет давать подсказки с помощью вопросов:

      • В первом диалоговом окне вам будет предложено ввести пароль root, но так как пароль еще не задан, нажмите ENTER.
      • Затем вам нужно будет решить, будете ли вы использовать аутентификацию Unix. Ответьте Y, чтобы принять этот метод аутентификации.
      • Когда вам будет предложено изменить пароль пользователя root для MariaDB, ответьте N. Использование пароля по умолчанию с аутентификацией Unix рекомендуется для систем на базе Ubuntu, потому что учетная запись root тесно связана с автоматическими задачами по обслуживанию системы.
      • Оставшиеся вопросы будут связаны с удалением анонимного пользователя базы данных для ограничения возможности входа в учетную запись root дистанционно на localhost, удалением тестовой базы данных и перезагрузкой таблиц привилегий. На эти вопросы можно спокойно ответить Y.

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

      Создание пользователя-суперадминистратора MariaDB

      ERPNext будет использовать пользователя root MariaDB для управления подключениями базы данных, но это не всегда идеальное решение. Чтобы преодолеть это ограничение и разрешить управление MariaDB пользователю без прав root, вам нужно будет вручную создать базу данных, названную по имени пользователя. Затем вы сможете присвоить специальные привилегии новому пользователю для управления операциями базы данных ERPNext.

      Откройте командную строку MariaDB:

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

      Убедитесь, что база данных была создана с помощью этого оператора SQL:

      Вы увидите примерно следующий вывод:

      Output

      +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sammy | +--------------------+

      Создайте пользователя MariaDB с именем sammy**** с привилегиями, и назначьте этому пользователю надежный пароль по своему выбору. Сохраните пароль в надежном месте, он понадобится вам позже:

      • GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'%' IDENTIFIED BY 'mariadb_password' WITH GRANT OPTION;

      Теперь подтвердите создание пользователя и новые привилегии пользователя:

      • SELECT host, user, Super_priv FROM mysql.user;

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

      Output

      +-----------+-------+------------+ | Host | User | Super_priv | +-----------+-------+------------+ | localhost | root | Y | | localhost | mysql | Y | | % | sammy | Y | +-----------+-------+------------+ 3 rows in set (0.001 sec)

      Теперь очистите привилегии, чтобы вступили в силу все изменения:

      После этого закройте сеанс:

      Теперь, после создания пользователя базы данных, необходимо только сделать отладку MariaDB для обеспечения надлежащей работы ERPNext 12. К счастью, команда ERPNext предоставляет превосходный шаблон настроек, который вы будете использовать в качестве отправной точки для внедрения. В следующем разделе вы узнаете, как правильно настроить базу данных MariaDB.

      Шаг 4 — Настройка MariaDB для ERPNext

      После установки и обеспечения безопасности MariaDB пришло время для отладки подключений ERPNext.

      Сначала остановите mariadb.service:

      • sudo systemctl stop mariadb

      Теперь с помощью nano или вашего любимого текстового редактора создайте файл конфигурации MariaDB под названием settings.cnf:

      • sudo nano /etc/mysql/conf.d/settings.cnf

      Добавьте шаблон конфигурации ERPNext:

      /etc/mysql/conf.d/settings.cnf

      [mysqld]
      
      # GENERAL #
      user                           = mysql
      default-storage-engine         = InnoDB
      socket                         = /var/lib/mysql/mysql.sock
      pid-file                       = /var/lib/mysql/mysql.pid
      
      # MyISAM #
      key-buffer-size                = 32M
      myisam-recover                 = FORCE,BACKUP
      
      # SAFETY #
      max-allowed-packet             = 256M
      max-connect-errors             = 1000000
      innodb                         = FORCE
      
      # DATA STORAGE #
      datadir                        = /var/lib/mysql/
      
      # BINARY LOGGING #
      log-bin                        = /var/lib/mysql/mysql-bin
      expire-logs-days               = 14
      sync-binlog                    = 1
      
      # REPLICATION #
      server-id                      = 1
      
      # CACHES AND LIMITS #
      tmp-table-size                 = 32M
      max-heap-table-size            = 32M
      query-cache-type               = 0
      query-cache-size               = 0
      max-connections                = 500
      thread-cache-size              = 50
      open-files-limit               = 65535
      table-definition-cache         = 4096
      table-open-cache               = 10240
      
      # INNODB #
      innodb-flush-method            = O_DIRECT
      innodb-log-files-in-group      = 2
      innodb-log-file-size           = 512M
      innodb-flush-log-at-trx-commit = 1
      innodb-file-per-table          = 1
      innodb-buffer-pool-size        = 5462M
      innodb-file-format             = barracuda
      innodb-large-prefix            = 1
      collation-server               = utf8mb4_unicode_ci
      character-set-server           = utf8mb4
      character-set-client-handshake = FALSE
      max_allowed_packet             = 256M
      
      # LOGGING #
      log-error                      = /var/lib/mysql/mysql-error.log
      log-queries-not-using-indexes  = 0
      slow-query-log                 = 1
      slow-query-log-file            = /var/lib/mysql/mysql-slow.log
      
      [mysql]
      default-character-set = utf8mb4
      
      [mysqldump]
      max_allowed_packet=256M
      
      !includedir /etc/mysql/mariadb.conf.d/
      

      Сохраните и закройте файл. Для получения дополнительной информации об этих настройках посмотрите этот файл шаблона в репозитории ERPNext Github. Это полезное начало для изучения этих опций.

      Создайте еще один файл с именем erpnext.cnf:

      • sudo nano /etc/mysql/mariadb.conf.d/erpnext.cnf

      Добавьте в файл следующие строки:

      /etc/mysql/mariadb.conf.d/erpnext.cnf

      [mysqld]
      pid-file        = /var/run/mysqld/mysqld.pid
      socket          = /var/run/mysqld/mysqld.sock
      bind-address    = 0.0.0.0
      

      Первый файл, /etc/mysql/conf.d/settings.cnf, дополняет и перезаписывает несколько значений, включенных по умолчанию в конфигурацию MariaDB, расположенную в файле /etc/mysql/my.cnf. Этот файл дает вам шаблон с рекомендациями, который значительно повышает производительность базы данных для ERPNext. Хотя этот шаблон является отличным началом, ничто не мешает вам еще больше повысить производительность MariaDB, настроив эти параметры в соответствии с вашими потребностями.

      Второй файл, /etc/mysql/mariadb.conf.d/erpnext.cnf, также перезаписывает некоторые значения, добавляя конкретную информацию по подключению вашей базы данных.

      Тестирование подключения MariaDB

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

      Запустите mariadb.service:

      • sudo systemctl start mariadb

      Для проверки подключения можно использовать следующую команду. Не забудьте заменить sammy и mariadb_password своими учетными данными:

      • mysql --user sammy --password mariadb_password --host=localhost --protocol=tcp --port=3306 test

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

      Output

      mysql Ver 15.1 Distrib 10.4.13-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Usage: mysql [OPTIONS] [database] Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf ... --ssl-verify-server-cert Verify server's "Common Name" in its cert against hostname used when connecting. This option is disabled by default. -t, --table Output in table format. --tee=name Append everything into outfile. See interactive help (h) also. Does not work in batch mode. Disable with --disable-tee. This option is disabled by default. -u, --user=name User for login if not current user. -U, --safe-updates Only allow UPDATE and DELETE that uses keys. -U, --i-am-a-dummy Synonym for option --safe-updates, -U. -v, --verbose Write more. (-v -v -v gives the table output format). ... max-join-size 1000000 secure-auth FALSE show-warnings FALSE plugin-dir (No default value) default-auth (No default value) binary-mode FALSE connect-expired-password FALSE

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

      • sudo systemctl restart mariadb

      После этого включите MariaDB:

      • sudo systemctl enable mariadb

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

      Шаг 5 — Настройка ERPNext 12

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

      Начните с подготовки сервера с помощью всех системных пакетов, необходимых для ERPNext 12. Установите общесистемные зависимости с помощью следующей команды:

      • sudo DEBIAN_FRONTEND=noninteractive apt install -y curl build-essential mariadb-client python3-setuptools python3-dev libffi-dev python3-pip libcurl4 dnsmasq fontconfig git htop libcrypto++-dev libfreetype6-dev liblcms2-dev libwebp-dev libxext6 libxrender1 libxslt1-dev libxslt1.1 libffi-dev ntpdate postfix python3-dev python-tk screen vim xfonts-75dpi xfonts-base zlib1g-dev apt-transport-https libsasl2-dev libldap2-dev libcups2-dev pv libjpeg8-dev libtiff5-dev tcl8.6-dev tk8.6-dev libssl1.0-dev python3-mysqldb libdate-manip-perl logwatch

      Переменная DEBIAN_FRONTEND=noninteractive была передана в команду установки для отключения подсказок Postfix. Для получения подробной информации о настройке Postfix ознакомьтесь с нашим руководством Установка и настройка Postfix в Ubuntu 18.04

      Выполните обновление pip3 и установите последние версии трех дополнительных модулей Python, которые требуются ERPNext:

      • sudo -H python3 -m pip install --upgrade setuptools cryptography psutil

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

      Настройка Node.js и Yarn

      ERPNext 12 может работать с версией 8+ среды сервера Node.js. На момент составления этого обучающего модуля официальный скрипт ERPNext easy_install использует Node 8. Однако с точки зрения безопасности рекомендуется установить новую версию, так как срок использования Node 8 закончился в 2020 г., и для него больше не будут выпускаться обновления безопасности. Для этого обучающего модуля мы установим Node.js версии 12 LTS вместе с соответствующими диспетчерами пакетов npm и yarn. Обратите внимание, что в каркасе Frappe используется yarn для установки зависимостей. Если вы решите использовать другой метод установки, убедитесь, что в вашей системе работает конечная версия yarn 1.12+.

      Добавьте в вашу систему репозиторий NodeSource:

      • curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh

      Теперь вы можете проверить содержание загруженного скрипта:

      • sudo nano nodesurce_setup.sh

      Проверьте настройки и запустите скрипт:

      • sudo bash nodesource_setup.sh

      Этот скрипт автоматически обновит список apt. Теперь вы можете установить nodejs на вашем сервере:

      Выполните глобальную установку yarn, используя входящий в комплект пакет npm:

      Теперь, после установки Node, можно продолжить настройку wkhtmltopdf для вашей платформы.

      ERPNext использует инструмент с открытым исходным кодом wkhtmltopdf для конвертации содержимого HTML в PDF с помощью механизма исполнения Qt WebKit. Эта функция используется главным образом для печати счетов-фактур, ценовых предложений и других отчетов. В случае ERPNext 12 требуется определенная версия wkhtmltopdf 0.12.5 с обновленным Qt.

      Для установки wkhtmltopdf начните с перехода в подходящий каталог для загрузки пакета, в данном случае /tmp:

      Загрузите соответствующую версию wkhtmltopdf и пакет для Ubuntu 18.04 со страницы проекта:

      • wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

      Теперь установите пакет с помощью инструмента dpkg:

      • sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb

      Затем скопируйте все относящиеся исполняемые файлы в каталог /usr/bin/:

      • sudo cp /usr/local/bin/wkhtmlto* /usr/bin/

      Когда файлы будут на месте, измените их разрешения, чтобы они стали исполняемыми:

      • sudo chmod a+x /usr/bin/wk*

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

      Установка Redis

      ERPNext 12 использует Redis для повышения производительности MariaDB. В частности, он помогает с кэшированием.

      Сначала установите Redis из официального репозитория Ubuntu 18.04:

      • sudo apt install redis-server

      Затем активируйте Redis при запуске:

      • sudo systemctl enable redis-server

      Мы добавили Redis в наш комплект и теперь посмотрим, что мы уже сделали. Мы установили все основные компоненты, необходимые ERPNext 12, в том числе:

      • Серверная часть базы данных MariaDB
      • Среда сервера Node.js JavaScript
      • Диспетчер пакетов Yarn
      • Кэш базы данных Redis
      • Генератор документов PDF wkhtmltopdf

      Независимо от того, устанавливаете ли вы систему ERP для разработки или производства, вы готовы к следующему шагу, а именно к установке каркаса комплексной разработки Frappe и фактического веб-приложения ERPNext 12.

      Шаг 6 — Установка командной строки Bench Frappe

      Теперь, когда вы установили все требования стека ERPNext, вы можете свободно пользоваться возможностями утилиты командной строки bench. CLI bench была разработана для оказания помощи пользователям в процессе установки, настройки и управления такими приложениями, как ERPNext, которые созданы на базе каркаса Frappe Framework. В следующих разделах вы установите CLI bench для дальнейшего использования при выполнении настройки ERPNext 12.

      Убедитесь, что пользователь Frappe (в данном случае sammy) имеет соответствующие права в своем каталоге home:

      • sudo chown sammy -R /home/sammy

      Теперь клонируйте репозиторий frappe/bench в свой домашний каталог. Не забудьте заменить sammy вашим именем пользователя системы:

      • git clone https://github.com/frappe/bench /home/sammy/.bench --depth 1 --branch master

      Установите CLI bench:

      • sudo pip3 install -e /home/sammy/.bench

      В данном руководстве предполагается, что вы устанавливаете ERPNext 12 для сценариев тестирования/производства и поэтому используете ветку master. Но если вы намерены разрабатывать приложения или пользовательские модули ERPNext, лучше выбрать ветку develop. В любом случае вы готовы к установке каркаса Frappe Framework. Это последнее действие перед установкой непосредственно ERPNext.

      Настройка среды каркаса Frappe Framework

      В этом разделе вы создадите среду Frappe с помощью CLI bench.

      Во время установки Frappe вы можете превысить лимит просмотра файлов Ubuntu, который по умолчанию установлен на 8192. Чтобы избежать этого, установите более высокий лимит с помощью следующей команды:

      • echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

      Затем инициализируйте каркас Frappe Framework 12. Замените Sammy на имя пользователя системы:

      • bench init /home/sammy/frappe-bench --frappe-path https://github.com/frappe/frappe --frappe-branch version-12 --python python3

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

      Output

      ... Done in 82.23s. INFO:bench.utils:setting up backups no crontab for sammy SUCCESS: Bench /home/sammy/frappe-bench initialized

      Примечание. Процесс bench init может быть остановлен при возникновении ошибки spawn ENOMEM. Эта ошибка возникает, когда в системе заканчивается память. Ее необходимо устранить перед продолжением либо путем установки дополнительной физической памяти, либо путем выделения пространства подкачки.

      Рассмотрим более подробно команду, которая используется для создания среды:

      • /home/sammy/frappe-bench — это путь установки каркаса Frappe Framework, веб-сайтов и связанных приложений. Для размещения всех необходимых файлов в данном примере будет создан новый каталог с именем frappe-bench.
      • --frappe-path указывает на репозиторий Frappe, который в данном случае является официальным репозиторием Github.
      • --frappe-branch — это версия Frappe для установки. Поскольку вы хотите установить ERPNext 12, выбранная версия — Frappe 12.
      • --python — это версия Python, которая будет использоваться. Для ERPNext 12 требуется Python 3.6+. Однако в предыдущих версиях по-прежнему используется Python 2.7.

      Дополнительную информацию о командах CLI bench см. в Справочнике команд Bench.

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

      Шаг 7 — Установка веб-приложения ERPNext 12

      В этом разделе вы настроите сайт на базе Frappe, а затем установите на нем приложение ERPNext 12.

      Перейдите в каталог, где был инициирован Frappe.

      • cd /home/sammy/frappe-bench

      Загрузите ERPNext 12 из репозитория с помощью инструмента командной строки bench:

      • bench get-app erpnext https://github.com/frappe/erpnext --branch version-12

      Затем создайте новый сайт, заменив your_domain на домен, который вы связали с IP-адресом этого сервера:

      • bench new-site your_domain --admin-password 'erpnext_admin_password' --mariadb-root-username sammy --mariadb-root-password 'mariadb_password'

      Давайте рассмотрим опции, используемые в команде выше:

      • bench new-site создает новый сайт на базе каркаса Frappe Framework.
      • your_domain — это имя нового сайта. Убедитесь, что DNS вашего домена имеет запись A, указывающую на IP-адрес вашего сервера.
      • erpnext_admin_password — желаемый пароль для пользователя-администратора ERPNext. Сохраните этот пароль в надежном месте, он вскоре вам понадобится.
      • mariadb_password — это пароль, который вы создали в начале руководства для пользователя sammy MariaDB.

      Затем установите приложение ERPNext на сайт:

      • bench --site your_domain install-app erpnext

      По завершении установки вы получите работающее приложение ERPNext 12. Теперь протестируем его с помощью команды bench:

      Команда выше инициализирует консоль мониторинга в реальном времени, на которой будут отображаться различные сообщения о веб-сервере и других службах. Откройте веб-браузер и перейдите к localhost:8000 (для локальных установок) или your_domain:8000 (если вы используете удаленный сервер). Вы увидите экран входа ERPNext (мы перейдем к входу и настройке позже, после подготовки нашего сайта к производству).

      После просмотра тестового развертывания вернитесь в свой терминал и нажмите CTRL+C. Это остановит ERPNext и закроет консоль мониторинга.

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

      Шаг 8 — Настройка ERPNext 12 для производства

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

      • Fail2ban обеспечивает дополнительный слой защиты от попыток грубого вмешательства со стороны злоумышленников и ботов.
      • Nginx в основном работает как прокси-сервер и перенаправляет весь трафик с порта 8000 в порт 80 (HTTP) или порт 443 (HTTPS)
      • Supervisor следит за постоянным выполнением ключевых процессов ERPNext и при необходимости перезапускает их.

      К этому моменту вы установили и настроили вручную ERPNext 12, что позволило вам отрегулировать процесс под ваш конкретный сценарий использования. Тем не менее для остальной части производственной настройки можно воспользоваться удобством CLI bench и автоматизировать установку и настройку остальных служб.

      Убедитесь, что вы находитесь в рабочем каталоге Frappe:

      • cd /home/sammy/frappe-bench

      Теперь используйте следующую команду для завершения настройки ERPNext 12 для производства:

      • sudo bench setup production sammy --yes

      Команда выше установит и настроит Nginx, Supervisor и Fail2Ban установит sammy в качестве владельца среды производства.

      Файлы конфигурации, созданные командой bench:

      • Два файла конфигурации Nginx, расположенные в /etc/nginx/nginx.conf и /etc/nginx/conf.d/frappe-bench.conf
      • Один прокси-изолятор Fail2Ban, расположенный в /etc/fail2ban/jail.d/nginx-proxy.conf и один фильтр, расположенный в /etc/fail2ban/filter.d/nginx-proxy.conf

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

      • sudo supervisorctl stop all

      And then, once you are ready, you can restart your services:

      • sudo supervisorctl start all

      Now you are ready to test your installation.

      Проверка установки ERPNext 12

      Для начала проверьте работу основных производственных служб, для чего используйте следующую команду systemctl, а затем отправьте ее на конвейер grep:

      • systemctl list-unit-files | grep 'fail2ban|nginx|supervisor'

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

      Output

      fail2ban.service enabled nginx.service enabled supervisor.service enabled

      Убедившись в том, что все работает ожидаемым образом, вы можете протестировать ERPNext 12 в реальном времени на своем сервере. Откройте свой любимый браузер и перейдите в домен, где размещено приложение ERPNext 12.

      Через несколько секунд вы должны увидеть экран входа в ERPNext 12. Используйте имя пользователя Administrator и ранее созданный пароль erpnext_admin_password.

      Экран входа в ERPNext

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

      Выбор языка

      После выбора языка ERPNext подскажет вашу страну, часовой пояс и валюту:

      Выбор региона

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

      Первый пользователь ERPNext

      На следующем экране вы увидите вопрос о доменах, которые вызывает ERPNext. Если вы не уверены в том, какой у вас домен, выберите Distribution и нажмите кнопку Next (далее).

      Выбор доменов

      Затем вам потребуется указать название компании и сокращенное название.

      Название компании

      На последнем экране ERPNext попросит ввести информацию о деятельности компании, название банка, план счетов и период финансового года. Дополнительные банки вы сможете ввести позже. Теперь заполните все поля на свое усмотрение и нажмите кнопку Complete Setup (Завершить настройку).

      Финансовая информация

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

      Настройка ERPNext

      По завершении настройки появится главная панель ERPNext 12.

      Панель ERPNext 12

      Теперь вы полностью установили и настроили приложение ERPNext 12.

      Заключение

      Теперь, когда вы соответствующим образом установили приложение ERPNext 12, возможно, вы захотите начать внедрение системы для потребностей своей компании. Лучше всего начать, нажав на кнопку Getting Started (Начало работы) на панели ERPNext. ERPNext поможет вам настроить платформу для всех потребностей бизнеса и электронной коммерции.

      Начало работы

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



      Source link