aaaiiuie

学習(備忘録)のため運用

vagrantでcakephp(備忘録)

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

参考リンク https://www.wetch.co.jp/vagrant-box%E3%82%92%E5%A4%96%E4%BB%98%E3%81%91%E3%83%8F%E3%83%BC%E3%83%89%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%81%AB%E3%81%8A%E5%BC%95%E8%B6%8A%E3%81%97%EF%BC%86%E3%81%8A%E3%81%BE%E3%81%91%E3%81%AE/

なぜdockerではなくvagrantなのか

・いろいろインストールして安定して使える環境がほしい ・ホストOSの影響をできるだけ受けたくない ・WindowsとMac両方の環境で影響なく使える

Docker使えば環境汚さないとかって言いますが、Docker立ち上げるとポート使ったり不要になったコンテナが残りっぱなしになったりと割と環境を汚します。環境をできるだけ汚さないようにしたいのならばVagrantの方に軍配が上がります。 ちなみに、Docker使いながら環境汚したくなければVagrantの上にDockerを立てればいいです。