CodeIgniterをAWSへデプロイ!初心者向けのCI/CD環境構築と公開手順
生徒
PHPのフレームワークであるCodeIgniterでWebアプリを作ったのですが、これをAWSを使ってインターネット上に公開する方法がわかりません。
先生
自分で作ったプログラムをAWSのようなクラウド環境に載せることをデプロイと呼びます。まずは全体の流れをつかむことが大切ですよ。
生徒
CI/CDという言葉もよく聞くのですが、これも関係があるのでしょうか?
先生
もちろんです。効率よく安全にデプロイするために欠かせない仕組みです。一緒に学んでいきましょう。
1. CodeIgniterとAWSの基本を知ろう
CodeIgniterはPHPというプログラミング言語で動く、軽量で使いやすいWebアプリケーション開発のための骨組み(フレームワーク)です。このアプリを世界中の人がアクセスできるようにするには、サーバーというコンピューターが必要です。
AWS(Amazon Web Services)は、Amazonが提供する巨大な仮想サーバー群です。デプロイとは、開発したプログラムをサーバーに移して動かせる状態にすることを指します。パソコンのファイルをUSBメモリにコピーする作業を、インターネット越しにサーバーに対して行うイメージです。
2. CI/CDの仕組みで自動化を実現する
CI/CDは、プログラムを修正するたびに自動でテストし、サーバーへ反映させるための仕組みです。CIは継続的インテグレーション、CDは継続的デリバリーを意味します。
手作業でファイルをアップロードしていると、ミスをしてWebサイトが真っ白になることがあります。自動化することで、ボタン一つで安全に、そして短時間で更新ができるようになります。初心者の方でも、今のうちからこの考え方に触れておくことで、プロの開発者への近道になります。
3. AWS環境へデプロイする基本構成
AWSでWebサイトを公開する際、最もシンプルで学習に最適なのはEC2という仮想サーバーを使う方法です。EC2は、自分のパソコンを24時間動かし続けるための専用の機械を借りるようなものです。
以下は、CodeIgniterのプロジェクトでデータベース設定を行うためのファイル例です。環境ごとに設定を分けることが、AWSデプロイの第一歩となります。
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'secret_password',
'database' => 'my_database',
'dbdriver' => 'mysqli',
);
4. Webサーバーの設定と環境構築
AWS上でCodeIgniterを動かすには、ApacheやNginxといったWebサーバーソフトが必要です。これらは、ブラウザから来た依頼をプログラムに渡す受付係のような役割をします。
以下のコードは、Apacheの設定ファイルでCodeIgniterの公開ディレクトリを指定する際によく使われる記述です。プログラムが正しく動くためには、この設定が不可欠です。
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
AllowOverride All
</Directory>
</VirtualHost>
5. 自動化のためのデプロイスクリプト
CI/CDを意識するなら、Gitという管理ツールと連携させます。Gitは、プログラムの変更履歴を保存するノートのようなものです。AWS上でこのGitの内容を自動で取り込むようにします。
手動でコマンドを入力する代わりに、以下のような簡単なシェルスクリプトを用意しておくと便利です。これはサーバーにログインして、プログラムを最新の状態に更新する命令セットです。
#!/bin/bash
cd /var/www/html
git pull origin main
php spark migrate
echo "Deployment successful!"
6. セキュリティと安全な運用のためのヒント
AWSへのデプロイにおいて、最も大切なのはセキュリティです。特にデータベースのパスワードや秘密鍵は、絶対にプログラムの中に直接書かないようにしてください。
環境変数といって、プログラムの外側に秘密情報を保存する場所を作り、そこから読み込むのがプロの流儀です。以下のPHPコードは、設定値が存在するか確認してから読み込む安全な書き方の例です。
$db_pass = getenv('DB_PASSWORD');
if (!$db_pass) {
die('環境変数が設定されていません');
}
デプロイは最初の一歩が一番大変ですが、一度仕組みを整えてしまえば、以後の作業は驚くほど楽になります。AWSの管理画面にはたくさんのボタンがあって驚くかもしれませんが、まずはEC2サーバーを一台立ち上げて、そこに自分の作ったPHPファイルを置いてみることから始めてみてください。