ラズパイで作る自宅WEBサーバ構築
第13回 Windowsパソコンに開発環境を作る
以前、ラズパイで作る自宅WEBサーバ構築(ubuntu 18.04版)の際に、
WEBコンテンツ制作およびテスト環境をWindowsパソコン内に構築しました。
あれから3年以上経過しているので、Windowsテスト環境を再構築しました。

ブロードバンドルーターの外側、インターネットから公開WEBサーバーにアクセスする場合はドメイン名を指定します。
http://example.jp/index.php
ルーター内側の開発環境であるノートパソコンから公開WEBサーバーにアクセスする際には、ローカルIPアドレスを指定します。
http://192.168.11.21/index.php
Windows開発環境のWEBサーバーにアクセスする際は、自分自身である 127.0.0.1を指定します。
この開発環境で制作したコンテンツは動作確認後に本番環境に転送します。
http://127.0.0.1/index.php
開発環境の設定です。コンテンツ本体や環境設定ファイルは、直接WEBアクセスできない武装領域に配置するので、.htaccess などでパスを指定します。
【d:\home\example\www-root\.htaccess】
DirectoryIndex index.php
php_value include_path .;d:\home\example\contents
【d:\home\example\www-root\index.php】
<?php
require_once('contents_01.php');
?>
コンテンツ本体ファイル(d:\home\example\contents\contents_01.php)は、WEBから直接アクセスできない武装フォルダーに配置します。
外部から直接アクセスできる非武装地帯には最低限のスクリプトを記述し、そこから武装地帯にあるファイルを取り込みます。
このようにすることで、万が一スクリプトが実行されずそのままコードが表示されてしまっても、表示されてしまうのは、
require_once('contents_01.php');
の1行のみで、コンテンツ本体のコードは表示されません。
凝ったサイトでなければ、Windowsパソコン内で検証できない箇所はメール関連と、Apache WEBサーバーのREWRITE設定程度です。
開発環境で作成されたコンテンツは変更なしに、ラズパイ・WEBサーバに転送して使えてしまいます。
今回はWindowsパソコン内のWEB関連アプリを更新します。
| Apache 2.4.23 | → | Apache 2.4.57 |
| MySQL 5.7.26 | → | MariaDB 10.3.32 |
| PHP 7.2.18 | → | PHP 8.2.8 |
お使いのWindows環境に合わせて、64bit版あるいは32bit版を選んでください。
MariaDBはMySQLから派生したRDBMSです。
オープンソースとして登場したMySQLは2010年にオラクル社に買収され、オラクル社の製品群のひとつになりました。
現在MySQLはGPL (General Public License)と商用のデュアルライセンスで提供されています。
このMySQLの作者であるウルフ・ミカエル・ウィデニウス氏(通称:モンティ)によって立ち上げられたオープンソースのRDBMSがMariaDBです。
◇Apache2.4 インストール

Windows版Apacheをダウンロードします。
https://www.apachelounge.com/download/
32bit版は左上の「here」のリンクをクリックします。

https://www.apachelounge.com/viewtopic.php?p=42099
32bit版Windowsの場合はこちらから入手できます。
ダウンロードしたhttpd-2.4.57-win32-VS17.rar (httpd-2.4.57-win64-VS17.zip)を展開して中にある「Apache24」を任意のディレクトリに配置します。
ここでは、c:\usr\local\Apache24 に配置した場合で説明します。
c:\usr\local\Apache24\conf 内にある設定ファイル http.conf を開き修正します。
Define SRVROOT "c:/Apache24"
↓
Define SRVROOT "c:/usr/local/Apache24"
#LoadModule rewrite_module modules/mod_rewrite.so
↓
LoadModule rewrite_module modules/mod_rewrite.so
ServerName www.example.jp:80
DocumentRoot "${SRVROOT}/htdocs"
↓
DocumentRoot "d:/home/example/www-root"
<Directory "${SRVROOT}/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
↓
<Directory "d:/home/example/www-root">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
※上記設定では、コンテンツ本体をローカルディスクに配置していますが、実運用ではインターネットからアクセス禁止しているNAS上に配置して、
複数のパソコンからコンテンツファイルを編集できるようにしています。
ログ用フォルダを作成します。
C:/usr/local/Apache24/logs/example
◇MariaDB 10.3.32
MariaDB ダウンロード

https://mariadb.org/
右上のマークをクリックします

「Download」をクリックします

「Display older release」をチェックして、Windows 10 home 32bit版で使用できるディストリビューションを選択します。
最新LTS版 MariaDB 10.3.32 をダウンロードします。
mariadb-10.3.32-winx32.msi をクリックします。
以降、ポイントのみを説明します。

インストール先ディレクトリーを指定します。

MariaDB の管理者ユーザーである root のパスワードを設定します。
リモートから root でのアクセスは許可されていません。
サーバのデフォルト文字セットを UTF-8 にする場合は「Use UTF8 as default server's character set」にチェックをします。

Windows サービスとしてインストールするかどうか、また MariaDB で使用するポート番号の設定などを行います。デフォルトで大丈夫です。

