Windows Server 2019でApacheとPHPとMySQLとIISでメールの送信設定とFTPのセットアップ

概要

Windows Server 2019 を使って、下記のセットアップ手順を記載します。

  • IEセキュリティ設定のオフ
  • Apache2.4
  • PHP7.4
  • MySQL 作成中
  • IIS
    • メール
    • FTP

IEセキュリティ設定のオフ

IEセキュリティが有効だとファイルのダウンロード等で煩わしいので下記設定でゆるくする。
サーバーマネージャーを起動 > ローカルサーバー > IE セキュリティ強化の構成 > Administratorグループをオフ > IEを再起動

エクスプローラーで隠しファイルと拡張子を表示

Apache

https://www.apachelounge.com/download/

  • Apache 2.4.46 Win64
  • [Apache VS16 Binary] httpd-2.4.46-win64-VS16.zip

インストール

  • ダウンロードしたzipを解凍→Apache24フォルダを C:\\ へコピー
  • bin/httpd を実行して、ブラウザで localhost:80 でアクセス

image

環境変数PATHを追加

検索で、環境変数を検索して、環境変数PATHへ新規で下記を追加する。

C:\Apache24\bin

Apache再起動用のバッチを作成する

下記を apache_restart.bat という名前でデスクトップに作成する。

httpd.exe -k stop
httpd.exe -k start

自動起動設定

  • 管理者でコマンドプロンプトを起動
  • バイナリまでCDして(Pathを通していればそのままでOK)、 httpd.exe -k install を実行すればサービスへ追加される
    image

もしも、「VCRUNTIME140.dllが見つからない」と出てしまう場合、下記からVisual Studio C++をインストールする。(64bitならx64をインストールする)
Microsoft

DocumentRoot配下で.htacessを有効化

mod_rewriteとSSL関連のモジュールをアンコメント。

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule spcache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

AllowoverrideをAllにして、DirectoryIndexにindex.phpも加えておく(PHP用)

DocumentRoot "${SRVROOT}/htdocs"

<Directory "${SRVROOT}/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

Include conf/extra/httpd-ssl.conf    <--- 正しいSSL証明書でないと server.crt に関連してエラーになってApacheが起動できないので、最初はコメントアウトが良い。

PHP

PHPのインストール

https://windows.php.net/download から Zipをダウンロード。
対象ファイルは Thread Safe のものを選択すること。
Non Thread Safe だとApacheにモジュール版に必要なdllが無いので注意。
解凍したphpのフォルダを C:\php へコピーする。

image

php.ini-productionをコピーしてphp.iniとする。
下記パラメータの変更。
image
image
image
image
image

Apacheのhttpd.confを管理者としてメモ帳を実行して、下記を実行後、httpdを再起動。

LoadModule php7_module "c:/php/php7apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "c:/php"
intl 拡張について

php.ini の extension = intl を有効化します。
phpディレクトリ配下にある icu**.dll をコピーして、Apache\bin 配下にペーストします。
そうすると、phpinfoに intl の項目が表示されます。

index.php を設置して <?php phpinfo(); ?> が表示されることを確認。
image

OpenSSLのインストール

公式ではビルドが必要な手順となるため、下記からインストーラーをダウンロードしてインストールする。
https://slproweb.com/products/Win32OpenSSL.html

その後、「Program Files」配下にOpenSSL-Win64ディレクトリが出来るので、システムの詳細設定から環境変数PATHに追加して、PATHを通しておく。

秘密鍵作成

cd C:Apache24\ssl
openssl genrsa 2048 > server.key

CSR作成

openssl
openssl> req -new -key server.key -out server.csr


Let’s Encrypt

作成中


MySQL

1.https://dev.mysql.com/downloads/windows/installer/5.7.htmlへアクセスして、インストーラーをダウンロード
2.インストールを実行


メール

サーバーマネージャーを起動

image

役割と機能を追加

image

役割ベースまたは機能ベースのインストール
image

対象サーバーの選択
image

サーバーの役割
ここではそのまま進む
image

機能でSMTPサーバーを選択
image

Webサーバーの役割
image

役割サービス
Webサーバーにチェックがある状態(SMTPサーバーはここで選択されている)
image

確認画面
image

インストールには2〜3分かかる。

SMTPサーバーの設定

ツールからインターネットインフォメーションサービス(IIS)6.0 マネージャー
image

SMTP Virtual Server のプロパティを開く
image

アクセス→中継
image

中継サーバーに自分のIPアドレスを追加
image

127.0.0.1が許可になっていることを確認
image

配信→送信セキュリティ
image

匿名アクセスが選択されていることを確認してOK
image

SMTPサーバーを再起動
停止→開始
image

自動起動設定

cd C:\Windows\Sytem32\inetsrv
inetinfo.exe -k install

動作確認

サーバーマネージャーからtelnetクライアントをインストール
image

コマンドプロンプトで送信テスト
103163052-fb38b500-483b-11eb-8375-3e677630a702


FTP

1.スタートポタンを右クリックして、コンピューターの管理を開く
2.ローカルユーザーとグループを開いて、ユーザーを右クリックしてユーザーを追加
3.グループを右クリックして追加し、その際に上記で追加したFTPユーザーを所属して作成(FTPGroupなど)
4.DocumentRoot(FTP公開先)のフォルダを右クリックして、上記FTP用グループをフルコントロールで追加
5.サーバーマネージャーのIISマネージャーを開いて、サーバーを右クリックしてFTPサイトを追加
6.任意のFTPサイト名を付与、上記で指定した公開先フォルダを追加
7.バインドのIPアドレスは「すべて未割り当て」、SSLはなし
8.認証は「基本」、承認は「指定された役割またはユーザーグループ、グループ名は上記で指定したグループ、アクセス許可は読み取りと書き込みいずれもチェック
9.FTPファイアウォールのサポートを開いて、パッシブポートを6000-6100で指定する。(別でも良い)
10.FWで上記Passiveポートを受信側で開放する

AD参加している場合のユーザー追加手順は下記

  1. サーバーマネージャー
  2. ツール
  3. ActiveDirectoryユーザーとコンピューター
  4. 対象ドメインのUsers
  5. 新規作成→グループ→ftpusers(スコープはグローバル、グループの種類はセキュリティ)
  6. 新規作成→ユーザー→フルネームとログオン名を指定
  7. 「ユーザーはパスワードを変更できない」「パスワードを無期限」にチェック
  8. ftpusersグループに上記ユーザーを追加

Apacheの起動失敗ログ

イベントビューアー→Windowsログ→Application