LimeSurvey на Ubuntu 24.04: пошаговая установка
Если вам нужны опросы сложнее, чем позволяют бесплатные тарифы Google Forms или Typeform — с ветвящейся логикой, квотами, многоязычностью и экспортом сырых данных для статистики — рано или поздно вы упираетесь либо в лимиты SaaS-сервисов, либо в их цену за «профессиональный» тариф. LimeSurvey закрывает эту нишу: это зрелый open-source инструмент для анкетирования, который живёт у вас на сервере, ничего никуда не передаёт и не имеет ограничений по числу вопросов, ответов или условной логики. Ниже — рабочая установка LimeSurvey на чистый Ubuntu 24.04: от подготовки сервера до первого запущенного опроса.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что понадобится и почему именно так
LimeSurvey — это PHP-приложение с базой данных, и по сути его стек ничем не отличается от типичного «сайта на PHP»: веб-сервер, PHP-FPM, СУБД, SSL. Разница в деталях, которые важны именно для опросника:
- PHP 8.1–8.3 — LimeSurvey Community Edition официально поддерживает эти версии; более новые (8.4+) на момент написания могут давать предупреждения в отдельных плагинах, поэтому берём 8.2 как золотую середину.
- MySQL 8.0 или MariaDB — оба варианта рабочие, здесь используем MySQL, он идёт из коробки в репозиториях Ubuntu 24.04 без сторонних PPA.
- Nginx — легче Apache под нагрузкой и проще в связке с PHP-FPM, но если у вас уже стоит Apache под другие сайты, LimeSurvey прекрасно работает и на нём.
- Минимум 2 ГБ RAM — сам LimeSurvey нетребователен, но экспорт больших опросов в SPSS/Excel и генерация PDF-отчётов на 1 ГБ иногда упираются в память. Для опроса на несколько тысяч респондентов достаточно 2 vCPU / 4 ГБ.
Для установки понадобится VPS с чистой Ubuntu 24.04 и root-доступ по SSH. Если сервера ещё нет — арендовать его можно с оплатой картой или криптовалютой, без привязки к зарубежным платёжным системам.
Подготовка сервера
Первым делом обновляем систему и ставим базовые пакеты:
apt update && apt upgrade -y
apt install -y curl unzip software-properties-common gnupg2 ca-certificates lsb-release
Создаём отдельного пользователя для администрирования (работать под root постоянно — плохая практика):
adduser limeadmin
usermod -aG sudo limeadmin
Дальше все команды выполняем либо от root, либо через sudo под этим пользователем — в статье для краткости привожу без sudo, подставьте по ситуации.
Открываем нужные порты в файрволе, если используете ufw:
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка PHP 8.2 и необходимых расширений
В штатных репозиториях Ubuntu 24.04 PHP 8.3 идёт по умолчанию, но для стабильной работы LimeSurvey подключим PPA Ondřej Surý и поставим именно 8.2:
add-apt-repository ppa:ondrej/php -y
apt update
apt install -y php8.2-fpm php8.2-mysql php8.2-mbstring php8.2-xml \
php8.2-curl php8.2-gd php8.2-zip php8.2-imap php8.2-intl php8.2-ldap php8.2-bcmath
LimeSurvey активно использует расширение gd для CAPTCHA и графиков в статистике, imap — для функции сбора ответов по email, а intl критичен для корректной работы многоязычных опросов (перевод дат, чисел, множественного числа в разных локалях).
Проверяем, что PHP-FPM запустился:
systemctl status php8.2-fpm
В файле /etc/php/8.2/fpm/php.ini увеличиваем лимиты — дефолтные значения малы для загрузки опросников с картинками и для импорта больших выборок:
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
После изменений перезапускаем PHP-FPM:
systemctl restart php8.2-fpm
Установка и настройка MySQL
apt install -y mysql-server
mysql_secure_installation
На вопросы mysql_secure_installation отвечайте: удалить анонимных пользователей — да, запретить root-логин удалённо — да, удалить тестовую БД — да, перезагрузить таблицы привилегий — да. Пароль root задайте сложный и сохраните в менеджере паролей.
Создаём базу и пользователя для LimeSurvey:
mysql -u root -p
CREATE DATABASE limesurvey CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'lime_user'@'localhost' IDENTIFIED BY 'ЗАМЕНИТЕ_НА_СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON limesurvey.* TO 'lime_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Кодировка utf8mb4 обязательна — иначе при вопросах с эмодзи или редкими символами (например, кириллическими ё, восточноевропейскими диакритиками) можно получить обрезанные строки или ошибки вставки.
Скачивание и распаковка LimeSurvey
Идём на официальную страницу загрузок проекта и берём ссылку на актуальный стабильный релиз Community Edition, либо качаем напрямую по известному шаблону имени архива. На конец августа 2026 актуальна ветка 6.x — проверьте номер версии на сайте перед установкой, он периодически обновляется:
cd /tmp
curl -LO https://download.limesurvey.org/latest-stable-release/limesurvey6.0.0+xxxxx.tar.gz
Точное имя файла лучше скопировать со страницы загрузки — версии релизов меняются, и статический URL быстро устаревает. Распаковываем в директорию веб-сервера:
mkdir -p /var/www/limesurvey
tar -xzf limesurvey*.tar.gz -C /var/www/limesurvey --strip-components=1
chown -R www-data:www-data /var/www/limesurvey
find /var/www/limesurvey -type d -exec chmod 755 {} \;
find /var/www/limesurvey -type f -exec chmod 644 {} \;
Отдельно даём права на запись директориям, куда LimeSurvey кладёт загруженные файлы, кэш и временные данные:
chmod -R 775 /var/www/limesurvey/tmp
chmod -R 775 /var/www/limesurvey/upload
Настройка Nginx
Ставим Nginx, если его ещё нет:
apt install -y nginx
Создаём конфиг сайта:
nano /etc/nginx/sites-available/limesurvey.conf
server {
listen 80;
server_name survey.example.com;
root /var/www/limesurvey;
index index.php;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
location ~ /(tmp|upload)/.*\.php$ {
deny all;
}
}
Последний блок — важная деталь безопасности: он запрещает выполнение PHP-файлов из директорий, куда пользователи могут что-то загрузить (например, аватар в опросе). Без этого правила теоретически можно загрузить веб-шелл под видом файла-ответа.
Активируем конфиг и проверяем синтаксис:
ln -s /etc/nginx/sites-available/limesurvey.conf /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
Замените survey.example.com на реальный домен — он должен указывать A-записью на IP вашего сервера ещё до выпуска SSL-сертификата.
SSL-сертификат
Опросники часто содержат персональные данные респондентов, поэтому HTTPS — не опция, а обязательное требование. Самый быстрый путь на Ubuntu 24.04 — Certbot:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d survey.example.com
Certbot сам пропишет редирект с 80 на 443 и настроит обновление сертификата по таймеру. Если вы предпочитаете держать несколько доменов на разных стеках или у вас уже настроен ACME через другой инструмент, о выборе между вариантами есть отдельный разбор — Certbot или acme.sh: что выбрать для сервера.
Веб-установщик LimeSurvey
Открываем в браузере https://survey.example.com/index.php/admin (или просто адрес домена — LimeSurvey сам предложит запустить установщик, если база ещё не инициализирована).
Мастер установки проведёт по шагам:
- Проверка окружения — покажет статус всех PHP-расширений и прав на директории. Если что-то красное, вернитесь к соответствующему шагу выше.
- Лицензия — GNU GPL, просто подтверждаем.
- Параметры базы данных — указываем хост
localhost, имя базыlimesurvey, пользователяlime_userи пароль, заданный ранее. - Учётная запись администратора — задайте логин, отличный от
admin, и сложный пароль. Панель администрирования LimeSurvey — частая цель брутфорса, если её видно из интернета. - Установка таблиц — мастер сам создаст ~150 таблиц структуры LimeSurvey.
После завершения удалите или переименуйте установочный скрипт — иначе он остаётся доступным всем, кто знает URL:
mv /var/www/limesurvey/install /var/www/limesurvey/install_disabled
Если понадобится переустановка или обновление — просто верните директорию на место.
Первый опрос и базовая проверка
Заходим в панель администратора (/admin), создаём новый опрос через «Опросы → Создать опрос». Для проверки, что стек работает целиком, добавьте один вопрос с условной логикой (например, вопрос типа «Да/Нет» с зависимым вопросом, который появляется только при ответе «Да») — это задействует и JavaScript-движок LimeSurvey, и запись в MySQL, и корректную кодировку.
Активируйте опрос и пройдите его от начала до конца в анонимном режиме браузера — так вы проверите ровно тот путь, который увидит респондент, без кэшированной сессии администратора.
Отдельно стоит настроить cron для отложенных задач LimeSurvey — например, автоматической отправки email-напоминаний о незавершённых опросах. Добавьте в crontab пользователя www-data:
crontab -u www-data -e
*/5 * * * * php /var/www/limesurvey/application/commands/console.php plugin remindparticipants --surveyid=1 >> /var/log/limesurvey-cron.log 2>&1
Если задачи по расписанию у вас на сервере уже используются для других сервисов и периодически что-то идёт не так — там же можно свериться с типичными причинами сбоев в статье Cron-задачи на сервере: частые ошибки и решения.
Обслуживание: бэкапы и обновления
LimeSurvey хранит всё критичное в двух местах: база MySQL (структура опросов и ответы) и директория upload (загруженные респондентами файлы, если такие вопросы есть в анкетах). Бэкапить нужно оба.
Минимальный скрипт для ежедневного дампа базы:
mysqldump -u lime_user -p limesurvey | gzip > /root/backups/limesurvey-$(date +%F).sql.gz
Вынесите его в cron и добавьте ротацию старых архивов (например, хранить последние 14 дней), чтобы диск не заполнялся бесконтрольно. Если вы впервые настраиваете MySQL на сервере и хотите видеть весь процесс установки и первичной настройки целиком, а не только фрагмент для LimeSurvey — есть отдельная статья MySQL на Ubuntu 24.04: пошаговая установка.
Обновление LimeSurvey до новой минорной версии делается через встроенный ComfortUpdate (платная подписка на удобство) либо вручную: скачать новый архив, сохранить файл application/config/config.php с вашими настройками БД, заменить код, применить миграции базы через /admin — панель сама предложит обновить схему при первом заходе после замены файлов. Перед любым обновлением обязательно снимайте свежий бэкап базы — миграции необратимы, если что-то пойдёт не так на середине.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли поставить LimeSurvey на Apache вместо Nginx?
Да, официальный дистрибутив поддерживает оба варианта и даже включает готовый .htaccess для Apache. Разница в основном в конфигурации PHP-FPM — на Apache чаще используют mod_php или тот же FPM через прокси, но производительность и функциональность опросов от этого не зависят.
Нужен ли отдельный домен под опросник или можно на поддомене?
Поддомен (survey.example.com) — стандартная и удобная практика: он не мешает основному сайту, получает свой SSL-сертификат и его проще изолировать по правам доступа.
Выдержит ли один VPS опрос на несколько тысяч респондентов одновременно?
Для типичного опроса без резкого всплеска нагрузки конфигурации 2 vCPU / 4 ГБ RAM обычно достаточно с запасом. Если ждёте всплеск сразу после массовой email-рассылки — заранее прогоните нагрузочный тест через ab или k6, точные цифры зависят от структуры опроса.
Как защитить данные респондентов, если опрос не анонимный по умолчанию?
В настройках опроса включите режим «Анонимный опрос» — LimeSurvey перестанет связывать ответы с email/токеном участника. Дополнительно ограничьте доступ к /admin по IP через Nginx (allow/deny) или поставьте Basic Auth перед панелью.
Что делать, если после обновления PHP появляются предупреждения Deprecated в логах?
Это частая ситуация при переходе между минорными версиями PHP — LimeSurvey постепенно догоняет актуальный PHP API. Deprecated-сообщения обычно не ломают функциональность, но лучше держать error_reporting в проде без вывода на экран (display_errors = Off в php.ini) и следить за логами отдельно.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →