- 投稿日:2019-11-15T21:41:20+09:00
docker-composeでpostgresの設定を変更する方法
結論
docker-entrypoint-initdb.dディレクトリに
*.sql
,*.sql.gz
, or*.sh
ファイルを置くと、databaseを作成時に実行してくれますやりたいこと
開発時docker postgresとAWS RDSの設定が異なるので一致させたい
as isSELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%'; name | setting | context -------------+------------+----------- lc_collate | en_US.utf8 | internal lc_ctype | en_US.utf8 | internal lc_messages | en_US.utf8 | superuser lc_monetary | en_US.utf8 | user lc_numeric | en_US.utf8 | user lc_time | en_US.utf8 | user (6 rows)to be
SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%'; name | setting | context -------------+------------+----------- lc_collate | en_US.utf8 | internal lc_ctype | en_US.utf8 | internal lc_messages | | superuser lc_monetary | C | user lc_numeric | C | user lc_time | C | user (6 rows)スクリプトとdocker-compose.ymlの修正
今回は
init_db
ディレクトリ以下にinit_db.sh
ファイルを作成しました。
やっていることはコンテナ内の/var/lib/postgresql/data/postgresql.conf
ファイルの中身をsed
コマンドで書き換えています。
ディレクトリ名はdocker-compose.yml
のvolumesと一致していればなんでもよいです。init_db/init_db.sh#!/bin/bash # 開発環境用のDocker postgresqlの起動設定を変更する # 本番DBにあわせた設定にする set -e sed -i -e"s/^lc_messages = 'en_US.utf8'.*$//" /var/lib/postgresql/data/postgresql.conf sed -i -e"s/^lc_monetary = 'en_US.utf8'.*$/lc_monetary = 'C'/" /var/lib/postgresql/data/postgresql.conf sed -i -e"s/^lc_numeric = 'en_US.utf8'.*$/lc_numeric = 'C'/" /var/lib/postgresql/data/postgresql.conf sed -i -e"s/^lc_time = 'en_US.utf8'.*$/lc_time = 'C'/" /var/lib/postgresql/data/postgresql.confvolumesでホストの
init_db
ディレクトリをコンテナのdocker-entrypoint-initdb.d
ディレクトリにマウントします。
これでpostgresイニシアライズ時に↑で作成したスクリプトが実行されます。docker-compose.ymlpostgres: image: postgres:9.5.15 restart: always volumes: - ./tmp/db:/var/lib/postgresql/data - ./init_db:/docker-entrypoint-initdb.dデータベースを作り直す
どうやら作成し直さないと設定が変更にならない項目もあるようなので、データベースを作成しなおします
sudo rm -rf tmp/db or # railsなら docker-compose run --rm web bin/rails db:dropそれでもうまくいかない場合はいったんimageなども削除したほうがよいかもしれません。
※以下はdockerのimagesを全削除するコマンドです。docker rmi $(docker images -q) -fbefore
SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%'; name | setting | context -------------+------------+----------- lc_collate | en_US.utf8 | internal lc_ctype | en_US.utf8 | internal lc_messages | en_US.utf8 | superuser lc_monetary | en_US.utf8 | user lc_numeric | en_US.utf8 | user lc_time | en_US.utf8 | user (6 rows)after
SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%'; name | setting | context -------------+------------+----------- lc_collate | en_US.utf8 | internal lc_ctype | en_US.utf8 | internal lc_messages | | superuser lc_monetary | C | user lc_numeric | C | user lc_time | C | user (6 rows)成功です!
- 投稿日:2019-11-15T19:31:47+09:00
Amazon Linux2 にdockerをインストールしようとしたらはまった話
Amazon Linuxはちょっと違うので備忘録。
2019/11/15日時点での対応Amazon Linux2にDockerのインストールを試みる
ちょっと簡単に開発環境を作りたかったので、EC2上にDockerをインストールしようとしました。
DockerはいつもCentOS方式でインストールしてましたんで、ここを参照しながらインストール。$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io sudo systemctl start dockerすると、依存性の関係でエラーが発生
$ sudo yum install docker-ce docker-ce-cli containerd.io 読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd docker-ce-stable | 3.5 kB 00:00:00 (1/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:00 (2/2): docker-ce-stable/x86_64/primary_db | 37 kB 00:00:00 依存性の解決をしています --> トランザクションの確認を実行しています。 〜 略 〜 エラー: パッケージ: containerd.io-1.2.10-3.2.el7.x86_64 (docker-ce-stable) 要求: container-selinux >= 2:2.74 エラー: パッケージ: 3:docker-ce-19.03.5-3.el7.x86_64 (docker-ce-stable) 要求: container-selinux >= 2:2.74 問題を回避するために --skip-broken を用いることができます。 これらを試行できます: rpm -Va --nofiles --nodigestoh。マジか。どうやらcontainer-selinuxのバージョンが合わないよ、とのこと。
助けてGoogle先生
ということで色々漁ってみた結果、CentOSのリポジトリから対象のバージョンをダウンロードするも、今度selinux-policyの依存性でエラーが。
$ sudo yum install ftp://bo.mirror.garr.it/1/slc/centos/7.1.1503/extras/x86_64/Packages/container-selinux-2.74-1.el7.noarch.rpm 〜 略 〜 エラー: パッケージ: 2:container-selinux-2.74-1.el7.noarch (/container-selinux-2.74-1.el7.noarch) 要求: selinux-policy-base >= 3.13.1-216.el7 インストール: selinux-policy-targeted-3.13.1-192.amzn2.6.noarch (installed) selinux-policy-base = 3.13.1-192.amzn2.6 利用可能: selinux-policy-minimum-3.13.1-166.amzn2.5.noarch (amzn2-core) selinux-policy-base = 3.13.1-166.amzn2.5 利用可能: selinux-policy-minimum-3.13.1-166.amzn2.9.noarch (amzn2-core) selinux-policy-base = 3.13.1-166.amzn2.9 利用可能: selinux-policy-minimum-3.13.1-192.amzn2.6.noarch (amzn2-core) selinux-policy-base = 3.13.1-192.amzn2.6 利用可能: selinux-policy-mls-3.13.1-166.amzn2.5.noarch (amzn2-core) selinux-policy-base = 3.13.1-166.amzn2.5 利用可能: selinux-policy-mls-3.13.1-166.amzn2.9.noarch (amzn2-core) selinux-policy-base = 3.13.1-166.amzn2.9 利用可能: selinux-policy-mls-3.13.1-192.amzn2.6.noarch (amzn2-core) selinux-policy-base = 3.13.1-192.amzn2.6 利用可能: selinux-policy-targeted-3.13.1-166.amzn2.5.noarch (amzn2-core) selinux-policy-base = 3.13.1-166.amzn2.5 利用可能: selinux-policy-targeted-3.13.1-166.amzn2.9.noarch (amzn2-core) selinux-policy-base = 3.13.1-166.amzn2.9 エラー: パッケージ: 2:container-selinux-2.74-1.el7.noarch (/container-selinux-2.74-1.el7.noarch) 要求: selinux-policy-targeted >= 3.13.1-216.el7 インストール: selinux-policy-targeted-3.13.1-192.amzn2.6.noarch (installed) selinux-policy-targeted = 3.13.1-192.amzn2.6 利用可能: selinux-policy-targeted-3.13.1-166.amzn2.5.noarch (amzn2-core) selinux-policy-targeted = 3.13.1-166.amzn2.5 利用可能: selinux-policy-targeted-3.13.1-166.amzn2.9.noarch (amzn2-core) selinux-policy-targeted = 3.13.1-166.amzn2.9 エラー: パッケージ: 2:container-selinux-2.74-1.el7.noarch (/container-selinux-2.74-1.el7.noarch) 要求: selinux-policy >= 3.13.1-216.el7 インストール: selinux-policy-3.13.1-192.amzn2.6.noarch (installed) selinux-policy = 3.13.1-192.amzn2.6 利用可能: selinux-policy-3.13.1-166.amzn2.5.noarch (amzn2-core) selinux-policy = 3.13.1-166.amzn2.5 利用可能: selinux-policy-3.13.1-166.amzn2.9.noarch (amzn2-core) selinux-policy = 3.13.1-166.amzn2.9 問題を回避するために --skip-broken を用いることができます。 これらを試行できます: rpm -Va --nofiles --nodigestめんどくせえ・・・orz
回り回って公式にたどり着いた
んで、どうしたもんかなと。
依存性の解決をいちいちやりたくないなー・・・、かといってECS使う程ガチな環境じゃないんだよなー・・・とか思ってECSのページを見ると、Amazon LinuxへのDockerインストールマニュアルが偶然見つかりました。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/docker-basics.html$ sudo yum update -yパッケージをアップデートして・・・
$ sudo amazon-linux-extras install dockerExtraリポジトリからdockerをインストールして・・・
$ sudo service docker startサービスを起動
$ sudo service docker start Redirecting to /bin/systemctl start docker.service $ ps -ef |grep docker root 12642 1 1 10:25 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=1024:4096 ec2-user 12818 3438 0 10:25 pts/0 00:00:00 grep --color=auto dockerこんな簡単やったんか・・・orz
教訓
困ったら公式を読め
- 投稿日:2019-11-15T17:54:14+09:00
docker/git credential helperの使い方(一覧)
docker
- https://docs.docker.com/engine/reference/commandline/#credentials-store
- https://github.com/docker/docker-credential-helpers/releases
- storeだけjson、get/eraseはホスト名を入力として取ります
$ docker-credential-pass store > {"ServerURL":"__HOST__","Username":"__USERNAME__","Secret":"__PASSWORD__"} $ docker-credential-pass list {"__HOST__":"__USERNAME__"} $ docker-credential-pass get > __HOST__ {"ServerURL":"__HOST__","Username":"__USERNAME__","Secret":"__PASSWORD__"} $ docker-credential-pass erase > __HOST__git
- https://git-scm.com/docs/gitcredentials
- /usr/share/doc/git/contrib/credential や /usr/local/opt/git/share/git-core/contrib/credential/ 配下とかにあるらしいです。なければ https://github.com/git/git/tree/master/contrib/credential から取れます(cf https://stackoverflow.com/a/40312117/2641271)
- HTTPに近く、入力は行単位、空行で入力終了です
$ git-credential-libsecret store > protocol=https > host=__HOST__ > username=__USERNAME__ > password=__PASSWORD__ > $ git-credential-libsecret get > protocol=https > host=__HOST__ > username=__USERNAME__ password=__PASSWORD__ $ git-credential-libsecret erase > protocol=https > host=__HOST__ >
- 投稿日:2019-11-15T16:44:10+09:00
Ubuntu18.04にNVIDIA Container Toolkitをインストールする
最初に
手元で上手くいった例を記録として残しているだけで、何が正しいか分かっていない(動けば正義)ので無駄な手順等を行なっている可能性があります、ご了承ください
またコマンドと出力が一緒になっている部分はコマンド前に$
を付けています環境
試した環境
- Docker, nvidia-driver, CUDA未インストール
- GPUはGTX 1660Tiと1660の二枚刺し
- OSはUbuntu: 18.04 (詳しくは以下の通り)
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"nvidia-driverとCUDAをインストールする
以下のサイトを参考にインストール
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" sudo apt-get update # 自動で合うdriverを入れてくれる # sudo ubuntu-drivers autoinstallだと435, 以下コマンドだと418のインストールを確認 sudo apt-get -y install cuda-drivers sudo apt-get -y install cuda
.bashrc
にパスを追加# 以下を追記 export PATH="/usr/local/cuda/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
sudo reboot
で再起動、以下で確認$ nvidia-smi Fri Nov 15 00:06:50 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 418.87.01 Driver Version: 418.87.01 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 166... On | 00000000:01:00.0 On | N/A | | 29% 33C P8 5W / 120W | 110MiB / 5911MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 GeForce GTX 1660 On | 00000000:03:00.0 Off | N/A | | 28% 31C P8 3W / 120W | 1MiB / 5914MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 953 G /usr/lib/xorg/Xorg 39MiB | | 0 1011 G /usr/bin/gnome-shell 69MiB | +-----------------------------------------------------------------------------+ $ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2019 NVIDIA Corporation Built on Sun_Jul_28_19:07:16_PDT_2019 Cuda compilation tools, release 10.1, V10.1.243Dockerをインストールする
以下のサイトを参考にインストール
sudo apt update sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD8 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io -y # 確認 sudo docker run hello-worldバージョンの確認(NVIDIA Container ToolkitはDockerが19.03以降でないとダメ)
$ docker -v Docker version 19.03.4, build 9013bf583aNVIDIA Container Toolkitをインストール
以下のサイトを参考にインストール
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker動くか確認
$ nvidia-container-cli info NVRM version: 418.87.01 CUDA version: 10.1 Device Index: 0 Device Minor: 0 Model: GeForce GTX 1660 Ti Brand: GeForce GPU UUID: GPU-4dd3cbbf-cb72-be49-a3d0-4625043ce50e Bus Location: 00000000:01:00.0 Architecture: 7.5 Device Index: 1 Device Minor: 1 Model: GeForce GTX 1660 Brand: GeForce GPU UUID: GPU-914b0174-e95d-0b8f-cf13-d20ed58f707e Bus Location: 00000000:03:00.0 Architecture: 7.5
これでGPUコンテナを実行するとき(run)に
--gpus
オプションを付ければ動くメモ
dockerコマンドの際に一々sudoを打たなくていいようにする
この記事より以下コマンドを入力後、再起動
dockerコマンドをsudoの付与無しに実行できるようにするsudo gpasswd -a "権限を付与するuser" docker実際にpytorchを動かしてみる
閑話休題
今回はお手軽にpytorch公式のdockerhubからイメージを持ってくる(動くか確認もしたかった)# 色々オプションをつけているが、最低限なら-pとか-vはいらない # -vするなら適当に作業ディレクトリに移動してから行う docker run -itd --name pytorch -p 8888:8888 -v $PWD/:/workspace --gpus all pytorch/pytorch:1.3-cuda10.1-cudnn7-devel docker exec -it pytorch /bin/bash
nvidia-smi
もちゃんと動くことを確認
学習部分だけいい感じに切り取ってくれている記事があったので利用させてもらう
Docker(19.03)でgpu有効化してpytorchで訓練するまでやる(Ubuntu18.04)
無事動くことを確認おまけ
この記事より丁寧でわかりやすい導入記事()
NVIDIA Container Toolkit を使って Docker コンテナで GPU を使う
- 投稿日:2019-11-15T16:31:24+09:00
docker-composeで簡単に環境構築Apache2.4+PHP7.1+PostgreSQL9.6
仕事で上記の環境が必要になったので
もうやりたくない備忘録として残す環境
- Mac for Docker
- Apache2.4
- PHP7.1
- PostgreSQL9.6
構成
ディレクトリ構成はこんな感じです。
Dockerfile
docker/web
にDockerfile
という名前のファイルを作成し以下の内容で記述PHPのバージョンを変えたければFROMの
php:7.3-apache
という風に変えればいけるはず。docker/web/DockerfileFROM php:7.1-apache COPY ./php.ini /usr/local/etc/php/ RUN set -ex apk --no-cache add postgresql-dev libpq-dev && \ apt-get update && apt-get install -y libpq-dev \ vim \ less \ && docker-php-ext-install pdo pdo_pgsql pgsql mbstring同階層で
php.ini
ファイルを作成します。docker/web/php.ini[Core] display_errors = On error_reporting = E_ALL error_log = /var/log/apache2/error.log log_errors = On [Date] date.timezone = 'Asia/Tokyo' [mbstring] mbstring.language = Japanese mbstring.internal_encoding = auto mbstring.http_input = auto mbstring.http_output = auto mbsting.encoding_translation = Off mbstring.detect_order = autodocker-compose.yml
PostgreSQLのバージョン変えたければ
image: postgres:9.3
の部分を変更してください。
またはポートを変えたいときはports: -8110:80
を変更してください。docker-compose.ymlversion: '3' services: web: build: ./docker/web/ ports: - 8110:80 volumes: - .:/var/www/html depends_on: - db db: image: postgres:9.3 ports: - 5433:5432 volumes: - ./docker/db:/docker-entrypoint-initdb.d公開ファイルを編集
適当に今回は
index.php
を上げるのでphpinfo
を表示させようindex.php<?php phpinfo();実行
実行してみる
docker-compose up -d
立ち上がってるか確認してみる
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0e5271d55548 4b77e94c903a "docker-php-entrypoi…" 38 minutes ago Up 38 minutes 0.0.0.0:8110->80/tcp test_web_1 d7ae129bf106 postgres:9.3 "docker-entrypoint.s…" 38 minutes ago Up 38 minutes 0.0.0.0:5433->5432/tcp test_db_1ブラウザ確認
先ほどのdocker-compose.ymlをそのまま使用している人なら以下のリンクから飛べるはず
localhost:8110下の画面が表示されていれば成功
マシン接続
コンテナ内に入ってみる
$ docker exec -it test_web_1 bash # ls # docker docker-compose.yml index.php最後に
docker-compose.ymlが便利すぎて辛い。
- 投稿日:2019-11-15T12:04:27+09:00
Dockerのベースイメージディストリビューション選定のベストプラクティス
結論
以下3つのどれか
- Alpine Linux
- Ubuntu
- Debian
厳しい
- CentOS (理由によってはありえます)
選定理由の云々
コンテナのイメージ設定のベタープラクティスとして
- コンテナのイメージサイズは極力減らす
といったものが挙げられます。
CentOSはサーバー上で直に動かす分には、便利なモジュールがデフォルトで色々入ってて便利ですが、Dockerコンテナとして使うと余計なモジュールが多すぎてイメージサイズが莫大になってしまうため、一般的には控えたほうが良いです。CentOSイメージのBuildが遅すぎてストレスフルですし。
とにかく軽いイメージを目指すのであればAlpine Linuxですが、資料的ものが少ない(肌感)で、安定した運用を目指すのであればUbuntuかDebianです。Debianで作られたイメージがDocker Hub上では多い(印象)です。
その他備考というか独り言
CentOSはLTSでサポート期間が長くてええやん!
かもしれませんが、イメージサイズの観点だけからすると厳しい印象です。他にも良いディストリビューションあります!
って意見多数出ると思いますが、上記4つのディストリビューション以外試してないんですすみません。
- 投稿日:2019-11-15T10:15:55+09:00
Docker&Railsの環境構築をしようとしたらはまった話
はじめに
私は、Arch Linuxをインストールして1カ月くらい経つぐらいの人です。Arch Linuxの知識ほぼないです
Dockerについても今回初めてやるので、全く知識がない状態の人がDockerやってみたので、おかしいところが少々あるかもしれないので、よろしくお願いします。
私が開発した環境
種類 version 使用OS Arch Linux Docker 19.03.4 Ruby 2.5.7 Rails 5.2.3 rbenv 1.1.2 実現したかったこと
ローカル上のRuby,RailsのバージョンをDockerコンテナの中のバージョンと揃えて、開発をすること。
試してみたこと
- rbenvを使って、Rubyのバージョンを切り替える。
- バージョンを変えても適用されないなどと、環境がおかしくなり、断念しました。
- dockerコンテナの中で、開発をすべて行う(?)
- railsコマンドを書き換えてdockerコンテナのバージョンで作成するように書き換えたら、うまくできました。
私なりに、やって正解だったことをまとめます。
やったこと
rails
コマンドをそのまま打ち込むとローカルのRuby,Railsのバージョンが適用されてしまうため、頭にかならず,docker-compose run web
とつけるとDockerコンテナ内のバージョンが適用されるので、バージョンのエラーなどが起きなくなり、正常に作成できます。注意すること
また、何回も同じポート番号を指定してしまうと、重複エラーが出るので、ポート番号に気を付けましょう!間違えた場合は、
docker ps
コマンドで、今動いてるコンテナを確認して、docker stop コンテナ名(または、$(docker ps))
コンテナを止めてあげないと、削除することができないので、気を付けます。止めた後、docker rm コンテナ名
でコンテナを削除しましょう。また全削除したい場合はコンテナ名
を$(docker ps -a)
とすると今あるコンテナをすべて削除することができます。最後に
rbenvを駆使してバージョン問題に取り組むことも重要ですが、
コンテナ技術をつかえば違う選択肢もあるのかな、と感じました。
dockerコンテナわかると、消したり作ったりするの楽しくなるんでよかったら、やってみてください!
- 投稿日:2019-11-15T09:40:17+09:00
「量子アニーリングの基礎」を読む 第5日
「量子アニーリングの基礎」西森秀稔, 大関真之, 共立出版, 2018 を読む
https://qiita.com/kaizen_nagoya/items/29580dc526e142cb64e9『量子アニーリングの基礎』正誤表 (西森秀稔・大関真之 著) 2019年6月20日更新
https://www.kyoritsu-pub.co.jp/app/file/goods_contents/3037.pdf量子アニーリングの数理 東京工業大学 大学院理工学研究科 物性物理学専攻 西森 秀稔
https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/189516/1/bussei_el_033203.pdf本は、
1 量子力学
2 熱力学、統計力学
がわかっている人にとっての丁寧ここでは、どちらもわかっていないことを前提として資料を整理する。
「量子アニーリングの基礎」を読む 第1日
https://qiita.com/kaizen_nagoya/items/2bc284faaf0f61278778「量子アニーリングの基礎」を読む 第2日
https://qiita.com/kaizen_nagoya/items/749043f4f8ae026ec5e5「量子アニーリングの基礎」を読む 第3日
https://qiita.com/kaizen_nagoya/items/3f3d67d841075e8c867a「量子アニーリングの基礎」を読む 第4日
https://qiita.com/kaizen_nagoya/items/a75e954194de820637a3量子コンピュータ:量子力学にたどり着くための三つの方法
https://qiita.com/kaizen_nagoya/items/cfc35e62c81a978cc2fcプログラマが量子力学を勉強するときの7つの道
https://qiita.com/kaizen_nagoya/items/7061f62b3629eee395f2スピングラス理論と情報統計力学 西森秀稔 参考文献
https://qiita.com/kaizen_nagoya/items/702c08becfcca98fa9d8
p.183このプロセスを計算機上で数値的に実現して最適化空間の解を近似的に求める方法をシミュレテッドアニーリング(模擬徐冷)という。無限の時間をかけてTをゆっくり下げていくと現実に最適化に到達するが、実際にはほどほどの速さで温度を下げ、しかも適当なところで打ち切る。この意味で近似解法なのである。
第9章
量子モンテカルロ法
量子モンテカルロ法の最近の発展 京都大学 大学院情報学研究科 原田健自
https://www-np.acs.i.kyoto-u.ac.jp/~harada/misc/qmc.pdfマルコフ連鎖
マルコフ連鎖の基本とコルモゴロフ方程式
https://mathtrain.jp/markovchain確率過程の基礎-マルコフ連鎖- 2016/4/25
スタートアップゼミ 社会基盤学科 交通研 B4 前田翠 東京大学
http://bin.t.u-tokyo.ac.jp/startup16/file/2-2.pdfギブス・ボルツマン分布
1.材料の熱力学・統計力学 鹿児島大学
http://www.mech.kagoshima-u.ac.jp/~nakamura/bussei/thermo-statistics.pdfエントロピーとギブスの正準集団
https://ist.ksc.kwansei.ac.jp/~nishitani/Lectures/2005/NewMaterialDesign/Statistics.pdf統計熱力学講義 第9回 担当:西野信博 A3-012号室 広島大学
https://home.hiroshima-u.ac.jp/nishino/2010/toukei/toukei_9.pdfメトロポリス法
モンテカルロ法の前線 —サイコロを振って積分する方法 — 福島 孝治 東京大学
https://www.smapip.is.tohoku.ac.jp/~smapip/2003/tutorial/presentation/koji-hukushima.pdfベイズ統計の理論と方法 5.1 マルコフ連鎖モンテカルロ法
大橋耕也 東京工業大学 情報理工学院 数理・計算科学専攻
http://watanabe-www.math.dis.titech.ac.jp/~kohashi/document/bayes_51.pdf熱浴法
物理学特別講義 伊庭幸人 情報・システム研究機構統計数理研究所 (東工大 連携教員)
https://www.ism.ac.jp/~iba/kougi_2006_ism/c20061.pdfsimulated annealing
組合せ最適化問題に対するSimulated Annealing法
http://www.orsj.or.jp/~archive/pdf/bul/Vol.31_01_043.pdf知的システムデザイン研究室 SA プログラムの作成およびパラメータ検討 吉井健吾 同志社大学
http://mikilab.doshisha.ac.jp/dia/monthly/monthly04/20040524/yoshii.pdf連続最適化問題における近傍並列シミュレーテッドアニーリング
同志社大学工学部知識工学科卒業論文 2003年3月
学籍番号 990064 知的システムデザイン研究室 及川雅隆
http://isw3.naist.jp/IS/Bio-Info-Unit/gogroup/masata-o/PDF/graduation_thesis.pdfマルコフ連鎖に対する Spectral Gap とその Simulated Annealing への応用
千代延研究室 八田大樹
https://sci-tech.ksc.kwansei.ac.jp/~chiyonobu/gseminar/hatta.pdfAdaptive Simulated Annealing の基礎 平尾 洋樹 同志社大学
http://mikilab.doshisha.ac.jp/dia/monthly/monthly07/20070523/hirao.pdf逆温度
p.85
周辺尤度計算における温度交換の確率
渡辺澄夫 東京工業大学
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/exchange_free_energy.pdf逆温度1の事後分布のサンプルからWBICを計算する
http://statmodeling.hatenablog.com/entry/WBIC-approximationD-Waveの量子ボルツマンマシンの逆温度パラメータ最適化でPFNのOptunaつかってみた
https://qiita.com/YuichiroMinato/items/25232450d2c22d1c2fe9ベイズ学習における必要最低サンプル数の推定
Estimating a minimum required sample size for Bayesian learning
徳田悟 永田賢二 岡田真人
https://www.ai-gakkai.or.jp/jsai2015/webprogram/2015/pdf/2F1-5in.pdf虚時間
経路積分入門-経路積分,虚数時間の場合も- (Introduction to Path Integral –Path Integral in Imaginary-Time as Well-)
一瀬 孝
http://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/1723-01.pdf第 17 章 経路積分法 東京大学
https://ocw.kyoto-u.ac.jp/ja/graduate-school-of-science-jp/course-chemical-statics/pdf/lect13.pdf経路積分による量子力学と 物性論における幾何学的位相
(総合科目「物理と数学3」) 東京大学大学院工学系研究科 物理工学 初貝 安弘1
http://rhodia.ph.tsukuba.ac.jp/~hatsugai/modules/pico/PDF/lectures/Hatsugai-Geom.pdf経路積分表示 part 1:1 粒子の場合 永井佑紀 東京大学
http://park.itc.u-tokyo.ac.jp/kato-yusuke-lab/nagai/note_071025_path.pdfsinh
https://www.geisya.or.jp/~mwm48961/electro/hyperbolic_fun1.htm
双曲線関数にまつわる重要な公式まとめ
https://mathtrain.jp/hyperbolic双曲線関数の世界入門 明松 真司
http://haikara-city.com/wp-content/uploads/2017/09/hyp_world2.pdf非可換
p.89
非可換の世界を覗いてみよう
筑波大学数学系 星野光男
https://nc.math.tsukuba.ac.jp/?action=cabinet_action_main_download&block_id=282&room_id=80&cabinet_id=1&file_id=9&upload_id=225量子空間の世界 —非可換方程式を解いてみよう—
毛利 出 静岡大学理学部数学科 2015年11月26日(木)
https://www.sci.shizuoka.ac.jp/sciencecafe/news/20151126_02.pdf第10章
ボルツマン機械学習
統計的機械学習理論とボルツマン機械学習
山形大学 大学院理工学研究科 安田 宗樹
https://www.r-ccs.riken.jp/labs/cms/workshop/20170322/presentation/yasuda.pdfD-Waveでボルツマン機械学習する際のテクニック集
https://qiita.com/piyo7/items/c8f21b86f1b17dc42df3機械学習の関数「ボルツマンマシン」を用いて、量子多体系という難問に挑む
https://academist-cf.com/journal/?p=10216勾配法
量子コンピュータを用いた変分アルゴリズムと機械学習
https://www.jps.or.jp/books/gakkaishi/2019/09/74-09seriesAIphys1.pdf量子アニーリングが拓く 機械学習と計算技術の新時代
東北大学大学院情報科学研究科応用情報科学専攻 *
大関真之
http://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/2059-02.pdf量子大規模固有値問題における共役勾配法の収束性
https://www.jstage.jst.go.jp/article/jsces/2006/0/2006_0_20060027/_pdfContrastive divergence(CD)
コントラスティブダイバージェンス法とその周辺
Contrastive Divergence and Related Topics
前田 新一 京都大学大学院情報学研究科
https://jsai.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=1664&item_no=1&attribute_id=22&file_no=1&page_id=13&block_id=23連続値 RBM における Contrastive Divergence 学習の平衡点解析 東大新領域 A 理研 BSIB
唐木田亮 A, 岡田真人 A,B , 甘利俊一 B
https://www.jstage.jst.go.jp/article/jpsgaiyo/70.1/0/70.1_2992/_pdfContrastive Divergence 法 突然終わるかもしれないブログ
http://mkprob.hatenablog.com/entry/2014/07/20/034311persistent contrastive divergence(PCD)
KL情報量
Kullback-Leibler 情報量に関する解説 黒木玄 東北大学
http://www.math.tohoku.ac.jp/~kuroki/LaTeX/20160616KullbackLeibler/20160616KullbackLeibler-0.2.1.pdf正規分布間のKLダイバージェンス
https://qiita.com/ceptree/items/9a473b5163d5655420e8生成モデルで語られる Kullback-Leibler を理解する
https://qiita.com/TomokIshii/items/b9a11c19bd5c36ad0287QBoost(D-WAVE)
辞書学習
辞書学習 アルゴリズム
樺島祥介(東工大総理工), 坂田綾香(統計数理研究所)
https://www.ieice.org/ess/sita/forum/article/2015/201512081915.pdf辞書学習によるビッグデータからのパターン発見
筑波大学 手塚太郎
https://www.jstage.jst.go.jp/article/cicsj/32/4/32_76/_pdf辞書学習アルゴリズム
https://qiita.com/kibo35/items/67dedba4ea464cc494b0近接勾配法応用編その1 ~スパースコーディング、辞書学習からの超解像~
http://yamagensakam.hatenablog.com/entry/2018/04/12/074955対数尤度関数
第 10 章 推定量の求め方 大阪大学
http://www2.econ.osaka-u.ac.jp/~tanizaki/class/2018/basic_econome/04.pdf対数尤度関数の最尤推定
https://stats.biopapyrus.jp/glm/mle.html最尤法によるパラメータ推定の意味と具体例
https://mathtrain.jp/mleキメラグラフ(Chimera graph)
キメラグラフ
https://qard.is.tohoku.ac.jp/T-Wave/?glossary=キメラグラフ量子人工脳
~ 組み合わせ最適化問題を解くコヒーレント・イジングマシン 国 情報学研究所 宇都宮聖
https://www.jst.go.jp/impact/hp_yamamoto/symposium/pdf/project2_material_3.pdf富士通のHPCの取り組みについて FUJITSU'S LATEST ACTIVITIES IN HPC DEVELOPMENT
宮原豊
http://www.ee.utsunomiya-u.ac.jp/~kawatalab/pse/workshop/j2018/papers/02_0930.pdfクエンチ(急冷)
p.107
https://www.keyence.co.jp/ss/products/recorder/heat/basics/type.jsp
What is a quantum quench?
https://www.quora.com/What-is-a-quantum-quench凝縮系物理学 特別講義 人工原子 量子ドットとは何か
筑波大学物理学系 舛本泰章
https://www.px.tsukuba.ac.jp/~ikezawa/lab/chibadai.pdfトポロジカル量子戦略
~量子力学の新展開がもたらすデバイスイノベーション~
https://www.jst.go.jp/crds/pdf/2016/SP/CRDS-FY2016-SP-02.pdf分配関数
§4 統計力学の基礎
http://phys.sci.hokudai.ac.jp/~kita/StatisticalMechanicsI/Stat4.pdf
量子統計力学
上智大学理工学部 大槻東巳
http://www.ph.sophia.ac.jp/~tomi/kougi_note/stat_phys.pdfトレース
分配関数とトレースの関係Z=Tr(exp(-βH))=Σexp(-βEk)の証明
https://batapara.com/archives/19115592.html/統計力学の原理
http://rhodia.ph.tsukuba.ac.jp/~hatsugai/modules/pico/PDF/lectures/stat.pdf分配関数,密度行列,古典対応
http://www7b.biglobe.ne.jp/~fortran/education/partitionfn.pdf制限ボルツマンマシン Restricted Boltzmann Machine: RBM
制限付きボルツマンマシンの初心者向けガイド POSTD
https://postd.cc/a-beginners-guide-to-restricted-boltzmann-machines/制限ボルツマンマシン (RBM) の導出 (1)
http://aidiary.hatenablog.com/entry/20160316/1458129923深層ボルツマンマシン
【かんたん解説付き】深層ボルツマンマシンをPythonでスクラッチ実装する①
https://qiita.com/yutaitatsu/items/a9478841357b10789514深層ボルツマンマシンに対する高性能な平均場近似アルゴリズム
高橋 茶子 安田 宗樹 山形大学
https://ipsj.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=180684&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=8統計的機械学習理論と ボルツマン機械学習
https://www.r-ccs.riken.jp/labs/cms/workshop/20170322/presentation/yasuda.pdfヘルムホルツ機械学習
機械学習 – 機械学習 – ヘルムホルツ機械の実装[完了]
https://codeday.me/jp/qa/20190707/1196714.html生成モデルの Deep Learning PFI セミナー 得居 誠也
https://www.slideshare.net/beam2d/learning-generator弱識別器に SVM を用いた AdaBoost の検討 神戸大学 松田 博義 滝口 哲也有木 康雄
https://pdfs.semanticscholar.org/bf51/de439089be83481f7382f3e2c16a8f00ac80.pdfAdaBoost の弱学習器を色々試してみた
https://qiita.com/antimon2/items/8761cea58f498e4ff74b識別器
弱識別器
パターン認識特論 ~研究者から見たBoosting~
2011.10.04
牧田孝嗣@産業技術総合研究所
http://www.kameda-lab.org/lecture/2011-tsukubagrad-PRML/20111004_AIST_Makita.pdf非負値制約行列分解
非負値行列分解 “Nonnegative/binary matrix factorization with a D-Wave quantum annealer” by Daniel O’Malley, et al. (2017)
https://qard.is.tohoku.ac.jp/T-Wave/?p=397非負値行列因子分解 亀 岡 弘 和
http://www.kecl.ntt.co.jp/people/kameoka.hirokazu/publications/Kameoka2012SICE09published.pdf非負制約下における複合行列分解と
そのソーシャルメディア解析への応用
竹内 孝1,a) 石黒 勝彦1,b) 木村 昭悟1,c) 澤田 宏2,d)
https://ipsj.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=99709&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=8経験平均
知的情報処理の統計力 ―機械学習を始めてみよう― 大関真之京都大学 大学院情報学研究科システム科学専攻
http://www-adsys.sys.i.kyoto-u.ac.jp/mohzeki/summer2016.pdfAIC, WAIC, WBICを実感する
http://rstudio-pubs-static.s3.amazonaws.com/451984_464393c3da5d4f7aa94b7ca4d6cfcf3a.htmlp.101
経験分布アンサンブル学習
【入門】アンサンブル学習の代表的な2つの手法とアルゴリズム
https://spjai.com/ensemble-learning/機械学習上級者は皆使ってる?!アンサンブル学習の仕組みと3つの種類について解説します
https://www.codexa.net/what-is-ensemble-learning/アンサンブル学習 ~三人寄れば文殊の知恵~ たくさんモデルを作って推定性能を上げよう!
https://datachemeng.com/ensemblelearning/アンサンブル学習のフレームワーク
https://jp.mathworks.com/help/stats/framework-for-ensemble-learning.html過学習を避ける:ドロップアウト
トンネル効果
凍結現象
戦略的創造研究推進事業 CREST
研究領域 「量子情報処理システムの実現を目指した新技術の創出」
研究課題 「量子多体協力現象の解明と制御」
研究終了報告書
研究期間 平成17年10月~平成23年3月
研究代表者:宮下 精二 (東京大学大学院理学系研究科、教授)
https://www.jst.go.jp/kisoken/crest/report/sh_heisei17/ryoushi/04miyashita.pdf組み合わせ最適化問題と量子アニーリング : 量子断熱発 展の理論と性能評価
鈴木正 京都大学
https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/142655/1/KJ00004982313.pdf量子アニーリング方式
https://quantum.fixstars.com/introduction_to_quantum_computer/quantum_annealing/量子アニーリングによる組合せ最適化 大関 真之
http://www.orsj.or.jp/archive2/or63-6/or63_6_326.pdfこの記事はD-Wave機器の弱点を書いている。
フレッシュマンに贈る量子計算の概略と基礎 ―量子計算の考え方と量子ゲートのイメージを中心に-
小竹茂夫
http://www.eng.mie-u.ac.jp/research/activities/30/30_13.pdf量子の謎「その先を聞いてはならない」
https://www.tel.co.jp/museum/magazine/017/lab01/02.html深層ビリーフネット
深層学習技術と 信号処理・通信系アルゴリズム ̶概観と展望̶
名古屋工業大学 和田山 正
https://www.ieice.org/ess/sita/forum/article/2018/201807311720.pdfGolden Thompsonの不等式
用語
統計平均
という用語が、
スタンフォード物理学再入門 量子力学
https://www.amazon.co.jp/dp/B01B2K28Z6
アート・フリードマン レオナルド・サスキンド 日経BP(2016/01/28)
p.22 に資料整理
https://researchmap.jp/joyxqexdv-49935/#_49935【連続講義】量子力学入門(全10講)Youbute動画
https://researchmap.jp/joz7zs9b6-49935/#_49935やさしい量子力学 (1965年) (科学普及新書)
ヴェ・イ・ルィドニク 東京図書(1965)
https://researchmap.jp/jo4lwf59f-49935/#_49935道具類
Quantum Computer on Github
https://github.com/kaizen-nagoya/way_to_quantum_computerdocker for windows 7
https://qiita.com/kaizen_nagoya/items/490e5a250efabc9dc557「maxima 入門」入門(Windows編)
https://qiita.com/kaizen_nagoya/items/77cfe874c73d8eae92fc背景知識
伏見康治・確率論及統計論輪講
https://researchmap.jp/josgkrcbv-2087795/#_2087795作業記録
macOS$ brew cask install anaconda $ pip install matplotlib $ pip install cmake $ pip install openjij $ python openjijch1.py h_i: {0: -1, 1: -1, 2: -1, 3: -1, 4: -1} Jij: {(0, 1): -1, (0, 2): -1, (0, 3): -1, (0, 4): -1, (1, 2): -1, (1, 3): -1, (1, 4): -1, (2, 3): -1, (2, 4): -1, (3, 4): -1} [[1, 1, 1, 1, 1]] [{0: 1, 1: 1, 2: 1, 3: 1, 4: 1}] [[1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1]] [-4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0] ['a', 'c', 'b'] [{'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}] {'states': array([[ 1, -1, 1]]), 'num_occurrences': array([10]), 'min_energy': -4.0} [[1, 1, 0], [1, 1, 0], [1, 1, 0]] [-46.04283667268458, -45.40319673739635, -45.43927510769896, -45.8420452385678, -44.69211986420642] {'states': array([[1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0]]), 'num_occurrences': array([28]), 'min_energy': -46.04283667268458}実行
openjijch1.pyimport openjij as oj #https://openjij.github.io/OpenJijTutorial/_build/html/ja/index.html import random import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np mpl.use('Agg') # 問題を表す縦磁場と相互作用を作ります。OpenJijでは辞書型で問題を受け付けます。 N = 5 h = {i: -1 for i in range(N)} J = {(i, j): -1 for i in range(N) for j in range(i+1, N)} print('h_i: ', h) print('Jij: ', J) # まず問題を解いてくれるSamplerのインスタンスを作ります。このインスタンスの選択で問題を解くアルゴリズムを選択できます。 sampler = oj.SASampler() # samplerのメソッドに問題(h, J)を投げて問題を解きます。 response = sampler.sample_ising(h, J) # 計算した結果(状態)は result.states に入っています。 print(response.states) # もしくは添字付きでみるには samples を見ます。 print(response.samples) # 実は h, J の添字を示す、辞書のkeyは数値以外も扱えます。 h = {'a': -1, 'b': -1} J = {('a', 'b'): -1, ('b', 'c'): 1} sampler = oj.SASampler(iteration=10) # 10回 SAで解いてみる. iteration という引数で10回分一気に解くことができます。 response = sampler.sample_ising(h, J) print(response.states) print(response.energies) print(response.indices) print(response.samples) print(response.min_samples) # Q_ij を辞書型でつくります。 Q = {(0, 0): -1, (0, 1): -1, (1, 2): 1, (2, 2): 1} sampler = oj.SASampler(iteration=3) # QUBOを解く時は .sample_qubo を使いましょう response = sampler.sample_qubo(Q) print(response.states) N = 50 # ランダムにQij を作る Q = {(i, j): random.uniform(-1, 1) for i in range(N) for j in range(i+1, N)} # OpenJijで解く sampler = oj.SASampler(iteration=100) response = sampler.sample_qubo(Q) # エネルギーを少しみてみます。 print(response.energies[:5]) fig=plt.figure() plt.hist(response.energies, bins=15) plt.xlabel('Energy', fontsize=15) plt.ylabel('Frequency', fontsize=15) #plt.show() fig.savefig('ch1.png') min_samples = response.min_samples print(min_samples)参考資料(reference)
量子計算機16の疑問 「量子アニーリングの基礎」編
https://qiita.com/kaizen_nagoya/items/683961f9e747e144413ddocker(28) Openjij チュートリアルをdockerで
https://qiita.com/kaizen_nagoya/items/09a52b25d54091c8db6f今日のpythonエラー(macOS)
https://qiita.com/kaizen_nagoya/items/bb79e96104b5ff536de8Windows(M.S.)にPython3 (Anaconda3) を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679Windows(M.S.) にAnaconda3(python3)を 2019年版
https://qiita.com/kaizen_nagoya/items/c05c0d690fcfd3402534文書履歴(document history)
ver. 0.01 初稿 20191115
ver. 0.02 参考資料追記 20191116
- 投稿日:2019-11-15T04:28:39+09:00
Ruby + alpine でほんの少しだけバッチバージョンを変えた Dockerfile を自作してみようとした例 ( #ruby #docker )
Rubyでは公式イメージのDockerfileが公開されている
Ruby
該当のruby version のSHA をコピっておく
https://www.ruby-lang.org/en/news/2019/04/17/ruby-2-6-3-released/
Dockerfile
VERSION と SHA だけ書き換えた Dockerfile を作る
ENV RUBY_MAJOR 2.6 - ENV RUBY_VERSION 2.6.4 - ENV RUBY_DOWNLOAD_SHA256 df593cd4c017de19adf5d0154b8391bb057cef1b72ecdd4a8ee30d3235c65f09 + ENV RUBY_VERSION 2.6.3 + ENV RUBY_DOWNLOAD_SHA256 11a83f85c03d3f0fc9b8a9b6cad1b2674f26c5aaa43ba858d4b0fcc2b54171e1build
docker build . -t yumainaura/ruby2.6.4-alipine3.10
うまく行けば動くはず。
うまくいけば。
Original by Github issue
- 投稿日:2019-11-15T02:52:22+09:00
docker環境でお試しImageMagickをインストール
コンテナ立て直すと消えちゃいますッ………ドゥフフッッ………
dockerでOSを汚さずに試しにImageMagick使いたいな〜〜ってときに!
またはUbuntuにImageMagickインストールしたいときに!
コンテナたてるときにインストールしたいのであれば、下記記事を参考にしてください。
※dockerイメージphp:7.2-apacheの環境です><
https://qiita.com/saya1001kirinn/items/dacf5ef6b1d66ced846aUbuntu + Apatcheの環境です。
ImageMagickのインストール(パッケージマネージャを使ったインストール)
$ apt-get update $ apt-get install imagemagickPECLはPHP拡張モジュールのリポジトリとのことなので使えるとは思いますが、PHPが入ってなければ、または下記コマンド叩いて'command not found'がでたら
$ pecl help下記コマンドでpeclインストール
$ apt-get install php-pearこれでインターフェースであるImagckがインストール可能になる。
必要ないのもあるかもです…
・ライブラリ共通インターフェース
$ apt-get install gcc・Magick-Wand(ImageMagick C用のAPI)
$ apt-get install pkg-config・ImageMagick関連のライブラリインストール
$ apt-get install libmagickwand-devImagickのインストール(ImageMagickをインストールしてあることが前提)
$ pecl install imagickphp.ini にextension=imagick.so追加
※php.iniあるディレクトリ取得
php -i | grep php.ini※ディレクトリ先移動
cd /usr/local/etc/php※php.iniファイルがなければ作る
cp php.ini-development php.ini※vimインストールしてなければイントール
$ apt-get update $ apt-get install vimphp.ini のあるディレクトリで、vimでphp.iniを編集、extension=imagick.soを追加
vi php.iniextension=imagick.soi = 挿入(文字打てる)
:w = 内容保存
:q = 終了
esc = 文字打つのもうやめたい(インサートモードを終了し、コマンドモードに移行する)
:q! = わけわからんくなった辛い、とにかく終了したい(保存せず終了)終了後、catコマンドで追記できてるか確認
cat php.iniwebサーバ再起動
service apache2 reloadPDFから画像に変換するために必要なライブラリGhostScriptをインストール(必要であれば)
$ apt install ghostscriptcomposerにパッケージ追加
$ composer require spatie/pdf-to-image $ composer require spatie/pdf-to-text※バージョン確認やパッケージの種類は下記パッケージリストを確認してください。
https://packagist.org/packages/spatie/pdf-to-imagehttps://packagist.org/packages/spatie/pdf-to-image終わりッッッ!!!!
(念のため)インストールできているか確認
Imagick
$ imagick identify -versionImageMagick
$ convert -version
- 投稿日:2019-11-15T02:52:22+09:00
docker環境でお試しImageMagicをインストール
コンテナ立て直すと消えちゃいますッ………ドゥフフッッ………
dockerでOSを汚さずに試しにImageMagic使いたいな〜〜ってときに!
またはUbuntuにImageMagicインストールしたいときに!
コンテナたてるときにインストールしたいのであれば、下記記事を参考にしてください。
※dockerイメージphp:7.2-apacheの環境です><
https://qiita.com/saya1001kirinn/items/dacf5ef6b1d66ced846aUbuntu + Apatcheの環境です。
ImageMagickのインストール(パッケージマネージャを使ったインストール)
$apt-get update $apt-get install imagemagickPECLはPHP拡張モジュールのリポジトリとのことなので使えるとは思いますが、PHPが入ってなければ、または下記コマンド叩いて'command not found'がでたら
$pecl help下記コマンドでpeclインストール
$apt-get install php-pearこれでインターフェースであるImagckがインストール可能になる。
必要ないのもあるかもです…
・ライブラリ共通インターフェース
$apt-get install gcc・Magick-Wand(ImageMagick C用のAPI)
$apt-get install pkg-config・ImageMagick関連のライブラリインストール
$apt-get install libmagickwand-devImagickのインストール(ImageMagickをインストールしてあることが前提)
$pecl install imagickphp.ini にextension=imagick.so追加
※php.iniあるディレクトリ取得
php -i | grep php.ini※ディレクトリ先移動
cd /usr/local/etc/php※php.iniファイルがなければ作る
cp php.ini-development php.ini※vimインストールしてなければイントール
$apt-get update $apt-get install vimphp.ini のあるディレクトリで、vimでphp.iniを編集、extension=imagick.soを追加
vi php.iniextension=imagick.soi = 挿入(文字打てる)
:w = 内容保存
:q = 終了
esc = 文字打つのもうやめたい(インサートモードを終了し、コマンドモードに移行する)
:q! = わけわからんくなった辛い、とにかく終了したい(保存せず終了)終了後、catコマンドで追記できてるか確認
cat php.iniwebサーバ再起動
service apache2 reloadPDFから画像に変換するために必要なライブラリGhostScriptをインストール(必要であれば)
$apt install ghostscriptcomposerにパッケージ追加
$composer require spatie/pdf-to-image $composer require spatie/pdf-to-text※バージョン確認やパッケージの種類は下記パッケージリストを確認してください。
https://packagist.org/packages/spatie/pdf-to-imagehttps://packagist.org/packages/spatie/pdf-to-image終わりッッッ!!!!
(念のため)インストールできているか確認
Imagick
$imagick identify -versionImageMagick
$convert -version
- 投稿日:2019-11-15T01:26:06+09:00
dockerイメージphp:7.2-apacheでImageMagickをインストール
インストールのイメージ
ImagicをインストールするためのImageMagickのインストールが必要。
まずPHPへImageMagicのインストールを行い(※dockerfileへ記述)、その後、Imagicのライブラリをcomposerに追加する。インストール方法
php側でimagemagickとimagickのインストールが必要なため、dockerfileに下記を追加。
&& apt-get update && apt-get install -y imagemagick libmagickwand-dev \ && pecl install imagick \ && docker-php-ext-enable imagick \これでbuild後、docker-compose up -d !!!ッッッターーーーーン!!!!
Linux側で、下記コマンドを叩いてImagicのライブラリを追加。
$ composer require spatie/pdf-to-image $ composer require spatie/pdf-to-text※バージョン確認やパッケージの種類は下記パッケージリストを確認してください。
https://packagist.org/packages/spatie/pdf-to-imagehttps://packagist.org/packages/spatie/pdf-to-imageすると、composer.jsonのrequireに下記が追加されてる。
"spatie/pdf-to-image": "^1.8", "spatie/pdf-to-text": "^1.2"ImageMagickを使えるようになったか下記コマンドで確認
# convert -versionインストールできてたらこんなんがでるよ。
# convert -version Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org Copyright: © 1999-2017 ImageMagick Studio LLC License: http://www.imagemagick.org/script/license.php Features: Cipher DPC Modules OpenMP Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff wmf x xml zlibちなみに、dockerfileに書いた
&& docker-php-ext-enable imagick \は、extensionを有効にするけん、 php.iniに extension=imagick.so を書く必要がなくなる!!!
書いてると重複するけん下記のエラーがでる。
PHP Warning: Module 'imagick' already loaded in Unknown on line 0以上です。