Поиск по сайту:

Как установить Flarum Forum с Nginx и LE SSL на CentOS 8


На этой странице

  1. Требования
  2. Начало работы
  3. Установите Nginx, MariaDB и PHP.
  4. Настройка базы данных MariaDB
  5. Настройка PHP-FPM для Nginx
  6. Установить Фларум
  7. Настройка Nginx для Flarum
  8. Настройка SELinux и брандмауэра
  9. Доступ к веб-интерфейсу Flarum
  10. Защитите 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.