Laravel+Git+CircleCIの開発環境を構築するための方法(ほとんどコマンドの列挙)です!
前提
- Vim, PHP, MySQL, Apache, Composer, Node.js, npmはインストール済みとします。
- バーチャルホストでの運用を想定しています。
- var/www/html/ドメイン名/の下にプロジェクトを作ります。
この記事で利用している検証環境の各バージョン
$ vim --version
VIM - Vi IMproved 8.1 (2018 May 18, compiled Jan 30 2019 13:26:28)
$ php -v
PHP 7.3.1 (cli) (built: Jan 8 2019 13:55:51) ( NTS )
$ mysql --version
mysql Ver 8.0.14 for Linux on x86_64 (MySQL Community Server - GPL)
$ httpd -v
Server version: Apache/2.4.6 (CentOS)
$ composer --version
Composer version 1.8.3 2019-01-30 08:31:33
$ node --version
v11.9.0
$ npm --version
6.9.2
環境構築
ディレクトリ作成
$ sudo mkdir [ドメイン]
$ sudo chown [作業ユーザ]:[作業ユーザ] /var/www/html/[ドメイン]
$ cd [ドメイン]
Laravelインストール
$ composer global require laravel/installer
パスを通す
$ export PATH=$PATH:$HOME/.config/composer/vendor/bin
Laravelのプロジェクトを新規作成
$ laravel new [プロジェクト名]
未定義ホストのアクセス拒否
$ sudo vi /etc/httpd/conf.d/undefined.conf
<VirtualHost _default_:80>
ServerName any
<Location />
Require all denied
</Location>
</VirtualHost>
<VirtualHost _default_:443>
ServerName any
<Location />
Require all denied
</Location>
</VirtualHost>
バーチャルホストの設定
$ sudo vi /etc/httpd/conf.d/[ドメイン].conf
<VirtualHost *:80>
ServerName [ドメイン]
DocumentRoot /var/www/html/[ドメイン]/[プロジェクト名]/public
ErrorLog logs/[ドメイン]-error_log
CustomLog logs/[ドメイン]-access_log common
</VirtualHost>
<VirtualHost *:443>
ServerName [ドメイン]
DocumentRoot /var/www/html/[ドメイン]/[プロジェクト名]/public
ErrorLog logs/[ドメイン]-ssl_error_log
TransferLog logs/[ドメイン]-ssl_access_log
</VirtualHost>
再起動
$ httpd -t
Syntax OK
$ sudo systemctl restart httpd
ファイル・ディレクトリの権限設定
$ sudo chown -R [作業ユーザ]:apache /var/www/html/[ドメイン]/プロジェクト名
$ sudo find /var/www/html/[ドメイン]/[プロジェクト名] -type d -exec chmod 750 {} \;
$ sudo find /var/www/html/[ドメイン]/[プロジェクト名] -type f -exec chmod 640 {} \;
$ sudo chmod -R 770 /var/www/html/[ドメイン]/[プロジェクト名]/storage/ /var/www/html/[ドメイン]/[プロジェクト名]/bootstrap/cache/
DB作成
$ mysql -u root -p
mysql> CREATE DATABASE [DB名];
mysql> CREATE USER '[ユーザ名]'@'localhost' IDENTIFIED BY '[パスワード]';
mysql> GRANT ALL PRIVILEGES ON [DB名].* TO '[ユーザ名]'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> SHOW DATABASES;
mysql> SELECT host, user FROM mysql.user;
mysql> exit;
Laravelプロジェクトの環境設定
$ cd /var/www/html/[ドメイン]/[プロジェクト名]
$ vim .env
APP_NAME=[アプリ名]
APP_URL=https://[ドメイン]/
DB_DATABASE=[DB名]
DB_USERNAME=[ユーザ名]
DB_PASSWORD=[パスワード]
$ vim config/app.php
'timezone' => 'Asia/Tokyo',
シンボリックリンク生成
$ php artisan storage:link
PHPUnitの準備
$ composer install
$ ./vendor/bin/phpunit
Gitのリポジトリに登録
$ git init
$ git add .
$ git config --global user.email "[メールアドレス]"
$ git config --global user.name "[名前]"
$ git commit -m 'Laravel導入'
$ git remote add origin [リポジトリURL]
$ git push -u origin master
CircleCI用のDB設定
$ vim config/database.php
'connections' => [
'circleci' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => '3306',
'database' => 'circle_test',
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',
],
],
CircleCIの設定ファイル追加
$ mkdir .circleci
$ vim .circleci/config.yml
# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
build:
docker:
# Specify the version you desire here
- image: circleci/php:7.3.1-apache-node-browsers
- image: circleci/mysql:8.0.14
command: mysqld --default-authentication-plugin=mysql_native_password
environment:
- APP_DEBUG: true
- APP_ENV: testing
- APP_KEY: #任意の値
- DB_CONNECTION: circleci
steps:
- checkout
- run: sudo apt update # PHP CircleCI 2.0 Configuration File# PHP CircleCI 2.0 Configuration File sudo apt install zlib1g-dev libsqlite3-dev
- run: sudo docker-php-ext-install zip pdo_mysql
# Download and cache dependencies
- restore_cache:
keys:
# "composer.lock" can be used if it is committed to the repo
- v1-dependencies-{{ checksum "composer.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: composer install -n --prefer-dist
- save_cache:
key: v1-dependencies-{{ checksum "composer.json" }}
paths:
- ./vendor
- restore_cache:
keys:
- node-v1-{{ checksum "package.json" }}
- node-v1-
- run: yarn install
- save_cache:
key: node-v1-{{ checksum "package.json" }}
paths:
- node_modules
# prepare the database
- run: php artisan migrate
# run tests with phpunit
- run: ./vendor/bin/phpunit
Gitリポジトリにcommit & push
$ git add .
$ git commit -m ‘CircleCIの設定追加’
$ git push origin master
以上です!?
[…] 参考①:https://circleci.com/docs/2.0/language-php/②:いまさらだけどCircleCIに入門したので分かりやすくまとめてみた③:CircleCIでLaravel[MySQL]とPHPUnitの自動化④:CircleCI対応のLaravel開発環境を作る方法 […]