Установка ProjectSend на Ubuntu 20.04 с Apache и Let's Encrypt

О ProjectSend
ProjectSend — свободное и открытое веб-приложение для обмена файлами и изображениями между компанией и клиентами. Приложение ориентировано на работу с клиентами: позволяет загружать и хранить файлы практически любого размера (в пределах настроек сервера), использует PHP и базу данных MySQL/MariaDB для хранения метаданных. Ключевые возможности: статистика в реальном времени, саморегистрация пользователей, настраиваемые шаблоны писем и прочее.
Важно: ProjectSend хранит файлы на диске сервера, а в базе — только метаданные. Планируйте резервное копирование и контроль прав доступа на системном уровне.
Что потребуется
- Сервер с Ubuntu 20.04 (x86_64 или совместимая архитектура).
- Домен, указывающий на IP сервера (A-запись).
- Пароль root или пользователь с sudo-привилегиями.
- Базовые навыки работы в терминале и редактирования файлов (nano/vi).
Краткая стратегия установки
- Обновить систему.
- Установить LAMP-стек и необходимые расширения PHP.
- Настроить PHP (память, загрузки, таймзоны).
- Создать базу данных и пользователя в MariaDB.
- Скачать ProjectSend, настроить конфигурацию и права.
- Настроить виртуальный хост Apache.
- Установить и включить сертификат Let’s Encrypt через certbot.
Подготовка системы
Обновите списки пакетов и установите обновления перед началом:
apt-get update -y
apt-get upgrade -yПримечание: команда apt-get upgrade может потребовать дополнительного ввода. На продакшен-серверах перед обновлением рекомендуем проверять список изменяемых пакетов.
Установка LAMP (Apache, MariaDB, PHP и расширения)
Установите Apache, MariaDB, ImageMagick и необходимые расширения PHP (включая модуль для работы с изображениями):
apt-get install apache2 mariadb-server imagemagick php libapache2-mod-php php-imagick php7.4-common php7.4-mysql 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После установки откройте файл php.ini для Apache и отредактируйте параметры производительности и загрузки файлов:
nano /etc/php/7.4/apache2/php.iniНайдите и измените (или добавьте) следующие параметры:
memory_limit = 512M
upload_max_filesize = 32M
max_execution_time = 300
date.timezone = Asia/KolkataВажно: при необходимости замените date.timezone на ваш собственный часовой пояс (например, Europe/Moscow). Эти параметры влияют на максимальный размер загружаемых файлов, время выполнения скриптов и потребление памяти.
Сохраните изменения и перезапустите Apache:
systemctl restart apache2Проверьте статус сервиса:
systemctl status apache2Создание базы данных для ProjectSend
Войдите в MariaDB (под root или пользователем с соответствующими правами):
mysqlВнутри клиента MariaDB выполните команды создания базы и пользователя. Замените ‘password’ на надёжный пароль:
MariaDB [(none)]> create database projectsend;
MariaDB [(none)]> create user projectsend@localhost identified by 'password';
MariaDB [(none)]> grant all privileges on projectsend.* to projectsend@localhost;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;Совет по безопасности: на продакшене используйте более ограниченные привилегии и редактируйте привязку пользователя (например, доступ с конкретного хоста). Храните пароли в менеджере секрета или защищённом файле вне репозитория.
Загрузка и настройка ProjectSend
Скачайте архив с официального сайта (ссылка в примере указывает версию 387 — используйте актуальную ссылку, если она изменилась):
wget -O projectsend.zip https://www.projectsend.org/download/387/Распакуйте в корень веб-документов Apache:
unzip projectsend.zip -d /var/www/html/projectsendПерейдите в директорию includes и создайте рабочий конфиг на основе примера:
cd /var/www/html/projectsend/includes
cp sys.config.sample.php sys.config.php
nano sys.config.phpВ файле sys.config.php укажите параметры подключения к базе данных (оставьте DB_DRIVER = ‘mysql’, если используете MariaDB/MySQL):
define('DB_DRIVER', 'mysql');
/** Database name */
define('DB_NAME', 'projectsend');
/** Database host (in most cases it's localhost) */
define('DB_HOST', 'localhost');
/** Database username (must be assigned to the database) */
define('DB_USER', 'projectsend');
/** Database password */
define('DB_PASSWORD', 'password');Сохраните файл и назначьте корректные права и владельца:
chown -R www-data:www-data /var/www/html/projectsend
chmod -R 775 /var/www/html/projectsend
chmod 644 /var/www/html/projectsend/includes/sys.config.phpПримечание: права 775 дают владельцу и группе (www-data) полный доступ, а другим пользователям — чтение и выполнение. При жёстких требованиях безопасности можно дополнительно ограничить права.
Настройка Apache для ProjectSend
Создайте виртуальный хост:
nano /etc/apache2/sites-available/projectsend.confВставьте конфигурацию и отредактируйте ServerName и ServerAdmin под ваши значения:
ServerAdmin admin@example.com
DocumentRoot /var/www/html/projectsend/
ServerName projectsend.example.com
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
ErrorLog /var/log/apache2/example.com-error_log
CustomLog /var/log/apache2/example.com-access_log common
Включите модуль rewrite и сайт, затем перезапустите Apache:
a2enmod rewrite
a2ensite projectsend.conf
systemctl restart apache2Проверьте логи при ошибках: /var/log/apache2/example.com-error_log и /var/log/apache2/example.com-access_log.
Первый запуск в веб-интерфейсе
Откройте в браузере http://projectsend.example.com (замените домен на ваш). Вы увидите страницу установки, где нужно указать: название сайта, URL, логин администратора и пароль. Примерные скриншоты установки:

