Инструкция по установке ProjectSend на Ubuntu 20.04 с использованием Nginx (LEMP Stack)

В этом руководстве мы обсудим процесс установки ProjectSend на Ubuntu 20.04 LTS с использованием веб-сервера Nginx.

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

ProjectSend — это бесплатная программа с открытым исходным кодом для самостоятельного хостинга и обмена файлами. Ключевые функции ProjectSend:

  • Актуальная статистика в режиме реального времени
  • Формирование групп клиентов
  • Регистрация и авторизация с использованием аккаунтов социальных сетей.
  • Индивидуальные шаблоны для писем

Начальные условия

ProjectSend разработан на PHP. Перед тем, как следовать этому руководству, необходимо установить LEMP стек на Ubuntu 20.04. Если установка еще не произведена, воспользуйтесь следующим руководством.

  • Установка стека LEMP (Nginx, MariaDB, PHP 7.4-FPM) на Ubuntu 20.04: шаги и инструкции.

Вы можете установить ProjectSend на своем домашнем сервере или виртуальном частном сервере (VPS). Вам также потребуется доменное имя, чтобы в будущем активировать HTTPS для шифрования трафика. Я приобрел свое доменное имя через NameCheap, так как там низкие цены и бесплатная защита конфиденциальности whois на всю жизнь. Установка ProjectSend возможна и без доменного имени, но это нецелесообразно, если вы не обеспечите шифрование HTTP-соединения для защиты от слежки. Рекомендую приобрести доменное имя, если вы планируете полноценно использовать серверное программное обеспечение.

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

Установите ProjectSend на Ubuntu 20.04.

Авторизуйтесь на своем сервере с Ubuntu 20.04. Далее загрузите zip-архив ProjectSend на сервер. На момент написания данной статьи последняя стабильная версия — r1295. Возможно, вам придется обновить номер версии. Для получения актуальной информации о последней версии посетите сайт https://www.projectsend.org/#download.

Скачайте ProjectSend для Ubuntu.

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

wget - O projectsend. zip https://www. projectsend. org/download/387/

После загрузки распакуйте архив, используя команду unzip.

sudo apt install unzip sudo mkdir - p /usr/share/nginx/projectsend/ sudo unzip projectsend. zip - d /usr/share/nginx/projectsend/

Ключ

-d

определяет директорию назначения. Веб-файлы ProjectSend будут распакованы в папку

/usr/share/nginx/projectsend/

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

sudo chown www-data:www-data /usr/share/nginx/projectsend/ - R

Формирование базы данных и учетной записи пользователя для ProjectSend в сервере MariaDB.

Подключитесь к серверу базы данных MariaDB, используя следующую команду. Поскольку теперь MariaDB применяет плагин unix_socket для аутентификации, вводить пароль root MariaDB не требуется. Достаточно просто добавить sudo перед командой mysql.

Читайте также:  Сравнение файловых систем EXT4, Btrfs и XFS по производительности

sudo mysql

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

create database projectsend;

Создайте учетную запись пользователя в базе данных. Вы можете выбрать любое имя, которое вам нравится. Вместо your-password укажите свой пароль.

create user projectsenduser@localhost распознан по 'your-password';

Предоставьте данному пользователю полные права доступа к базе данных projectsend.

grant all privileges on projectsendК сожалению, ваш запрос не содержит текста для перефразирования. Пожалуйста, предоставьте текст, который вы хотите сделать уникальным.projectsenduser@localhost;

Используйте свои права и покиньте систему.

flush privileges; exit;

Конфигурация ProjectSend

Перейдите в папку includes.

cd /usr/share/nginx/projectsend/includes/

Сделайте копию примера конфигурационного файла и измените его имя на sys.config.php.

sudo cp sys.config.sample.php sys.config.php

Теперь внесите изменения в новый конфигурационный файл, используя текстовый редактор командной строки, такой как Nano.

sudo nano sys.config.php

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

