そろそろ自分の周りでもCodeIgniter4を採用する雰囲気がでてきたので、
良い頃合いなので触ってみようと思います。
とりあえず今回はWelcomeページの表示までを動作環境などに触れつつ見ていきます。
開発環境の構成
ざっくりですが、以下のような構成で動かしてみます。
・Windows+Vagrant+VirtualBox
・CentOS Linux release 7.9
・MySQL8.0.26
・PHP7.4.21
・Apache/2.4.6
・Codeigniter4.1.3
設定に関しても特にproductionを意識したものでなく、動けば良かろうなので悪しからず。
apacheやmysqlなどの詳細な設定は他の詳しい記事やリファレンスをあたって下さい。
CodeIgniter4.1.3の必要動作環境について
ほぼドキュメントを見ただけですが、
CodeIgniter4.1.3ではPHP7.3以上で、以下のインストールが必要です。
libcurlは必須でもないですが、curlを使うならということみたいですね。
- php-intl
- php-json
- php-mbstring
- php-mysqlnd
- libcurl
MySQL5.1以上(MySQLi),PostgreSQL,SQLite3あたりは対応
現状pdo driver経由のものは公式にサポートされていません。
構築手順
Vagrantを立ち上げたところからはじめます。
CentOSのバージョン確認
# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
yum update
# yum update
とくにしがらみもないのでアップデートをしておきます。
PHPのインストール
PHP7.3以上がCodeIgniter4.1.3の必要要件なので今回は7.4をいれることにしました。
remiリポジトリからインスト―ル。拡張も必要要件にあるものは含めます
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum -y install --enablerepo=remi,remi-php74 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql php-intl
バージョン確認
# php -v
PHP 7.4.21 (cli)
インストールしたパッケージも確認しておきます。
以下のような感じになっていれば大丈夫かと思います。
# yum list installed | grep php
oniguruma5php.x86_64 6.9.7.1-1.el7.remi @remi
php.x86_64 7.4.21-1.el7.remi @remi-php74
php-cli.x86_64 7.4.21-1.el7.remi @remi-php74
php-common.x86_64 7.4.21-1.el7.remi @remi-php74
php-gd.x86_64 7.4.21-1.el7.remi @remi-php74
php-json.x86_64 7.4.21-1.el7.remi @remi-php74
php-mbstring.x86_64 7.4.21-1.el7.remi @remi-php74
php-mysqlnd.x86_64 7.4.21-1.el7.remi @remi-php74
php-pdo.x86_64 7.4.21-1.el7.remi @remi-php74
php-pecl-mcrypt.x86_64 1.0.4-1.el7.remi.7.4 @remi-php74
php-pecl-mysql.x86_64 1.0.0-0.23.20190415.d7643af.el7.remi.7.4
@remi-php74
php-sodium.x86_64 7.4.21-1.el7.remi @remi-php74
php-xml.x86_64 7.4.21-1.el7.remi @remi-php74
php-xmlrpc.x86_64 7.4.21-1.el7.remi @remi-php74
php74-php-common.x86_64 7.4.21-1.el7.remi @remi-safe
php74-php-intl.x86_64 7.4.21-1.el7.remi @remi-safe
php74-php-json.x86_64 7.4.21-1.el7.remi @remi-safe
php74-runtime.x86_64 1.0-3.el7.remi @remi-safe
Composerのインストール
CodeIgniter4のインストール方法として、手動、composer、gitの3つが紹介されています。
今回はcomposerで進めます。
composerがなかったのでそこから。すでに導入済みであれば飛ばしてください。
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php composer-setup.php
# rm: remove regular file ‘composer-setup.php’? y
# mv composer.phar /usr/local/bin/composer
このままだとcomposerの実行権限がないので、chmodなどで付与して下さい。
以下のようにコマンドが叩けることを確認
# composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.1.3 2021-06-09 16:31:20
CodeIgniter4のインストール
プロジェクトを作成したい場所に移動し、任意のプロジェクト名をつけて下記コマンドを実行。
以下はci4というプロジェクト名にした例です。
# composer create-project codeigniter4/appstarter ci4
特に問題なければ以下のような構造のプロジェクトが取得できていると思います。
app
builds
composer.json
composer.lock
env
.git
.gitattributes
.github
.gitignore
LICENSE
phpunit.xml.dist
public
README.md
spark
tests
vendor
writable
–no-devオプションをつけるとphpunitのインストールなどproductionで不要なものはスキップしてくれるみたいです。
余談ですが、自分はphp-intlを入れそこなっていたため、あとから個別で追加しました。
composerも中途半端に完了、一部だけインストールした状態になっていました。
intl追加後にcomposer updateで問題は解消しましたが、最初に漏れなくやっておいた方が楽です。
apacheなど設定を変更
composerでプロジェクトもインストールしたので、welcomeページ表示のために設定をします。
apacheを利用するのでhttpdがいない場合はインストールしてください。
httpd動作確認とhttpd.confを修正
httpdを起動
# systemctl start httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running)
Vagrantで設定したホストを確認し、apacheのメッセージが問題なく出ていることを確認
細かいルーティング等々は今回良いので、あとはドキュメントルートをあわせます。
publicにindex.phpが置かれているので、httpd.confに記載されているパスを変更します。
# vi /etc/httpd/conf/httpd.conf
中略
DocumentRoot "/path/to/project_name/public"
#
# Relax access to content within /var/www.
#
<Directory "/path/to/project_name/public">
AllowOverride None
Require all granted
</Directory>
長いので割愛しますがDirectoryのディレクティブとDocumentRootあたりを変更しておけば、
動作を確認する上では問題ないかと思います。
SELINUXの無効化
SELINUXが有効になっていると見れなかったので、今回は無効にして進めます。
Centos7はデフォルトで有効みたいですね。
# getenforce
Enforcing
selinuxのconfigをdisabledに書き換えます。
# vi /etc/selinux/config
SELINUX=disabled
.htaccessの編集
public配下の.htaccessを変更します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
現状でもwelcomeを参照するだけなら問題ないかもしれませんが、
以降のルーティングがうまくいかないと思われるので。
Welcomeページが表示されるか確認
Vagrantで指定したアドレスを見にいきます。
自分の場合は特に手を加えていないのでconfig.vm.network “private_network”のipを叩きました。
以下のような画面になっていれば問題ないでしょう。
MySQLのインストール
Welcomeを見るだけであればDBは関係ないですが、ついでに済ませておきます。
今回は特にこだわらず、その時の最新のものをいれました。
# yum install https://repo.mysql.com/yum/mysql-8.0-community/el/7/x86_64/mysql80-community-release-el7-3.noarch.rpm
mysql80のリポジトリが使える状態であれば問題ないと思います。
# yum install mysql-community-server
mysql8.0.26がインストールされることを確認。そのままインストールを進めます。
# mysqld --version
Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)
簡単な起動確認、設定を済ませていきます
# systemctl start mysqld.service
# systemctl enable mysqld.service
パスワードを任意のものに変更します。まず一時的なrootのパスワードを確認します。
# grep password /var/log/mysqld.log
最後の方にあるパスワードを使ってログインします。
mysqlにログインできたら以下でパスワードを変更
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '任意の
パスワードを再設定';
認証方式の変更を行います。/etc/my.cnfに以下を追記
default_authentication_plugin=mysql_native_password
再起動をします。
# systemctl restart mysqld.service
# systemctl status mysqld.service
DB用のユーザー作成などが必要な場合は適宜行ってください。
あとは上記に合わせapp/ConfigのDatabase.phpをいくつか変更する感じです。
その辺りはモデル周りを確認する時にでも。