Raspberry Piでサーバーを立ててWebサイトを表示させる方法

前置き

サーバーを構築する機会があり、その予行練習でRaspberry piを使いWebサーバーを立ててみました。
今回は立てたサーバーでPHPファイルが実行できれば成功です。

環境

PC:Mac book Pro
Raspberry pi 4

設定の流れ

  1. MacからRaspberry Piに接続
  2. Webサーバーを立てる
  3. FTPサーバーを立てる
  4. MariaDBをインストール
  5. phpMyAdminをインストール

サーバーの設定をしていく

Mac からRaspberry Pi に SSH接続

ラズパイからコマンドを開き、直接設定をしてサーバーを立てることもできますが、
設定しながら調べられるようにPCからラズパイにSSH接続を行い、PCからラズパイを操作していきます。

Raspberry Pi の SDカードにSSH接続ファイルを作成

ラズパイのSDカードをPCに読み込ませ、PC側のコマンド((ターミナル) ※コマンドに統一します。)を開き、SDカードにアクセスします。
下記のコマンドを実行することにより、SSH接続ファイルが指定のディレクトリ下に作成されます。

touch /Volumes/boot/ssh

ちなみに、touchコマンドを使うと指定のディレクトリにファイルが作成されます。

MacからRaspberry piにSSH接続を行う

ラズパイには既にWi-Fi設定をしており、ネットワークに接続してある状態です。
ラズパイを起動し、ラズパイのIPアドレスを取得します。
ここだけはラズパイのコマンドを開き、調べなければなりません。
以下のコマンドを打ち込むとIPアドレスが取得されます。

hostname -I

IPアドレスを取得したら、PC側のコマンドに以下を打ち込みラズパイに接続します。
「@192.x.x.x」にはラズパイのIPアドレスを入れてください。
「pi」の部分はユーザーネームですが、デフォルトは「pi」なのでユーザーネームを設定した覚えが無い人は「pi」を入力してください。

ssh pi@192.x.x.x 

上記で接続できると、パスワードを求められます。
デフォルトは「raspberry」らしいのですが、自分は自分のパスワードをラズパイで設定していました。

ログインが完了すると以下のようにPC側で、ラズパイのコマンドが使えるようになり、SSH接続は完了です。

pi@raspberrypi:~ $
参考サイト
MacBookからRaspberry PiにSSH接続する - Qiita
Raspberry Piを購入した電気電子工学科の大学生です。モニターを持っているものの有線のキーボードやマウスを持っていなかったのでMacBookからプライベートネットワーク内に存在し、外部に公開…
Raspberry Pi Model B をMacでSSH接続してみた

Webサーバーを立てる

次に様々なパッケージをインストールしていくのですが、その前にラズパイの環境を最新にします。
以下のコマンドを実行するとシステムのパッケージ情報を更新し、更新可能なすべてのパッケージをアップデートしてくれます。

sudo apt update && sudo apt upgrade

Apache2 をインストール

以下のコマンドを実行し、Apache2をインストールします。

sudo apt install apache2

インストール後、Chrome等で、「http://192.x.x.x」(192.x.x.x はラズパイのIPアドレスです。)で検索するとApache2の画面が表示されます。

FTPサーバーを立てる

次にFTPサーバーを立てていくのですが、FTPサーバーはファイル転送を行なってくれるサーバーです。FTPサーバーを立てることにより、PC側からFTPソフト(FileZilla など)を使用して、ラズパイにファイルをアップロードできるようになります。

vsftpd をインストール

以下のコマンド FTPサーバーを立てるための vsftpd パッケージをインストールします。

sudo apt install vsftpd

vsftpd を設定

vsftpdの設定ファイルを編集してFTPサーバーを設定します。
以下のコマンドで設定するファイを開きます。

sudo nano /etc/vsftpd.conf

以下の情報を加えて保存してください。

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

