KUSONEKOの見る世界

CentOS 8 構築メモ 2

CentOS 8 の構築メモ 2です。

前回の記事はこちら。
>>CentOS 8の構築メモ 1

CentOS 8 構築 2

p2-php (rep2)

p2-phpのページ通りだが、dnfで以下を入れた。
dnf install php-mbstring php-json php-pdo php-xml

2chproxy.pl

バックアップしておいた2chproxy.plディレクトリを転送。
以下で実行するもの起動せず。
/usr/local/bin/2chproxy.pl/2chproxy.pl --config /usr/local/bin/2chproxy.pl/config.yml -daemon
Can't locate HTTP/Daemon.pm in @INC (you may need to install the HTTP::Daemon module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /usr/local/bin/2chproxy.pl/2chproxy.pl line 42.
BEGIN failed--compilation aborted at /usr/local/bin/2chproxy.pl/2chproxy.pl line 42.

dnf install perl-HTTP-Daemon --enablerepo PowerTools
========================================================================================================================
 パッケージ                           アーキテクチャー    バージョン                    リポジトリ                サイズ
========================================================================================================================
Installing:
 perl-HTTP-Daemon                     noarch              6.01-23.el8                   @commandline               26 k
依存関係をインストール中:
 perl-Compress-Raw-Bzip2              x86_64              2.081-1.el8                   AppStream                  40 k
 perl-Compress-Raw-Zlib               x86_64              2.081-1.el8                   AppStream                  68 k
 perl-Encode-Locale                   noarch              1.05-9.el8                    AppStream                  21 k
 perl-HTTP-Date                       noarch              6.02-18.el8                   AppStream                  19 k
 perl-HTTP-Message                    noarch              6.18-1.el8                    AppStream                 100 k
 perl-IO-Compress                     noarch              2.081-1.el8                   AppStream                 258 k
 perl-IO-HTML                         noarch              1.001-10.el8                  AppStream                  28 k
 perl-LWP-MediaTypes                  noarch              6.02-14.el8                   AppStream                  29 k
 perl-TimeDate                        noarch              1:2.30-13.el8                 AppStream                  53 k
/usr/local/bin/2chproxy.pl/2chproxy.pl --config /usr/local/bin/2chproxy.pl/config.yml -daemon
Can't locate LWP/UserAgent.pm in @INC (you may need to install the LWP::UserAgent module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /usr/local/bin/2chproxy.pl/2chproxy.pl line 44.
BEGIN failed--compilation aborted at /usr/local/bin/2chproxy.pl/2chproxy.pl line 44.
dnf install perl-libwww-perl
========================================================================================================================
 パッケージ                         アーキテクチャー      バージョン                     リポジトリ               サイズ
========================================================================================================================
Installing:
 perl-libwww-perl                   noarch                6.34-1.el8                     AppStream                212 k
依存関係をインストール中:
 perl-Data-Dump                     noarch                1.23-7.el8                     AppStream                 36 k
 perl-Digest-HMAC                   noarch                1.03-17.el8                    AppStream                 20 k
 perl-Digest-SHA                    x86_64                1:6.02-1.el8                   AppStream                 66 k
 perl-File-Listing                  noarch                6.04-17.el8                    AppStream                 18 k
 perl-HTML-Parser                   x86_64                3.72-14.el8                    AppStream                119 k
 perl-HTML-Tagset                   noarch                3.20-33.el8                    AppStream                 24 k
 perl-HTTP-Cookies                  noarch                6.04-2.el8                     AppStream                 39 k
 perl-HTTP-Negotiate                noarch                6.01-19.el8                    AppStream                 22 k
 perl-NTLM                          noarch                1.09-17.el8                    AppStream                 24 k
 perl-Net-HTTP                      noarch                6.17-2.el8                     AppStream                 43 k
 perl-Try-Tiny                      noarch                0.30-2.el8                     AppStream                 44 k
 perl-WWW-RobotRules                noarch                6.02-18.el8                    AppStream                 22 k
dnf install perl-YAML-Tiny --enablerepo PowerTools
========================================================================================================================
 パッケージ                     アーキテクチャー       バージョン                    リポジトリ                   サイズ
========================================================================================================================
Installing:
 perl-YAML-Tiny                 noarch                 1.73-2.el8                    @commandline                  50 k
/usr/local/bin/2chproxy.pl/2chproxy.pl --config /usr/local/bin/2chproxy.pl/config.yml -daemon
Option d does not take an argument
[0|1617] PROCESS: listen to http://[::1]:8082/
こちらを参考にサービス化しました。
vi /etc/systemd/system/2chproxy.service
[Unit]
Description = 2ch proxy daemon
Wants=network-online.target
After=network-online.target

[Service]
ExecStart = /usr/local/bin/2chproxy.pl/2chproxy.pl  --config /usr/local/bin/2chproxy.pl/config.yml
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target
systemctl start 2chproxy
systemctl enable 2chproxy

Tiny Tiny RSS

