LAMP環境構築(FreeBSD11.2, PHP7.4, Apache2.4, MySQL5.7)
仮想環境 Virtual Box にLAMP環境を構築します。PHPプログラマー向けの設定です。
Virtual Box インストール
下記URLより VirtualBox platform packages をダウンロードし、インストール
https://www.virtualbox.org/wiki/Downloads
「Windows hosts」を選択
FreeBSD 11.2 インストール
下記URLより FreeBSD11.2 DVD ISO「FreeBSD-11.2-RELEASE-amd64-dvd1.iso」をダウンロード
https://download.freebsd.org/ftp/releases/ISO-IMAGES/11.2/
Oracle VM VirtualBox マネージャーの「新規」ボタンクリックし、任意の名前を入力し、タイプ:BSD、バージョン:FreeBSD(64-bit)を選択し「次へ」
メモリーサイズはデフォルト(1024MB)で「次へ」
ハードディスクはデフォルト「仮想ハードディスクを作成する」で「作成」
ハードディスクのファイルタイプはデフォルト「VDI(VirtualBox Disck Image)」で「次へ」
物理ハードディスクにあるストレージはデフォルト「可変サイズ」を選択し「次へ」
ファイルの場所とサイズはデフォルトのままで「作成」
設定 > ストレージ > コントローラー:IDE「空」を選択し右上のCDをクリック「仮想光学ディスクファイルを選択」しダウンロードした「FreeBSD-11.2-RELEASE-amd64-dvd1.iso」を選択し「OK」
Virtual Box マネージャから「起動」
FreeBSD のインストール画面が表示
「Install」
「Japanese 106」を選択し「Select」
「SELECT」
任意のホスト名を入力し「OK」
「lib32」「ports」を選択し「OK」
「Auto (UFS)」を選択し「OK」
Partition の選択「Entire Disk」
「GPT」を選択し「OK」
設定した内容を確認して「Finish」
「Commit」してインストール開始
root パスワードの設定(入力文字列は非表示)
確認の為に root パスワードの再入力(入力文字列は非表示)
network を確認し「OK」
IPv4 設定「Yes」
DHCP 設定「Yes」
IPv6 設定「Yes」
SLAAC 設定「Yes」
DNS 設定を確認し「OK」(OK, Cancel はTabキーで選択)
Time Zone「Asia」を選択して「OK」
Country region「Japan」を選択して「OK」
「'JST'」を確認して「Yes」
現在の日付を確認して「Skip」
時間を設定して「Set Time」
起動時に動作するサービスを選択し「OK」
セキュリティを強化するサービス。デフォルトのままで「OK」
root 以外のユーザーを追加。今回は開発環境の為、追加せず「No」
設定の修正、追加ができます。完了したら「Exit」を選択し「OK」
追加設定の選択。今回は「No」
インストール終了。「Reboot」で再起動
※再起動後に FreeBSD のインストール画面が再度表示された場合
・仮想マシンの電源オフ
・設定 > ストレージ > 右上のCDアイコンクリック > 仮想ドライブからディスクを除去 > OK
・起動
root でログイン(パスワードの入力文字列は非表示)後、シャットダウン
login: root
Password:
...
# shutdown -p now
設定 > ネットワーク > アダプター2 >「ネットワークアダプターを有効化」にチェック > 割り当て「ホストオンリーアダプター」を選択し「OK」
FreeBSD を起動しネットワークを設定する
bsdconfig コマンドでシステム設定メニューを開く
# bsdconfig
「Networking Managemant」を選択し「OK」
「Network Interfaces」を選択し「OK」
ネットワークアダプター2(ホストオンリーアダプター) em1 を選択し「OK」
「Save/Exit」を選択し「OK」
・DHCP : Disabled(自動IPアドレスの割当てを無効)
・ipaddr : 192.168.56.110(最後の 110 は任意。1~254の数値を入力)
・netmask : 255.255.255.0
設定したネットワーク em1 を起動「Yes」
gateway 10.0.2.2 が既にルーティングテーブルに存在しているエラーが表示される「OK」
「Networking Managemant」を終了。「Exit」を選択し「OK」
「Exit bsdconfig」でシステム設定を終了
ネットワーク em1 の IP が設定されている事を確認
em1 の inet が 192.168.56.110 になっている事
# ifconfig
em0: flags=...
...
...
em1: flags=...
....
inet 192.168.56.110 netmask ...
....
lo0: flags=...
...
...
Windows(ホスト)のコマンドプロンプトより FreeBSD サーバーへの通信を確認
ping 192.168.56.110
root での SSH ログインを許可する
# vi /etc/ssh/sshd_config
(変更)
#PermitRootLogin no
PermitRootLogin yes
#PasswordAuthentication no
PasswordAuthentication yes
SSH サーバーを再起動
# /etc/rc.d/sshd restart
パッケージアップデート
# pkg update -f
Apache 2.4 インストール
インストールする Apache パッケージを検索
# pkg search apache2
apache24-2.4.48
...
Apache2.4 インストール
# pkg install -y apache24-2.4.48
Apache のバージョンを確認
# httpd -v
Server version: Apache/2.4.48 (FreeBSD)
Server built: unknown
Apache 設定
# vi /usr/local/etc/apache24/httpd.conf
(開発用変更)
EnableMMAP off
EnableSendfile off
(ディレクトリ内のファイル一覧を見られないようにする)
Options Indexes FollowSymLinks
↓ (Indexes 削除)
Options FollowSymLinks
(rewrite を有効にする)
#LoadModule rewrite_module libexec/apache24/mod_rewrite.so
↓ (# 削除)
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
(ssl を有効にする)
#LoadModule ssl_module libexec/apache24/mod_ssl.so
↓ (# 削除)
LoadModule ssl_module libexec/apache24/mod_ssl.so
セキュリティ設定(新規ファイル作成)
# vi /usr/local/etc/apache24/Includes/security.conf
(追記)
# version data delete
ServerTokens Prod
ServerSignature Off
# inode data delete
FileETag None
# response header X-Powered-By delete
Header unset X-Powered-By
# httproxy counterplan
RequestHeader unset Proxy
# click jacking counterplan
Header append X-Frame-Options SAMEORIGIN
# XSS counterplan
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
# XST counterplan
TraceEnable Off
Apache 起動設定
# vi /etc/rc.conf
(追加)
# Apache24 add
apache24_enable="YES"
Apache 起動
apachectl start
Apache 起動確認
# apachectl status
apache24 is running as pid ....
ブラウザから Web サーバーにアクセス。「It works!」が表示されることを確認
http://192.168.56.110
ブラウザでアクセスできない...
・ネットワークにプロキシサーバーを利用している場合:インターネットオプション > 接続 > LANの設定 > 詳細設定 > プロキシの除外設定 に「192.168.56.108」を追加
PHP 7.4 インストール
PHP で必要なパッケージをインストール
# pkg install -y php74-7.4.23 php74-curl-7.4.23 php74-gd-7.4.23 php74-imap-7.4.23 php74-json-7.4.23 php74-ldap-7.4.23 php74-mbstring-7.4.23 php74-openssl-7.4.23 php74-pdo-7.4.23 php74-pdo_mysql-7.4.23 php74-pdo_pgsql-7.4.23 php74-xml-7.4.23 php74-zip-7.4.23 mod_php74-7.4.23
PHP のバージョンを確認
# php74 -v
PHP 7.4.23 (cli) (built: Aug 31 2021 01:11:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
PHP 設定(php.ini)変更(開発用にエラーを画面表示する)
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
# vi /usr/local/etc/php.ini
(変更)
Expose_php = Off
error_reporting = E_ALL
display_errors = On
date.timezone = Asia/Tokyo
Apache 設定ファイル(httpd.conf)に PHP 読込み情報を追加
# vi /usr/local/etc/apache24/httpd.conf
(追加)
# php AddType
AddType application/x-httpd-php .php
Apache 再起動
# apachectl restart
PHP確認ファイルを作成
# vi /usr/local/www/apache24/data/info.php
(追加)
<?php
phpinfo();
ブラウザから Web サーバーにアクセス。「PHP Version ...」が表示されることを確認
http://192.168.56.110/info.php
SSL インストール
openssl 秘密鍵作成
# openssl genrsa -out php.sunabird.local.key 2048
openssl CSR 作成(緑文字は入力項目)
# openssl req -new -key php.sunabird.local.key -out php.sunabird.local.csr
You are about to be asked to enter information that will be incorporated
....
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) [Some-State]:Kanagawa
Locality Name (eg, city) []:Yokohama
Organization Name (eg, company) [Internet Widgits Pty Ltd]:sunabird
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:php.sunabird.local
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
openssl 自己署名サーバー証明書作成
# openssl x509 -req -in php.sunabird.local.csr -signkey php.sunabird.local.key -sha256 -days 3650 -out php.sunabird.local.crt
鍵と証明書を移動
# mv php.sunabird.local.key /usr/local/etc/ssl/
# mv php.sunabird.local.crt /usr/local/etc/ssl/
httpd.conf に virtual hosts ファイル読込み設定
# vi /usr/local/etc/apache24/httpd.conf
# Virtual hosts
#Include etc/apache24/extra/httpd-vhosts.conf
(コメント削除)
# Virtual hosts
Include etc/apache24/extra/httpd-vhosts.conf
サイト用のディレクトリ作成(DocumentRootにする)
# mkdir /usr/local/www/apache24/php.sunabird.local
DocumentRoot(ドキュメントルート):ファイルを置くとブラウザからアクセスできるようになる場所。
VirtualHost 設定(SSL に自動リダイレクト)
# vi /usr/local/etc/apache24/extra/httpd-vhosts.conf
(既存設定をコメントアウト)
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
...
#</VirtualHost>
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host2.example.com
...
#</VirtualHost>
(全て追加)
<VirtualHost *:80>
ServerName php.sunabird.local
RewriteEngine on
RewriteCond %{HTTP_HOST} ^php\.sunabird\.local
RewriteRule ^/(.*)$ https://php.sunabird.local/$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName php.sunabird.local:443
SSLEngine on
SSLProtocol -all +TLSv1.2
SSLCertificateKeyFile /usr/local/etc/ssl/php.sunabird.local.key
SSLCertificateFile /usr/local/etc/ssl/php.sunabird.local.crt
DocumentRoot "/usr/local/www/apache24/php.sunabird.local"
<Directory "/usr/local/www/apache24/php.sunabird.local">
AllowOverride All
Options FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
Apache の再起動
# apachectl restart
確認用ファイルを作成
# vi /usr/local/www/apache24/php.sunabird.local/info.php
(追加)
<?php
phpinfo();
Windows の hosts ファイルに追加
C:\Windows\System32\drivers\etc\hosts ファイルを開く
(追加)
192.168.56.110 php.sunabird.local
上書き禁止の場合、ファイルを右クリック > プロパティ > セキュリティ > 編集 > Users を選択し「フルコントロール」にチェックし「OK」 > Windowsセキュリティの警告「はい」> 「OK」
ブラウザからWebサーバーに https でアクセス。「PHP Version ...」が表示されることを確認
https://php.sunabird.local/info.php
※詳細設定 >「php.sunabird.local にアクセスする(安全ではありません)」をクリック
SSLでアクセスできない...
・ネットワークにプロキシサーバーを利用している場合:インターネットオプション > 接続 > LANの設定 > 詳細設定 > プロキシの除外設定 に「php.sunabird.local」を追加
MySQL 5.7 インストール
MySQL 5.7 をインストール
# pkg install -y mysql57-server-5.7.35
MySQL 起動設定
# vi /etc/rc.conf
(追加)
# MySQL add
mysql_enable="YES"
MySQL 起動
# /usr/local/etc/rc.d/mysql-server start
MySQL root 初期パスワード確認
# vi /root/.mysql_secret
MySQL にログイン
# mysql -u root -p
Enter password:(初期パスワードを入力し「Enter」)
パスワードの変更
mysql> SET PASSWORD='Sunabird000000-';
テスト用データベースとテーブルを作成しサンプルデータを登録する
mysql> CREATE DATABASE test;
mysql> use test;
mysql> CREATE TABLE t_test(id SERIAL PRIMARY KEY, name VARCHAR(20));
mysql> INSERT INTO t_test (name) VALUES ('kato makoto');
mysql> INSERT INTO t_test (name) VALUES ('tajima tae');
登録したサンプルデータを確認する
mysql> SELECT * FROM t_test;
+------+---------------+
| id | name
+------+---------------+
| 1 | kato makoto
| 2 | tajima tae
+------+---------------+
2 rows in set (0.00 sec)
MySQL ログアウト
mysql> exit;
PHP から MySQL への接続確認用のファイル作成
# vi /usr/local/www/apache24/php.sunabird.local/mysql_test.php
(全部追加)
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'Sunabird000000-');
foreach($dbh->query('SELECT * FROM t_test') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "ERROR!: " . $e->getMessage() . "<br/>";
die();
}
?>
ブラウザからアクセスし DB に格納したサンプルデータが表示されることを確認
https://php.sunabird.local/mysql_test.php
以上で Virtual Box に LAMP 環境が構築されました。
これから PHP で楽しい Web システムをどんどん開発してください