イントロダクション
シングルボードコンピューター、ラズベリーパイをご存じの方は多いと思いますが、知らない人のために簡単に「こんなものもです」という動画を引っ張ってきました。以下のものは、サンプルです。
用途その1:ロボットを動かす
用途その2:ゲーム機にする
用途その3:メディアプレーヤーにする
用途その4:ウェブサーバーにする
今回のやりたいこと
表題の通りに、以下の設定を行いました。
- ラズパイにリモートデスクトップでアクセスできるように設定
- ラズパイを起動したときにウェブサーバーが起動する ※インストール時に、自動起動する設定を行ってくれるようなので、実際にやったことは、インストールとPHPの設定のみ。
ちなみに、コマンドでOSを終了するときは以下のコマンドです。
sudo shutdown now
Index
- ラズパイにリモートデスクトップ接続
- ラズパイのセッティング
- ウェブサーバーのインストール
- PHPのインストール
- ウェブサーバー(Apache2)の設定
- ウェブサーバー(NGINX)の設定
- Javaのインストール
- Wifiの設定
- iPhoneをルーターの代わりにする
- MavenのインストールとJavaFXのインストール
ちなみに以下のアプリ(コマンド)はインストール済みでした。
- gitコマンド
-
Apache(アパッチウェブサーバー)
※ラズパイ起動時に自動で起動していました。参考サイト一覧
- Apach2コマンド操作について
- Apache2 + php + MongoDBの設定
- Apache2 + PHPの設定
- Apach2名前ベースのバーチャルホスト
- ラズパイページ
- NGINX設定のラズパイページ
ハマったところ
ブラウザにキャッシュが残っていて、修正自体は問題ないが、修正が反映されていない事件があったので
「おかしい!」と思ったらブラウザの履歴を削除してみるのもよいと思います。
テキストエディタNano
nanoコマンドでのテキストエディタをお勧めします。
その理由は、操作方法法が下に表示されているから。。。
終了するのはウィンドウズのキーボードならcntroll + Xで終了になります。
つまり「^」はcontrollボタンに相当するわけです。
行番号の表示
修正対象ファイル:/etc/nanorc
set linenumbersのコメントアウトを解除する
Access RPi
ラズパイにリモートデスクトップ接続する方法
こちらのサイトを参考に実行してみました。
RPi Setting
ラズパイのセッティングを行います。
-
ラズパイを起動して、コマンド画面(Terminal)を開きます。
-
以下のコマンドを入力、Enterを押下
sudo apt-get install tightvncserver -y
コマンドの実行中にy/nの入力を求められるので「y」を入力します
-
同様に以下のコマンドを入力
sudo apt-get install xrdp
-
上のコマンド実行が終わったら、ラズパイの使用しているネットワークとIPアドレスを調べます。※192.168.0.10とあります。
具体的には、下のような形で確認、メモします。
- Terminalで「ifconfig」とコマンドを入力すると上のように表示されるので、以下のパターン別に見分けます。
- LANケーブルの場合: eth0:の部分にある「inet」をみる。ちなみに上のキャプチャはWifi接続なので「inet」の部分がありません。
- Wifi接続の場合: wlan0:の部分にある「inet」をみる。キャプチャには接続しているので「inet」があります。そして「192.168.0.12」と表示されています。これをメモリます。
- Terminalで「ifconfig」とコマンドを入力すると上のように表示されるので、以下のパターン別に見分けます。
-
改めてWindowsを立ち上げ、ラズパイは、ディスプレイを接続しない形で、再度立ち上げなおし(起動しなおし)「アクセサリ -> リモートデスクトップ接続」のようにアプリを起動します。
-
下のような画面が出るので先ほどメモしたIPアドレスを入力します。
そして接続してみると下のような画面が見れます。
これで、今後ラズパイ用ののディスプレイ、キーボードなどを用意しなくても、Windowsからリモートでラズパイを操作することができます。一応ですが、
ラズパイの電源は入れ、ネットワークの接続を行う必要があります。
Install Web Server
ウェブサーバーのインストールを行います。参考サイトはこちら
しかし、Raspberry Pi Imagerでインストールしたもの(OS)には、Apacheが初めからインストールされているようで、さらにラズパイ起動時にウェーブサーバーも起動してくれるようになっていたんで今更インストールしなくてもよいかもしれません。。。
- 以下のコマンドを叩きます(入力してEnter押下)
sudo apt-get install nginx
インストールが終了したら。。。
- 下のコマンドでサーバーを起動します。※自分の場合はインストールしたら起動していました。。。
sudo /etc/init.d/nginx start
ブラウザで「localhost」と入力すれば確認できます。
逆に停止するときは下のコマンドです。
sudo /etc/init.d/nginx stop
インストールした時点で、自動起動する設定も反映されるようなので、もともと入っているApacheを使用しなくてもよいようです。
Install PHP
みんながよく使用するので(ウェブ系の人々)一応インストールします。あわよくばWordPressもインストールしようか?と思っています。
シンプルに以下のコマンドでインストールできるようです。
sudo apt-get install php
php -v # phpのバージョンを確認後「X」にバージョン番号を対応させる
sudo apt install phpX.X-mbstring
インストールの確認は以下のコマンド
php -v
Setting Apache
ウェブサーバーを起動した後に、自分の作成した画面を表示できるように設定を行います。
そして、以下のパッケージ?が必要なようですのでインストールします。※参考サイトより
sudo apt install apache2-dev # PHP動かすのに必要(と思う)
まずは、サーバーの起動確認
ラズパイの80番ポートを使用しているアプリの確認を行うコマンド。※80の部分を8080に変更すれば、8080晩ポートの確認ができる
nc -v -w ラズパイのIPアドレス -z 80
そして、ブラウザでIPアドレスにアクセスしてみると下のように表示されました。
Apache起動と停止コマンド
# 起動
$ sudo service apache2 start
# 停止
$ sudo service apache2 stop
# 再起動
$ sudo service apache2 restart // エラーが出る場合がある
# エラーが出る場合は、stopとstartを別々に動かす方法もある
# 強制的に設定を再読み込みする
sudo /etc/init.d/apache2 force-reload
エラーになったときの対処
エラーメッセージの中に下のような文言があるはず。。。
See systemctl status apache2.service
このコマンドを叩いてみると詳細な情報が表示されました。
自分の場合は下のように叩きました。
sudo systemctl status apache2.service
どうやらIPアドレスがバインド (関連付け)されていないようでした。。。
そして、初めにインストールしたNGINXがポートを使用していたためバインドできないエラーが出ていました。下のコマンドで確認しました。つまるところApacheではなくNGINXが動いていた。。。ということでした(笑)
sudo netstat -tlnp
設定の変更
ファイルを修正する前には必ずバックアップを取りましょう
- 修正対象ファイル: /etc/apache2/apache2.conf
バックアップを取るのには以下のコマンド# cp コピーするファイル コピー後のファイル cp /etc/apache2/apache2.conf /etc/apache2/bakup.apache2.conf
エラーページの設定
下のような文字列を追記する
<VirtualHost *:80>
# 404エラーのとき、/error/404.htmlを表示する
ErrorDocument 404 /error/404.html
ErrorDocument 403 /error/403.html
</VirtualHost>
-
修正対象ファイル: /etc/apache2/site-available/000-default.conf
<VirtualHost *:80> # /var/www/htmlディレクトリをドキュメントルートとする設定 DocumentRoot /var/www/html </VirtualHost>
デフォルト(初期)設定で上のようになっているのでそのままにしようと思います。。。
-
PHPの設定を行う
PHPのインストールを確認後に作業してください
以下のコマンドを実行します。使用している(インストール済みの)PHPのMODを下のコマンドで「php~.load」があるか確認してください、なければa2enmodコマンドで有効にしてくださいls -l /etc/apache2/mods-enabled
有効にするモジュール(MOD)
sudo a2enmod rewrite sudo a2enmod suexec sudo a2enmod include sudo a2enmod fcgid
-
修正が終わったらサーバーを再起動します。
$ sudo service apache2 stop $ sudo service apache2 start
Setting Nginx
Apacheの時と同様に、PHPの設定を行います。
ドキュメントルートはApacheと同様なので、割愛します。
PHPの設定
PHPを使用するのにphpX.X-fpmを使用するようなので今回は下のようにインストールしました。
sudo apt-get install php7.3-fpm
設定ファイルの修正
参考サイト
修正対象ファイル: /etc/nginx/sites-enabled/default
- 下のようになっている行を
index index.html index.htm;
次のように修正
index index.php index.html index.htm;
そしてPHP部分の修正、下のようになっている所の{}のなかを
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
# location ~ \.php$ {
下のように修正
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
}
そして、下のようなエラーが出る場合「nginx.conf」or「nginx/sites-enabled/default」
のファイルに下のような文字列が記述されているのでどちらかをコメントアウトします。
ちなみに自分の場合はdefaultの方を修正しました。
#listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;
Install Java
Javaのインストール配下のコマンドでOK、下のようなコマンドでインストールを行います。
参考サイトはこちらです
sudo apt install default-jdk
しかし、インストールされるのはOpenJDK11, 8なのでネットワーク環境の良いところで実行してください。
でないと、自分のように何時間も待つ羽目になります。。。
そして、実行してみたところ上のコマンドの次に
sudo apt install openjdk-8-jdk
を実行し、使用するJDKの選択を行う必要がありました。
sudo update-alternatives --config java
そして、JDK8を選択、javaコマンドが起動できました。
Wifi Setting
Wifiの設定を行います。
参考サイトはラズパイのページです。
wifiの接続先検索コマンド
- ifconfigコマンドで、「wlan」という文字列を探します。
- おそらく「wlan0」という文字列が見つけられるので、それを確認
- 以下のコマンドを叩く
sudo iwlist wlan0 scan
これで、接続できるSSIDの一覧を取得できます。
wifiの接続先候補リスト
/etc/wpa_supplicant/wpa_supplicant.conf
上のファイルに接続先候補が記述されています。
なので。。。
wifi接続先候補の確認
以下のコマンドを叩きます。
cat /etc/wpa_supplicant/wpa_supplicant.conf
そしてこれを編集したいときは
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
しかし、これは新しい接続先に画面から接続したらプログラムがこのファイルに書き込んでくれるので「不要なものを削除する」のがメインになりそうです。
Use iPhone for router
iPhoneをルーター代わりにする
ラズパイ上のウェブサーバーを起動しても、ネットワークがつながらないと、話になりません。
そこで、携帯をルーターの代わりにする方法を記載しておきます。
-
設定をタップ
-
インターネット共有をタップ
-
インターネット共有をONにする
-
ちょっと待つ
これで、iPhoneをルータの代わりにできます。あとは、ラズパイでiPhoneにwifi接続してやれば、ウェブサーバーにアクセスできます。通信費は携帯のものを使用するので注意が必要です。
Install Maven JavaFX
ちなみに、JavaFXは下のようなGUIアプリケーションを作成することができます。
画面上のPNG画像を動かして、画面の下部分に文字を表示したりしています。
Mavenのインストール
こちらの記事にも記載しましたが、下のコマンド一発でインストールできます。
sudo apt-get install maven
JavaFXのインストール
参考サイトはこちら
そして、apt-get instll でインストールしたのなら
/usr/lib/jvm
以下に、JDKがインストールされているはずです。
-
JDKのインストール
sudo apt update
sudo apt install openjdk-8-jdk -
JDKの確認と選択
sudo update-alternatives --config java
-
/etc/environmentファイルを修正する
JAVA_HOME="javaのインストールしているパス"
具体的には下のようにJDKを確認・指定します。
そして、
sudo nano /etc/environment
でファイルに以下の文字列を書き込みます。
JAVA_HOME="usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java
- GluonからJavaFX SDKをダウンロード
このページからダウンロードできます。そしてダウンロードしたら適当な場所に解凍します。自分の場合は、ダウンロードフォルダに解凍しました。
以下のように配置(インストール)するようです。
解凍したフォルダ(コピー元) | JDKのパス(コピー先) |
---|---|
armv6hf-sdk/rt/lib/ext/jfxrt.jar | jre/lib/ext/ |
armv6hf-sdk/rt/lib/arm/* | jre/lib/arm/ |
armv6hf-sdk/rt/lib/javafx.platform.properties | jre/lib/ |
armv6hf-sdk/rt/lib/javafx.properties | jre/lib/ |
armv6hf-sdk/rt/lib/jfxswt.jar | jre/lib/ |
実行結果
これで、GithubからPULLしたソースをビルドできる
mvn install
しかし、リモートデスクトップ接続の状態ではXサーバーの問題でうまく動かないようです。
<未解決>
ラズパイを単体で起動、確認してみます。
でわでわ。。。
関連ページ一覧
Eclipse セットアップ
- Java Install Eclipse〜開発ツールのインストール〜
- TensorFlow C++環境〜EclipseにCDTをインストール〜
- Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
- Eclipse Meven 開発手順〜プロジェクトの作成〜
- Java OpenCV 環境セットアップ(on Mac)
- Eclipse SceneBuilderを追加する
- JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
Java Basic一覧
- Java Basic Level 1 〜Hello Java〜
- Java Basic Level2 〜Arithmetic Calculate〜
- Java Basic Level3 〜About String class〜
- Java Basic Level 4〜Boolean〜
- Java Basic Level 5〜If Statement〜
- Java Basic Summary from Level1 to 5
- Java Basic Level 6 〜Traning of If statement〜
- Java Basic Level8 〜How to use for statement〜
- Java Basic Level 8.5 〜Array〜
- Java Basic Level 9〜Training of for statement〜
- Java Basic Level 10 〜While statement 〜
- Java Basic Swing〜オブジェクト指向〜
- Java Basic Swing Level 2〜オブジェクト指向2〜
- サンプル実装〜コンソールゲーム〜
- Java Basic インターフェース・抽象クラスの作り方
- Java Basic クラスとは〜Step2_1〜
- Java Basic JUnit 〜テストスイートの作り方〜
Git関連
- Java Git clone in Eclipse 〜サンプルの取得〜
- Eclipse Gitリポジトリの取得 〜GitからソースをPullしよう〜
- IntelliJ IDEA Git〜Gitリポジトリからクローン〜
JavaFX関連ページ
- Eclipse SceneBuilderを追加する
- JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
- JavaFX SceneBuilder〜ボタンにメソッドを割り当てるワンポイント〜
- Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜
ステップアップ関連ページ一覧
- Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
- ステップアッププログラミング〜Java FxでHelloWorld解説〜
- Java StepUpPrograming〜JavaFX で四則計算〜
- Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
- Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
- Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
- Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
- Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine
JavaFX + ND4Jで機械学習準備
- JavaFX + ND4J〜数学への挑戦1:ND4Jのインストール〜
- JavaFX + ND4J〜数学への挑戦2: 行列の計算〜
- Java + ND4J 〜数学への挑戦3: ベクトル(配列)の作成方法〜
オブジェクト指向関連ページ
- [オブジェクト指向の概念1〜OracleDocのチュートリアル1〜](https://zenryokuservice.com/wp/2019/10/301. /%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%81%ae%e6%a6%82%e5%bf%b5-%e3%80%9coracledoc%e3%81%ae%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab%ef%bc%91/)
- オブジェクト指向の概念2〜クラスとは〜