1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LAMP環境にcodeigniter4を使ったWEBアプリのデプロイ

Last updated at Posted at 2024-11-04

初めに

デプロイに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アドレスに接続すれば表示されるはずです。

最後に

まだまだセキュリティについて知識が浅いので勉強してセキュリティについてしっかりとしたいです。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?