設定の値を説明すると、

  • anonymous_enable=NO
    匿名ユーザーによるFTPアクセスを無効化します。
  • local_enable=YES
    ローカルユーザーによるFTPアクセスを許可します。
  • write_enable=YES
    ローカルユーザーがファイルの書き込みを許可されます。
  • chroot_local_user=YES
    ローカルユーザーがFTPセッション中に自分のホームディレクトリに制限されます。
  • allow_writeable_chroot=YES
    ディレクト内の書き込みを許可します。

設定が完了したら、以下のコマンドを実行しFTPサーバーを再起動します。

sudo systemctl restart vsftpd

PC側のFTPソフトで接続

ここでは File Zilla ソフトを使用してラズパイのFTPサーバーに接続します。
以下の情報を入力すると接続することができます。

ホスト:ラズパイのIPアドレス( hostname -I のコマンドで確認が可能です。)
ユーザー:ラズパイのユーザー名
パスワード:ラズパイのパスワード

ラズパイのユーザー名は以下のコマンドから確認することができます。

whoami

接続できたら完了です。

接続ディレクトリの変更

ここまででラズパイのファイルに接続できたのですが、「Document」や「Desktop」等が置かれているホームディレクトリになっています。

Apache2でWebサーバーを立てているため、ラズパイの「/var/www/html/」ディレクトリ下にPHPファイルを配置しなければなりません。

そのため、接続するディレクトリを変更する必要があります。
以下のコマンドで先ほど設定した vsftpd の設定ファイルを開きます。

sudo nano /etc/vsftpd.conf

下記の「※この行を追加」の部分を加えてください

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
local_root=/var/www/html/ ※この行を追加
allow_writeable_chroot=YES

「local_root=/var/www/html/」を加えることにより、FTP接続時に表示されるディレクトリが変更されます。

注意点

FTPの設定ではローカル環境かつテスト環境を想定しているため、十分なセキュリティ対策ができていません。本番環境等で設定する場合は証明書の発行等が必要なため、気をつけてください。
この設定で外部からアクセスした場合、通信内容が丸見えですので絶対にローカルな環境でのみ行なってください。

MariaDB のインストール

PHPを使うにあたり、phpMyAdminを使用したいのですが、phpMyAdminをインストールする前にデータベースのインストールが必要です。

簡単に説明しますと、MariaDBhはデータベースサーバーであり、phpMyAdminはデータベース管理ツールです。

MariaDBのインストール

以下のコマンドでMariaDBをインストールします。

sudo apt install mariadb-server

MariaDBのセキュリティ設定

以下のコマンドを実行し、MariaDBのセキュリティ設定を行います。

sudo mysql_secure_installation

行う設定は、

  • Change the root password? [Y/n](root権限のパスワードを変更するか)
    →変更してください。
  • Remove anonymous users? [Y/n](匿名ユーザーを削除するか)
    →削除してください。
  • Disallow root login remotely? [Y/n] (リモートでrootユーザーでログインを許可するか)
    →許可してください。
  • Remove test database and access to it? [Y/n](テストデータベースを削除するか)
    →削除してください。
  • Reload privilege tables now? [Y/n](テーブルをリロードするか)
    →リロードしてください。

以上でMariaDBの設定は完了です。

参考サイト
MySQL 5.7 をインストールしたら最初に行うセットアップ |
WEBシステム開発のノウハウを蓄積・共有するウェブサイトです。 Ruby, PHP, Java, Apache, nginx, MySQL, Vagrant などの構築方法について詳しく解説します。

phpMyAdmin のインストール

phpMyAdminのインストール

以下のコマンドからphpMyAdminをインストールします。

sudo apt install phpmyadmin

インストール中、「phpMyAdminを動作させるWebサーバーを選択してください」というメッセージが出てきますが、最初にインストールしたWebサーバーの「apache2」を選んでください。

また、「dbconfing-commonを設定するかどうか」というメッセージが出てきますが、
こちらは「はい」を選んでください。

他にもphpMyAdminで使用するパスワードを登録したりします。

WebサーバーにphpMyAdminを組み込む

以下のコマンドを実行して、Apache2 に phpMyAdminを組み込みます。

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo systemctl reload apache2

