4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

EC2のWindowsサーバーで、PHP (Laravel ) + Apache + RDS(MySQL) + SFTP の環境構築 ①

Last updated at Posted at 2021-12-04

はじめに

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

簡易環境構築図

スクリーンショット 2021-12-05 0.20.13.png

ゴール

  1. 外部公開し、WindowsサーバーのIPアドレスをブラウザのURL欄に入れて、Laravelのindex.phpが表示される。

  2. SFTPでローカルのPCからWindowsサーバーにファイル転送が容易にできる。

流れ

  1. 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の最新のサーバーを選択しました。

スクリーンショット 2021-12-04 11.09.38.png

スペックは、nanoだとwindows内での作業に支障をきたすほど動きが遅いです。
microもしくは、smallにしましょう。

自動割り当てパブリック IPは、有効にしています。

ストレージは30GBだと足りませんので、60GBにします。

スクリーンショット 2021-12-04 11.14.50.png

一応、後でEBSのボリューム変更は可能です。
コンソール上でEBSのボリュームを変更し、Windowサーバーに接続後、Power Shellで以下の記事通りに進めると、変更できます。

セキュリティーグループは、SFTP接続でローカルから簡単にファイル転送したいため、SSHを開けています。
RDPは、Windowsであればデフォルトで設定されており、リモートデスクトップで接続する際に必要です。

スクリーンショット 2021-12-04 11.19.23.png

他の設定は、特にありません。EC2を起動しましょう。

Windowsサーバーにリモートデスクトップで接続する

EC2に対してリモートデスクトップで接続します。
以下のaws記事(RDP を使用した Windows インスタンスへの接続)通り行うと、うまくいきます。

ElasticIPをEC2に関連付ける場合、RDPファイルをダウンロードする前に、関連付けてください。
サーバーのIPが変わると、RDPを再ダウンロードする必要があります。

こちらでもよいですね

aws記事の前提条件に記載してありますが、ご自身のPCに、RDPクライアントをインストールする必要があります。
Macであれば、Microsoft Remote Desktopですね。

このwindows画面が出ると接続成功です。
スクリーンショット 2021-12-04 11.47.24.png

今後は、rdpファイルを起動するとwindowsサーバーに入れます。

日本語設定と時計合わせと地域設定

日本語設定と時計合わせ

windowを日本語設定にしましょう。
こちらの記事通りするとよいです。

追加の作業として、keyboardのlayoutも日本語設定にしてもよいですね。
設定が完了したら再起動しましょう。RDP接続が切れますが、rdpファイルから起動できます。

また、ファイル名の拡張子と隠しファイルの表示方法はこちらを参考にするとできます。

地域設定

下記の記事の17から進めてください。

Visual Studio Codeをインストール

下記の記事通り行うとよいです。

VSCダウンロードページからダウンロードができない場合

  • Internet Explorerを使用している場合、下記の記事通りにすると、VSCをダウンロードできるかもしれません。
    ダウンロードできない時、私の場合chromeはダウンロードできましたので、ブラウザはchromeを使用し、VSCをダウンロードしましょう。

記事内容を図を合わせて説明しますと、サーバーマネージャーのローカルサーバーから、セキュリティー強化の構成の有効をクリックします。
スクリーンショット 2021-12-04 12.40.38.png

両方のグループをオフにすると、VSCがダウンロードできる記事では説明がありました。
私の場合、できませんでしたが、chromeはインストールできましたので、chromeからVSCをダウンロードしました。
スクリーンショット 2021-12-04 12.40.58.png

ApacheとVisual C++ ランタイムのインストール

Apacheのインストール

以下のページから最新版のApache 2.4.51 Win64のZipファイルをインストールします。

スクリーンショット 2021-12-04 13.12.13.png

解凍したフォルダ(Apache24)を任意の場所に移動します。
今回は C ドライブ直下に配置します。
スクリーンショット 2021-12-04 13.12.51.png

ApacheのVisual C++ ランタイムのインストール

Windows 用 Apache のバイナリは Visual C++ でビルドされているので、VC のランタイムが必要になります。
※すでにインストールされている場合は必要ありません。

以下の URL よりダウンロードします。

64bit の場合は vc_redist.x64.exe になります。

スクリーンショット 2021-12-04 13.15.01.png

ダウンロードしたファイルを実行することでランタイムがインストールされます。

Apacheのhttpd.confファイル修正

C:\Apache24\conf\httpd.confの設定ファイルを変更します。

ServerRoot (確認は必須)

Apache サーバーが存在するディレクトリを設定します。
すでに設定されておりましたので、特に変更しません。

Apache24\conf\httpd.conf
Define SRVROOT "c:/Apache24"
ServerRoot "${SRVROOT}"

上記の設定によって、
httpd.conf内で${SRVROOT}と記載するとc:/Apache24という意味に置き換えられます。

Listen (必要に応じて設定)

サーバが listen するIP アドレスとポート番号を設定します。
httpとhttpsを受け入れます

Apache24\conf\httpd.conf
Listen 80
Listen 443 #追加

LoadModule (必須)

ロードするモジュールを設定します。
使用可能なものは概ねすでに記述されていますので、必要となるモジュールのコメントを外します。
laravelを使うに当たり、LaravelProject/public/.htaccessファイルをApacheに認識させるため、rewrite_moduleが必要です。

Apache24\conf\httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so # コメント外す

ServerName (必要に応じて設定)

アクセスされるドメイン名があれば設定します。
ポート番号との組み合わせも可能です。
今回は、サーバーのIPアドレスでアクセスしますので、変えません。

Apache24\conf\httpd.conf
# ServerName www.example.com:80
ServerName mydomain.com

DocumentRoot (確認は必須)

公開ディレクトリを設定します。
デフォルトは、C:\Apache24\htdocs配下に設定されていますので、変更しません。
後で、laravelインストール時に、laravelのパスに合わせて、変更します。

Apache24\conf\httpd.conf
DocumentRoot "${SRVROOT}/htdocs"

ちなみに${SRVROOT}/htdocsというのは、c:/Apache24/htdocsと同義です。

ドキュメントルートのディレクトリ設定 (修正必須)

ドキュメントルートのディレクトリ内で適用するディレクティブを以下のように設定します。

Apache24\conf\httpd.conf
<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ではすべてのアクセスを許可します。
ディレクティブやディレクティブ内で使用できます。
ちなみに以下のような指定が可能です。

Apache24\conf\httpd.conf
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を利用したい場合は、これを編集します。

Apache24\conf\httpd.conf
<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.と表示されていれば、インストール完了と判断してよいです。

  1. cd \Apache24\bin
  2. 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\binApache Monitorを起動すると、右下の常駐アイコンに表示されます。

スクリーンショット 2021-12-04 13.31.50.png
下記のapacheのアイコンをクリックすると、startが表示されますので、クリックすると、起動できます。
スクリーンショット 2021-12-04 23.46.16.png
スクリーンショット 2021-12-04 23.46.27.png

赤は停止、緑は起動中です。

apacheのindex.htmlをweb上で表示させる

Windowsサーバーのセキュリティーグループは、httpを開けておりますが、Windowsサーバー内で、ポートの開放をが必要なのでやっていきましょう。

以下の参考記事の外部のWEB公開を参考にするとうまくいきます。

これで、外部に公開できましたので、WindowsサーバーのIPアドレスをブラウザのURL欄に入れて、アクセスしましょう。
It works!と表示されればOKです。

次回、PHPをインストールします。記事はこちらです。↓

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?