LoginSignup
10
7

More than 5 years have passed since last update.

2018年 モダンな開発環境構築方法 (PHP Ruby Python Node.js Go)

Last updated at Posted at 2018-05-28

はじめに

.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"と指定する
10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7