70
75

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

お金をかけずにRaspberry Pi 2を外部公開サーバーにする手順(LAMP, MyDNS,DDNS,cron)

Last updated at Posted at 2016-09-11

1.はじめに

ウェブサービス、アプリを公開するには外部に公開されたサーバーが必要です(当たり前ですが)。今ではレンタルサーバー(さくらのレンタルサーバー、AWSなど)が普及し、グローバスIPを取得、ルーティングといった作業をせずにらくらくサーバーをセットアップできるようになりました。
便利は便利なんですが、そういったサービスを使用していると、そもそもの上記知識を知らないまま開発することになります。アプリエンジニアだろうと軽く理解しておくべきだと私は思っています。仕事が広がりますんで、、、
インフラエンジアの仕事も奥が深いのでここではWEBサーバの設定までの紹介にとどめておきます。フロントエンジア、サーバーサイドエンジア、インフラエンジアの仕事をわかりやすくまとめてくれている人がいるのでそれを参照↓
フロントエンド、サーバサイド、インフラの具体例

2. 環境の準備

RaspberryPi2

  • OS:Raspbian
  • 各種パッケージ、ファームウエア更新済み
  • IP固定済み
  • ポート開放

[OS:Raspbianインストール]
(http://usicolog.nomaki.jp/engineering/raspberryPi/raspberryPi2.html)
[ssh設定、IP設定]
(http://usicolog.nomaki.jp/engineering/raspberryPi/raspberryPi_SSH.html)
[ポート開放buffalo]
(http://buffalo.jp/download/manual/html/air1200/router/whrg300n/chapter16.html)

3. 手順

「Raspberry Pi2」にLAMPをインストールし、Webサーバーを作成する。
##1. LAMP環境のインストール
LAMP(Linux + Apache + MySQL + PHP)環境をインストールする。

$ sudo apt-get install -y apache2 php5 mysql-server phpmyadmin
  1. MySQLのrootパスワードを設定するよう言われるので入力してENTER。
  2. phpMyAdminの設定でWebサーバーを聞かれるので「apache2」を選択してENTER。
  3. phpMyAdminの設定で、データベースをdbconfig-commonで設定するか聞かれたら、<はい>でENTER。
  4. MySQLの管理者パスワードを聞かれるので、設定したパスワードを入力してENTER。
  5. phpMyAdmin用のパスワードを設定しろと言われるので、入力してENTER。
  6. コントロールが返ってきたらインストール完了。rebootコマンドで再起動する。

##2. Webサーバ動作確認
###1. Apache動作確認
ブラウザで http://<IP Address> にアクセスし以下のようなApacheのトップページが表示されることを確認する。

ダウンロード.png

基本的な設定は /etc/apache2/apache2.conf にあり,VirtualHost に関する設定は /etc/apache2/sites-enabled/000-default.conf にある。

Apacheコマンド

説明 コマンド
起動 $ sudo service apache2 start
停止 $ sudo service apache2 stop
再起動 $ sudo service apache2 restart

###2.Apache設定
/conf-available 内の security.conf を修正
$ sudo vi /etc/apache2/conf-available/security.conf

36 ServerSignature Off
37 # ServerSignature On

と変更。この ServerSignature が On にしてあると、エラードキュメントに WEB サーバーの情報が出力されてしまします。OSとか分かるのはちょっと...

image

###3. phpMyAdmin動作確認
webサーバ(Apache)の表示が確認できたら、phpMyAdminを使用可能にするため確認する。

  1. $ cd /etc/apache2 (変更するファイルのディレクトリへ移動)
  2. $ sudo cp -p apache2.conf apache2.conf.org (変更するファイ3. ルのバックアップ)
  3. $ sudo vi apache2.conf(変更ファイルをviエディタで開く)
  4. Include /etc/phpmyadmin/apache.conf (最終行に、追加)
  5. $ sudo /etc/init.d/apache2 restart (Apacheの再起動)
  6. http://[ラズパイのIPアドレス]/phpmyadmin/ (ブラウザのアドレスバーにURLを入力して動作確認する。)
  7. phpMyAdminのログインページが表示されたら成功。

image

###4. PHPの確認
いちよう、PHPが動作しているか確認する。
$ php -v

PHP 5.6.24-0+deb8u1 (cli) (built: Jul 27 2016 00:06:04)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

##3. Dynamic DNSの設定
自宅サーバーの場合、IPアドレスを固定していないと定期的に変わってしまい、サーバーとしては使い物になりません。とはいってもグローバルIP取得にはお金が、、、
なので、コンピュータに割り当てられているIPアドレスが変わったら、それに対応したDNSの情報を自動で更新する仕組みである**DDSNS(Dynamic Domain Name System)**を使用します。

今回はMyDNS(DDNS)を使用します。

###1. MyDNSに登録する
JOIN INから基本情報を入力。メールにてMasterIDとPasswordの通知が来るのでそれでログインする。
image

###2. DDNSを取得する
DOMAIN INFOよりDDNSの取得を行う。赤枠を記入。Hostnameは*でいい。詳しくはサイト上に書いてあるのでそれに沿って記入する。
キャプチャ3.PNG

MyDNS側の設定はこれで終了。

###3. MyDNS.JPにIPアドレスを定期的に通知する設定をする。
設定にはddclientを使用することが一般的?以下参照
ddclientとは
自宅サーバを作ろう! - MyDNS

いろいろ調べてもMyDNSとddclientは相性が悪いみたい。実際にやってみてうまくいかない...

Linux の cron でコマンドでもできるみたい。
MyDNS.jp の DDNS 更新を cron で行う

URLに対して、午前3時に更新を行うように設定。はじめは10分おきに更新としていたが、そんなに必要ないらしい。
(表記は minute hour week month)

$ crontab -e
0 3 * * * wget -q -O /dev/null http://(mydns.jp のマスターID):(mydns.jp のパスワード)@www.mydns.jp/login.html

MyDNSのログを確認すると...

00:15 JST DNSINFO UPDATE : ip***********
2016/09/11 20:00:15 JST 	IPv4 UPDATE : *********, ip******** , http, asia 

\○_ヒャッ ε=\_○ノ ホーウ!!

終わり。

70
75
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
70
75

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?