/** Имя базы данных */ define ('DB_NAME', 'databasedefine ('DB_HOST', 'localhost'); /** Адрес сервера базы данных (обычно это localhost) */ define ('DB_USER', 'username

phppassword');

Закройте и сохраните файл. Для сохранения в текстовом редакторе Nano нажмите Ctrl+O, затем подтвердите нажатием Enter. После этого используйте Ctrl+X, чтобы выйти из редактора.

Настройка конфигурационного файла Nginx для ProjectSend.

С помощью текстового редактора командной строки, такого как Nano, создайте файл projectsend.conf в папке /etc/nginx/conf.d/.

sudo nano /etc/nginx/conf.d/projectsend.conf

Скопируйте данный текст и вставьте его в файл. Подмените projectsend. example.com на тот поддомен, который вы выбрали. Не забудьте добавить запись DNS A для этого поддомена в вашем редакторе DNS-зоны. Если у вас еще нет действующего доменного имени, я советую посетить NameCheap для его приобретения. Цены там невысокие, и они предлагают бесплатную защиту конфиденциальности whois на протяжении всей жизни.

server < listen 80; listen [::]:80; server_name projectsend. example.comВведение заголовков для повышения безопасности

add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Referrer-Policy no-referrer;

Указание пути к корневой директории установки

root /usr/share/nginx/projectsend/;
index index.php index. html;
access_log /var/log/nginx/projectsend. access;
error_log /var/log/nginx/projectsend. error;
location = /robots. txt< allow all; log_not_found off; access_log off; >location ~ /.well-known/acme-challenge < allow all; >Установите предельный размер загрузки client_max_body_size 512M; fastcgi_buffers 64 4K; # Отключите gzip, чтобы избежать удаления заголовка ETag gzip off; # Уберите комментарий, если сервер собран с модулем ngx_pagespeed # Этот модуль в настоящее время не поддерживается. #pagespeed off; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location /< try_files $uri $uri/ /index.php; >location ~ \.php$ < include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; try_files $fastcgi_script_name =404; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; #Избегайте повторной отправки заголовков безопасности fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; >location ~

  • .(?< try_files $uri /index.php$uri$is_args$args; # Необязательно: Не вести логирование доступа к другим ресурсам access_log off; >>

    Сохраните изменения и закройте документ. (Для сохранения в текстовом редакторе Nano нажмите Ctrl+O, затем подтвердите нажатием Enter. Чтобы выйти, используйте комбинацию Ctrl+X.)

    После этого убедитесь в правильности настройки Nginx.

    sudo nginx - t

    В случае успешного завершения теста, перезапустите Nginx, чтобы обновления начали действовать.

    sudo systemctl reload nginx

    Установите и активируйте модули PHP.

    Используйте указанные команды для установки необходимых или рекомендуемых модулей PHP для ProjectSend.

    sudo apt install imagemagick php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp

    Активируйте HTTPS.

    Теперь вы можете открыть мастера установки ProjectSend прямо в вашем веб-браузере, просто введя доменное имя вашей установки.

    projectsend. example.com/install/index.php

    Если веб-страница не отображается, возможно, вам потребуется разблокировать порт 80 в настройках файрвола.

    sudo iptables - I INPUT - p tcp --dport 80 - j ACCEPT

    А также порт 443.

    sudo iptables - I INPUT - p tcp --dport 443 - j ACCEPT

    Перед тем как вводить конфиденциальные данные, необходимо активировать защищенное соединение HTTPS для ProjectSend. Мы можем получить бесплатный TLS-сертификат от Let’s Encrypt. Установите клиент Let’s Encrypt (certbot) из репозитория Ubuntu 20.04.

    sudo apt install certbot python3-certbot-nginx

    Python3-certbot-nginx представляет собой плагин, предназначенный для работы с Nginx. Затем введите следующую команду, чтобы получить бесплатный сертификат TLS, используя этот плагин.

    sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email К сожалению, я не могу помочь с обработкой этой информации. - d projectsend. example.com

    • –nginx: Применить аутентификатор и инсталлятор Nginx.
    • – согласие с условиями обслуживания Let’s Encrypt.
    • – перенаправить : Активируйте HTTPS, установив перенаправление 301.
    • –hsts : Активировать жесткую транспортную безопасность HTTP (HSTS). Это обеспечивает защиту от атак, направленных на снижение уровня SSL/TLS.
    • –staple-ocsp : Активировать поддержку OCSP.
    • –email: Электронный адрес, который применяется для регистрации и восстановления доступа.
    • -d : Опция, за которой указывается перечень доменных имен, разделённых запятыми. Допускается добавление до 100 доменных имен.

    Вам будет предложено выбрать, желаете ли вы получать уведомления по электронной почте от EFF (Фонд электронного фронта). После того как вы укажете Y или N, ваш TLS-сертификат будет автоматически сгенерирован и настроен, что будет подтверждено сообщением ниже.

    Завершите процесс установки в вашем интернет-браузере.

    Теперь у вас есть возможность подключаться к мастеру веб-установки ProjectSend через HTTPS.

    https://projectsend. example.com/install/index.php

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

    projectsend-ubuntu-20.04-install-guide-nginx

    Нажмите на кнопку «Установить», чтобы получить доступ к веб-интерфейсу ProjectSend.

    set-up-projectsend-ubuntu-nginx

    Как организовать уведомления на электронную почту в ProjectSend

    Если ваша инстанция ProjectSend будет использоваться более чем одним человеком, важно, чтобы сервер ProjectSend мог отправлять транзакционные электронные письма, такие как письмо для сброса пароля. Перейдите в Опции ->Уведомления на электронную почту. Вы сможете найти параметры настройки почтового сервера. Имеется четыре способа отправки:

    • Основы работы с PHP mail.
    • SMTP
    • Gmail
    • Sendmail

    Если на хосте ProjectSend установлен SMTP-сервер, вы можете активировать режим sendmail.Остальные поля можно оставить пустыми.

    проектный отправитель электронной почты

    Для использования SMTP-сервера на другом хосте выберите режим SMTP и введите адрес сервера вместе с учетными данными для доступа. Чтобы обеспечить шифрование, выберите опцию STARTTLS.

    опции отправки электронной почты в проекте

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

    • Как просто развернуть полноценный почтовый сервер на Ubuntu 20.04 с помощью iRedMail.

    Повышение предела памяти для PHP

    Стандартный лимит памяти PHP установлен на уровне 128 МБ. Однако для оптимальной работы ProjectSend рекомендуется увеличить его до 512 МБ. Для изменения этого лимита необходимо внести правки в файл php. ini.

    sudo nano /etc/php/7.4/fpm/php. ini

    Определите следующую строку. (строка 409)

    memory_limit = 128M

    Поменяйте значение.

    memory_limit = 512M

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

    sudo sed - i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/fpm/php. ini

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

    sudo systemctl reload php7.4-fpm

    Расширение максимального допустимого размера загружаемых файлов.

    Стандартно максимальный размер файла, который можно загрузить через Nginx, составляет 1 МБ. Чтобы увеличить лимит загрузки для вашего сервера ProjectSend, необходимо внести изменения в конфигурационный файл Nginx, относящийся к ProjectSend.

    sudo nano /etc/nginx/conf.d/projectsend.conf

    Мы уже определили предельный размер файла в данном документе, как указано в

    client_max_body_size 512M;

    Вы можете настроить его по своему усмотрению, например, выбрав 1G.

    client_max_body_size 1024M;

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

    sudo systemctl reload nginx

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

    sudo nano /etc/php/7.4/fpm/php. ini

    Определите следующую строку (строка 846).

    upload_max_filesize = 2M

    Измените параметр в соответствии с приведенным ниже примером:

    upload_max_filesize = 1024M

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

    sudo sed - i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.4/fpm/php. ini

    После этого выполните перезапуск PHP-FPM.

    sudo systemctl restart php7.4-fpm

    Создание локальной DNS-записи

    Советуем внести изменения в файл /etc/hosts на вашем сервере ProjectSend, добавив соответствующую запись. Это поможет избежать обращения к публичной DNS и может повысить стабильность работы. Если ваш сервер не сможет распознать имя хоста projectsend. example.com, вы рискуете столкнуться с ошибкой 504 gateway timeout.

    127.0.0.1 localhost projectsend. example.com

    В файле /etc/hosts один и тот же IP-адрес может соответствовать нескольким именам хостов. Это означает, что если на сервере установлены другие приложения, вы можете дополнительно указать другие имена хостов или поддомены в одной и той же строке, например:

    127.0.0.1 localhost focal ubuntu projectsend. пример.com nextcloud. пример.com

    Рекомендации по диагностике и устранению проблем

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

    • Журнал ошибок Nginx находится по пути: /var/log/nginx/error.log.
    • Файл журнала ошибок Nginx для виртуального хоста ProjectSend расположен по адресу: /var/log/nginx/projectsend. error.

    Завершение

    Надеюсь, данное руководство оказалось полезным для установки ProjectSend на сервер Ubuntu 20.04 с Nginx. Если вам понравился этот материал, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать дополнительные советы и рекомендации. Всего наилучшего!