初めに
デプロイに4時間半かかったため、忘れないよう備忘録として残します。
初めて扱うものばかりで、間違いも多いかもしれません。誤りがあれば、コメントで教えていただけると嬉しいです。
動作環境
- Amazon Linux 2023
- MariaDB 10.5.25
- Apache 2.4.62
- php 8.3.10
LinuxにLAMPをインストール
Amazon Linux 2023にLAMPサーバーをインストールする
こちらのサイトを利用してEC2でLinuxにLAMP環境を作りました。
デプロイ
こちらの2つの記事を参考にしました。
git clone
Gitをインストール
$ sudo yum -y install git
クローンするフォルダに移動して不要なフォルダを削除
$ cd /var/www
$ rm -r html
$ rm -r cgi-bin
Gitのリポジトリをクローン
$ git clone [URL] .
ユーザーネームとパスワードを入力
Username for 'https://github.com': ユーザーネーム
Password for 'https://ユーザーネーム@github.com': Githubで作成したトークン
トークンはこちらのサイトを参考にしました。
Apacheの設定
/etc/httpd/confに移動してhttpd.confの内容を書き換えます。
$ cd /etc/httpd/conf
$ vi httpd.conf
ここでviでファイルを開いたはいいもののLinuxのコマンドを全然知らなくて編集ができませんでした。なのでこちらの
の記事を参考にしながら編集しました。
119行目付近でドキュメントルートを変更し、アクセスがあった際にアプリ直下のpublicディレクトリにファイルを探しにいってくれるようにします。
131行目付近、151行目付近でpublicディレクトリ内での設定の変更を有効にします。
最終行でmod_rewriteを許可することでURLの書き換えを可能にします。
参考:https://qiita.com/sakashin10291029/items/07aaa55747017adb9f5f
#119行目付近
DocumentRoot "/var/www/[codeigniterのプロジェクト名]/public"
#131行目付近
<Directory "/var/www/[codeigniterのプロジェクト名]/public">
#151行目付近
AllowOverride All
#最終行に追加
LoadModule rewrite_module modules/mod_rewrite.so
Apacheを再起動
$ sudo systemctl restart httpd
composerのインストール
composerをインストールするフォルダに移動。
/usr/local/bin/にインストールしてファイル名を変更することで、どこからでもcomposerコマンド一つで呼び出し可能にします。
$ cd /usr/local/bin/
$ sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ sudo php -r "if (hash_file('sha384', 'composer-setup.php') === '[ここにconposerのhashwoを入れる]') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ sudo php composer-setup.php
$ sudo php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar composer
3行目のhashは公式サイトからコピーして利用します。
インストールはComposerの公式サイトにもコードが載っています。
データベースの設定
$ mysql -u root -p
Enter password:
パスワードはLAMPをインストールで設定していた場合は設定したパスワードを入力。
設定していない場合は入力せずにEnterを押します。
初めに新しいユーザーを作ります。
こちらのサイトを参考にしました。
MariaDB [(none)]> CREATE USER 'ユーザーネーム'@'localhost' IDENTIFIED BY 'パスワード';
#権限を設定
MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'ユーザーネーム'@'localhost';
続いてデータベースを作ります。
MariaDB [(none)]> CREATE DATABASE データベース名
MariaDB [(none)]> use データベース名;
作成したらシステムに必要なテーブルを各自で作成してください。
権限の設定とパッケージをインストール
codeigniterのwritableに権限を設定
$ chmod -R 775 /var/www/[codeigniterのプロジェクト名]/writable
パッケージをインストール
$ cd /var/www/[codeigniterのプロジェクト名]
composer install
.envの設定
envを元に.envを作成
$ cd /var/www/[codeigniterのプロジェクト名]
$ cp env .env
$ vi .env
baseURLとデータベースの設定
#約23行目
app.baseURL = 'http://[パブリック IPv4 アドレス]'
#codeigniterのデータベースの設定でtestsを利用している場合
#約42行目
database.tests.hostname = localhost
database.tests.database = データベース名
database.tests.username = ユーザーネーム
database.tests.password = パスワード
database.tests.DBDriver = MySQLi
database.tests.DBPrefix =
database.tests.charset = utf8mb4
database.tests.DBCollat = utf8mb4_general_ci
database.tests.port = 3306
#codeigniterのデータベースの設定でdefaultを利用している場合
#約33行目
database.default.hostname = localhost
database.default.database = データベース名
database.default.username = ユーザーネーム
database.default.password = パスワード
database.default.DBDriver = MySQLi
database.default.DBPrefix =
database.default.port = 3306
エラー
このままだと Class "Locale" not found とエラーを吐いてしまうのでなおします。
https://blog.ashdash.org/2022/12/codeigniter4-on-almalinux/
上記のサイトを参考にしました。
phpのバージョンを確認してバージョンにあったintlをインストールします。
$ php -v
#導入可能なintlを検索
$ yum list | grep intl
#phpのバージョンに合わせる(**)
$ sudo yum install -y php**-intl.x86_64
php.iniの変更
#追記
extension=/opt/remi/php**/root/usr/lib64/php/modules/intl.so
apacheの再起動
sudo systemctl restart httpd
これでパブリックIPアドレスに接続すれば表示されるはずです。
最後に
まだまだセキュリティについて知識が浅いので勉強してセキュリティについてしっかりとしたいです。