Tiny Tiny RSS с nginx, php-fpm и postgresql

Качаем tt-rss с официального сайта https://tt-rss.org/

git clone https://tt-rss.org/git/tt-rss.git /path/to/tt-rss/www

Ставим nginx

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx

Конфиг nginx

server {
    listen 443 ssl http2;
    server_name rss.site.name;
    root /path/to/tt-rss/www/;
    index index.php index.html index.htm;
    access_log /path/to/tt-rss/log/ssl-access.log main;
    error_log /path/to/tt-rss/log/ssl-error.log;

    keepalive_timeout           60;
    ssl_certificate             /etc/letsencrypt/live/rss.site.name/fullchain.pem;
    ssl_certificate_key         /etc/letsencrypt/live/rss.site.name/privkey.pem;
    ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_dhparam                 /etc/ssl/certs/dhparam.pem;
    add_header                  Strict-Transport-Security 'max-age=604800';

    # GZIP Compression
    gzip on;
    gzip_vary on;
    gzip_min_length 10240;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
    gzip_disable "MSIE [1-6]\.";

    location ~ \.php$ {
    try_files  $uri =404;
    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    #fastcgi_pass    127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param DOCUMENT_ROOT /path/to/tt-rss/www/;
    fastcgi_param SCRIPT_FILENAME /path/to/tt-rss/www$fastcgi_script_name;
    fastcgi_param PATH_TRANSLATED /path/to/tt-rss/www$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param HTTPS on;
    fastcgi_intercept_errors on;
    fastcgi_ignore_client_abort off;
    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 180;
    fastcgi_read_timeout 180;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    }
    
    location /cache {
        deny all;
    }
    
    location = /config.php {
        deny all;
    }

}

server {
     listen  443 ssl http2;
     server_name  www.rss.site.name;
     rewrite ^ https://rss.site.name$request_uri? permanent;
}

Обращаю внимание, что у меня nginx работает с php-fpm через сокет. Если у вас по tcp порту, то ставьте
fastcgi_pass 127.0.0.1:9000;

Создаем директрию для логов

mkdir /path/to/tt-rss/log

Выставляем права

chown -R nginx. /path/to/tt-rss

Ставим сертификат от LetsEncrypt

yum install certbot
certbot certonly --standalone --preferred-challenges=http -d rss.site.name

Запускаем nginx

systemctl start nginx
systemctl enable nginx

Ставим php-fpm

rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install epel-release yum-utils
yum-config-manager --enable remi-php71
yum install php71
yum install php-fpm php-pgsql
systemctl start php-fpm
systemctl enable php-fpm

Настроим php-fpm

yum install net-tools
netstat -tulpn | grep php-fpm

Все в порядке, повис на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:

vim /etc/php-fpm.d/www.conf

;listen = 127.0.0.1:9000

Вместо нее добавляем несколько других:

listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx

Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx

user = nginx
group = nginx
systemctl restart php-fpm

Открываем 80, 443 порты

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Уже можно заходить на rss.site.name и должно перекинуть в https://rss.site.name/install/

Осталось настроить postgresql

Подключим репозитрий

yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm

Установим и запустим postgresql 11

yum install postgresql11-server
/usr/pgsql-11/bin/postgresql-11-setup initdb
systemctl start postgresql-11
systemctl enable postgresql-11

Cоздаем базу и пользователя для tt-rss

sudo -u postgres psql
postgres=# create database mydb;
postgres=# create user myuser with encrypted password 'mypass';
postgres=# grant all privileges on database mydb to myuser;

Смотрим где наша база и конфиги к ней

postgres=# SHOW config_file;
              config_file               
----------------------------------------
 /var/lib/pgsql/11/data/postgresql.conf
(1 row)

Выходим из postgresql

postgres=# \q

Правим файл /var/lib/pgsql/11/data/pg_hba.conf
Приводим его к виду

#local   all             all                                     peer
#host    all             all             127.0.0.1/32            ident
#host    all             all             ::1/128                 ident
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Перезапускаем postgresql

systemctl restart postgresql-11

Возвращаемся к странице настроек https://rss.site.name/install/

По идее ошибок быть не должно. Сохраняем предложенный config.php файл. Его можно будет потом поправить и настроить под себя.

Дефолтные логин и пароль: admin — password

Осталось настроить проверку новых постов. Можно запускать по крону или написать демона, как подсказывает wiki: https://git.tt-rss.org/fox/tt-rss/wiki/UpdatingFeeds

Выбираю демоном

vim /etc/systemd/system/tt-rss.service

[Unit]
Description=ttrss_backend
After=network.target mysql.service postgresql.service

[Service]
User=nginx
ExecStart=/path/to/tt-rss/www/update_daemon2.php

[Install]
WantedBy=multi-user.target
systemctl start tt-rss.service
systemctl enable tt-rss.service

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.