Vagrant Cakephp4で開発環境の構築
Cakephp4を利用したWEBアプリケーション開発構築について以下に示します。
ローカルホスト
http://192.168.56.10/
cakephp4 デフォルトURL
http://192.168.56.10/myapp/
開発環境の構築
VagrantとVirtualBoxでWebサーバーの構築
VirtualBoxインストール
OSに合ったVirtualBoxをダウンロードしてインストール https://www.virtualbox.org/wiki/Downloads
Vagrantのインストール
OSに合ったVagrantをダウンロードしてインストール
https://www.vagrantup.com/downloads.html
CentOS7をインストール
今回Web開発で利用するのはCentOS7になります。 そのため以下の手順でinitして初期設定をします。
$ cd Document/Project $ mkdir {プロジェクトフォルダを新規作成} $ cd {新規作成したプロジェクトフォルダ} $ vagrant box list ←利用できるboxを表示 $ vagrant init idea/centos7 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
Vagrantfileの修正
Vagrantfileが生成されているのでエディタで開いて記載内容を変更します。
$ vim Vagrantfile
35行目付近にある下記のコメントアウトを外し、33の部分を56に変更します。
;config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "private_network", ip: "192.168.56.10"
サードパティインストール関係を実行するためのprovision.shファイルを読み込むための一文を入れます。
config.vm.provision :shell, :path => "provision.sh"
パーミッションの設定を記載します。
config.vm.synced_folder "./", "/vagrant", :mount_options => ["dmode=777", "fmode=777"]
Vagrant.configure("2") do |config| config.vm.box = "idea/centos7" config.vm.network "private_network", ip: "192.168.56.10" config.vm.provision :shell, :path => "provision.sh" config.vm.synced_folder "./", "/vagrant", :mount_options => ["dmode=777", "fmode=777"] end
provision.shを作成
Vagrant ファイルと同階層に「provision.sh」を作成し中身を以下の通りに記載します。
# - Apache、git、unzip - sudo yum -y install httpd unzip git # ApcheをVagrant起動時に起動するように設定と起動 sudo systemctl enable httpd.service sudo systemctl start httpd.service # - MySQL - # 競合しないように関連削除 sudo yum remove mariadb-libs sudo yum remove mysql* # sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 sudo rpm --import --nosignature https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 sudo yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm sudo yum -y install mysql-community-server # MySQLをVagrant起動時に起動するように設定と起動 sudo systemctl enable mysqld.service sudo systemctl start mysqld.service # ca-certificatesを更新(実行しないとcURLでエラーになる) sudo yum -y update ca-certificates # - PHP - # 初期で入っているPHP関連の削除 yum remove php* # パッケージ更新 # CentOS7の標準のリポジトリではPHP7or8がなく、先にEPELリポジトリとREMIリポジトリを入れる必要ある yum -y install epel-release yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # php8をインストール yum -y install −−enablerepo=remi-php80 php80 php80-php php80-php-xml php80-php-xmlrpc php80-php-pecl-mcrypt php80-php-fpm php80-php-pecl-apcu php80-php-mbstring php80-php-json php80-php-pecl-json-post php80-php-pdo php80-php-mysqlnd php80-php-pecl-mysql php80-php-opcache php80-php-pear php80-php-soap php80-php-intl php80-php-pear --skip-broken # シンボリックリンクの作成 sudo ln -sf /usr/bin/php80 /usr/bin/php # Vagrantの共有フォルダにパスを設定 sudo rm -rf /var/www/html sudo ln -fs /vagrant /var/www/html # Composer sudo curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer # wget install sudo yum -y install wget # Git install sudo yum list --enablerepo=ius | grep git2 sudo yum -y install --enablerepo=ius git236 # python sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm sudo yum install -y python34u python34u-libs python34u-devel python34u-pip
記載が完了したら保存して vagrant up
します。
$ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Checking if box 'idea/centos7' version '1.2.11' is up to date... ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run.
$ vagrant ssh $ php -v PHP 8.0.19 (cli) (built: May 10 2022 08:07:35) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.19, Copyright (c) Zend Technologies with Zend OPcache v8.0.19, Copyright (c), by Zend Technologies $ httpd -version Server version: Apache/2.4.6 (CentOS) Server built: Mar 24 2022 14:57:57 $ mysql --version mysql Ver 14.14 Distrib 5.7.38, for Linux (x86_64) using EditLine wrapper $ composer --version Composer version 2.3.5 2022-04-13 16:43:00 $ git --version git version 2.36.1 $ python3.4 -V Python 3.4.10
ここまで完了したら「http://192.168.56.10/」にアクセスしてページが表示されることを確認します。
http://192.168.56.10/ |
---|
Cakephp4のインストール
Cakephp4はComposerを利用してインストールします。 公式サイトに記載されている通り、インストールする先に移動し、以下のコマンドを実行してインストールします。
ApacheのDocumentRootに移動
$cd /var/www/html/
Composerを用いて展開
$ composer self-update && composer create-project --prefer-dist cakephp/app:"4.*" myapp
Cakephp4 |
---|
Apacheの設定
# コンフィグファイルの設定編集します。 sudo vi /etc/httpd/conf/httpd.conf <Directory "/var/www/html"> ~ Options FollowSymLinks ~ AllowOverride All ←NoneからAllにする </Directory> # 設定を反映させるために、Apcheの再起動を行います。 sudo systemctl restart httpd または sudo servce httpd restart
以上、ここまでが最低限の開発環境構築手順になります。
その他
Git
Gitインストール時にインストールできるバージョンを調べるには下記のコマンドを実行する。
$ sudo yum list --enablerepo=ius | grep git2 git236.x86_64 2.36.1-2.el7.ius @ius git236-core.x86_64 2.36.1-2.el7.ius @ius ...
Python
PythonのKeyboardInterrupt
から抜けるにはコマンドで「exit()
」を実行すると抜ける
mysql ログインパスわからない場合
わからない場合ログを確認する。
$ sudo cat /var/log/mysqld.log
この中でroot@が含まれている内容でパスワードが平文で表示される
外付けハードディスクにvmを移動した時のパス
/Volumes/vm/app/vagrant/cakephp/myapp
なぜdockerではなくvagrantなのか
・いろいろインストールして安定して使える環境がほしい ・ホストOSの影響をできるだけ受けたくない ・WindowsとMac両方の環境で影響なく使える
Docker使えば環境汚さないとかって言いますが、Docker立ち上げるとポート使ったり不要になったコンテナが残りっぱなしになったりと割と環境を汚します。環境をできるだけ汚さないようにしたいのならばVagrantの方に軍配が上がります。 ちなみに、Docker使いながら環境汚したくなければVagrantの上にDockerを立てればいいです。