上記のコマンドを簡単に説明すると、

  1. sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
    →phpMyAdminの設定をApacheに組み込んでくれます。
  2. sudo a2enconf phpmyadmin:
    →ApacheがphpMyAdminの設定を読み込んでくれます。
  3. sudo systemctl reload apache2
    →新しく追加されたphpMyAdminの設定をApacheに適用してくれます。

phpMyAdminにログイン

http://192.x.x.x/phpmyadmin
にアクセスすると、phpMyAdminのログイン画面が表示されるようになります。

ここで、phpMyAdminのログインをするのですが、なぜか自分は上手くログインできませんでした。
そこで、ログインできるよう設定していきます。

phpMyAdminにログインできない場合の対処法

以下のコマンドでphpMyAdminの設定ファイルを開きます。

sudo nano /etc/phpmyadmin/config.inc.php

以下のコードのコメントアウトを外してください。
以下のコードをコメントアウトすることにより、パスワードが無くてもphpMyAdminにログインできるようになります。

$cfg['Servers'][$i]['AllowNoPassword'] = true; //コメントアウトを外す

編集が完了したら保存してください。

次にMariaDBのroot権限のパスワードを一旦削除します。
以下のコマンドでMariaDBにログインしてください

mysql -u ユーザー名 -p

上記を実行するとパスワード入力が促されるので入力してください。

次に以下のコマンドを実行し、root権限のパスワードを削除してください。

MariaDB [(none)]>set password for root@localhost=password('');

コマンド実行後、以下のコマンドからMariaDBを再起動してください。

sudo systemctl restart mariadb

再度、phpMyAdminのログインフォームに行くと以下の情報でログインできるようになっていると思います。

ユーザ名:root
パスワード:(記入なし)

phpMyAdminログイン後、rootユーザーのパスワードを再設定します。
phpMyAdminのSQLから以下のクエリを実行してください。
「newpassword」の部分には新しいパスワードを入れてください。

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');

ユーザーを追加したい場合は以下のクエリから追加することができます。
「newuser」の部分にはユーザー名、「newpassword」の部分には新しいパスワードを入れてください。 ※必須設定ではありません。

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'newpassword';

最後に必ず、先ほど有効化したphpMyAdminの設定を元に戻してください。

以下のコマンドから再度phpMyAdminの設定を開きます。

sudo nano /etc/phpmyadmin/config.inc.php

以下のコードをコメントアウトし、再度保存します。

//$cfg['Servers'][$i]['AllowNoPassword'] = true; //コメントアウトする

あとは、phpMyAdmin側でテーブルデータを作成しPHPを実装して、ラズパイの「/var/www/html/」ディレクトリ下にFTPソフトでファイルをアップロードして「http://192.x.x.x/phpファイルのディレクトリ」にアクセスすれば、ラズパイ上にあるデータを取得することができます。

PHPファイルにアクセスできない場合

「http://192.x.x.x/phpファイルのディレクトリ」でアクセスした際、「Not Found」が表示された場合、ファイル権限の設定を確認してください。
以下のコマンドから「/var/www/html」ディレクトリ内のファイル権限が確認できます。

ls -l /var/www/html

他のユーザーが読み取り権限がない場合、以下のコマンドで権限を付与できます。

sudo chmod -R o+r /var/www/html/
参考サイト
Raspberry Pi OS(旧Raspbian)にphpMyAdminをインストール
Raspberry Pi OSへLAMP(PHP、Apache、MariaDB)のインストールが進んだところで、いよいよphpMyAdminをインストール。RasbianではリポジトリからphpMyAdminをインストールすることができます。

終わりに

以上、ラズパイでWebサーバーを立ててPHPファイルにアクセスしました。
今回の設定は、サーバーを立てる際の基礎知識であり、本番環境で一から実装するためには、まだまだセキュリティ対策が必要です。

ただ、サーバーを自分で立てる良い学習になります。

※本番環境や外部からのアクセスを想定する場合、必ず各設定のセキュリティ対策の知識をつけてから行なってください。最悪の場合、サーバーまたはネットワークに侵入される恐れもあります。

タイトルとURLをコピーしました