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に問い合わせフォーム(Google Form)を追加する

Ghostはメール送信関連の機能を有していますが、少なくとも現在は標準的な問い合わせフォームの機能を提供していません ここでは、Ghostで構築したサイトにGoogleFormを使って問い合わせフォームを追加する方法についてまとめます 目的 Ghostで構築されたサイトにWordPressのContactFormのような問い合わせページを追加したい 背景 何らかの連絡手段は用意しておきたいが、メールアドレスは公開したくないためメールフォームを設置したい 選択肢 外部のメールフォームサービスは数多く存在し、かつGhostが静的ページを生成できる(HTMLタグに対応している)ことから多くのサービスがそのまま使用可能と思われる 解決策 ここでは最も無難な外部サービスであるGoogleFormを採用することした 理由は割と柔軟で無料で広告もなく日本語に対応しており設置も管理も楽だからだ 入力項目(質問)を作成する GoogleFormで新しいフォームを作成し、まずはタイトルを入力する 仮にメールアドレス、名前、問い合わせの種類、内容を求める場合、項目を下記のように追加していく メールアドレス ※このとき、メールアドレスを収集するか否か問われるので有効にしておく 名前 必須 記述式

  • zienchan
    zienchan
2 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
vps

value-domainでmaingunのDNS設定をする

以前の記事でめでたく立ち上げたghostのdockerコンテナですが、何らかの通知はメールを使用して送信されてくるので、mailサーバーの設定はしておくべきでしょう。 ghostのメールサーバーの設定にはSMTPサービスを使用できるので、例えばgmailやhotmailなどの外部サービスを利用できます。 しかし、私用で使っているアカウント情報をそのまま保存するのはよろしくないでしょう。 勿論、ghost用にこれらのアカウントを新たに取得するのもよいですが、ここではghostがお勧めしているmailgunというメールサービスを使用してghostコンテナに登録する方法をまとめます。 ちなみに、ghostがどんな外部サービスに対応しているのかは、ここを参照するとわかります。 maigunの制限 無料ですが、1万通/月という制限があります。 まぁメルマガやよっぽど通知がない限りは大丈夫でしょう。 maigunのアカウント登録 初めに大事なことを言っておきます。 アカウント登録にはSMS、つまり電話番号が必要です。 まぁSMTP関連のサービスはスパム等、悪用されやすいので電話番号を求められるのは仕方ないですかね。 アカウント登録時にクレジットカードを求められますが、入力不要のプランが選択できるのでちゃんと切り替えましょう。 名前とメールアドレス、パスワードを入力すると仮登録は完了です。 すぐに入力したメールアドレス宛に確認用のURLが送信されてくるので、送信元を確認してブラウザで開きます。(ついでにAPIKeyの情報も送信されます) あとは、電話番号を入力してベリファイ用のコードを送信&

  • zienchan
    zienchan
3 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