Hatena::ブログ(Diary)

日々雑事&備考録 このページをアンテナに追加

御用の向きは、TKXまで
tkx.dark あっと gmail.com

2003 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2017 | 01 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2018 | 01 | 02 | 03 | 04 | 05 | 06 |
 

2018-06-03

[][][][]CentOS 7 + Nginx + rep2 で HTTPS & HTTP/2化

最近ブラウザーは、httpではなくhttpsでないと

危険サイト扱いされて表示そのものが出来無くなってくるとの事で

rep2サイトHTTPS化を実行


ついでにHTTP/2化も同時に実施する

HTTP/2は規格としてはHTTPSとは別立てで、HTTP Server側で一言設定を入れることでHTTPSとは別に設定が可能だが

ChromeFirefoxSafariブラウザ側の実装として、HTTP/2はHTTPSとセットになっていないとデコードできない現実がある

その為 HTTP/2の前提条件として、HTTPS実装必要になる


SSL証明書については、無料Let's Encrypt使用するとして

certbotを使用すると秘密鍵生成まで自動してくれる


Let's Encryptの非公式日本語解説サイトもあるので、一通り読んでおくと良い

(但し情報が古すぎてイマイチ使えないのだが)


CentOS場合、EPELリポジトリに certbot パッケージが格納されているので

EPELリポジトリを導入するが、通常EPELリポジトリは導入しているのでスキップ


ちなみに今回

自宅サーバーなので、HTTPS化を実施した場合HTTPSのPortだけ開放してHTTPポートを閉じようと考えている

Webの色々なやり方を見ていると、HTTPSだけポート開放した例が見当たらなかったので

更新の時に試行錯誤しような予感・・・


# yum install certbot

certbot パッケージと依存関係のあるパッケージ 40個程インストール


certbotのVerは結構頻繁に変わっており、それに伴ってオプションも色々変更あるみたいなので

現行のVer(0.24.0-1.el7)のOptionを確認

# certbot --help

-------------------------------------------------------------------------------

  certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...

Certbot can obtain and install HTTPS/TLS/SSL certificates.  By default,
it will attempt to use a webserver both for obtaining and installing the
certificate. The most common SUBCOMMANDS and flags are:

obtain, install, and renew certificates:
    (default) run   Obtain & install a certificate in your current webserver
    certonly        Obtain or renew a certificate, but do not install it
    renew           Renew all previously obtained certificates that are near
expiry
    enhance         Add security enhancements to your existing configuration
   -d DOMAINS       Comma-separated list of domains to obtain a certificate for

  (the certbot apache plugin is not installed)
  --standalone      Run a standalone webserver for authentication
  (the certbot nginx plugin is not installed)
  --webroot         Place files in a server's webroot folder for authentication
  --manual          Obtain certificates interactively, or using shell script
hooks

   -n               Run non-interactively
  --test-cert       Obtain a test certificate from a staging server
  --dry-run         Test "renew" or "certonly" without saving any certificates
to disk

manage certificates:
    certificates    Display information about certificates you have from Certbot
    revoke          Revoke a certificate (supply --cert-path)
    delete          Delete a certificate

manage your account with Let's Encrypt:
    register        Create a Let's Encrypt ACME account
  --agree-tos       Agree to the ACME server's Subscriber Agreement
   -m EMAIL         Email address for important account notifications

More detailed help:

  -h, --help [TOPIC]    print this message, or detailed help on a topic;
                        the available TOPICS are:

   all, automation, commands, paths, security, testing, or any of the
   subcommands or plugins (certonly, renew, install, register, nginx,
   apache, standalone, webroot, etc.)
-------------------------------------------------------------------------------

こんな感じで実行すれば取り敢えず大丈夫かな

dry-run試行

certbot certonly --dry-run --webroot --http-01-port 8080 -w <DocumentRoot> -d <Domain> -m <Mail Address>

