VPSに CentOS7 + Nginx + php-fpm でPHP環境を設定する方法

nginxでWordpressのようなPHPのWebアプリケーションを動作させるには
「php-fpm」
というアプリケーションを組み合わせます。

VPSがデフォルトの状態でPHPもまだインストールされていない状態と想定して説明しています。

VPSにはWebArena VPS CentOS 7.4を使用。

php-fpm入れる前にnginxをインストールしておきましょう
WebArena VPS CentOS 7.4 への Nginx mainline版 インストール

nginxインストールが完了したら、下記のようにphpをインストールします。

・remiリポジトリをインストール
# sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

・PHPのバージョン情報を確認
# yum info php --enablerepo=remi-php73
利用可能なパッケージ
名前                : php
アーキテクチャー    : x86_64
バージョン          : 7.3.2
リリース            : 1.el7.remi
容量                : 3.2 M
リポジトリー        : remi-php73

・PHP 7.3 のインストール
--enablerepo オプションで remi リポジトリを指定、
その他phpの拡張パッケージも一緒にインストールします。
途中、公開鍵が入ってないよ!といわれますが探してくれるので聞かれたらyでリターンしてください。
# yum install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-mysqlnd php-pdo php-gd

・バージョンを確認
# php --version
PHP 7.3.2 (cli) (built: Feb  5 2019 13:10:03) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.2, Copyright (c) 1998-2018 Zend Technologies

これで、2019年2月23日時点での最新のPHPバージョンがインストールされました。

PHP-FPMをインストールします

$ sudo yum --enablerepo=remi-php73 install php-fpm

Apacheを使用する場合は特に変更の必要はないのですが、
Nginxを使用する場合は設定ファイルの変更が必要になります。
/etc/php-fpm.d/www.conf内のusergroupnginxに変更します。

$ sudo nano /etc/php-fpm.d/www.conf
user = nginx
group = nginx

保存したら、PHP-FPMを再起動します
$ sudo systemctl restart php-fpm

Nginxの設定を変更してPHPを実行できるようにします。
/etc/nginx/conf.d/default.conf を編集します。

・今後のためにバックアップをとっておきましょう
$ sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/defaul-backup.conf

・設定ファイルを編集 index.phpを追加
$ sudo nano /etc/nginx/conf.d/default.conf

location / {

      root   /usr/share/nginx/html;

      index index.php index.html index.htm;

}

・php-fpmの設定を有効化
default.confをさらに下にスクロールしていくと、下記のようなphp-fpmを動作させる部分がコメントアウトされているので、「#」を削除します。

   location ~ \.php$ {

            root           /usr/share/nginx/html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;

    }

nginxとphp-fpmの起動

$ systemctl start php-fpm
$ systemctl start nginx

・起動時にNginxとphpが立ち上げるようにする
sudo chkconfig php-fpm on
sudo chkconfig nginx on

ブラウザから下記にアクセスしてnginxのページが表示されれば成功
http://IPアドレス/

WebArena VPS CentOS 7.4 への Nginx mainline版 インストール

2019年2月22日時点で最新のバージョンをインストールする方法になります。
時間が経過後にリポジトリに変更があった場合には、適宜設定し直してください。

nginxのリポジトリの作成及び設定
# sudo nano /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key


nginxをインストール
# yum install nginx                 
nginx         x86_64         1:1.15.8-1.el7_4.ngx

CentOS7のGPGキーインポートしてない場合に、キー探していますみたいなのが表示されて、聞かれますが自動で探してくれるのでYESでOK。
しばらくすると、インストール成功!

WebArena VPS CentOS 7.4 への Apache2.4.6 インストール

WebArena VPS CentOS 7.4 へのApache2.4.6のインストール方法を丁寧に解説
※Macのターミナル利用

WebArenaのコンパネでセキュリティーグループに
sshポートの22、ウェブポートの80のアクセスを可能にしておく

tcp:22,22,ip4:0.0.0.0/0 (自分のIPアドレスを入れるほうがベター)
tcp:80,80,ip4:0.0.0.0/0(自分のIPアドレスを入れるほうがベター)

WebArenaのコンパネでキーペア(***.pem)を作成し、ダウンロード

おそらくsshキーをまとめていると思うので、Macのsshキーを保存しているフォルダに入れておく
ちなみに後で間違えないようにするためにリネームしておくといいかも

mv 元のファイル名.pem 変更後のファイル名.pem

ターミナルからSSHでVPSに接続する

sudo ssh root@VPSのIPアドレス -i キーペアの名前.pem