バックアップしておいたmariaDBのdump入れる。
mysql -u root -p
Enter password:
CREATE DATABASE ttrss;
quit
mysql -u root -p ttrss < ttrss.dump
Enter password:
dnf install git
dnf install php-intl php-process
あとは、以下の記事の流れで実施。
【初めてのiPhone】Tiny Tiny RSSを使いやすくする
Feedのアップデートは、nginx + mysql用に以下に変更。
[Unit]
Description=ttrss_backend
After=network.target mysqld.service

[Service]
User=nginx
ExecStart=/var/www/html/tt-rss/update_daemon2.php

[Install]
WantedBy=multi-user.target

Nextcloud

dnf install unzip php-gd php-pecl-zip php-opcache samba-client
wget https://download.nextcloud.com/server/releases/nextcloud-16.0.5.zip
unzip nextcloud-*.zip
cp -R nextcloud/ /var/www/html/
mkdir /home/nextcloud
chown -R nginx. /home/nextcloud/
chown -R nginx. /var/www/html/nextcloud/

ログインできないときの対処

chown -R nginx. /var/lib/php/session/

DB作成

mysql -u root -p
Enter password:
CREATE DATABASE nextcloud CHARACTER SET utf8mb4;
quit

PHP OPcache設定

vi /etc/php.d/10-opcache.ini
以下を追加。
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1

PHP-FPMチューニング

vi /etc/php-fpm.d/www.conf
以下に変更。
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18
clear_env = no
systemctl restart php-fpm

MySQLチューニング

vi /etc/my.cnf.d/mysql-server.cnf
以下を追加。
innodb_buffer_pool_size=1G
innodb_io_capacity=4000
Nextcloudにアクセスし、ユーザ作成と、mysqlの指定を行う。
データフォルダは、/home/nextcloud/とする。

nginx追加設定

vi /etc/nginx/nginx.conf
追加部分を記載。
http {
    server {
        listen       443 ssl http2 default_server;
        # For Nextcloud
        add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        add_header Referrer-Policy no-referrer;
        add_header X-Frame-Options "SAMEORIGIN" always;

        fastcgi_hide_header X-Powered-By;

        location = /.well-known/carddav {
            return 301 $scheme://$host:$server_port/nextcloud/remote.php/dav;
        }
        location = /.well-known/caldav {
            return 301 $scheme://$host:$server_port/nextcloud/remote.php/dav;
        }

        location /.well-known/acme-challenge { }

        location ^~ /nextcloud {
            client_max_body_size 512M;
            fastcgi_buffers 64 4K;
            gzip on;
            gzip_vary on;
            gzip_comp_level 4;
            gzip_min_length 256;
            gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
           gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

        location /nextcloud {
            rewrite ^ /nextcloud/index.php$request_uri;
        }

        location ~ ^\/nextcloud\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
            deny all;
        }
        location ~ ^\/nextcloud\/(?:\.|autotest|occ|issue|indie|db_|console) {
            deny all;
        }

        location ~ ^\/nextcloud\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
            fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param HTTPS on;
            fastcgi_param modHeadersAvailable true;
            fastcgi_param front_controller_active true;
            fastcgi_pass unix:/run/php-fpm/www.sock;
            fastcgi_intercept_errors on;
            fastcgi_request_buffering off;
        }

        location ~ ^\/nextcloud\/(?:updater|oc[ms]-provider)(?:$|\/) {
            try_files $uri/ =404;
            index index.php;
        }

        location ~ ^\/nextcloud\/.+[^\/]\.(?:css|js|woff2?|svg|gif|map)$ {
            try_files $uri /nextcloud/index.php$request_uri;
            add_header Cache-Control "public, max-age=15778463";
            add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block";
            add_header X-Robots-Tag none;
            add_header X-Download-Options noopen;
            add_header X-Permitted-Cross-Domain-Policies none;
            add_header Referrer-Policy no-referrer;
            add_header X-Frame-Options "SAMEORIGIN" always;

            # Optional: Don't log access to assets
            access_log off;
        }

        location ~ ^\/nextcloud\/.+[^\/]\.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
            try_files $uri /nextcloud/index.php$request_uri;
            access_log off;
        }
    }
}

SAMBAアクセス設定

アプリからExternal Storageを追加し、SAMBAにアクセスする設定をする。(SAMBAインストール後に実施)
\\サーバのIP\aaa\bbb\cccを指定する場合
フォルダ名:任意
外部ストレージ:SMB / CIFS
ホスト:localhost
共有:/aaa
リモートサブフォルダー:bbb/ccc
ドメイン:(空欄)
隠しファイルを表示:チェックなし
ユーザー名:そのフォルダにアクセスするユーザ名
パスワード:そのフォルダにアクセスするユーザ名のパスワード

cron登録

vi /etc/systemd/system/nextcloudcron.service
[Unit]
Description=Nextcloud cron.php job

[Service]
User=nginx
ExecStart=/usr/bin/php -f /var/www/html/nextcloud/cron.php

[Install]
WantedBy=basic.target
vi /etc/systemd/system/nextcloudcron.timer
[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target
systemctl enable --now nextcloudcron.timer

Samba

今回は、ADサーバは使用しない。
dnf install samba
あとはこちらの通りでした。

ADをやめたからなのか、LVMをやめたからなのか分かりませんが、転送速度が向上しました。