[ホスティング] CentOS 7ベースのVPSサーバー設定手順 (DigitalOcean)

DigitalOceanはドキュメントが充実していて助かる。

初期設定

How To Use SSH Keys with DigitalOcean Droplets | DigitalOcean
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets

Initial Server Setup with CentOS 7 | DigitalOcean
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7

Additional Recommended Steps for New CentOS 7 Servers | DigitalOcean
https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers

ウェブサーバー環境設定

How To Set Up a Host Name with DigitalOcean | DigitalOcean
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean

How To Set Up Apache Virtual Hosts on CentOS 7 | DigitalOcean
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-centos-7

How To Install Linux, Apache, MySQL, PHP (LAMP) stack On CentOS 7 | DigitalOcean
https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7

How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server

[ホスティング] MySQL、PHP、phpMyAdminのインストール (CentOS 7.1)

MySQL (MariaDB)

PHP

phpMyAdmin

確認: http://サーバーIP/phpMyAdmin

[ホスティング] Apacheバーチャルホストの設定 (CentOS 7.1)

Apacheのインストール

ブート時の自動起動設定

バーチャルホストごとのパブリックディレクトリを作成

バーチャルホストごとの設定ファイル格納ディレクトリを作成

バーチャルホストごとの設定ファイルを作成

バーチャルホストを公開してApacheを起動

ログローテートの設定変更

デフォルトだと標準インストールのログしかローテートされないので、バーチャルホストのログもローテートされるように設定を追加しておく。

参考サイト

Apache ウェブサーバーで .htaccess を利用するには | XpressOne Knowledge Base 「サポート技術情報」
http://kb.xpressone.net/2566

【apache】httpd.confの文法チェックを行う
http://www.kishiro.com/apache/config_syntax_check.html

Apacheのログを日毎にしてみる – yk5656 diary
http://d.hatena.ne.jp/yk5656/20140523/1402455511

[ホスティング] スワップファイルの設定 (CentOS 7.1)

2GBのスワップの作成例

topコマンドで確認

[ホスティング] ファイアーウォール設定 (CentOS 7.1)

ファイアーウォール起動

ブート時の自動起動設定

サービス名の一覧

特定のサービスを有効化

設定されている例外の一覧

変更の適用 (再ロード)

[ホスティング] DropletでSSHキーを使う方法 (DigitalOcean)

以下の手順では、予めアカウントにSSHキーを紐付けしておくことにより、そのアカウントで以降に作成されるDropletに対して、Droplet作成時にSSHキーを簡単に適用することを可能にする。

アカウントに新たに紐付けされたSSHキーは、既存のDropletには適用されないので注意。そういった既存のDropletに対しては、個別にSSHキーを設定しないとダメ。

手順

How To Use SSH Keys with DigitalOcean Droplets | DigitalOcean
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets

以下ざっくりと。

1. ローカルで鍵ファイルを生成
TTSSHを使って生成した ([Setup]-[SSH KeyGenerator…]メニュー)

2. DigitalOceanのアカウントにSSHキーを追加
Settings/Security/SSH Keysページで[Add SSH Key]ボタンをクリック
Name = 鍵を識別する適当な名前 (鍵を生成したコンピュータの名前とか)
Public SSH Key = 公開鍵の内容をコピペ
[Create SSH Key]ボタンをクリック

3. Droplet作成時にSSHキーを追加
アカウントに追加されているSSHキーの名前が羅列されるので、有効にするSSHキーをチェック

4. SSHキーを使ってDropletに正しく接続できることを確認

5. SSHデーモンの設定変更
/etc/ssh/sshd_configの編集

6. SSHデーモンに設定適用
# kill -HUP <sshdのプロセスID>

参考サイト

/etc/ssh/sshd_configの設定については以下ページが参考になる。

7 Default OpenSSH Security Options You Should Change in /etc/ssh/sshd_config
http://www.thegeekstuff.com/2011/05/openssh-options/

[PHP] フィルタ関数を使ったメールアドレスのバリデーション

メールアドレスの適正性は正規表現でするものと思っていたけど、PHPのフィルタ関数を使って簡単にできるようになっていたので覚え書き。

PHP: Filter – Manual
http://php.net/manual/ja/book.filter.php

filter 拡張モジュールは PHP 5.2.0 以降デフォルトで有効となります。 それより前のバージョンでは実験的な PECL 拡張モジュールを使用していましたが、 PECL 版は今後非推奨となり、更新もされません。

以下、使用例。

PHPで各種バリデーション – Qiita
http://qiita.com/mpyw/items/346f1789ad0e1b969ebc

そろそろメールアドレスを正規表現だけでチェックするのは終わりにしませんか? – Qiita
http://qiita.com/ShibuyaKosuke/items/0b9a8fddaefb2060a14a

[PHP] メールフォームの連続投稿を禁止する

とりあえず二案。

  1. 投稿時刻と投稿者IPをサーバー側で記録しておき、以後の投稿時に比較する。
    確実な方法だけど実装の手間はある。
  2. 投稿時に有効期限月クッキーを生成し、以後の投稿時にクッキーが存在するかチェックする。
    簡易的な方法だけど手軽。ブラウザでクッキーが無効になっていると使えない。

あと、フォームのボタンが2度押しできないようにJavaScriptなどを使って抑制しておくと良い。