HTTPのportを変更していたので、http-01-portオプション指定したのだが、確かにcertbot は 8080でポート確認しているのに

アクセスしてきてるのがデフォルトの 80 とか

なんだ、このバカ仕様


これじゃPort変更しているサイトは全てダメなんじゃないかと思ったり

という所で一旦終了


なんか素直に安い証明書調達したほうが楽な気がしてきた _no

なんだけど、mydns.jpだとそういうわけにもいかないしなあ


追記

サイトによっては、Nginx側にサーバーチェック用ディレクトリ設定を入れる必要があると記載がある

    location ^~ /.well-known/acme-challenge/ {
      root /usr/share/nginx/html/.well-known;

certbot実行中にディレクトリ作成されるのは確認していたけど、アクセス権の絡みで失敗していたんかな??

改めて後日検証してみるか

[][][]CentOS 7 + Nginx + rep2 で HTTPS & HTTP/2化 (SSLなう!編)

そんなわけで、取り敢えず SSLなう!証明書は取得して

NginxHTTPS & HTTP/2化まではやってみようかと


MyDNS.jpDNS情報を変更する事は可能なので、DNS認証(dns-01)でドメイン確認までは実施


mydns.jpのコントロールパネルから "_acme-challenge"のホスト名で、TXTレコード作成

# dig @8.8.8.8 _acme-challenge.<domain> any

を何回か実行して結果が帰ってきたら、確認ボタンを押下すればOK


自分のServerで

# openssl genrsa 2048 > server_private_key.pem

を実行して、サーバー秘密鍵を生成してサイトに貼り付ければ

サーバー証明書 / 中間証明書 / フル証明書

が生成/発行される


Nginxでは使用するのは、サーバー秘密鍵とフル証明書の2つ

/etc/nginx/ssl 以下に格納


DH鍵交換に使用するパラメータファイル作成する

Nginx 1.12.x以降はこのパラメータファイルとconfへの指定必須になった

# openssl dhparam 2048 -out /etc/nginx/ssl/dhparam.pem


nginxドメイン毎の confファイルは以下な感じで (FastCGI絡みもSSL設定の追記が必要

server {
    listen       <Port> ssl http2;
    server_name  <Domain>;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/server_private_key.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets on;

    # modern configuration. tweak to your needs.
    ssl_protocols TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_prefer_server_ciphers on;

    # DH Key Parameter
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;

    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    # add_header Strict-Transport-Security max-age=15768000;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /var/www/html;
        index  index.html index.htm index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /var/www/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  HTTPS             on;
        fastcgi_param  SSL_PROTOCOL      $ssl_protocol;
        fastcgi_param  SSL_CIPHER        $ssl_cipher;
        fastcgi_param  SSL_SESSION_ID    $ssl_session_id;
        fastcgi_param  SSL_CLIENT_VERIFY $ssl_client_verify;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

基本的に、HTTPポートは開放せず HTTPSポートのみ空ける方針なので


# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

configチェックして問題なければ

# systemctl reload nginx

Reloadして再構成して終了


後は、ブラウザーから https://<Domain>でアクセスして緑色の鍵マークが表示されればOK


追記 : SSL CipherSuiteの指定については

Mozilla SSL Configuration Generatorを参考に構成しています


余談

Qualys SSL Labs の SSL Server Testは、デフォルトの 443しか対応していないようで

Port指定しても "Port 8443 is not supported"といった感じ 

2018-04-23

[][]p2 ime不調

rep2から外部リンクアクセスすると

http://akid.s17.xrea.com/p2ime.phpAccess Denied を返してくる


Nginx + PHP-FPM構成変更したから!?と思ってみたけど

http://akid.s17.xrea.com/p2ime.php.txtアクセスした所、Internal Server Error吐いてるので、サーバー側が問題だな


rep2の外部ゲートの設定を

p2 ime (http://akid.s17.xrea.com/p2ime.php) から

gate.php (http://open774.github.io/p2-php/gate.html) に切替

2018-04-15

[][][]CentOS 7 + Nginx + rep2 その3

Distributionのレポジトリだと、古いNginxのPkgしかないので

Nginexのレポジトリを登録して、そこから導入する


標準のレポジトリだと、現時点では 1.12.2のStableパッケージだけど

Nginxサイトによると基本は Mainlineのパッケージ(1.13.12)使用を推奨しているので

Nginxのレポジトリを登録してそちらからインストールするように設定する


Nginxサイトに従って

-> https://nginx.org/en/linux_packages.html#mainline

# cat > /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
<ここで Ctrl+D で出力終了>
# chmod 644 nginx.repo
#
# yum info nginx.x86_64
Available Packages
Name        : nginx
Arch        : x86_64
Epoch       : 1
Version     : 1.13.12
Release     : 1.el7_4.ngx
Size        : 750 k
Repo        : nginx/x86_64
Summary     : High performance web server
URL         : http://nginx.org/
License     : 2-clause BSD-like license
Description : nginx [engine x] is an HTTP and reverse proxy server, as well as
            : a mail proxy server.


無事最新のパッケージを引っ張ってこれるようになったのでインストール

# yum install nginx


サービス登録を実施して、起動

# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
# systemctl start nginx


http://<Server IP>/をブラウザ確認した所、Welcomページが表示されたので問題なく起動


Nginxのログローテートを設定する

/etc/logrotate.d/nginx がパッケージのインストール時に導入されるのでこれを修正

# cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}
#

上記を修正して、毎日実行から毎週に、過去ログは4week(一ヶ月分)保持するように変更した

# cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
        weekly
        missingok
        rotate 4
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}
#

[][][]CentOS 7 + Nginx + rep2 その4

というわけで、順番が前後したけど Nginx の設定を変更


configファイルとしては、/etc/nginx/nginx.conf なのだが

個々の設定は ./conf.d/配下の *.conf を読み込む用になっているので

/etc/nginx/conf.d/以下にある、default.conf を修正しても良いのだが

VirtualHostの設定やら考えるとサイト毎にconfファイル作成したほうが良いので今回は別ファイルで構築


# cat /etc/nginx/conf.d/<自ドメイン>.conf
server {
    listen       <Port No>;
    server_name  <Domain Name>;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /var/www/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}


ドメイン設定やポート番号を変更した後に

# /sbin/nginx -t

でconfig checkを実行して問題なければ restart

# systemctl restart nginx

[][][]CentOS 7 + Nginx + rep2 その5

rep2が要求する PHPは 7.xなので、標準レポジトリの 5.xだと使用できない為

remiレポジトリを追加する

-> http://rpms.famillecollet.com/


事前にEPELレポジトリが追加されていないとダメだが、既に追加済みの為この手順はスキップ

サイトにある、remiレポジトリのURLからインストール実施

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
#
# ls -l /etc/yum.repos.d/
total 64
-rw-r--r--. 1 root root 1664 Aug 31  2017 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Aug 31  2017 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Aug 31  2017 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 Aug 31  2017 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 Aug 31  2017 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Aug 31  2017 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 Aug 31  2017 CentOS-Vault.repo
-rw-r--r--  1 root root  951 Oct  3  2017 epel.repo
-rw-r--r--  1 root root 1050 Oct  3  2017 epel-testing.repo
-rw-r--r--  1 root root  108 Apr 15 21:17 nginx.repo
-rw-r--r--  1 root root  456 Mar 21 22:28 remi-php54.repo
-rw-r--r--  1 root root 1314 Mar 21 22:28 remi-php70.repo
-rw-r--r--  1 root root 1314 Mar 21 22:28 remi-php71.repo
-rw-r--r--  1 root root 1314 Mar 21 22:28 remi-php72.repo
-rw-r--r--  1 root root 2605 Mar 21 22:28 remi.repo
-rw-r--r--  1 root root  750 Mar 21 22:28 remi-safe.repo
#


PHP7.2のrepoである、remi-php72.repoの設定をenableに変更

# cat /etc/yum.repos.d/remi-php72.repo
# This repository only provides PHP 7.2 and its extensions
# NOTICE: common dependencies are in "remi-safe"

[remi-php72]
name=Remi's PHP 7.2 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php72/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/php72/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/php72/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php72-debuginfo]
name=Remi's PHP 7.2 RPM repository for Enterprise Linux 7 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/7/debug-php72/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php72-test]
name=Remi's PHP 7.2 test RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/test72/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/test72/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/test72/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php72-test-debuginfo]
name=Remi's PHP 7.2 test RPM repository for Enterprise Linux 7 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/7/debug-test72/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
[root@rep2 conf.d]# cat /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1


remiレポジトリをenableにするとそっちが優先されるのね

php72パッケージじゃなくて、phpパッケージが全部remiからインストールされるようになってた

# yum info php php-common php-cli php-json php-mbstring php-pdo php-process php-xml
Available Packages
Name        : php
Arch        : x86_64
Version     : 7.2.4
Release     : 1.el7.remi
Size        : 10 M
Repo        : remi-php72
Summary     : PHP scripting language for creating dynamic web sites
URL         : http://www.php.net/
License     : PHP and Zend and BSD and MIT and ASL 1.0
Description : PHP is an HTML-embedded scripting language. PHP attempts to make it
            : easy for developers to write dynamically generated web pages. PHP also
            : offers built-in database integration for several commercial and
            : non-commercial database management systems, so writing a
            : database-enabled webpage with PHP is fairly simple. The most common
            : use of PHP coding is probably as a replacement for CGI scripts.
            :
            : The php package contains the module (often referred to as mod_php)
            : which adds support for the PHP language to Apache HTTP Server.

Name        : php-cli
Arch        : x86_64
Version     : 7.2.4
Release     : 1.el7.remi
Size        : 15 M
Repo        : remi-php72
Summary     : Command-line interface for PHP
URL         : http://www.php.net/
License     : PHP and Zend and BSD and MIT and ASL 1.0
Description : The php-cli package contains the command-line interface
            : executing PHP scripts, /usr/bin/php, and the CGI interface.

Name        : php-common
Arch        : x86_64
Version     : 7.2.4
Release     : 1.el7.remi
Size        : 12 M
Repo        : remi-php72
Summary     : Common files for PHP
URL         : http://www.php.net/
License     : PHP and BSD
Description : The php-common package contains files used by both the php
            : package and the php-cli package.

Name        : php-json
Arch        : x86_64
Version     : 7.2.4
Release     : 1.el7.remi
Size        : 88 k
Repo        : remi-php72
Summary     : JavaScript Object Notation extension for PHP
URL         : http://www.php.net/
License     : PHP
Description : The php-json package provides an extension that will add
            : support for JavaScript Object Notation (JSON) to PHP.

Name        : php-mbstring
Arch        : x86_64
Version     : 7.2.4
Release     : 1.el7.remi
Size        : 620 k
Repo        : remi-php72
Summary     : A module for PHP applications which need multi-byte string handling
URL         : http://www.php.net/
License     : PHP and LGPLv2 and BSD and OpenLDAP
Description : The php-mbstring package contains a dynamic shared object that will add
            : support for multi-byte string handling to PHP.

Name        : php-pdo
Arch        : x86_64
Version     : 7.2.4
Release     : 1.el7.remi
Size        : 390 k
Repo        : remi-php72
Summary     : A database access abstraction module for PHP applications
URL         : http://www.php.net/
License     : PHP
Description : The php-pdo package contains a dynamic shared object that will add
            : a database access abstraction layer to PHP.  This module provides
            : a common interface for accessing MySQL, PostgreSQL or other
            : databases.

Name        : php-process
Arch        : x86_64
Version     : 7.2.4
Release     : 1.el7.remi
Size        : 188 k
Repo        : remi-php72
Summary     : Modules for PHP script using system process interfaces
URL         : http://www.php.net/
License     : PHP
Description : The php-process package contains dynamic shared objects which add
            : support to PHP using system interfaces for inter-process
            : communication.

Name        : php-xml
Arch        : x86_64
Version     : 7.2.4
Release     : 1.el7.remi
Size        : 855 k
Repo        : remi-php72
Summary     : A module for PHP applications which use XML
URL         : http://www.php.net/
License     : PHP
Description : The php-xml package contains dynamic shared objects which add support
            : to PHP for manipulating XML documents using the DOM tree,
            : and performing XSL transformations on XML documents.


PHPの幾つかのパッケージは httpd をdependで要求するので、httpdは取り敢えずインストールして Disableにしておくか

# yum install php php-common php-cli php-json php-mbstring php-pdo php-process php-xml


NginxPHPを動かす為に、CGI型のPHP-FPMを導入する

# yum install php-fpm


PHP-FPMデフォルトApacheの設定になっているので修正

# cd /etc/php-fpm.d
# vi www.conf

user と group を、 apache -> nginx に変更


PHP-FPM自動起動設定

# systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
# systemctl start php-fpm
# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2018-04-16 00:57:56 JST; 1s ago
 Main PID: 7723 (php-fpm)
   Status: "Ready to handle connections"
   CGroup: /system.slice/php-fpm.service
           tq7723 php-fpm: master process (/etc/php-fpm.conf)
           tq7724 php-fpm: pool www
           tq7725 php-fpm: pool www
           tq7726 php-fpm: pool www
           tq7727 php-fpm: pool www
           mq7728 php-fpm: pool www

Apr 16 00:57:56 rep2 systemd[1]: Starting The PHP FastCGI Process Manager...
Apr 16 00:57:56 rep2 systemd[1]: Started The PHP FastCGI Process Manager.


NginxPHPを扱えるように設定変更を実施

# cat /etc/nginx/conf.d/<自ドメイン>.conf
server {
    listen       <Port No>;
    server_name  <Domain Name>;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /var/www/html;
        index  index.html index.htm index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /var/www/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}


Nginxの設定ファイルを変更したので、再起動

# systemctl restart nginx


phpinfoファイル作成してphpの動作検証

# cat /var/www/html/phpinfo.php
<?php
        phpinfo();
?>

phpinfo.phpアクセスして、PHPの動作状況が表示されればOK

(セキュリティの為には、動作チェック終わった後はファイルを削除しておいたほうが良い)

[][][]CentOS 7 + Nginx + rep2 その6

rep2をインストールする為に gitコマンドが必要なので

gitのインストール

# yum install git


Open774版のrep2をインストール

# cd /var/www/html
# git clone git://github.com/open774/p2-php.git


依存ライブラリをインストール

# cd p2-php
# curl -O http://getcomposer.org/composer.phar
# php -d detect_unicode=0 composer.phar install


アクセス権の変更

# chmod 0777 data/* rep2/ic


チェックコマンドの実行

# php scripts/p2cmd.php check
PHP Version:
  7.2.4: OK
PHP Extensions:
  curl: OK
  dom: OK
  json: OK
  libxml: OK
  mbstring: OK
  pcre: OK
  pdo: OK
  pdo_sqlite: OK
  phar: OK
  session: OK
  spl: OK
  zlib: OK
php.ini directives:
  safe_mode = : OK
  register_globals = : OK
  magic_quotes_gpc = : OK
  mbstring.encoding_translation = 0: OK
  session.auto_start = 0: OK

全部OKが出たので問題無し!

[][][]CentOS 7 + Nginx + rep2 その7

(ちなみに過去データ移行してるのでrep2の設定周りは省略)


無事rep2のログイン画面が見える所まで来たら

rep2 が直接 2ch(今は5chだけど)のDATファイルにはアクセスにいくと蹴られるので

Local Proxyを設置して、間接的にアクセスできるようにする


と、その前に bzip2とかwgetとか入ってなかったのでインストール

# yum install bzip2 wget


今までも使っていた 2chproxy使用

# cd /usr/local/bin
# wget https://github.com/yama-natuki/2chproxy.pl/raw/master/2chproxy.pl
# chown nginx:nginx 2chproxy.pl
# chmod 755 2chproxy.pl


2cgproxyの以下を修正

DEDICATED_BROWSER => "rep2",

DAT_DIRECTORY => "/var/www/html/p2-php/data/",

LISTEN_HOST => "127.0.0.1",


で、実行して見事蹴られる

過去ログみたら、全く同じ事やってた _no

[root@rep2 bin]# /usr/local/bin/2chproxy.pl
Can't locate HTTP/Daemon.pm in @INC (@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 line 48.
BEGIN failed--compilation aborted at /usr/local/bin/2chproxy.pl line 48.


Perlの http-daemon モジュールを追加でインストール

# yum install perl-HTTP-Daemon-SSL


これで解決と思いきや、次は LWP/UserAgent のモジュールが足らんようで・・・

# /usr/local/bin/2chproxy.pl
Can't locate LWP/UserAgent.pm in @INC (@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 line 50.
BEGIN failed--compilation aborted at /usr/local/bin/2chproxy.pl line 50.
#
# yum install perl-LWP-UserAgent-Determined

で、見事起動\( ̄∇ ̄)/

# /usr/local/bin/2chproxy.pl
[0|1675] PROCESS: listen to http://127.0.0.1:8080/

[][][]CentOS 7 + Nginx + rep2 その8

2chproxy が無事起動するようになったので、今まで同様サービス化を実施


/etc/systemd/system 以下にUnit定義ファイルを設置

中身はこんな感じ

# cat /etc/systemd/system/2chproxy.service
[Unit]
Description = 2ch proxy daemon

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

[Install]
WantedBy = multi-user.target


UnitがServiceとして認識されているか確認する

# systemctl list-unit-files --type=service | grep 2chproxy
2chproxy.service                              disabled


認識されていたので、EnableしてStartする

# systemctl enable 2chproxy
Created symlink from /etc/systemd/system/multi-user.target.wants/2chproxy.service to /etc/systemd/system/2chproxy.service.
# systemctl start 2chproxy
# systemctl status 2chproxy
● 2chproxy.service - 2ch proxy daemon
   Loaded: loaded (/etc/systemd/system/2chproxy.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2018-04-16 02:31:14 JST; 6s ago
 Main PID: 1519 (2chproxy.pl)
   CGroup: /system.slice/2chproxy.service
           mq1519 /usr/bin/perl /usr/local/bin/2chproxy.pl

Apr 16 02:31:14 rep2 systemd[1]: Started 2ch proxy daemon.
Apr 16 02:31:14 rep2 systemd[1]: Starting 2ch proxy daemon...


OS再起動しても、問題なくアクセスできることが確認できたので今日はここまで


この後はLet's Encrypt使用してhttps化を実行しよう(何時になることやら


参考情報1 Mozilla SSL Configuration Genarator

-> https://mozilla.github.io/server-side-tls/ssl-config-generator/


参考情報2 rep2用 Nginx設定サンプル

server {
    listen 443 ssl http2;

    # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
    ssl_certificate /path/to/signed_cert_plus_intermediates;
    ssl_certificate_key /path/to/private_key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;


    # modern configuration. tweak to your needs.
    ssl_protocols TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_prefer_server_ciphers on;

    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    add_header Strict-Transport-Security max-age=15768000;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;

    ## verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

    location / {
        root    /path/to/p2-php/rep2;
        index   index.php index.html;

        location ~ \.php$ {
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            include fastcgi_params;
            fastcgi_param HTTPS             on;
            fastcgi_param SSL_PROTOCOL      $ssl_protocol;
            fastcgi_param SSL_CIPHER        $ssl_cipher;
            fastcgi_param SSL_SESSION_ID    $ssl_session_id;
            fastcgi_param SSL_CLIENT_VERIFY $ssl_client_verify;
            fastcgi_param SCRIPT_FILENAME   /path/to/p2-php/rep2$fastcgi_script_name;
            break;
        }
}

2018-03-27

[][][]CentOS 7 + Nginx + rep2 その2

ユーザーを作成後に、sshの設定を変更

  • rootでのログイン禁止
  • 通常のログイン認証の禁止
  • チャレンジレスポンス認証を許可

-> http://d.hatena.ne.jp/TKX/20130328#p1


sshdのサービスの再起動を必要とするが、CentOS7から systemdになったので

# systemctl restart sshd<.service>


suできるユーザーを制限する(Wheelグループ以外のユーザーのsu禁止)

# usermod -aG wheel <user id>
# cat /etc/pam.d/su
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
auth            substack        system-auth
auth            include         postlogin
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         include         postlogin
session         optional        pam_xauth.so

上記の pam_wheel.so 行のコメントを外す

auth           required        pam_wheel.so use_uid


不要なサービスを停止する為にサービス一覧を提示

# systemctl list-unit-files --type service

firewalldとpostfixを停止させる

# systemctl disable firewalld
# systemctl disable postfix

SELinuxも停止させるので

/etc/selinux/config

SELINUX=enforcing

SELINUX=disabled

に修正


ここで設定を反映させる為に、一回再起動を実行


EPELリポジトリを追加する

# yum install epel-release

パッケージの最新化を実行

# yum clean all
# yum update


時刻同期を実行させる為に、CentOS7からの新しい仕組み chrony を導入して設定する

# yum install chrony
# vi /etc/chrony.conf

server を何時ものように Internet Multifeedに指定して

サービスを再起動して、同期状態を確認

# systemctl restart chronyd
# chronyc sources
210 Number of sources = 3
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp1.jst.mfeed.ad.jp          2   6    37    20   -374us[ -477us] +/-   73ms
^+ ntp2.jst.mfeed.ad.jp          2   6    37    21   +105us[+5671ns] +/-   92ms
^+ ntp3.jst.mfeed.ad.jp          2   6    37    21   +549us[ +448us] +/-  139ms

無事同期できているようだ


ちょっと調べる時に便利な

digコマンドとlsofコマンドをInstallするために以下のパッケージを導入

# yum install bind-utils lsof

後は日本語ファイルがあった時に文字化け防止の為に日本語フォントを念の為入れておく

# yum install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts

取り敢えず今日はここまで

2018-03-26

[][][]CentOS 7 + Nginx + rep2

QNAP上に移行した rep2 を ESXi 6.5に引っ越そうとした所

どうにも巧くイメージを移行できないので

Scientific Linux 6.x + Apache + rep2 の環境を

CentOS 7.x + Nginx + rep2 の組み合わせで再構築してみようかと

(ついでに、https対応も予定)


前の環境は色々入れたり消したりしていたので、綺麗に組み直すのもありかなということで


しかし、久しぶりに素のLinux Installしようとしたら完全に忘れとった・・・

最近はAWSのイメージテンプレートインストールとかばっかりだったので)


まぁ、時間があまりないのでちょこちょこと試行錯誤しながら構築しますかね


取り敢えず本日はOS minimal Installしてオシマイ

2017-10-07

[]rsky版からopen774版に切替

rsky版の更新が数年前に止まり、5chへの追随等も行われていないので open774版に移行

->参考情報 no title


基本は2015年に構築した手順をほぼそのまま踏襲すれば良いが

PHPの推奨Verが7.*になり5.xの動作確認終了も近いようなので、PHPのVerUpも実施

-> 2015-07-03 - 日々雑事&備考録


環境は Scientific Linux 6.x + Apache + PHP 7.x


PHP 5.6 -> 7.1 VerUp

  1. 現在の5.6パッケージを確認
    # rpm -qa | grep php
  2. PHP 5.6パッケージを削除
    # yum remove php*
  3. PHP 7.1パッケージの確認
    # yum search php71
  4. PHP 7.1パッケージのインストール (パッケージについては現在の種類をそのまま踏襲)
    # yum install php71u php71u-common php71u-cli php71u-json php71u-mbstring php71u-pdo php71u-process php71u-xml


open774版 rep2インストール

  1. 現在の環境を丸ごとmvで退避
    # cd www/html
    # mv p2-php p2-php-rsky
  2. 本体をクローン
    # git clone git://github.com/open774/p2-php.git
    # cd p2-php
  3. 依存ライブラリをダウンロード
    # curl -O http://getcomposer.org/composer.phar
    # php -d detect_unicode=0 composer.phar install
  4. アクセス権の変更
    # chmod 0777 data/* rep2/ic
  5. 退避していたデータの復旧
    # cp -pr ../p2-php-rsky/data .
  6. チェックコマンド実行
    # php scripts/p2cmd.php check
# php scripts/p2cmd.php check
PHP Version:
  7.1.9: OK
PHP Extensions:
  curl: OK
  dom: OK
  json: OK
  libxml: OK
  mbstring: OK
  pcre: OK
  pdo: OK
  pdo_sqlite: OK
  phar: OK
  session: OK
  spl: OK
  zlib: OK
php.ini directives:
  safe_mode = : OK
  register_globals = : OK
  magic_quotes_gpc = : OK
  mbstring.encoding_translation = 0: OK
  session.auto_start = 0: OK


rep2の設定変更

  1. 基本ブラウザから設定変更可能だが、conf_admin.inc.php だけ設定変更できないので
    # vi conf/conf_admin.ini.php
    display_threads_num を 150 -> all


rep2の更新方法

  1. Updateコマンドを実行
    # cd www/html/p2-php
    # php scripts/p2cmd.php update
  2. 上記は以下コマンドを実行してるのと同等
    # git pull
    # php -d detect_unicode=0 composer.phar self-update
    # php -d detect_unicode=0 composer.phar update

2017-05-04

[]2chproxy.plアップデート

先月後半のread.cgi 6系から7系(7.0.0)へのアップデートに続いて、7.0.1にアップデートされていたので

2017-04-24

[]2chproxy.plアップデート

2chのread.cgiが 6.x.x -> 7.0.0に変更されたので、その対処

2015-11-22

[]また仕様変更されたので

2chの書き込み確認ページのformにaccept-charset="Shift_JIS"が追加されたようで
formの置換ができてないようです。 

というわけで、書き込みができず


修正方法が書いてあったので修正

post.php 746行目を

if (!preg_match('{^\\.\\./test/(sub)?bbs\\.cgi(?:\\?guid=ON)?$}', $form->getAttribute('action'), $matches)) {

から

if (!preg_match('{^\\.\\./test/(sub)?bbs\\.cgi(?:\\?guid=ON)?$?(?: accept-charset="?Shift_JIS"?)?}', $form->getAttribute('action'), $matches)) {

2015-11-18

[]2chの仕様変更

違う potatoだけhtmlの仕様が変わって今までのhtml2dat系では取得できない
たぶん他の鯖も順次そうなる
potato対応した版のプロクシ使うかAPIアクセスが必要 

read.cgiが 06系が新しい鯖っぽいな

 
1138970
サーチ:
キーワード:
Amazon.co.jpアソシエイト