Fedora28 のインストール

CentOS は最小パッケージでインストール
メディアからのインストール手順は割愛します

パッケージのインストール

dnf install nginx
dnf install php-pdo_mysql php php-gd php-mbstring php-fpm php-devel php-opcache php-pecl-apcu php-pecl-apcu-bc
dnf install mariadb mariadb-server
dnf install setools selinux-policy-devel
dnf install mailx    (PHPからメール送信に必要)
dnf install postfix  (PHPからメール送信に必要)
dnf install htop
dnf install php-json (phpMyAdmin実行に必要)

プロセスの起動

systemctl enable nginx
systemctl start nginx
systemctl enable php-fpm
systemctl start php-fpm
systemctl enable mariadb
systemctl start mariadb
systemctl enable chronyd
systemctl start chronyd
systemctl enable postfix
systemctl start postfix

SELinuxの設定

enforcing のまま行くので設定の変更はしません。 SELINUX=enforcing SSHのポート番号を22番以外に変える場合は、SELinuxに SSH の別のポート番号を登録する。
semanage port -a -t ssh_port_t -p tcp 2222
htmlを格納するフォルダをアクセスした場合に参照できるようにする。
Webサーバの権限を持つアプリケーションに対してフォルダの公開を許可します。
chcon -R -t httpd_sys_content_t webroot_folder
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_network_connect_db 1
設定後OSを再起動する。

ssh の設定

vi /etc/ssh/sshd_config
sshの接続ポート番号を任意の番号に変更
Port 22
↓
Port 10022
rootログイン不許可
PermitRootLogin yes
↓
PermitRootLogin no
ssh プロセスの再起動
systemctl restart sshd

Firewall の設定

デフォルトは ssh のポートしか空いてないので、http のポートを開ける。
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-port=1234/tcp
firewall-cmd --reload
ステータスの確認
firewall-cmd --state
running
空いてるポート番号を確認
firewall-cmd --list-services
dhcpv6-client ssh

chronydの設定

vi /etc/chrony.conf

#pool 2.fedora.pool.ntp.org iburst
server ntp.nict.jp iburst
server timeserver.cc.tsukuba.ac.jp iburst
server cesium.mtk.nao.ac.jp iburst
server ntp.nc.u-tokyo.ac.jp iburst
記述後 chronyd を再起動
タイムサーバとの同期の確認
chronyc sources

nginx.conf の設定

vi /etc/nginx/nginx.conf
phpファイルアップロード機能を追加する際の必須条件
    client_max_body_size 2G;
httpの圧縮転送を有効にする
    gzip  on;
    gzip_http_version 1.0;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
    gzip_disable "MSIE [1-6]\.";
    gzip_disable "Mozilla/4";
    gzip_proxied any;
    gzip_buffers 16 8k;
圧縮の確認
curl -I -H 'Accept-Encoding: gzip,deflate' http://www.qurataro.com/wikipedia/css/jqcloudlist.css
Content-Encoding: gzip が確認できたらOK

phpの設定変更

php.iniの設定
セッションセーブパス
;session.save_path = "/tmp"
session.save_path = "/var/lib/php/session"
ファイルのアップロード容量の変更
post_max_size 2GB
upload_max_filesize 2GB
タイムゾーンの設定
date.timezone = Asia/Tokyo
phpのsessionファイル格納フォルダの書き込み権限を付与
cdmod 777 /var/lib/php/session

MariaDBの設定

root のパスワード変更
mysql -u root
mysql > SET PASSWORD = PASSWORD('youwantpassword')

MeCab のインストール

本体のインストール
tar xvfz mecab-x.xx.xx.tar.gz
./configure --with-charset=utf8
make
make install
ipadic のインストール
ダウンロード
https://code.google.com/p/mecab/downloads/detail?name=mecab-ipadic-2.7.0-20070801.tar.gz&can=2&q=

 tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz
 mecab-ipadic-2.7.0-XXXX
 ./configure --with-charset=utf8
 make
 make install

