kokoe blog

技術メモブログ

今日の日記

新型Macを買いました。 Apple M1 CPUの型を購入したのですが、まだ安定板のソフトがでていないものがちらちら。

  • Docker→プレビュー版
  • Homebrewがインストールできない→ターミナルからRosetta経由でいけた
  • Adobe→(いれてないけど)Rosetta経由になるっぽい。

アプリが対応してるか調べるの大事ですね。

今日やったことメモ

パフォーマンスチューニングの知見に乏しいので情報を集めてた。 きっかけはこの辺。

speakerdeck.com

next.rikunabi.com

で、主にCDNについて調べてみることにした。
CDN、使ったことがあるものの、仕組みを理解してなかったんで。。

そして見つけた分かりやすい記事!

knowledge.sakura.ad.jp

連載分全部読んだら、副産物として、DNS、キャッシュの対象とすべき範囲、キャッシュの種類などなど、色々分かってためになった。

DNSの理解というところで、この記事も役にたった(権威DNSとキャッシュDNSがどういう関係なのか調べてたとこで発見した)

www.nic.ad.jp

DNS変更した時に、このDNSチェッカーが便利そうだったのでメモがてらURLはっとく。

www.whatsmydns.net

明日は、Lazy loadとかprefetchの手法について調べよう。
時間があったら、MemcachedとRedisについても。

今日やったことメモ

デジタル署名・デジタル証明書

これがわかりやすかった。

youtu.be

これも。

youtu.be

youtu.be

ルート証明書とか、中間証明書が何なのかがやっとわかった。はずかしいぃぃ

www.infraexpert.com

www.itra.co.jp

Let's Encryptなる、無料SSLがあることを知ったたた

letsencrypt.org

ロジカルシンキング

めっちゃためになった〜

youtu.be

Docker入門したい私がDockerとお友達になるためのメモ

Dockerの勉強メモ。 WordPressの開発があるんで、Dockerでイメージ作れるようになりたいなーってことで。。

入門動画

www.youtube.com 概念の説明、入門で抑えておくべきところが端的にまとまっててよかった。

www.youtube.com こちらもポイントが端的にまとまっててよかった。

WordPressのDockerイメージ

クィックスタート: Compose と WordPress — Docker-docs-ja 19.03 ドキュメント
Docker公式に解説があるのですよね。(DockerHubにも公式のイメージがあるし)

ですが、docker-composeも上記サイトからわざわざコピペしなくても、ソースを用意してくれてる素敵な方がいらっしゃいました。 github.com

んじゃ、これで開発するかー。となったのですが

Linux User Permission問題

マウントしたボリュームのディレクトリ、Linuxだとroot権限で作られるので、ファイルの読み書きするたびにsudoしたりするのは面倒。 同様の問題にあたっている方が多かったので、Dockerの勉強を兼ねて調べてみた。

ひとまず、先程のwordpress-docker-composeリポジトリをフォークして、この辺を記事を参考にさせていただきつつ、 qiita.com qiita.com blog.amedama.jp tech-blog.rakus.co.jp

実装進めてみたものの動かない。

# docker-compose.yml
# 必要な構成だけ ※注意:動かないよ
version: "3"

services:
  wp:
    image: wordpress-custom
    build:
      context: .
      args:
        image: wordpress:latest
    environment:
      USER_ID: ${USER_ID}
      GROUP_ID: ${GROUP_ID}
  db:
    image: mysql-custom
    build:
      context: .
      args:
        image: mysql:latest
    environment:
      USER_ID: ${USER_ID}
      GROUP_ID: ${GROUP_ID}
# Dockerfile
# ※注意:動かないよ

ARG image

FROM ${image}

RUN apt-get update \
    && apt-get -y install gosu

COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
# entrypoint.sh
# ※注意:動かないよ

USER_NAME=user
USER_ID=$USER_ID
GROUP_ID=$GROUP_ID

# グループを作成する
if [ x"$GROUP_ID" != x"0" ]; then
    groupadd -g $GROUP_ID $USER_NAME
    echo "Add group: $GROUP_ID"