Заполните форму установки и нажмите Install. Затем следуйте подсказкам установки базы данных и авторизации.

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

Вы попадёте на панель управления ProjectSend: там можно создавать клиентов, назначать группы, загружать файлы и просматривать статистику.

Защита сайта с помощью Let’s Encrypt SSL
Рекомендуется сразу включить HTTPS. Установите certbot для автоматического получения и установки сертификата с интеграцией Apache:
apt-get install python3-certbot-apache -yЗапустите certbot и следуйте интерактивным подсказкам (введите e‑mail, примите условия):
certbot --apache -d projectsend.example.comCertbot настроит vhost для SSL и предложит опцию перенаправления HTTP на HTTPS. Выберите редирект (2), если уверены, что сайт полностью работает по HTTPS. После завершения вы увидите путь к файлам сертификата в /etc/letsencrypt/live/<ваш-домен>/.
Важно: certbot автоматически создаёт cron/сервис для продления сертификата; всё же проверьте периодически вывод “certbot renew –dry-run” для уверенности в автоматическом обновлении.
Проверка и отладка
Частые проверки после установки:
- Проверка прав на директории загрузки: веб-сервер должен иметь запись в папке uploads.
- Проверка логов Apache: /var/log/apache2/*. Если возникают ошибки 500, смотрите error_log.
- Проверка соединения с базой: попробуйте подключиться к базе из командной строки и убедиться, что учётные данные корректны.
- Проверка PHP-расширений: убедитесь, что установлены php-imagick, php-mysql и mbstring.
Команды для быстрой диагностики:
systemctl status apache2
journalctl -u apache2 --since "10 minutes ago"
mysql -u projectsend -p -e "SHOW DATABASES;"
php -m | grep -E "mysql|gd|imagick|mbstring"Рекомендации по безопасности и эксплуатации
- Регулярно обновляйте ОС, PHP и ProjectSend до актуальных патчей.
- Перемещайте резервные копии файлов и дампов базы на отдельный сервер или в облачное хранилище.
- Ограничьте доступ к административной панели по IP, если это возможно.
- Отключите отображение ошибок в продакшене (display_errors = Off в php.ini).
- Используйте сильные пароли и при возможности двухфакторную аутентификацию (если поддерживается).
Чеклист запуска (роль / задача)
Системный администратор:
- Обновил пакеты и установил LAMP.
- Настроил php.ini и перезапустил Apache.
- Создал базу и пользователя в MariaDB.
- Настроил права на директории и владелец www-data.
Владелец проекта / менеджер:
- Проверил доступность домена и SSL.
- Настроил администратора и пароль в интерфейсе ProjectSend.
- Определил политику резервного копирования и сроков хранения.
Оператор / поддержка:
- Проверил логи на предмет ошибок.
- Настроил мониторинг доступности (uptime) и тесты логина.
Частые проблемы и решения
- Ошибка 500 после установки: проверьте /var/log/apache2/* и права на папки. Часто помогает корректный владелец и права (www-data).
- Проблема с подключением к БД: проверьте параметры в sys.config.php и что сервис mariadb запущен.
- Невозможность загрузить файлы более X МБ: убедитесь, что upload_max_filesize и post_max_size совпадают и достаточно велики.
- SSL не устанавливается: проверьте, что DNS указывает на сервер и порт 80/443 открыт в фаерволе.
Мини-методология резервного восстановления
- Остановить доступ к сайту (временно отключить сайт в Apache или включить страницу обслуживания).
- Сделать копию текущих данных: tar/rsync директорий ProjectSend и дамп базы: “mysqldump projectsend > dump.sql”.
- Восстановить файлы из рабочей резервной копии и импортировать дамп базы: “mysql projectsend < dump.sql”.
- Проверить работоспособность на staging или поддомене.
- Возобновить обслуживание.
Критерии приёмки
- Сайт доступен по HTTPS и корректно перенаправляет HTTP на HTTPS.
- Администратор может войти в панель и создать клиента/группу.
- Загрузка и скачивание файла работают, и файлы сохраняются в filesystem.
- Резервное копирование файлов и дамп базы успешно выполняются.
Глоссарий — одно предложение на термин
- LAMP: стек Linux + Apache + MySQL/MariaDB + PHP для веб-приложений.
- Certbot: клиент для автоматического получения и продления сертификатов Let’s Encrypt.
- vhost: виртуальный хост Apache — конфигурация сайта в веб-сервере.
Краткое резюме
ProjectSend — удобное решение для файлового обмена, которое просто развернуть на Ubuntu 20.04 с Apache и MariaDB. После установки важно обеспечить правильные права, настроить SSL и автоматическое резервное копирование. Следуйте чеклисту и разделу отладки, чтобы быстро устранить типичные проблемы.
Важно: не храните секреты и пароли в общедоступных местах и регулярно проверяйте обновления безопасности.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента