ラズパイで作る自宅WEBサーバ構築
第13回 Windowsパソコンに開発環境を作る 2019.12.03
YouTube 動画でポイントを説明しています。上記画像をクリックすると再生できます。
今回は、WEBコンテンツ制作およびテスト環境をWindowsパソコン内に構築します。
凝ったサイトでなければ、Windowsパソコン内で検証できない箇所はメール関連と、Apache WEBサーバーのREWRITE設定程度です。
開発環境で作成されたコンテンツは変更なしに、ラズパイ・WEBサーバに転送して使えます。
また、さきに「第4回 Apache WEBサーバ設定」を読まれると、理解しやすいと思います。
作成したソースコードを修正なしに公開WEBサーバーで使用するためには、ダウンロードするアプリケーションのバージョンは、公開WEBサーバーの各種パッケージのバージョンに合わせるようにしましょう。
お使いのWindows環境に合わせて、64bit版あるいは32bit版をダウンロードしてください。
◇Apache2.4 インストール

Windows版Apacheをダウンロードします。
https://www.apachelounge.com/download/
ダウンロードした「httpd-2.4.23-win64-VC14.zip」を展開して中にある「Apache24」を任意のディレクトリに配置します。
ここでは、c:\usr\local\Apache24 に配置した場合で説明します。
c:\usr\local\Apache24\conf 内にある設定ファイル http.conf を開き修正します。
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 "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>
ログ用フォルダを作成します。
C:/usr/local/Apache24/logs/example
◇MySQL 5.7 のインストール
Visual Studio 2013 の Visual C++ 再頒布可能パッケージのインストール

https://www.microsoft.com/ja-jp/download/details.aspx?id=40784
vcredist_x64.exe を実行してインストールします。
MySQL ダウンロード

https://dev.mysql.com/downloads/mysql/5.7.html
Windows (x86, 32 & 64-bit), MySQL Installer MSI 横の
「Go to Download Page」をクリック
Windows(x86, 32-bit), MSI Installer 5.7.27 424.6M 横の
「Download」をクリック
「No thanks, just start my download.」をクリックして、
mysql-installer-community-5.7.26.0.msi をダウンロードします。
ダウンロードしたインストーラを実行します。
以降、ポイントのみを説明します。

「Choosing a Setup Type」で Custom を選択します。

「Select Products and Features」で MySQL Server 5.7.26 のみを選択します。

「Path Conflicts」で
Install Directory: Data Directory:
にインストールするディレクトリを指定します。
データディレクトリがわかりやすいように下記を指定しました。
Install Directory:c:\usr\local\MySQL
Data Directory:c:\usr\local\MySQL

「High Availability」で
Standalone MySQL Server / Classic MySQL Replication
を選択します。

「Type and Networking」の Config Type: で
Server Computer
を選択します。

「Accounts and Roles」の MySQL Root Password: はラズパイに MySQL をインストールする際に設定したrootパスワードと同じにします。
MySQLはアンインストールしたときに、Windowsサービスが削除されないまま残ってしまうことがあります。
この状態で再インストールしようとすると、以前のサービス名でインストールすることができません。
スタート ⇒ コントロールパネル ⇒ 管理ツール ⇒ サービス でサービスの一覧を表示させます。
対象のサービスを探して、右クリック ⇒ プロパティ を開きます。「サービス名」を確認します。「表示名」ではないので注意しましょう。
コマンドラインで、
sc.exe delete [サービス名]
これで削除されます。
C:\usr\local\MySQL\my.ini 編集
[mysqld]
default-storage-engine=INNODB
↓
default-storage-engine=MyISAM
character-set-server = utf8 ← 追加
skip-innodb ← コメントを外し有効にする(innodbを無効にする)
[mysql]
default-character-set=utf8 ← 追加
トランザクション処理を必要としなければ、ISAMで十分対応できると思います。
試行錯誤でWEBサイトを構築していく際には、データベースのテーブル定義も頻繁に変更が発生します。
他のテーブルと複雑な関連付けをしないISAMで作成すると、1つ1つのテーブルは独立していて、
すっきりとしたテーブル設計ができると思います。
システムの環境変数にパスを通します。
C:\usr\local\MySQL\bin
サービスから MySQL57 を再起動します。
◇Windows版 PHPインストール
PHP 7.2 をインストールする前に、PHP 7.2 を動作させるのに必要となるランタイム・ソフトウェアをインストールします。 PHPの公式サイトで配布している PHP のバイナリを動かすには、Visual C++ 2015 ランタイムが必要です。(Windows10では既にインストールされているかもしれません)

https://www.microsoft.com/ja-jp/download/details.aspx?id=48145 (vc_redist.x64.exe)
PHP 7.2 のダウンロード

https://secure.php.net/
php-7.2.18-Win32-VC15-x64.zip
ダウンロードした zip ファイルを展開し、展開したフォルダの名前を「php7」に変更します。
c:\usr\local\php7 に配置した場合で説明します。
php7 フォルダの配下にある php.ini-production ファイルをコピーして php.ini というファイル名にします。
拡張ライブラリは必要に応じて設定してください。
c:\usr\local\php7\php.ini の編集
date.timezone = "Asia/Tokyo"
default_charset = "UTF-8"
extension_dir = "ext"
extension=curl
extension=gd2
extension=imap
extension=ldap
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
Windowsの環境変数の設定
[コントロールパネル]→[システム]→[システム環境変数]→Path
c:\usr\local\php7 ← 追加
Windows Apache の設定 (C:\usr\local\apache24\conf\httpd.confの編集)
PHPIniDir "c:\usr\local\php7"
LoadModule php7_module c:/usr/local/php7/php7Apache2_4.dll
AddType application/x-httpd-php .php
※Windowsの環境変数 PATH に c:\usr\local\php7 を追加することでdllの移動は必要ありません
Apacheをサービスとして起動します。
C:\usr\local\Apache24\bin>httpd.exe -k install
※コマンドプロンプト(管理者)で実行します。
◇ファイル転送ソフト WinSCP のインストール

https://winscp.net/eng/download.php
→ WinSCP-5.15.3-Setup.exe
SSH接続でファイル転送を行うアプリケーションです。Windows環境で制作したプログラムを、公開WEBサーバーにアップロードするのに使用します。
◇WEBコーディング
公開WEBサーバーと開発環境WEBサーバーの違いは、アクセスするURLです。
ベタな静的サイトを作るのであれば、URLを相対パス指定すれば済んでしまうのですが、
構造化されたサイトを作るのであれば、URLの違いを吸収するための設定ファイルが必要となります。
構造化サイトはURLに付加された引数により制御され、柔軟性が格段に飛躍します。

それでは、URLの違いについて、構成図をもとに説明します。
ブロードバンドルーターの外側、インターネットから公開WEBサーバーにアクセスする場合はドメイン名を指定します。
http://example.jp/index.php
ルーター内側の開発環境であるノートパソコンから公開WEBサーバーにアクセスする際には、ローカルIPアドレスでの指定になります。
http://192.168.11.21/index.php
Windows開発環境のWEBサーバーにアクセスする際は、自分自身のローカルIPアドレスあるは127.0.0.1になります。
http://192.168.11.20/index.php
これらの相違を吸収して、ソースコードの変更なしに実装するために環境設定ファイルを作成します。
環境設定ファイルは、直接WEBアクセスできない、武装領域に配置するので、.htaccess などでパスを指定します。
【d:\home\example\www-root\.htaccess】
DirectoryIndex index.php
php_value include_path .;d:\home\example\program
環境設定ファイル(config.php)は下記のようになります。
【d:\home\example\program\config.php】← WEBから直接アクセスできないフォルダー
<?php
if ($_SERVER['SERVER_ADDR']=='192.168.11.21') {
if ($_SERVER['REMOTE_ADDR']=='192.168.11.20') {
$__DOMAIN = '192.168.11.21';
} else {
$__DOMAIN = 'example.jp';
}
}
if ($_SERVER['SERVER_ADDR']=='192.168.11.20') {
$__DOMAIN = '192.168.11.20';
}
if ($_SERVER['SERVER_ADDR']=='127.0.0.1') {
$__DOMAIN = '127.0.0.1';
}
?>
トップページに下記のような、アクセスマップへのリンクを貼ったとしましょう。
【d:\home\example\www-root\index.php】
<?php
require_once('config.php');
....
<a href="http://<?php echo $__DOMAIN ?>/index.php?op=map">MAP</a>;
...
?>
インターネットからアクセスした場合には
<a href="http://example.jp/index.php?op=map">MAP</a>
ルーター内側のパソコンからアクセスした場合には
<a href="http://192.168.11.21/index.php?op=map">MAP</a>
Windows開発環境(自分自身)にアクセスした場合には
<a href="http://192.168.11.20/index.php?op=map">MAP</a>
に展開されます。
※実際の運用では、ユーザー定義変数をそのままの形では使用しませんが、理解しやすいように簡素化しています。
|