iku8log

Webエンジニアのタダのメモ。

openjdk11のvagrant boxを作成した

jdkのboxのイメージをbox化したかったのでメモ

centos7にjava-11-openjdkをインストール - iku8log

↑でjdkのインストールを行っている VMを使う

パッケージ化

パッケージファイルをまず作成する

vagrant package default

これで1GBくらいのpackage.boxというファイルが作られる

boxを追加する

vagrant box add centos7-openjdk11 package.box

これでcentos7-openjdk11という名のboxが追加される。

確認

vagrant box list

centos7-openjdk11というなのboxが表示されるはず

vagarnt init centos7-openjdk11
vagrant up

これでcentos7でopenjdk11がインストールされたvmが立ち上がる

centos7にjava-11-openjdkをインストール

javaの実行環境がvm上にほしかったので、入れてみたときのメモ

jdkを探す

yum search java-11-openjdk

jdkの11があったのでインストールする

jdkインストール

sudo yum install -y java-11-openjdk

javacも使いたいのでdevelもインストールしておく

sudo yum install -y java-11-openjdk-devel

バージョン確認

java -version

11と表示される。

Laravelで「php artisan serve」時にIntelliJ+xdebugでデバッグする(mac)

f:id:iku8:20210102130037p:plain 以前リモートホスト上(vagrant + virtualbox)で稼働しているLaravelをデバッグしようとすると、結構設定が面倒だった印象だったが、 ローカル+xdebug3での設定はかなり簡単になっていた。

というか簡単になりすぎて、よくわからない。

一応メモ

phpxdebugのインストール

brewでインストールする。以下参照

iku8.hatenablog.com

php.iniの設定

brewでインストールすると以下あたりにphp.iniがあるので開く

/usr/local/etc/php/7.3/php.ini

zend_extension="xdebug.so" ; これはすでに追加されているはず

xdebug.mode=debug ; これだけ追加

xdebug2の時代はidekeyやらhostやらportを指定したが、指定しなくても出来た。 たぶんリモートデバッグの場合は色々設定しないといけないはず。

xdebug2から設定項目の名称が結構変わっているので以下を参照して変えていくとよい。(設定をいじる場合は)

https://xdebug.org/docs/upgrade_guide

間違ってる設定の場合はphp -vとかコマンドを打つとどこが間違っていて、どう直せばよいかのリンクが出てくるので便利だった。

xdebug helper for chromeのインストール

chrome.google.com

これを入れると設定いらずでデバッグできるとのこと。

f:id:iku8:20210102124543p:plain

こんな感じでlocalhost:8000でdebugモードにする。

画面をリロードすると、intellijに遷移し以下のような設定勝手に作られる。

f:id:iku8:20210102124743p:plain

acceptを押してこれでデバッグができるようになる。

こんな感じ

f:id:iku8:20210102130243p:plain

うそこんなんで良いの?って思ったがなんか行けるらしい。 ポートもホストも自分では何も指定していないのに。めちゃくちゃ楽だった。

参考

ゼロコンフィギュレーションデバッグ — PhpStorm ゼロコンフィギュレーションデバッグというだけあって設定は楽だった。ゼロではないが。

macにphpとxdebugをインストール

f:id:iku8:20210102112132p:plain

度忘れてしまうので、メモ。

phpのインストールと特定バージョンの切り替え、xdebugのインストール。

phpインストール

brew search php@7

php7でインストール可能なバージョンが出てくるのでテキトーに選択して

php@7.3をインストールしてみた

brew install php@7.3

phpバージョンの切り替え

php@7.4をインストールしていると仮定して

brew unlink php@7.3
brew link php@7.4

/usr/local/etc

xdebugインストール

php@7.3がlinkされていればpeclも同様に使えると思うので、peclを使ってxdebugをインストール

pecl install xdebug

確認は以下

php -v

ここにxdebugと表示されていればok

php -m

ここにもxdebugと出るはず。

Xdebug3出たんだね。

docker-composeで立てたmysqlの接続情報が変更できない

dockerを使用してmysqlを立てた。

environmentにてパスワードとかDB名を指定していたが、その情報を変えても変更できなくなった。

設定ファイルはこんな感じ

docker-compose.yml

version: '3'

services:
  db:
    image: mysql:8.0
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root!
      MYSQL_DATABASE: ${DB_NAME}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASS}
      TZ: 'Asia/Tokyo'
    ports:
      - ${DB_PORT}:3306
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./mysql/sql:/docker-entrypoint-initdb.d

.env

DB_NAME=mydb
DB_PORT=3306
DB_USER=mydb_user
DB_PASS=mydb_user!
DB_HOST=localhost

結論

コンテナ作成時に作られた接続情報がファイルとして残っていた。 DBの情報は./mysql/dataに入っているので、当たり前っちゃ当たり前。

解決方法

./mysql/dataを削除する

rm -rf ./mysql/data

ボリュームを作成している場合

ボリュームにDBデータを保存するようにしてる場合も同様のことをしてあげれば、接続情報を変更できる。

docker-compose.yml

version: '3'

services:
  db:
    image: mysql:8.0
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root!
      MYSQL_DATABASE: ${DB_NAME}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASS}
      TZ: 'Asia/Tokyo'
    ports:
      - ${DB_PORT}:3306
    volumes:
      - db-data:/var/lib/mysql
      - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./mysql/sql:/docker-entrypoint-initdb.d

volumes:
  db-data:

db-dataというボリュームを作っているので、コンテナ起動時に接続情報などDBのデータは全てdb-dataに入る。

docker volume ls

ボリューム一覧を見るとコンテナ名+ボリューム名のボリュームがあるので削除してやればよい。

今回であれば、mysql_db-dataを削除

docker volume rm mysql_db-data

busyboxとかで作るボリュームコンテナの場合も同じように何かしら消してあげればよいはず。