Apacheのインストールファイルを調べておくと

# yum list | grep httpd
httpd.x86_64                           2.4.6-88.el7.centos        base          
httpd-devel.x86_64                     2.4.6-88.el7.centos        base          
httpd-manual.noarch                    2.4.6-88.el7.centos        base          
httpd-tools.x86_64                     2.4.6-88.el7.centos        base          
keycloak-httpd-client-install.noarch   0.6-3.el7                  base          
libmicrohttpd.i686                     0.9.33-2.el7               base          
libmicrohttpd.x86_64                   0.9.33-2.el7               base          
libmicrohttpd-devel.i686               0.9.33-2.el7               base          
libmicrohttpd-devel.x86_64             0.9.33-2.el7               base          
libmicrohttpd-doc.noarch               0.9.33-2.el7               base          
python2-keycloak-httpd-client-install.noarch

下記4つをインストールすればOK
httpd.x86_64 2.4.6-88.el7.centos base
httpd-devel.x86_64 2.4.6-88.el7.centos base
httpd-manual.noarch 2.4.6-88.el7.centos base
httpd-tools.x86_64

Apacheをインストール

yum -y install httpd httpd-tools httpd-devel httpd-manual
面倒であれば下記でもよい
yum -y install httpd

Apacheがインストールされたかを確認、バージョンも確認

# yum list installed | grep httpd
httpd.x86_64                       2.4.6-88.el7.centos            @base         
httpd-devel.x86_64                 2.4.6-88.el7.centos            @base         
httpd-manual.noarch                2.4.6-88.el7.centos            @base         
httpd-tools.x86_64                 2.4.6-88.el7.centos            @base  

# httpd -version
Server version: Apache/2.4.6 (CentOS)

Apacheを起動して起動したサービスの状態を確認

# systemctl start httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 木 2019-02-21 20:16:27 JST; 26min ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1182 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─1182 /usr/sbin/httpd -DFOREGROUND
           ├─1183 /usr/sbin/httpd -DFOREGROUND
           ├─1184 /usr/sbin/httpd -DFOREGROUND
           ├─1185 /usr/sbin/httpd -DFOREGROUND
           ├─1186 /usr/sbin/httpd -DFOREGROUND
           └─1187 /usr/sbin/httpd -DFOREGROUND
.....

firewall-cmdコマンドで、httpアクセスするための80番ポートに外部からの接続を許可設定を追加 (iptablesコマンドで行ってもよい)

# firewall-cmd --add-service=http --permanent
success

設定を反映するために再読み込み
# firewall-cmd --reload
success

設定の確認
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: ssh dhcpv6-client http
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

services: ssh dhcpv6-client http
のようにhttpが追加されていればOK
Webブラウザから下記にアクセスしてページが表示されればOK
http://IPアドレス/

VPS サーバー CentOS 7.4 の初期設定 1

VPSサーバーを初めて利用する際に最初にしたほうがいいこと書いてみました。
WebArenaのCentOS7.4のVPSサーバーとMacのターミナルを利用。

① 作業用ユーザーを作成して、rootログインを禁止する

デフォルトではrootログインしかできない状態ですが、rootログインできる状態という事は、もし誰かにrootログインされてしまうと、なんでもできてしまう非常に危険な状態なので これを禁止します。

まずRPMパッケージを最新に更新しておきましょう
sudo yum -y update
VPSにMACターミナルからSSHで接続してください(デフォルトではroot)
sudo ssh root@IPアドレス -i ./.ssh/デフォルトのroot用sshキー.pem

1. ユーザー作成 (ユーザー名hogeは自由に置き換えてください)
# useradd -G wheel hoge 
※グループ名のwheelはsudoコマンドが使える管理者グループ名として使われる

2. 作成したユーザーにパスワードを設定する 
# passwd hoge
→エンター後にパスワードを求められるので、そこで入力する

nanoエディタのインストール(デフォルトでvi入っているので、好きなエディタ使ってください)
# yum install nano

