copy_people copy_things copy_matter copy_heart copy_txt ttl_topics ico_blank ico_facebook ico_twitter ico_hatebu ico_index

2018/04/10

CPIサーバーにWP-CLIでWordPressを楽にインストール

INDEX

    弊社の開発でよく使うサーバー CPIサーバー(シェアードプラン)にWP-CLIでWordpressを楽に入れたいぞ、というお話です。

    WP-CLIに関してはこちらの記事こちらの記事も参照してください。

    なお、先にお伝えしておくと、正解は概ねこちらのサイトに書いてあります。
    第2回 wp-cli を利用する – CPIエバンジェリストコラム

    前提

    CPIサーバー(シェアードプラン)

    • 共用サーバー
    • phpコマンドはphp-5.5.27
    • OSはFreeBSD

    WP-CLIのインストールに関しては、こちらの記事にあります。~/bin/以下にインストール済みです。

    そもそものSSH接続については、以下にマニュアルがあります。

    構成

    ~/
    ├── html(ドキュメントルート)
    ├── wp-cli.yml(設定ファイル)
    └── wp-install.sh(実行ファイル)
    

    DBはコントロールパネルから事前に作成しておく

    サーバー側からDBを作成する権限は無いので、wp db createは使えません。

    mysql -u ae******** -h 127.0.0.1 -p -P3307
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | ae********_wp      |
    +--------------------+
    2 rows in set (0.01 sec)
    
    mysql>
    mysql> CREATE DATABASE test;
    ERROR 1044 (42000): Access denied for user 'ae********'@'127.0.0.1' to database 'test'
    

    インストール概要

    wp-cli.yml(設定ファイル)とwp-install.sh(実行ファイル)を用意します。

    wp-install.shで実現することは

    • html/wpにWordpressファイルダウンロード
    • wp-config.php作成
    • サイトURLをドメイン直下に変更
    • 「検索エンジンでの表示」を「検索エンジンがサイトをインデックスしないようにする」に設定
    • 不要なプラグイン削除、指定したプラグインのインストール

    まで、です。

    wp-cli.yml

    # Global parameter defaults
    path: html/wp
    
    # Subcommand
    core download:
      locale: ja
    core config:
      dbuser: ae********
      dbpass: Password
      dbhost: 127.0.0.1:3307
      dbname: ae********_wp
    core install:
      admin_user: admin
      admin_password: password
      admin_email: ********@evoworx.co.jp
      title: TEST
      url: http://********.jp/wp
    

    wp-install.sh

    #!/usr/local/bin/bash
    
    set -Ceu
    
    home='http://********.jp'
    sitedir='wp'
    
    pluginarr=()
    pluginarr+=( 'all-in-one-wp-security-and-firewall' )
    pluginarr+=( 'cmb2' )
    
    
    php-5.5.27 ~/bin/wp-cli.phar core download
    php-5.5.27 ~/bin/wp-cli.phar config create --skip-check
    php-5.5.27 ~/bin/wp-cli.phar core install
    
    php-5.5.27 ~/bin/wp-cli.phar option update home $home
    php-5.5.27 ~/bin/wp-cli.phar option update blog_public 0
    cp -p html/$sitedir/index.php html/index_org.php
    sed -e "s/wp-blog-header.php/$sitedir\/wp-blog-header.php/g" html/index_org.php > html/index.php
    #rm -f html/index_org.php
    
    php-5.5.27 ~/bin/wp-cli.phar plugin delete hello
    for plugin in ${pluginarr[@]}
    do
      php-5.5.27 ~/bin/wp-cli.phar plugin install ${plugin} --activate
    done
    

    2ファイル作成したら、

    % bash wp-install.sh
    

    以上です。

    インストール詳細

    wp-install.shを上から順に、シェルスクリプトに不慣れな人間向けの解説です。

    #!/usr/local/bin/bash
    
    set -Ceu
    

    おまじないです。

    • set -C・・・リダイレクト先のファイルが既に存在している場合にスクリプトを停止する
    • set -e・・・エラーがあったらスクリプトを停止する
    • set -u・・・未定義の変数を使おうとした場合にスクリプトを停止する
    home='http://********.jp' #サイトURL
    sitedir='wp' #Wordpressインストールディレクトリ
    
    #インストールするWordpressプラグイン
    pluginarr=()
    pluginarr+=( 'all-in-one-wp-security-and-firewall' )
    pluginarr+=( 'cmb2' )
    

    必要な情報を記述します。

    php-5.5.27 ~/bin/wp-cli.phar core download
    php-5.5.27 ~/bin/wp-cli.phar config create --skip-check
    php-5.5.27 ~/bin/wp-cli.phar core install
    

    順に、ダウンロード、wp-config.phpを作成、インストール。

    php-5.5.27 ~/bin/wp-cli.phar option update home $home
    cp -p html/$sitedir/index.php html/index_org.php
    sed -e "s/wp-blog-header.php/$sitedir\/wp-blog-header.php/g" html/index_org.php > html/index.php
    #rm -f html/index_org.php
    

    サイトURLを変更し、index.phpを移動、パスを書き換えています。
    rmコマンドは個人の責任に置いて(!)コメントアウトを外して使用してください。

    php-5.5.27 ~/bin/wp-cli.phar plugin delete hello
    for plugin in ${pluginarr[@]}
    do
      php-5.5.27 ~/bin/wp-cli.phar plugin install ${plugin} --activate
    done
    

    使わないプラグイン(Hello Dolly)を削除、必要なプラグインをインストールします。

    エラー!

    php-5.5.27 ~/bin/wp-cli.phar core download

    Error: The requested locale (ja) was not found.
    

    wp-cli.ymlで日本語版を指定していますが、指定の最新バージョンに日本語版が無い場合はエラーで停止します。
    日本語版のあるバージョンを指定するか、英語版を使用するか、で解消します。

    php-5.5.27 ~/bin/wp-cli.phar config create –skip-check

    % wp config create
    /usr/bin/env: not found
    

    –skip-check
    DBへの接続確認をしない、というオプションです。
    これが無いとエラーで停止します。

    MAMP版

    実はMAMP版も作りましたが、ローカルの実装はLocal by Flywheelなりvccwなりの仮想環境でやろうという話になり、ぽしゃりました。
    供養に載せておきます。

    wp-cli.yml

    # Global parameter defaults
    path: htdocs/wp
    
    # Subcommand
    core download:
    #  locale: ja
    core config:
      dbuser: root
      dbpass: root
      dbhost: localhost:/Applications/MAMP/tmp/mysql/mysql.sock
      dbname: DBName
    core install:
      admin_user: admin
      admin_password: password
      admin_email: ********@evoworx.co.jp
      title: TEST
      url: http://localhost:1000/wp
    

    install.command

    #!/bin/sh
    
    set -Ceu
    
    home='http://localhost:1000'
    sitedir='wp'
    
    theme_name='テーマ名'
    pluginarr=()
    pluginarr+=( 'all-in-one-wp-security-and-firewall' )
    pluginarr+=( 'cmb2' )
    
    
    cd `dirname $0`
    export PATH=$PATH:/Applications/MAMP/Library/bin
    
    mkdir htdocs && true
    
    wp core download
    wp config create
    wp db create
    wp core install
    
    wp option update home $home
    wp option update blog_public 0
    cp -p htdocs/wp/index.php htdocs/index_org.php
    sed -e "s/wp-blog-header.php/$sitedir\/wp-blog-header.php/g" htdocs/index_org.php > htdocs/index.php
    rm -f htdocs/index_org.php
    
    wp plugin delete hello
    for plugin in ${pluginarr[@]}
    do
      wp plugin install ${plugin} --activate
    done
    
    wp scaffold _s sample_theme --theme_name="$theme_name" --author="EVOWORX" --sassify --activate
    

    参考

    CONTACT

    お仕事のご相談や、弊社についてのご質問や
    ご要望など、お気軽にお問い合わせください。

    View