古いLaradockを利用するとworkspaceコンテナが落ちる

とある開発環境をLaradockで構築しており、久しぶりに起動してみることに。

コンテナをbuildしていくと、途中で落ちる現象にぶち当たる。

 => ERROR [laradock_workspace 54/92] RUN if [ true = true ]; then     mk  34.7s
------
 > [laradock_workspace 54/92] RUN if [ true = true ]; then     mkdir -p /home/laradock/.nvm &&     curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash         && . /home/laradock/.nvm/nvm.sh         && nvm install node         && nvm use node         && nvm alias node         && if [  ]; then         npm config set registry          ;fi         && if [ true = true ]; then         npm install -g gulp         ;fi         && if [ false = true ]; then         npm install -g bower         ;fi         && if [ true = true ]; then         npm install -g @vue/cli         ;fi         && if [ false = true ]; then         npm install -g @angular/cli         ;fi         && ln -s `npm bin --global` /home/laradock/.node-bin ;fi:
#0 0.260   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
#0 0.268                                  Dload  Upload   Total   Spent    Left  Speed
100 12819  100 12819    0     0  15831      0 --:--:-- --:--:-- --:--:-- 15924
#0 1.091 => Downloading nvm from git to '/home/laradock/.nvm'
=> Cloning into '/home/laradock/.nvm'...
#0 2.918 => Compressing and cleaning up git repository
#0 2.970
#0 3.031 => Appending nvm source string to /home/laradock/.bashrc
#0 3.058 => Appending bash_completion source string to /home/laradock/.bashrc
#0 3.206 => Installing Node.js version node
#0 13.11 Downloading and installing node v19.3.0...
#0 13.88 Downloading https://nodejs.org/dist/v19.3.0/node-v19.3.0-linux-x64.tar.xz...
######################################################################## 100.0%
#0 15.90 Computing checksum with sha256sum
#0 16.19 Checksums matched!
#0 22.75 node: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by node)
#0 22.75 node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by node)
#0 22.75 node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)
#0 22.85 nvm is not compatible with the npm config "prefix" option: currently set to ""
#0 22.85 Run `nvm use --delete-prefix v19.3.0` to unset it.
#0 23.71 Failed to install Node.js node
#0 23.71 => Close and reopen your terminal to start using nvm or run the following to use it now:
#0 23.71
#0 23.71 export NVM_DIR="$HOME/.nvm"
#0 23.71 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
#0 23.71 [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
#0 32.22 v19.3.0 is already installed.
#0 32.76 node: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by node)
#0 32.76 node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by node)
#0 32.76 node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)
#0 32.84 nvm is not compatible with the npm config "prefix" option: currently set to ""
#0 32.84 Run `nvm use --delete-prefix v19.3.0` to unset it.
#0 33.53 Creating default alias: default -> node (-> v19.3.0)
#0 34.55 node: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by node)
#0 34.55 node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by node)
#0 34.55 node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)
#0 34.63 nvm is not compatible with the npm config "prefix" option: currently set to ""
#0 34.63 Run `nvm use --delete-prefix v19.3.0` to unset it.

以前は正常に起動していたのに。

なぜ・・・・。

