Ubuntu
lamp
DigitalOcean
ubuntu16.04

LAMPテストサーバの作り方 (DigitalOcean)

More than 1 year has passed since last update.

DigitalOcean を利用したLAMPテストサーバの構築方法です。
もし本番運用をする場合には root でのSSHログインを禁止するようにしてください。

ドロップレットの作成

以下の設定を参考に、ドロップレットを作成してください。

  • Choose an image > One-click Apps > LAMP on 16.04
  • Choose a size > $5 / mo
  • Choose a datacenter region > Singapore
  • Add your SSH keys > <自分の公開鍵を選択>
  • Finalize and create > Choose a hostname > <クライアント名-案件名>

SSHでのアクセス

作成したドロップレットのIPアドレスを確認して、Terminal (iTerm) からSSH接続をします。

クライアントPC
vi ~/.ssh/config
...
# 追加
Host rabi  # SSHのショートカット名として利用/適宜変更
  HostName <IP Address>
  User root
  IdentityFile ~/.ssh/id_rsa

ssh rabi  # SSH接続

必要であれば、ファイルのアップロードのために、上記と同様の設定をSFTPクライアントでも行っておいてください。

public/ ディレクトリ以下を同期させる運用であれば、以下のようなコマンドで済ませてもいいです。1

# rsync <コピー元> <コピー先>
rsync -av --delete --exclude=".*" public/ rabi:/var/www/html/

※ コピー元ディレクトリに指定している末尾スラッシュは必須
参考: http://www.itmedia.co.jp/enterprise/articles/0804/21/news013.html

以下より、SSHで接続したホストPCでの操作となります。

SSHパスワード認証を不可にする

パスワード認証を不可にし、公開鍵認証のみ受け付けるようにします。

/etc/ssh/sshd_config
- PasswordAuthentication yes
+ PasswordAuthentication no 
service ssh restart  # sshd の再起動

ベーシック認証

.htaccess の設定

以下の .htaccess ファイルをサーバに配置します。

/var/www/html/.htaccess
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
Options -Indexes
AuthUserFile /var/www/html/.htpasswd
# AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user 
order deny,allow

作成元: .htaccess Editor
※ AuthGroupFile の行はコメントアウト(または削除)が必要です

.htpasswd の設定

apt-get install apache2-utils
htpasswd -c /var/www/html/.htpasswd <ユーザ名>

.htaccess の有効化

/etc/apache2/apache2.conf
<Directory /var/www/>
        Options Indexes FollowSymLinks
-       AllowOverride None
+       AllowOverride All
        Require all granted
</Directory>

Apache の再起動

service apache2 restart

オプション

リダイレクト機能を利用する場合

.htaccess のリダイレクト処理が必要な場合は以下の設定が必要になります。

sudo a2enmod rewrite  # mod_rewrite モジュールの有効化
service apache2 restart

リダイレクトのログを確認する場合

/etc/apache2/apache2.conf
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
+       LogLevel rewrite:trace8  # trace[数字] の値は調節
</Directory>

参考: Apache HTTP サーバ バージョン 2.4 > LogLevel

service apache2 restart
tail -f /var/log/apache2/error.log  # エラーログを監視

SSI を利用する場合

sudo a2enmod include  # mod_include モジュールの有効化
# ↑ 以下のコマンドと同じ意味
# ln -s /etc/apache2/mods-available/include.conf /etc/apache2/mods-enabled/include.conf
# ln -s /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled/include.load

service apache2 restart

SSL を利用する場合

sudo a2enmod ssl  # SSL モジュールの有効化
sudo service apache2 restart

Let's Encrypt を利用した場合

/etc/apache2/sites-available/default-ssl.conf
- ServerAdmin webmaster@localhost
+ ServerAdmin <管理者のメールアドレス>
...
- SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
+ SSLCertificateFile     /etc/letsencrypt/archive/<ドメイン名>/fullchain1.pem
- SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
+ SSLCertificateKeyFile    /etc/letsencrypt/archive/<ドメイン名>/privkey1.pem
sudo a2ensite default-ssl.conf  # SSL用設定の有効化
sudo service apache2 restart

  1. [所有者:グループ] も同期されるので留意