/usr/local/etc/mecabrcの編集
wikipedia.dic を作成しているのでそれを利用するように修正する。
/usr/local/lib/mecab に作成した辞書やユーザ辞書を配置する。
dicdir =  /usr/local/lib/mecab/dic/ipadic
userdic = /usr/local/lib/mecab/dic/ipadic/wikipedia.dic
php_mecab のインストール
wget https://github.com/downloads/rsky/php-mecab/php-mecab-0.5.0.tgz
tar xzvf php-mecab-0.5.0.tgz
cd php-mecab-0.5.0
phpize
./configure --with-php-config=/bin/php-config --with-mecab=/usr/local/bin/mecab-config
make
make install
PHPと連動設定
vi /etc/php.d/mecab.ini
extension=mecab.so
ユーザ辞書の追加
/usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic
    -u wikipedia.dic -f utf-8 -t utf-8 wikipedia.csv

certbot-auto コマンドの設置

無料の SSL 証明書を取得する方法です。
curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
chmod 700 /usr/bin/certbot-auto
証明書の自動生成
certbot-auto certonly \           # 証明書の作成
    --webroot \                   # 既存のウェブサーバを使うモードを選択
    -w /usr/share/nginx/html \    # ドキュメント・ルートのパス
    -d www.qurataro.com \         # 認証するドメイン名
    --email <メール>@<アドレス> 

初めてこのコマンドを実行した際には様々なパッケージのダウンロードおよびインストールが要求されます。
その為、必ずインストールを実行してください。Python ライブラリとかが必要になります。

そのあと、規約の同意(Agree)
メールアドレスを任意団体に登録してもいいかの確認が来る(Yes)


ls /etc/letsencrypt/
accounts  archive  csr  keys  live  renewal  renewal-hooks

ls /etc/letsencrypt/live/qurataro.com/
cert.pem  chain.pem  fullchain.pem  privkey.pem
SSLの編集
/etc/nginx/nginx.conf

    server {
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
        server_name  qurataro.com;
        root         /usr/share/nginx/html;

        ssl_certificate "/etc/letsencrypt/live/qurataro.com/cert.pem";
        ssl_certificate_key "/etc/letsencrypt/live/qurataro.com/privkey.pem";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers PROFILE=SYSTEM;
        ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
証明書の期限を定期的に自動更新する
cron に以下のコマンドを仕掛ける
50 3 * * 0 certbot-auto renew --post-hook "systemctl restart nginx" 1 > /dev/null 2 > /dev/null
強制的にアップデートする場合は --force-renew オプションをつける
有効期限の確認
openssl x509 -in /etc/letsencrypt/live/www.qurataro.com/cert.pem -noout -dates
http アクセスを強制的に https にリダイレクトする
 server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  qurataro.com;
        return  301 https://qurataro.com$request_uri;

Cockpit の自己証明書ではなく正規の証明書に変更

CERT と KEY を合算したファイルを作成し、/etc/cockpit/ws-certs.d/ の中に設置する。
ファイル名「50-www.qurataro.com.cert」
頭の番号の順番でファイルが読まれるデフォルトで設置してあるファイル「0-self-signed.cert」を参考に
cat cert.pem privkey.pem > 50-www.qurataro.com.cert
chmod 640 50-www.qurataro.com.cert
cockpitを再起動して証明書を読み込ませる
systemctl restart cockpit
Let's Encrypt の使用に合わせて自動更新する場合の cron の書き方
51 3 * * 0 cat /etc/letsencrypt/live/www.qurasystem.com/cert.pem /etc/letsencrypt/live/www.qurasystem.com/privkey.pem > /etc/cockpit/ws-certs.d/50-www.qurasystem.com.cert ; chmod 640 /etc/cockpit/ws-certs.d/50-www.qurasystem.com.cert ; systemctl restart cockpit 1 > /dev/null 2 > /dev/null
ページのトップへ戻る