エラーを見ると、version `GLIBC_2.28′ not found。

要するに無いよ。と怒られる。

nodeのバージョンによってはこの現状が出てくるとか。

ということで、原因はnodeのバージョン。

https://github.com/laradock/laradock/issues/1564#issuecomment-423705186

envファイルを見ると

###########################################################
################ Containers Customization #################
###########################################################

### WORKSPACE #############################################

WORKSPACE_COMPOSER_GLOBAL_INSTALL=true
....
WORKSPACE_INSTALL_NODE=true
WORKSPACE_NODE_VERSION=node

nodeのバージョンは特に指定していない。

ということは最新が当たってしまっている。

なので、nodeのバージョンを指定することで無事解決。

#WORKSPACE_NODE_VERSION=node
WORKSPACE_NODE_VERSION=v10.24.1

ある日突然laradockが起動しなくなった話

いつもどおりlaradockを起動しようとすると次のメッセージが出て起動しない。

------
 > [laradock_workspace  5/92] RUN set -xe;     apt-get update -yqq &&     pecl channel-update pecl.php.net &&     groupadd -g 1000 laradock &&     useradd -u 1000 -g laradock -m laradock -G docker_env &&     usermod -p "*" laradock -s /bin/bash &&     apt-get install -yqq       apt-utils       libzip-dev zip unzip       php7.3-zip       nasm &&       php -m | grep -q 'zip':
#40 0.252 + apt-get update -yqq
#40 31.24 + pecl channel-update pecl.php.net
#40 31.29 Updating channel "pecl.php.net"
#40 31.69 Update of Channel "pecl.php.net" succeeded
#40 31.69 + groupadd -g 1000 laradock
#40 31.70 + useradd -u 1000 -g laradock -m laradock -G docker_env
#40 31.73 + usermod -p * laradock -s /bin/bash
#40 31.74 + apt-get install -yqq apt-utils libzip-dev zip unzip php7.3-zip nasm
#40 33.07 E: Unable to correct problems, you have held broken packages.
------
failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c set -xe;     apt-get update -yqq &&     pecl channel-update pecl.php.net &&     groupadd -g ${PGID} laradock &&     useradd -u ${PUID} -g laradock -m laradock -G docker_env &&     usermod -p "*" laradock -s /bin/bash &&     apt-get install -yqq       apt-utils       libzip-dev zip unzip       php${LARADOCK_PHP_VERSION}-zip       nasm &&       php -m | grep -q 'zip']: exit code: 100

why?

やったことは、dockerのアップデートが走ったぐらい。

環境は

Macbook2019

Mac OS Big Sur(11.4)

docker desktop(3.5.2)

うーん。

いろいろ調べて以下で無事起動

workspace/Dockerfile の以下をコメントアウト

# always run apt update when start and after add new source list, then clean up at end.
RUN set -xe; \
    apt-get update -yqq && \
    pecl channel-update pecl.php.net && \
    groupadd -g ${PGID} laradock && \
    useradd -u ${PUID} -g laradock -m laradock -G docker_env && \
    usermod -p "*" laradock -s /bin/bash && \
    apt-get install -yqq \
	  apt-utils ←追加
      ###apt-utils \ ←コメントアウト 
      #
      #--------------------------------------------------------------------------
      # Mandatory Software's Installation
      #--------------------------------------------------------------------------
      #
      # Mandatory Software's such as ("php-cli", "git", "vim", ....) are
      # installed on the base image 'laradock/workspace' image. If you want
      # to add more Software's or remove existing one, you need to edit the
      # base image (https://github.com/Laradock/workspace).
      #
      # next lines are here becase there is no auto build on dockerhub see https://github.com/laradock/laradock/pull/1903#issuecomment-463142846
      ###libzip-dev zip unzip \ ←コメントアウト 
      # Install the zip extension
      ###php${LARADOCK_PHP_VERSION}-zip \ ←コメントアウト 
      # nasm
      ###nasm && \ ←コメントアウト 
      ###php -m | grep -q 'zip' ←コメントアウト 

Djangoのエラー通知メールが届かない

Djangoでエラー通知をメールで受信したいことがありましたので備忘録。

メール送信先の設定

settings.pyに設定を追記すればいいみたいでしたが、少しはまりました。

ADMINSの設定

NG:[(‘John’, ‘john@example.com’)]

OK:[(‘John’, ‘john@example.com’),]

末尾のカンマが必要だった。

メール送信が465ポートでできない。

EMAIL_PORT=465
EMAIL_USE_TLS=True

とするも送信できない。

EMAIL_PORT=587
EMAIL_USE_TLS=False

とすると送信できる。

送信エラーを見ると、メールサーバーがSTARTTLSに対応していない。

記事を見ると、EMAIL_PORTとEMAIL_USE_TLSの設定項目のみの記述が多いのですが、公式ドキュメントを確認すると、EMAIL_USE_SSLの設定もある。

なので、

EMAIL_PORT=465
EMAIL_USE_TLS=False
EMAIL_USE_SSL=True

とすると送信できた。

MySQLの接続が遅い

とあるActive directyドメインネットワーク内のMySQLサーバーとドメインネットワーク外のWebサーバー(Apache+PHP)との接続があるタイミングから遅くなってしまった。
元々、ドメインネットワーク内に属していたWebサーバーでしたが、DMZに入れることになりドメインネットワークから切り離したタイミングでMySQLの接続が遅い現象が発生。
DMZとのネットワーク関係を疑っていたのだけど、解決方法がわからず。

そんな中、LinuxOSで構築したWebサーバーからも同様に接続が遅い。
接続ができないわけでなく、遅い。
接続に5秒から20秒かかる。

逆引きができていない場合は同様の現象が発生するらしく、MySQLサーバーをホスト名ではなくIPアドレスで指定すると解決するとか。
しかし、MySQLサーバーとの接続はIPアドレス指定。

結論として、名前解決がうまくいっていないため、ログイン認証に時間がかかっているだけでした。

MySQLサーバー側のhostsファイルに接続が遅いPCのIPアドレスとコンピュータ名を追記することで解決。

また、localhostとMySQLサーバーを指定していたホスト名を127.0.0.1で指定すると1秒程度かかることがあった接続が1秒以下になりました。

MySQLで容量の大きいバイナリデータを保存する場合

画像などのバイナリデータをMySQLに格納するために、BLOB型やMEDIUMBLOB型を利用することがありました。

BLOB型でサイズの大きいデータをMySQLに格納しようとするとMySQLのログにエラーログが出力されています。

100906 00:00:00 InnoDB: ERROR: the age of the last checkpoint is 9440228,
InnoDB: which exceeds the log group capacity 9433498.
InnoDB: If you are using big BLOB or TEXT rows, you must set the
InnoDB: combined size of log files at least 10 times bigger than the
InnoDB: largest such row.
調べたところ、MySQLのログファイルのサイズが小さいために発生している模様。

MySQLは、テーブルスペースの更新に時間がかかるため、直接テーブルスペースを更新するのではなく、最初にログファイルに全ての更新を書き込み、そのあと非同期でテーブルスペースを更新するという仕組みになっています。

このログファイル・サイズはデフォルトで5MBが設定されていますが、ログファイルの合計サイズは、 innodb_log_files_in_group という設定値(デフォルト2)と、innodb_log_file_size との積で、トータル10MBとなります。

そのため、10MB以上のファイルをDB(MEDIUMBLOB/BLOB型のカラム)に格納しようとするとログファイルサイズをオーバーしてしまい、エラーとなるため、ログファイルのサイズを拡張しなければなりません。

変更方法は以下のとおりです。
続きを読む

Plesk11環境でNginx 413 Request Entity Too Largeエラーが表示される

Plesk11環境下でPHPを動作させていると、Nginx 413 Request Entity Too Largeというエラー表示が出る場合。

解決策は以下のとおり。

1.nginxを無効にする

nginxを無効にする方法
Plesk11の管理画面、もしくは、Pleskの付属コマンドの操作(nginxmng)で行います

2.nginxのバーチャルドメインテンプレートファイルを編集する

※以下の作業を行うと、サーバ内の全ドメインに対して、設定が変更になります。
2-1) /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php
のファイルを編集

以下の行を変更します
変更前: client_max_body_size 128m;
変更後: client_max_body_size 256m;

※変更後の数値は例です

2-2) 変更したら実際の設定ファイルに反映するため httpmng –reconfigure-all を実行します

# /usr/local/psa/admin/bin/httpdmng –reconfigure-all

Macbook Air からMacbook Pro13に

普段持ち歩く用に購入したMacbook Air。
初めてのMacOSだったのですが、長年windowsに慣れしたんだ私でも難なく使うことができました。
購入したのが2011年。
当時は、カスタマイズでフルスペックで購入しました。
が、今となってはメモリが4GBでは心もとない。
バーチャルでwindwsを動かすなどツライです。

そこで、Macbook Proを購入することに。

続きを読む

mysqlデータを別サーバに移行

mysqlサーバで利用しているサーバの容量が減ってきたので別サーバに移行することに。
しかし、旧サーバの空き容量がないのでmysqldumpで出力することができない。
限界まで削除して1テーブルごとに出力するか。
すごく非効率。

そこで直接ダンプファイルを新サーバに出力できないか検討してみる。
続きを読む