はじめに
- 各種言語はanyenvから*envをインストールする (phpenv rbenv pyenv ndenv goenv)
- *envから各言語をインストールする (PHP Ruby Python Node.js Go)
- phpの実行環境はLaradock で構築する
- Apache、NGINX、MYSQL、PostgreSQL等もLaradock で構築する
- 要Dokcer環境 (2018年 ArchLinuxで開発環境を作る完全版 (UEFI + GNOME3 + GRUB) - 開発環境構築編のDockerインストールを参考)
.profileの設定
- 2018年 ArchLinuxで開発環境を作る完全版 (UEFI + GNOME3 + GRUB) - 開発環境構築編 を行った前提です。
- ↑をやっていない人は.zshrc、.zprofile、.bashrc、.bash_profileなどに以下の設定を
if [ -d $HOME/.anyenv ] ; then
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"
# tmux対応
for D in `\ls $HOME/.anyenv/envs`
do
export PATH="$HOME/.anyenv/envs/$D/shims:$PATH"
done
fi
eval "$(pyenv virtualenv-init -)"
eval "$(pipenv --completion)"
eval "$(goenv init -)"
anyenv のインストール
git clone https://github.com/riywo/anyenv ~/.anyenv
exec $SHELL -l
setup-env をクローンして実行
https://github.com/bubbkis/setup_env
- anyenvのプラグイン(anyenv-update、anyenv-git)をインストール
- rbenv(Ruby)、pyenv(Python)、ndenv(Node.js)、phpenv(PHP)、goenv(Go) のインストール
- 他にもRenv、erlenv、plenv、scalaenvなど必要な物があればカスタマイズしてご自由にどうぞ
- プラグイン(pyenv-virtualenv、ndenv-yarn) のインストール
- Ruby(最新版)、Python(最新版、2.7系の最新)、Node.js(最新版)、Go(最新版) のインストール
- PHPはLaradockで対応するためインストールしていない。一応phpenvをインストールしただけ。
- python- virtualenvでneovimに対応
git clone https://github.com/bubbkis/setup_env.git ~/setup_env
sh ~/setup_env/1_setup_env.sh
sh ~/setup_env/2_setup_env_plugin.sh
sh ~/setup_env/3_setup_lang.sh
sh ~/setup_env/4_setup_virtualenv_neovim.sh
Laradock のインストール
php apache nginx mysql postgresql等の開発環境はlaradockにて構築する
https://github.com/laradock/laradock
mkdir -p ~/Develop/Sites
cd ~/Develop
git clone https://github.com/Laradock/laradock.git
cd laradock
cp env-example .env
.env の設定
# ~/Develop/Sites がapacheやnginxの共有ワークディレクトリになります。
APP_CODE_PATH_HOST=../Sites/
WORKSPACE_INSTALL_XDEBUG=true
WORKSPACE_INSTALL_DEPLOYER=true
WORKSPACE_INSTALL_IMAGE_OPTIMIZERS=true
WORKSPACE_INSTALL_IMAGEMAGICK=true
WORKSPACE_INSTALL_PG_CLIENT=true
WORKSPACE_TIMEZONE=Asia/Tokyo
PHP_FPM_INSTALL_MEMCACHED=true
PHP_FPM_INSTALL_XDEBUG=true
PHP_FPM_INSTALL_EXIF=true
PHP_FPM_INSTALL_PGSQL=true
PHP_FPM_INSTALL_POSTGRES=true
NGINX_HOST_HTTP_PORT=8888
NGINX_HOST_HTTPS_PORT=4433
APACHE_HOST_HTTP_PORT=8887
APACHE_HOST_HTTPS_PORT=4432
MYSQL_VERSION=latest
# MYSQL_VERSION=latest の場合、MySQL8.*がインストールされる。
# MYSQL_VERSION=5.7 とすればMySQL5.7がインストールされる。
MySQL8.* をインストールした場合、laradock/mysql/my.cnf を修正する
# sql-modelをコメントアウト
#sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
# [mysqld] の下に以下を指定する。
[mysqld]
default_authentication_plugin= mysql_native_password
PostgreSQL 初期設定
docker-compose up -d postgres
docker-compose exec postgres bash
su - postgres
psql
\du
\password postgres
\q
vi ./data/postgresql.conf
log_timezone = 'UTC'
↓
log_timezone = 'Asia/Tokyo'
timezone = 'UTC'
↓
timezone = 'Asia/Tokyo'
exit
exit
docker-compose restart postgres
docker-compose stop
laradock/php-fpm/xdebug.ini を修正する
xdebug.remote_host=dockerhost
xdebug.remote_connect_back=0
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.cli_color=1
Modifiy laradock/workspace/xdebug.ini
xdebug.remote_host=dockerhost
xdebug.remote_connect_back=0
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.cli_color=1
laradock/php-fpm/Dockerfile を修正する
PHP Memcached:
ARG INSTALL_MEMCACHED=false
RUN if [ ${INSTALL_MEMCACHED} = true ] && ( [ ${PHP_VERSION%.*} = 5.6 ] || [ ${PHP_VERSION%.*} = 5.5 ] ) ;then \
# Install the php memcached extension
pecl install memcached-2.2.0 && \
docker-php-ext-enable memcached; \
elif [ ${INSTALL_MEMCACHED} = true ]; then \
# Install the php memcached extension
curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \
&& mkdir -p memcached \
&& tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
&& ( \
cd memcached \
&& phpize \
&& ./configure \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r memcached \
&& rm /tmp/memcached.tar.gz \
&& docker-php-ext-enable memcached \
;fi
laradock/workspace/Dockerfile を修正する
PG_Client:
USER root
ARG INSTALL_PG_CLIENT=false
RUN if [ ${INSTALL_PG_CLIENT} = true ]; then \
# Install the pgsql client
#apt-get -y install postgresql-client \
apt-get install wget \
&& add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" \
&& wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
&& apt-get update \
&& apt-get -y install postgresql-client-10 \
;fi
ImageMagick:
USER root
ARG INSTALL_IMAGEMAGICK=false
RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \
apt-get update \
&& apt-get install -y --force-yes imagemagick php-imagick \
;fi
Python:
ARG INSTALL_PYTHON=false
RUN if [ ${INSTALL_PYTHON} = true ]; then \
apt-get -y install python python-pip python-dev build-essential \
&& pythom -m pip install --upgrade pip \
&& pythom -m pip install --upgrade virtualenv \
;fi
Laradock の使い方
起動方法 (初回起動時は時間が掛かります)
cd ~/Develop/laradock
# apache2, postgresql, pgadmin を起動する場合
docker-compose up -d apache2 postgres pgadmin workspace
# apache2 のポートは8887を指定したので、http://localhost:8887 でアクセス出来る。
# pgadmin へは、http://localhost:5050
# laradock/pgadmin/Dockerfile を確認してください
# user: pgadmin4@pgadmin.org
# password: admin
# nginx, mysql, phpmyadmin を起動する場合
docker-compose up -d nginx mysql phpmyadmin workspace
# nginx のポートは8888を指定したので、http://localhost:8888 でアクセス出来る。
# phpmyadmin へは、http://localhost:8080
# phpmyadmin の設定は、.env のPHP MY ADMIN の箇所を確認してください
# PMA_USER=default
# PMA_PASSWORD=secret
# PMA_ROOT_PASSWORD=secret
# PMA_PORT=8080
# mysql の設定は、.env のMYSQL の箇所を確認してください
# MYSQL_DATABASE=default
# MYSQL_USER=default
# MYSQL_PASSWORD=secret
# MYSQL_PORT=3306
# MYSQL_ROOT_PASSWORD=root
起動状態の確認
docker-compose ps
.envファイルのパラメーターを修正して、再buildする場合
例えば、PHPのバージョン5.6を使いたい場合、.envの
PHP_VERSION=7.2
↓
PHP_VERSION=5.6
へ修正し再buildする
docker-compose up -d --build php-fpm workspace
DB(mysql、postgres)のデータ保存先
# ホームディレクトリ直下の .laradock/data
~/.laradock/data
- DBのバージョン更新などの場合、各DBのデータディレクトリをバックアップして移動すること
- バージョンアップ時、古いバージョンのデータがあるとBuild時にエラーで止まってしまう
Laradock に Laravel をインストールする
- workspace へは既にcomposer がインストール済み
docker-compose up -d nginx mysql phpmyadmin workspace
docker-compose exec workspace bash
composer create-project laravel/laravel mylaravel
exit
- laradock/nginx/sites/default.conf を修正する
- root /var/www/public;
+ root /var/www/mylaravel/public;
- nginx を再起動
docker-compose restart nginx
Laradock に CakePHPをインストールする
- workspace へは既にcomposer がインストール済み
docker-compose up -d nginx mysql phpmyadmin workspace
docker-compose exec workspace bash
composer self-update && composer create-project --prefer-dist cakephp/app mycakephp
- laradock/nginx/sites/default.conf を修正する
/laradock/nginx/sites/default.conf
- root /var/www/public;
+ root /var/www/mycakephp/webroot;
- nginx を再起動
docker-compose restart nginx
- cakephp のDB設定でhostを"localhost"や"127.0.0.1"ではなく、"mysql"や"postgres"と指定する