●my.ini 編集
C:\usr\local\MariaDB\data\my.ini を編集します。
[mysqld]
datadir=C:/usr/local/MariaDB/data
port=3306
default-storage-engine=MyISAM
skip-innodb ← innodbを無効にする
innodb_buffer_pool_size=240M
character-set-server=utf8
[client]
port=3306
plugin-dir=C:/usr/local/MariaDB/lib/plugin
[mysql]
default-character-set=utf8 ← 追加
トランザクション処理を必要としなければ、ISAMで十分対応できると思います。
試行錯誤でWEBサイトを構築していく際には、データベースのテーブル定義も頻繁に変更が発生します。
他のテーブルと複雑な関連付けをしないISAMで作成すると、1つ1つのテーブルは独立していて、
すっきりとしたテーブル設計ができると思います。

システムの環境変数にパスを通します。
C:\usr\local\MariaDB\bin

サービスから MariaDB を再起動します。
◇Windows版 PHP
●PHP 8.2.8 のダウンロード

https://www.php.net/downloads.php
Windows downloads をクリックします

Apache2 で使用するのでThread Safe版の VS16 x86 Thread Safe を選択します。
php-8.2.9-Win32-vs16-x86.zip
c:\usr\bin\php8 ディレクトリを作成して、ここにzip ファイルを展開します。
php8 ディレクトリの配下にある php.ini-production ファイルをコピーして php.ini というファイル名にします。
拡張ライブラリは必要に応じて設定してください。
●php.ini 編集(c:\usr\bin\php8\php.ini)
date.timezone = "Asia/Tokyo"
extension_dir = "ext"
extension=ldap
extension=curl
extension=gd
extension=imap
extension=mbstring
extension=mysqli
extension=openssl
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
●パス設定

システムの環境変数にパスを通します。
C:\usr\bin\php8
●Windows Apache の設定 (C:\usr\local\apache24\conf\httpd.conf 編集)
設定ファイルに下記を追記します。
PHPIniDir "C:/usr/bin/php8"
LoadModule php_module C:/usr/bin/php8/php8Apache2_4.dll
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php .html .htm
※PHP7.4までは php7_module でしたが 8.0 では、php_module にします。
※Windowsの環境変数 PATH に C:/usr/bin/php8 を追加することでdllの移動は必要ありません
●Apache サービス起動

コマンドプロンプトを管理者権限で開きます。

C:\usr\local\Apache24\bin>httpd.exe -k install
Apacheをサービスとして起動します。

●Apache と PHP の連携確認
定番の確認方法は下記の1行スクリプトを書きます。
<?php phpinfo(); ?>
ここで注意が必要です。以前のApacheでは、スクリプトを phpinfo.php という名前で保存して、
ブラウザから http://127.0.0.1/phpinfo.php と打ち込むと、PHPの設定一覧が表示されました。
しかし、ここに落とし穴があります。最近のApacheでは、このファイル名を使うとスクリプトは実行されず、phpinfo.php ファイルがダウンロードされてしまいます。
ファイル名が phpinfo.php でなければ問題なく設定内容が表示されます。
WEBサイト制作会社の中には、開発環境をローカルではなく、ホスティングサービスのドキュメントルートに
わかりずらいディレクトリを作ってそこを開発環境として利用しているようです。
サイトが完成した段階でこのディレクトリ内にphpinfo.phpを残したまま、ドキュメントルートにそのまま移してしまった場合、目も当てられません。
外部から、phpinfo,php を叩かれてあっさりと環境設定情報が流出してしまいます。
最近のApache Webサーバではその辺りに気をきかせて、phpinfo.php というファイル名を特別扱いしているのかもしれません?
●PHP 7.x → 8.x 移行の注意点
call to a member function () on null
PHP8では、クラスと同じ名前のメソッドはクラスのインスタンス作成時に自動的に呼び出されなくなりました。
このため初期化処理の中で設定していた変数に値が設定されなくなっています。
解決するには __construct() メソッドを指定する必要があります。
◇ファイル転送ソフト WinSCP のインストール

https://winscp.net/eng/download.php
→ WinSCP-6.1.1-Setup.exe
SSH接続でファイル転送を行うアプリケーションです。Windows環境で制作したプログラムを、公開WEBサーバーにアップロードするのに使用します。
■参考文献
・MARIADBとは?開発の経緯と特徴
・updating from PHP 7.4 to 8.1: call to a member function () on null
|
Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」
「一念発起して何かを始めても、いつも三日坊主で終わってしまう」
「色んなことを先延ばしにしたまま、時間だけが過ぎていく」
そこで本書では、そんな著者が独自に開発した、
まったく新しい目標達成メソッド「100日デザイン」について、
その知識と技術を、余すところなくご紹介します。
まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。
ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。
今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。
ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。
29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!
【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。
基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。
Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説!
500以上のサンプルを掲載。実行結果も確認。
全24章の包括的なチュートリアル。
ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS…
全WEB媒体で効果バツグン!
カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術
小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。
Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード
電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)
|