はじめに
AWS EC2のWindowsサーバーでlaravelを使用したアプリ開発の案件があり、Windowsの環境構築をしましたので、その方法をまとめます。
今まで、Amazon Linuxしか使っていなかったため、windowsサーバーの癖に苦戦しながらも構築しましたので、参考になればと思います。
例えば、サーバーへの接続は、SSH接続ではなくリモートデスクトップ(以後、RDP)からアクセスするなどなど。。
環境構築
- windows version
- windows server 2022
- インストール情報
- apache:2.4.51
- php:8.1.0
- phpmyadmin
- composer: 2.1.14
- laravel
- ルートディレクトリ
- C:\Apache24\htdocs
- RDS aurora
- MYSQL:8.0.23
- IDE
- Visual Studio Code
- SFTP
- OpenSSH
簡易環境構築図
ゴール
-
外部公開し、WindowsサーバーのIPアドレスをブラウザのURL欄に入れて、Laravelのindex.phpが表示される。
-
SFTPでローカルのPCからWindowsサーバーにファイル転送が容易にできる。
流れ
- EC2を起動設定
- Windowsサーバーにリモートデスクトップで接続する
- 日本語設定と時計合わせ
- Visual Studio Codeをインストール
- ApacheとVisual C++ ランタイムのインストール
- Apacheの起動
↑①ではここまで
- PHPインストールし、Web上で確認
- RDSの起動
- composerとlaravelインストール
- プロジェクトを作成し、laravelページをWeb上で確認
- phpmyadminインストールし、Web上で確認
↑②ではここまで
- OpenSSH を使用して Windows に SFTP サーバーをセットアップ
EC2を起動設定
EC2は、Windows Server 2022の最新のサーバーを選択しました。
スペックは、nanoだとwindows内での作業に支障をきたすほど動きが遅いです。
microもしくは、smallにしましょう。
自動割り当てパブリック IPは、有効にしています。
ストレージは30GBだと足りませんので、60GBにします。
一応、後でEBSのボリューム変更は可能です。
コンソール上でEBSのボリュームを変更し、Windowサーバーに接続後、Power Shellで以下の記事通りに進めると、変更できます。
セキュリティーグループは、SFTP接続でローカルから簡単にファイル転送したいため、SSHを開けています。
RDPは、Windowsであればデフォルトで設定されており、リモートデスクトップで接続する際に必要です。
他の設定は、特にありません。EC2を起動しましょう。
Windowsサーバーにリモートデスクトップで接続する
EC2に対してリモートデスクトップで接続します。
以下のaws記事(RDP を使用した Windows インスタンスへの接続
)通り行うと、うまくいきます。
ElasticIPをEC2に関連付ける場合、RDPファイルをダウンロードする前に、関連付けてください。
サーバーのIPが変わると、RDPを再ダウンロードする必要があります。
こちらでもよいですね
aws記事の前提条件に記載してありますが、ご自身のPCに、RDPクライアントをインストールする必要があります。
Macであれば、Microsoft Remote Desktopですね。
今後は、rdpファイルを起動するとwindowsサーバーに入れます。
日本語設定と時計合わせと地域設定
日本語設定と時計合わせ
windowを日本語設定にしましょう。
こちらの記事通りするとよいです。
追加の作業として、keyboardのlayoutも日本語設定にしてもよいですね。
設定が完了したら再起動しましょう。RDP接続が切れますが、rdpファイルから起動できます。
また、ファイル名の拡張子と隠しファイルの表示方法はこちらを参考にするとできます。
地域設定
下記の記事の17から進めてください。
Visual Studio Codeをインストール
下記の記事通り行うとよいです。
VSCダウンロードページからダウンロードができない場合
-
Internet Explorer
を使用している場合、下記の記事通りにすると、VSCをダウンロードできるかもしれません。
ダウンロードできない時、私の場合chromeはダウンロードできましたので、ブラウザはchromeを使用し、VSCをダウンロード
しましょう。
記事内容を図を合わせて説明しますと、サーバーマネージャーのローカルサーバーから、セキュリティー強化の構成の有効
をクリックします。
両方のグループをオフにすると、VSCがダウンロードできる記事では説明がありました。
私の場合、できませんでしたが、chromeはインストールできましたので、chromeからVSCをダウンロードしました。
ApacheとVisual C++ ランタイムのインストール
Apacheのインストール
以下のページから最新版のApache 2.4.51 Win64
のZipファイルをインストールします。
解凍したフォルダ(Apache24)を任意の場所に移動します。
今回は C ドライブ直下に配置します。
ApacheのVisual C++ ランタイムのインストール
Windows 用 Apache のバイナリは Visual C++ でビルドされているので、VC のランタイムが必要になります。
※すでにインストールされている場合は必要ありません。
以下の URL よりダウンロードします。
64bit の場合は vc_redist.x64.exe になります。
ダウンロードしたファイルを実行することでランタイムがインストールされます。
Apacheのhttpd.confファイル修正
C:\Apache24\conf\httpd.conf
の設定ファイルを変更します。
ServerRoot (確認は必須)
Apache サーバーが存在するディレクトリを設定します。
すでに設定されておりましたので、特に変更しません。
Define SRVROOT "c:/Apache24"
ServerRoot "${SRVROOT}"
上記の設定によって、
httpd.conf内で${SRVROOT}
と記載するとc:/Apache24
という意味に置き換えられます。
Listen (必要に応じて設定)
サーバが listen するIP アドレスとポート番号を設定します。
httpとhttpsを受け入れます
Listen 80
Listen 443 #追加
LoadModule (必須)
ロードするモジュールを設定します。
使用可能なものは概ねすでに記述されていますので、必要となるモジュールのコメントを外します。
laravelを使うに当たり、LaravelProject/public/.htaccess
ファイルをApacheに認識させるため、rewrite_module
が必要です。
LoadModule rewrite_module modules/mod_rewrite.so # コメント外す
ServerName (必要に応じて設定)
アクセスされるドメイン名があれば設定します。
ポート番号との組み合わせも可能です。
今回は、サーバーのIPアドレスでアクセスしますので、変えません。
# ServerName www.example.com:80
ServerName mydomain.com
DocumentRoot (確認は必須)
公開ディレクトリを設定します。
デフォルトは、C:\Apache24\htdocs
配下に設定されていますので、変更しません。
後で、laravelインストール時に、laravelのパスに合わせて、変更します。
DocumentRoot "${SRVROOT}/htdocs"
ちなみに${SRVROOT}/htdocs
というのは、c:/Apache24/htdocs
と同義です。
ドキュメントルートのディレクトリ設定 (修正必須)
ドキュメントルートのディレクトリ内で適用するディレクティブを以下のように設定します。
<Directory "${SRVROOT}/htdocs">
#Options Indexes FollowSymLinks
Options FollowSymLinks
#AllowOverride None
AllowOverride All
Require all granted
</Directory>
以下、各詳細説明です。
・Directory
ディレクティブの適用をディレクトリ単位に指定できます。
・Options
特定のディレクトリに対してどの機能が使用可能かを制御します。
デフォルトでは以下の2つがOptionsで設定されています。
・Indexes
ディレクトリ配下の構造がweb上で確認できてしまいます。
ディレクトリの中身が見えてしまう可能性があり、セキュリティの観点から通常設定しません
ので、コメントアウトします。
・FollowSymLinks
サーバがこのディレクトリ内でシンボリックリンクをたどれるようにします。
・AllowOverride
None
が指定された場合、.htaccessは完全に無視されます。
.htaccessを有効にしたい場合はAll
を指定します。
LaravelProject/public/.htaccess
をApacheに認識させるため、修正必須です。
・Require
アクセスの許可を設定します
all grantedではすべてのアクセスを許可します。
ディレクティブやディレクティブ内で使用できます。
ちなみに以下のような指定が可能です。
Require all granted # すべて許可
Require all denied # すべて拒否
Require ip 192.168.10.1 # 指定のIPアドレスからのアクセスのみ許可
Require ip 192.168.10.1/24 # 指定のIPアドレスの範囲からのアクセスのみ許可
Require host example.com # 指定のドメインからのアクセスのみ許可
.htaccess の有効の有無 (必要に応じて修正)
デフォルトでは、.htaccess
は<Files>ディレクティブ
を用いて使用禁止にされています。
.htaccess
を利用したい場合は、これを編集します。
<Files ".ht*">
#Require all denied
Require all granted
</Files>
Location (必要に応じて設定)
.htaccessを使用せず、Basic認証したい場合に設定します。
<Location> ディレクティブは、 URL により中に書かれたディレクティブの適用範囲を制限します。
こちらを参考通りにするとBasic認証できます。
httpd.confファイルの詳細を知りたい方はこちら
Apacheの起動
apacheを起動します。
コマンドプロンプトを起動後、2つのコマンドを実行し、
The 'Apache2.4' service is successfully installed.
と表示されていれば、インストール完了と判断してよいです。
cd \Apache24\bin
httpd.exe -k install
C:\Users\Administrator>cd \Apache24\bin
C:\Apache24\bin>httpd.exe -k install
Installing the 'Apache2.4' service
The 'Apache2.4' service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.
Port must be specified
C:\Apache24\bin>
apahceの起動停止等のコマンドはこちらです。
>cd \Apache24\bin
>httpd.exe -k start # Apacheの起動
>httpd.exe -k stop # Apacheの停止
>httpd.exe -k restart # Apacheの再起動
>httpd.exe -k uninstall # サービス解除
コマンド以外からのapacheの起動方法
C:\Apache24\bin
のApache Monitor
を起動すると、右下の常駐アイコンに表示されます。
下記のapacheのアイコンをクリックすると、startが表示されますので、クリックすると、起動できます。
赤は停止、緑は起動中です。
apacheのindex.htmlをweb上で表示させる
Windowsサーバーのセキュリティーグループは、httpを開けておりますが、Windowsサーバー内で、ポートの開放をが必要なのでやっていきましょう。
以下の参考記事の外部のWEB公開
を参考にするとうまくいきます。
これで、外部に公開できましたので、WindowsサーバーのIPアドレスをブラウザのURL欄に入れて、アクセスしましょう。
It works!
と表示されればOKです。
次回、PHPをインストールします。記事はこちらです。↓