3. 作業用ユーザーにsudo権限を付与
# nano /etc/sudoers (もしくは sudo visudo )
設定ファイル中で下記がコメント(#)されていた場合はコメントを外して保存
%wheel  ALL=(ALL)       ALL

4. SSHの設定ファイル確認・変更
# nano /etc/ssh/sshd_config

下記2箇所がコメント(#)されていた場合はコメントを外して保存
PubkeyAuthentication yes
AuthorizedkeysFile .ssh/authorized_keys
念のため
PasswordAuthentication no
になっているかも確認

RSSAuthentication no
を設定する必要は2016年のopenSSH7.4から必要なくなりました。

5. sshdをリロードする
(CentOS7からはserviceコマンではなくsystemctlコマンドを使います)
# systemctl reload sshd

アクセス元(自分以外のIP1アドレスからのアクセス)を制限したい場合には下記に設定する
# nano /etc/hosts.allow
→sshd: IPアドレス
を追記する
6. 作業用ユーザー(hoge)の公開鍵保存ディレクトリ作成
(ユーザー名hogeは自由に置き換えてください)
# sudo -u hoge mkdir /home/hoge/.ssh

Macでキーペア作成するので一時SSH終了する
# exit

7. 作業用ユーザーSSH用のキーペアをMacで作成
ssh-keygen -t rsa -b 4096 -f id_rsa_filename
(filenameは他のキーと混同しないよう自由に変えてください、id_rsaだけでもOK)

パスフレーズを設定

8. キーペアがホームに作成されるのでsshを管理している.sshフォルダに移動させる
mv id_rsa_filename ~/.ssh 
mv id_rsa_filename.pub ~/.ssh

9. キーペアのうち公開鍵であるid_rsa_filename.pubファイルをVPSサーバーにSCP(rootの鍵認証を使ってリモートにコピーする)
sudo scp -i ~/.ssh/デフォルトのroot用sshキー.pem ~/.ssh/id_rsa_filename.pub root@IPアドレス:/home/hoge/.ssh/

10. アップロードした公開鍵の名前、所有者・グループ、パーミッション変更
VPSサーバーとssh接続してから下記を実行
# cd /home/hoge/.ssh/
# mv id_rsa_filename.pub authorized_keys
# chown hoge:hoge authorized_keys
# chmod 600 authorized_keys
# chmod 700 /home/hoge/.ssh
# exit

11. Macから作業用ユーザーでSSH
sudo ssh hoge@IPアドレス -i ./.ssh/id_rsa_filename
パスワードいれて接続できれば成功

12. root接続(rootログイン)を禁止する
# sudo nano /etc/ssh/sshd_config
PermitRootLogin without-password
↓
PermitRootLogin no
というように
"without-password → no"
に変更して、保存。

13. sshdリロードする
# systemctl reload sshd
これで最初できていた、rootログインを試して拒否されれば成功

顔認識 顔検出 防犯カメラ録画機 (DVR, NVR)

防犯カメラを設置して、映像を確認する際、早送りしているものの
延々と動画を凝視し続けなくてはいけないストレスを感じたことはありませんか?

もしくは、これから設置しようと考えているけど、動体検知機能があれば、それで十分だろう!と思っていませんか?

動体検知も便利な機能ではありますが、風や犬など動くものには全て反応してしまいます。そのため、結局何かあったときに延々と動画を観察して証拠を探すということをしなくてはいけない羽目になります。

で、よくよく考えてみると、
「何かあったときくらいにしか映像を見返さない」

「何かを起こす原因は?」

「人間の可能性が一番高い」
ということで、人間がカメラの前を通った時にトリガーが起き録画が開始される機能。こういうのを動体検知と組み合わせると見返すのがとても楽になる。
※問題起こすのが動物の場合や車の場合もあるので、そういうときは動体検知が役立つ

ということで、顔認識機能が搭載されたDVR (NVR) がこれ
アナログカメラIPカメラ合計4台まで接続できる録画機で、
下記の写真のように1台のカメラ画像に対して顔認識をかける事ができる。

顔検出 防犯カメラ 顔認識
顔認識 防犯カメラ

全ての顔を認識できるわけではなく、夜間になると認識できなくなったり、
速いスピードで横切られると認識できなかったりなどありますが、
下記のような顔一覧でイベントを探すこともでき、何か起こった際の映像を見返す際の作業が便利にはなると思います。

顔検出 防犯カメラ 顔検出一覧画面

なので、もし録画機(DVRやNVR)のご購入を考えている方には
エントリーモデルとして、まずはこの顔検出DVRお勧めです。
※アナログカメラはAHD, CVI. TVIなどのハイビジョン規格カメラ1080P(200万画素)まで対応

ただ、ネットワークの設定などご自分でできる方向けの商品なので、
素人の方で、ご自分でネットで調べたり出来ない方はご購入されないほうがよい
商品となりますのでご注意ください。

購入できるお店は下記
倉庫ダイレクト東京 楽天市場店
ハイバリューダイレクト Yahoo!ショッピング店