CodeIgniter4の開発環境構築

CodeIgniter

そろそろ自分の周りでも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をいくつか変更する感じです。

その辺りはモデル周りを確認する時にでも。

タイトルとURLをコピーしました