docker

[Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name. Please run mysql_upgradeを何とかする

環境 mysqlのdockerコンテナ 現象 mysqlイメージをpullしてコンテナへ展開したらいつのまにか下記の警告がわらわら出るようになった 2018-08-28T23:11:54.474791Z 0 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name. Please run mysql_upgrade 2018-08-28T23:11:54.474878Z

  • zienchan
    zienchan
1 min read
wordpress

WordPressでテーマ適用時に初期コンテンツを自動的に登録する方法

目的 カスタムテーマを適用すると同時に、必要な固定ページなどを一括で登録する 背景 企業向けサイトを作成するときに、いつでもコンテンツをリセットできるような環境を作りたいから 他の環境に移行するなどしたときでも簡単にセットアップできるようにしたいから 解決策 1. 初期コンテンツの作成 下記のようにテーマディレクトリの下にinitializeディレクトリ配下に初期コンテンツを配置する mytheme/initialize/index.page.html mytheme/initialize/contact.page.html mytheme/initialize/form.wpcf7_contact_form.html ... ここではタイトルとページ情報(固定なのかcontact-formなのか)をファイル名に付与してある 実際のコンテンツには色々種類があるため、それらの情報をファイル名にドット区切りで持たせておく

  • zienchan
    zienchan
1 min read
wordpress

WrodPressでサイト制作するその前に考慮したいこと

"WordPressで企業向けのサイトを作ることになった" なんてこと、よくあると思います ...ありませんか?(白目) さて、世の中には沢山のWordPressテーマを使ったサイト制作の話がありふれていますが、技術的なアプローチ?に関する説明を見かけなかったので今回はWordPressで企業向け、または個人向けサイトを制作して公開、運用することになった場合の俺的ベストプラクティスをまとめました 本当は独自テーマを適用したら初期コンテンツが自動投入されるとか、テーマが依存するプラグインをどうやって通知するとかまで書きたかったんですが、長いのでこれらは次回にまとめます 突っ込みとかあったらコメントでお願いします そもそもWordPressでの実装が正しいのか? さて突然ですが、めでたく(?)WordPressでのサイト制作を依頼されたあなた 早速、WordPressでどう構築するかを考え始めま....せん まず初めは要件を見直すことをお勧めします お客さんは何もわかっておらず Webサイト作成 = WordPress なんて場合が結構あります(マジで) 話を聞くと、コンテンツを管理したくない(管理できる人材がいない)

  • zienchan
    zienchan
3 min read
vps

さくらVPSでDockerを楽してインストールする方法(CentOSまたはUbuntu)

実はこれ最近知ったんですが、いつの間にかサーバーをセットアップするときにスクリプトが選択できるようになってました スタートアップスクリプトとは スタートアップスクリプトについてを参照すると、スタートアップスクリプトとは、どうやらサーバーセットアップ後の初回起動時に発火するスクリプトで、パブリックスクリプト(さくら側が提供するスクリプト)とカスタムスクリプト(自分で作るスクリプト)の二種類があるみたいですね なるほど。同じサーバーを何台も展開する場合には確かに便利な機能です ただ、これらのスクリプト使うにはサーバー作成時にスクリプトを選択しないとダメっぽい うーん。ってことは、サーバーを構築した後では使えないってことか... これからサーバーをセットアップする人は楽できる とりあえず、まだサーバーを作成していない人でDcokerとDockerComposeをインストールしたい人は、さくらVPSコントロールパネルから[スクリプト]を選択して、"CentOS_DockerCompose"や"Ubuntu_DockerCompose"

  • zienchan
    zienchan
1 min read
vps

さくらVPSでSSL対応(Let's Encrypt)した複数ドメイン(WordPress)をDockerで運用する方法

結構、この構成のニーズがあるんじゃないかと思うのでまとめました 目的 1つのさくらVPSで複数のWordPressサイトまたはWebサービスを無料でSSL対応して運用する 背景 可能な限り低コストで複数サイトをHTTPS対応して運用したい 解決策 詳しい説明は省きますが、複数のサイトを同一ホスト上で稼動する場合にはリバースプロキシを使います それぞれのサイト(サービス)はdockerで立ち上げます アクセスのイメージとしては、下記のような感じです e.g. 1つのVPS上にnginx(webサイト)、ghost(ブログサイト)、CMS(wordpress)サービスを展開した場合 WWW <-----> PROXY <-----> example.com(

  • zienchan
    zienchan
5 min read
ghost

Ghostにコメント機能(Disqus)を追加する

Ghostにはデフォルトでコメント機能がないのでコメント機能を追加する方法についてまとめます この記事にテスト目的でコメントしても構いません 目的 Ghostにコメント機能を追加する 背景 誤った記事を放置するのはよくないので少なくとも指摘などを受け付ける窓口が欲しい 前提条件 Ghost v1.x系 選択肢 コメント機能といっても実際にはいくつかの選択肢がある ぱっと調べた感じでは少なくとも下記は実際にGhostに実装可能のようです サービス名 コメントデータの場所 Disqus 外部 NodeBB 内部(?) Facebook 外部 Livefyre 外部 解決策 ここでは利用者も多く簡単で見た目もよいDisqusで実装します 但し、上位5%くらいのサイトには広告が表示されるようで、これを非表示にするには課金が必要です 不満点はありますが、大規模になってきて広告が邪魔になってきたら乗換えを検討することとします Disqusの登録 Disqusでアカウントを作成します

  • zienchan
    zienchan
3 min read
ghost

GhostでResponse code 405 (Method Not Allowed)のログが表示される問題

前回のGhostのスケジューラが動作しない問題で表示されていた2つ目のエラーについて引き続き調査します 環境 Server - さくらVPS CentOS 7系 Dcoker - Ghost: v1.24.8 Dcoker - Databese: MySQL Dcoker - proxy: nginx SSL: 有(強制リダイレクト) 現象 記事の投稿時に下記のようなエラーメッセージが表示される [2018-07-14 21:51:00] ERROR NAME: InternalServerError

  • zienchan
    zienchan
2 min read
ghost

Dockerコンテナ上のGhostでスケジュール投稿が動作しない問題

Docker上で稼動しているGhostのスケジュール投稿機能がどういうわけか動作しなかったので調べました 環境 Server - さくらVPS CentOS 7系 FW - iptalbes Dcoker - Ghost: v1.24.8 Dcoker - Databese: MySQL Dcoker - proxy: nginx SSL: 有(強制リダイレクト) 目的 スケジュール機能が動作しない原因を調査し、機能するように修正する 背景 スケジュール投稿できないと、書き溜めした時とかに1日1回とかの自動投稿とかが出来なくてつらい

  • zienchan
    zienchan
10 min read
docker

Dockerコンテナのバックアップ方法

目的 Dockerのコンテナごとバックアップする方法について調査する 背景 Dockerコンテナの内容を破棄せずにそのまま現状維持で移行出来る環境を作りたい 結果 バックアップとしてはいくつか方法がある イメージとして保存/読み込みする方法 下記のように、コンテナを一旦イメージ化した上で保存->読み込みする方法 docker commit ${CONTAINER_ID} ${IMAGE_NAME} docker save ${IMAGE_NAME} > ${OUTPUT_PATH} docker load ${OUTPUT_PATH} コンテナをそのままtarにしてエクスポートしてしまう方法 下記のように現状のコンテナをtarにして出力->入力する方法

  • zienchan
    zienchan
1 min read
docker

MySQLのDockerコンテナ上のデータベースをバックアップする

目的 MySQLコンテナのデータベースファイルをホスト側にバックアップしたい 背景 Dockerだけで管理しているとうっかりコンテナやボリュームの削除なんてのもありうるのでDockerからも隔離された場所に完全なバックアップを作りたい 解決策 MySQL Dockerの公式ドキュメントを参考にbashを書く 取り出す方法は色々あるが、安全、確実を優先しmysqldumpコマンドを採用することにした #!/bin/bash MYSQL_ROOT_PASSWORD='HOGEHOGEPASSWORD' if [ -z "$CONTAINER_ID" ]; then echo '$CONTAINE_ID is empty. ex. CONTAINER_ID=abc123.

  • zienchan
    zienchan
1 min read
docker

任意のDockerコンテナ上でbashを起動する

結構な頻度でdockerを使ったことがない人から"どうやって操作するの?"って聞かれるのでまとめます まずDockerはイメージとコンテナがあり、イメージからコンテナまたはコンテナからイメージを作ることができます 普通(?)はイメージからコンテナを作ってそこで遊ぶはずなので、ここではコンテナを操作するということですね イメージからコンテナを起動する 多くの人は目的に近いイメージから派生させてカスタムしてると思います カスタムする方法はDockerfileやdocker-composeなどがありますね もちろんコンテナからイメージを作れるのでそれでもOKです まぁとりあえずコンテナを操作したいのですからdocker-composeでもなんでもよいのでコンテナを起動しましょう 例えば下記のようにするとubuntuコンテナを起動できます docker run -it ubuntu /bin/bash Unable to find image 'ubuntu:latest' locally latest: Pulling from library/

  • zienchan
    zienchan
1 min read
vps

GhostをさくらVPS上にDocker+SSL(Let's Encrypt)で構築した話

偶然、前々から気になっていたGhostのDcokerイメージがDockerHubにあったのを見つけたのでさくらVPS上に構築してみました。 やりたいこと はい。めっちゃシンプルです。 letsencrypt-proxyはLet's Encryptの更新作業を自動的にやってくれるやつで、必要があれば証明書を更新してくれるコンテナ。 この構成だと今後、新しいドメインやアプリケーションが増えても、コンテナを増やすだけでOKというお手軽構成。コレ大事。 やること 自分の場合、既にさくらVPS上でnginx-proxyとletsencrypt-proxyを動かしているので追加するのはghostコンテナ(青い部分)のみです。 なので、この記事ではこのghostコンテナを構築する話です。 ghost用コンテナの作成 既に公式のイメージがあるので、これをdocker-composeで使います。 本当はdocker-composeは開発向けなのでこれを使った本番運用は避けた方がよさそうです。 が、現在は小規模なので実験的にここではdocker-composeを使って運用します。 ghost用のdocker-compose.yml version: "3.1" services:

  • zienchan
    zienchan
2 min read