インターネットに公開できるレベルの堅牢なWEBサーバを、Asp.Net Coreベースで構築した。
インフラ回りのポイントを纏めたので、Asp.Net Coreを使う人には、是非、参考にしてほしい。
ソースコードや資料も公開している。Garfie2021/UnikktlePublic (github.com)
ポイント
- OSにはCentOSを採用。
- Linux系OSで、無料でもEnterpriseシステムで通用するOSはCentOSくらい。
- Asp.Net Core は Windowsでも実行可能だが、インターネットに公開するWebサーバに、Windows OS を採用することは無い。
- Linux系OSを最小構成(coreのみ)でインストールするのが望ましい。
- Webサーバーには Asp.Net Core を採用。
- PHP系、NodeJS系、Java系よりも高速に動作し、統合開発環境の使い勝手も良く生産性が高い。
- ASP.NET Core は .NET Core の一機能。
- リバースプロキシサーバーにはNginxを採用。
- ApacheよりもNginxの方が高速に動作する。
- SSL証明書の認証局には Let’s Encrypt を採用。
- 無料な上に、証明書の更新をバッチ実行できることで、証明書を更新する手間がかからない。
- WAF(Web Application Firewall)には、SiteGuard Server Edition を採用。
- サクラインターネットのサーバーホスティングサービスは無料で提供している。
- Webアプリのメール送信にはSendGridを採用。
- 無料枠で1日100件程度のメール送信が可能。
- データベースには SQLServer 2017 for Linux を採用。
- SQLServerのテーブル圧縮機能は、CPU負荷が2%~3%程度上がるのみで、スループットを低下させずに、データファイルのサイズを10分の1まで圧縮できる。これによって少ないSSDで運用可能になる。
- MySQLのテーブル圧縮機能は、データファイルのサイズを2分の1までしか圧縮できなかった。WebサーバのSSHポートとSQLServerポートは、ポート番号をデフォルト以外に変更し、イントラのIPからのみ接続可能にファイアウォールを設定し、更にイントラ側のIPを動的にすることで、セキュアにイントラ内のバッチ処理とVPSのWebサーバを連携できる。
図
コメント