Как установить Flarum Forum с Nginx и LE SSL на CentOS 8
На этой странице
- Требования
- Начало работы
- Установите Nginx, MariaDB и PHP.
- Настройка базы данных MariaDB
- Настройка PHP-FPM для Nginx
- Установить Фларум
- Настройка Nginx для Flarum
- Настройка SELinux и брандмауэра
- Доступ к веб-интерфейсу Flarum
- Защитите Flarum с помощью Lets Encrypt SSL
Flarum — это бесплатное программное обеспечение для форумов нового поколения с открытым исходным кодом, которое упрощает создание и развитие успешного онлайн-сообщества. Это простое, легкое, быстрое и удобное для мобильных устройств программное обеспечение на основе PHP. Он поставляется с богатым набором функций, включая элегантный пользовательский интерфейс, двухпанельный интерфейс, бесконечную прокрутку, плавающий композитор, полностью адаптивный и многое другое.
В этом руководстве мы объясним, как установить форум Flarum на сервер CentOS 8.
Требования
- Сервер под управлением CentOS 8.
- Действительное доменное имя, указанное с IP-адресом вашего сервера.
- На сервере настроен пароль root.
Начиная
Прежде чем начать, вам нужно будет установить репозиторий EPEL и Remi в вашей системе. Сначала установите репозиторий EPEL с помощью следующей команды:
dnf install epel-release -y
Затем загрузите и установите репозиторий Remi с помощью следующей команды:
wget http://rpms.remirepo.net/enterprise/remi-release-8.rpm
rpm -Uvh remi-release-8.rpm
Установите Nginx, MariaDB и PHP
Сначала установите веб-сервер Nginx и сервер MariaDB с помощью следующей команды:
dnf install nginx mariadb-server -y
После установки обоих пакетов вам нужно будет включить модуль php:remi-7.3 для установки PHP 7.3. Вы можете включить его с помощью следующей команды:
dnf module enable php:remi-7.3
Затем установите PHP с другими необходимыми зависимостями с помощью следующей команды:
dnf install php php-fpm php-common php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y
После установки всех пакетов запустите службы Nginx, MariaDB и PHP-FPM и включите их после перезагрузки системы с помощью следующей команды:
systemctl start nginx
systemctl start mariadb
systemctl start php-fpm
systemctl enable nginx
systemctl enable mariadb
systemctl enable php-fpm
Как только вы закончите, вы можете перейти к следующему шагу.
Настроить базу данных MariaDB
По умолчанию MariaDB не защищена. Вы можете защитить его с помощью следующего скрипта:
mysql_secure_installation
Ответьте на все вопросы, как показано ниже:
Enter current password for root (enter for none): Set root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Когда вы закончите, войдите в оболочку MariaDB с помощью следующей команды:
mysql -u root -p
При появлении запроса укажите свой пароль root, затем создайте базу данных и пользователя для Flarum с помощью следующей команды:
MariaDB [(none)]> CREATE DATABASE flarumdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES on flarumdb.* to 'flarum'@'localhost' identified by 'password';
Затем сбросьте привилегии и выйдите из оболочки MariaDB с помощью следующей команды:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Как только вы закончите, вы можете перейти к следующему шагу.
Настроить PHP-FPM для Nginx
Далее вам нужно будет настроить PHP-FPM для работы с Nginx. Вы можете сделать это, отредактировав файл www.conf:
nano /etc/php-fpm.d/www.conf
Измените имя пользователя и группы с apache на nginx, как показано ниже:
user = nginx group = nginx listen.owner = nginx listen.group = nginx
Далее найдите следующую строку:
;listen = /run/php-fpm/www.sock
И замените его следующей строкой:
listen = 127.0.0.1:9000
Сохраните и закройте файл, когда закончите. Затем перезапустите службу PHP-FPM, чтобы применить изменения:
systemctl restart php-fpm
Установить Фларум
Перед установкой Flarum вам необходимо установить Composer в вашей системе.
Вы можете установить его с помощью следующей команды:
curl -sS https://getcomposer.org/installer | php
После установки вы должны получить следующий вывод:
All settings correct for using Composer Downloading... Composer (version 1.9.2) successfully installed to: /root/composer.phar Use it: php composer.phar
Затем переместите двоичный файл Composer в каталог /usr/local/bin и дайте соответствующие разрешения:
mv composer.phar /usr/local/bin/composer
chmod 755 /usr/local/bin/composer
Затем измените каталог на корень документа Nginx и создайте проект Flarum с помощью следующей команды:
cd /var/www/html
composer create-project flarum/flarum . --stability=beta
Затем предоставьте соответствующие разрешения для корневого веб-каталога Nginx с помощью следующей команды:
chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html
chown -R nginx:nginx /var/lib/php
Как только вы закончите, вы можете перейти к следующему шагу.
Настроить Nginx для Flarum
Далее вам нужно будет создать файл конфигурации виртуального хоста Nginx для Nginx. Вы можете создать его с помощью следующей команды:
nano /etc/nginx/conf.d/flarum.conf
Добавьте следующие строки:
server { listen 80; server_name flarum.example.com; # note that these lines are originally from the "location /" block root /var/www/html/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location /api { try_files $uri $uri/ /api.php?$query_string; } location /admin { try_files $uri $uri/ /admin.php?$query_string; } location /flarum { deny all; return 404; } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~* \.html$ { expires -1; } location ~* \.(css|js|gif|jpe?g|png)$ { expires 1M; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } gzip on; gzip_http_version 1.1; gzip_vary on; gzip_comp_level 6; gzip_proxied any; gzip_types application/atom+xml application/javascript application/json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/svg+xml image/x-icon text/css #text/html -- text/html is gzipped by default by nginx text/plain text/xml; gzip_buffers 16 8k; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; }
Сохраните и закройте файл, когда закончите. Далее вам нужно будет увеличить размер hash_bucket в файле nginx.conf.
Вы можете сделать это, отредактировав файл /etc/nginx/nginx.conf:
nano /etc/nginx/nginx.conf
Добавьте следующую строку прямо над последней строкой:
server_names_hash_bucket_size 64;
Сохраните и закройте файл. Затем проверьте Nginx на наличие синтаксической ошибки с помощью следующей команды:
nginx -t
Вы должны увидеть следующий вывод:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Наконец, перезапустите службу Nginx и PHP-FPM, чтобы изменения вступили в силу:
systemctl restart php-fpm
systemctl restart nginx
Настройте SELinux и брандмауэр
Во-первых, вам нужно будет создать правило брандмауэра, чтобы разрешить службы HTTP и HTTPS из внешних сетей. Вы можете разрешить это с помощью следующей команды:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
По умолчанию SELinux включен в CentOS 8. Поэтому вам нужно будет настроить SELinux для корректной работы Flarum. Вы можете настроить SELinux с помощью следующей команды:
setsebool httpd_can_network_connect on -P
Как только вы закончите, вы можете перейти к следующему шагу.
Доступ к веб-интерфейсу Flarum
Теперь откройте веб-браузер и введите URL-адрес http://flarum.example.com. Вы будете перенаправлены на следующую страницу:
Укажите имя вашего форума, информацию о базе данных, имя пользователя администратора, пароль и нажмите кнопку «Установить Flarum». После успешного завершения установки вы должны увидеть панель управления Flarum на следующей странице:
Безопасный Flarum с Lets Encrypt SSL
Теперь Flarum установлен и настроен. Пришло время защитить его с помощью бесплатного SSL от Lets Encrypt.
Для этого вам нужно будет загрузить клиент certbot на свой сервер. Вы можете загрузить и установить правильное разрешение, выполнив следующую команду:
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto
Теперь выполните следующую команду, чтобы получить и установить SSL-сертификат для вашего сайта flarum.
certbot-auto --nginx -d flarum.example.com
Приведенная выше команда сначала установит все необходимые зависимости на ваш сервер. После установки вам будет предложено указать адрес электронной почты и принять условия обслуживания, как показано ниже:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for flarum.example.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/flarum.conf
Затем вам нужно будет выбрать, следует ли перенаправлять HTTP-трафик на HTTPS, как показано ниже:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Введите 2 и нажмите Enter, чтобы продолжить. После завершения установки вы должны увидеть следующий вывод:
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/flarum.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://flarum.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=flarum.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/flarum.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/flarum.example.com/privkey.pem Your cert will expire on 2020-03-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot-auto 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
Вот и все! Теперь вы можете получить доступ к своему веб-сайту Flarum, используя защищенный URL-адрес https://flarum.example.com.