fi

# ユーザを作成する
if [ x"$USER_ID" != x"0" ]; then
    useradd -d /home/$USER_NAME -m -s /bin/bash -u $USER_ID -g $GROUP_ID $USER_NAME
    export HOME=/home/$USER_NAME
    echo "Add user: $USER_NAME"
fi

# TODO こいつが動かない。ユーザー変更と認識してるが違うのかな。。
# ログ見ると、 Usage: ./gosu user-spec command [args]... って出てる
/usr/sbin/gosu user

# 使用イメージのdocker-entrypoint.sh の呼び出しも、これってどうなのかなって感じ。。
# wordpressにいたっては、パラメータ(CMD)が必要そうだし。。
# https://github.com/docker-library/wordpress/blob/master/Dockerfile.template#L260-L265
exec /bin/bash /usr/local/bin/docker-entrypoint.sh $@
USER_ID=$(id -u) GROUP_ID=$(id -g) sudo -E docker-compose up -d

Best practices for writing Dockerfiles | Docker Documentation
この辺も参考にしてみたけども、gosuのコマンドの使い方まちがってるのかなぁうーん。。

結局どうした

結局解決にいたらなかったが、コマンドでホストマシン側のマウントディレクトリ(てか直下全部)をchownで、ログインユーザーのアカウントの所有に変更しちゃうという無理やりな方法をとりましたとさ。

できあがったブツ。 github.com

今月中に、このリポジトリにGulp / Webpack / HMRとか、よく使う系の環境を追加していきたいなぁ〜(自分がよく使うやつw)

memo: docker/docker-composeコマンド チートシートメモ

# イメージからの一括起動(-d:バックグランド)
$ docker-compose up -d

# コンテナの一括起動
$ docker-compose start

# コンテナの一括停止
$ docker-compose stop

# コンテナの一括削除
$ docker-compose rm

# コンテナとイメージの一括削除
$ docker-compose down --rmi all -v

# 全て削除
$ docker-compose down --rmi all --volumes --remove-orphans

# ビルドし直し
$ docker-compose up -d --build

# コンテナに入る
$ docker exec -it [container] bash

memo: phpMyAdmin

phpMyAdmin 設定ファイル

phpMyAdmin/config.inc.php

ログイン、ログアウト(cookie

$cfg['Servers'][$i]['auth_type'] = 'cookie'; //config, http, cookie
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';

自動認証(config)

$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'rootPass';

参考:https://docs.phpmyadmin.net/ja/latest/config.html

起動スクリプト chkconfig

chkconfigコマンド

サービスの開始・停止を設定するコマンドみたい。

利用シーンとしては、サーバーを再起動した時、それに伴って設定したサービスを自動的に起動するとか。Windowsでいうところの、タスクスケジューラ(起動時)みたいなことができる感じ。

とりあえず、mysqlとvsftpdを登録した。

vsFTPd導入時のメモ

参考サイト

以下、参考にさせてもらったサイトさん。ありがとうございます。

chrootとか、user_listあたりの動きは以下サイトさんが大変参考になりました。

はまったところ

何度設定を見直しても、FTPで接続してみると530 Login incorrect.がでてしまう。。

危険だけど、anonymousを一度ONにしてつないでみる→うまくいく。

pma認証周りか?と思って、vsftpd.conf -> pam_service_nameを確認するが、pam_service_name=vsftpdになってる。

もうちょっと調べてみたら、ftpusersにrootが指定されていたことが原因(つまり、rootでつないでいたことが原因)

以下サイトさんが大変参考になりました。

XAMPP1.7.7 Filezilla Server導入時のメモ

XAMPP(1.7.7)のFillezilla Serverがうまくインストールできなくて少々はまりました。XAMPPのコンパネからは開始できないっぽいですね。Windowsのサービスから起動しないとだめなようなのですが、\xampp\FileZillaFTP\FileZilla server.exeこれを実行するといける。Windows Vistaとか7は、管理者権限で実行しないとインストールが正常に終了してくれないので注意。