wordpressの初期設定のつまづきポイント

wordpressの引越しを実施

久々にwordpressの引越しを実施しました。
今回はapacheからnginxへ移行しPHPもバージョンアップしました。
ただその中でひっかかった部分があったので備忘録を記述します。

プラグインをインストールできない。

プラグインをインストールしようとするとFTPをもとまられるようになりました。
これは下記の2つの変更を行う必要があります。

wp-config.phpの編集

下記の一文をwp-config.phpに追加する必要があります。

define('FS_METHOD', 'direct');

ディレクトル所有者と権限の編集

wp-contentの所有者を変更しました。
通常apacheだとwww-dataとかになっていると思いますが、nginxで実行しているのでnginxに変更します。

chown -R nginx:nginx wp-content

権限の変更

さらにプラグインのディレクトリの権限の変更を行います。

chmod 0707 wp-content/upgrade
chmod 0707 wp-content/themes
chmod 0707 wp-content/plugins

ここまで入れて問題なく動いたのですがなぜかjetpackが動きません。

jetpackがうまく動かない?

jetpackの機能を有効化しようとしたら下記のようなエラーが出ました。

SyntaxError: Unexpected token < in JSON at position 0

jsエラーなのであれれと思いましたがこちら下記のサイトに行って個別に機能の有効化ができました。

/wp-admin/admin.php?page=jetpack_modules

wordpressをupdateできない。

下記のメッセージが表示された場合にはパーミッションの変更が必要です。

いくつかのファイルをコピーできないため、最新版のインストールができません。これはたいていの場合、ファイルのパーミッションが適切でないことが原因です
sudo chmod -R 707 wp-includes

プラグインを入れるのに失敗する

その他プラグインを入れたときにファイルをコピーできないとエラーがでたら下記のコマンドを実行してパーミッションの変更を行います。

sudo chmod -R 707 wp-includes

終わりに

wordpressは問題が発生しても調べればすぐに答えが出てなんとか解決することができました。
またちょくちょく個別のカスタマイズをしていきたいと思います。

Dockerの基本コマンド

イメージ関連

イメージ検索
docker search
リモートからイメージの取得
docker pull イメージ名
イメージ一覧表示
docker images

イメージを起動しコンテナ化

docker run -it centos /bin/bash
-i = 標準入力開き続ける
-t = 擬似ターミナルの割り当て
-d = デタッチモード コンテナに入らないでバックグラウンドで動かす場合
-p = ポートの割り当て ホスト側 : コンテナ側
-v = ボリューム(ディレクトリの共有) ホスト側 : コンテナ側

イメージの作成方法

docker commit コンテナID イメージ名:タグ
docker build -t イメージ名: タグ .

Dockerfile

FROM centos
RUN yum update && yum install httpd
CMD /etc/init.d/httpd.start

Docker Hub

Docker Hubにログインする
docker login
dcoker tag イメージID Docker Hubアカウント名/イメージ名:タグ
Docker Hubにイメージを送る
docker push 上記イメージ

削除

コンテナ全削除
docker rm $(docker ps -aq)
イメージ全削除
docker rmi -f $(docker images -q)

GCPの概要

はじめに

GCPのお勉強会に参加したのでその時のメモ
普段AWSだけどGCPどんな感じなのか興味があり参加

GCP(概要)

googleは専用回線を持っていてそれと同じ専用線をGCPでは利用可能
世界展開する際にはこのネットワークを利用することができるので高速アクセスが可能

エッジキャッシュサーバー

CDN安くて許容度が高い

リージョンとゾーン

リージョン : データセンターの場所 asia-north-east1 東京とかとか
ゾーン : データセンターをメンテナンスするエリア 基本的にゾーン毎に3ヶ所
ここら辺はAWSと同じよね。

データセンター

日本にもある
電気代を抑えるためにgoogleは努力
冷却システム AIが行なっているらしい
サーバーのハードも自作、、、市販はしてないのね。

課金

分単位で課金が発生
ここはAWSと違う時間単位で課金が走るのでね。
サステンドユーズディスカウント : 同じインスタンスを使ってるとお安くしてくれる

App Engine

Paasなので基本的にお任せ
言語も限定的 Java, PHP, Pythonなど
ruby perlは使えないらしい 悲しい。

Compute Engine

IaaSなのでミドルウェアから作ってくれる
基本的にAWS的にはこれと同じかEC2でゴリゴリいつもやってるのと同じね。

IAMの管理

ここら辺は基本的にAWSと同じイメージユーザーに色々とroleで権限与えていく
1番の違いはgoogleアカウントと紐づいているところが違う

GCPへのアクセス

goole cloud platform console

GUIで使う管理画面

CloudのSDK/Shell

テーミナルの画面
gclou コマンドが使えるようになる

gcloud compute list
gsutil ls gs://hoge

cloud shellでは管理画面から操作可能

RESTful APIs

1番機能が画面やシェルはここのAPIを読みだしてる。
APIs Exploer からguiで確認可能

Google App Engine

Paasサービス
スケーラビリティが高い デフォルトでオートスケーリングができる 40msでインスタンスが立ち上がる
AWSの場合はオートスケーリングでスパイクがあると対応しきれないけどすごいな。
極端な話0台で設定してリクエストがあったらインスタンスが立ち上がるということができる。
AWSのlambdaよりもいいですねこりゃ。
しかもバージョン管理もしてくれる。
ミドルウェアの管理も不要つまり環境が不要!!!!
なんと!!!
snapchat、ingress、メルカリもApp Engineで運用してるらしい。
snapchatはインフラエンジニアなしでiOS&Androidエンジニア

Standard Enviroment

java, python, PHP&GOのみ
sshでは入れない
書き込み処理ができない。
image magicとかインストールする必要があるものはできない。
APP EngineのSDKを入れて開発できる。

無料枠

インスタンス1日28時間の無料枠あり。
プロジェクト毎に課金がされる。
よってテストと本番みたいにすればテストと本番のインスタンスにそれぞれ無料枠適用される。
夕方5時にリセットされる。
例) 2台動かす
A 14時間アクセスあり起動
B 15時間アクセスあり起動
計 29時間なので1時間課金される

Flexible Enviroment

Dockerベースでできている。
こちらはローカルにアクセスできる

失ったもの

スケーラビリティが失われている。
ms単位ではインスタンス立ち上がらないので0台運用できない1台設定して。
無料枠はない。

オートスケールで死ぬのを防ぐには

settings のDaily spending limitで金額を設定する。(ここでの金額はDatastore&App Engine)
これでアクセスできないと500エラーが返る。
DDOS攻撃受けたらipブロック登録しとけばよい。。。

Google Cloud Datastore

KVSのデータストア
スケーラビリティが高い
ポケモンGOもこれを利用している。
国毎にデータベース分けられてないのでこれ以上のものはない。
無料枠あり。
ストレージが1GBまで無料になっているらしい。

wordpressカスタマイズの基本

ユニットテストデータ

https://github.com/jawordpressorg/theme-test-data-ja
wordpress importerが進まないときは下記の変更を加える。

wp-content/plugins/wordpress-importer/parsers.php
if ( false && extension_loaded( 'simplexml' ) ) {

デバッグをオンにしてエラーを表示

define('WP_DEBUG', true);

ファイルとの対応関係

パーツテンプレート
header.php => get_header();
footer.php => get_footer();
slug-name.php => get_template_part($slug,name);
固定ページ = page.php
投稿詳細ページ = single.php
フロントページ = front-page.php

パラメーター

パラメーター

name = サイト名
description = キャッチコピー
charset = 文字コード

ループ

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<p><a href="<?php the_permalink(); ?>"><?php the_title() ?></a></p>?>
<?php endwhile; ?>
<?php else : ?>
<p>記事がありませんでした</p>
<?php endif; ?>

アーカイブページ
ループ内の記事全てが表示される

シングルページ
ループ内でも1ページのみ表示

カスタムフィールド

the_meta();

ページ毎の条件分岐

is_home
is_front_page
is_singular

functions.php

プラグインと同様の効果を持つ

アイキャッチの有効化

add_theme_support(“post_thumbnails”)

カスタムフィールド

<?php the_meta(); ?>
<?php echo esc_html(get_post_meta($post->ID, 'フィールド名', true)) ?>

smart custom fields

smart custom fields

<?php scf::get('フィールド名'); ?>

カスタムクソノミー

custom post type ui

カスタムリンクの変更

httpd.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

AllowOverride None → All に変更する。
※ ちゃんとvar/www/htmlのディレクトリ内担っている事を確認する事!!!!

gulp.jsの基本

schooで勉強したgulpの使い方のメモ
全部授業を受けながら書いたもの。

gulpのインストール

mkdir gulp
cd gulp
npm init
npm install --save-dev gulp-cli

gulpのプラグインをインストール

使用するプラグインのインストール

npm install --save-dev gulp-sass
npm install --save-dev browser-sync

gulpfile.jsの作成

gulp:task(“タスク名”)
src:対象ファイル名
pipe:処理
gulp.dest
gulp コマンドで監視中になる

gulp-sass

var gulp = require("gulp");
var sass = require("gulp-sass");
gulp.task("basic", function(){
// ファイルの監視を行う
gulp.watch("css/style.scss", function(){
    gulp.src("css/style.scss")
// sassのコンパイルを行う
    .pipe(sass())
// destでコンパイル後のファイルの置き場所を指定
    .pipe(gulp.dest("css/"));
  });
});

browser-sync

ファイルの変更を行った時に自動でリロードしてくれる

インストール

npm install --save-dev browser-sync

使い方

デフォルトのタスクに追加する。

var gulp = require("gulp");↲
var browserSync = require("gulp-browsersync");↲
↲
gulp.task("default", function(){↲
 browserSync.init({↲
>...server:{↲
>...>...baseDir: "./src"↲
>...}↲
 });_↲
↲
gulp.watch("src/**", function(){↲
>...browserSync.reload();↲
>...});↲
});↲

リリースファイルの作成

リリースフォルダにファイルをコピーしてその後開発ファイルを削除する。

var gulp = require("gulp");↲
var del = require("del")↲
↲
gulp.task("copy", function(){↲
>...return gulp.src("src/index.html")↲
>...>....pipe(gulp.dest("dist"));↲
});↲
↲
gulp.task("clean", function(){↲
>...del("index.html");↲
});↲
↲
gulp.task("default", ["copy", "clean"]);↲

タスクを個別実行

gulp タスク名

上記の中で非同期実行でなく同期実行をさせるには上記のようにタスクをreturnする。

その他

下記のエラーが表示された場合

Local gulp not found in

下記を実行すると直る

npm link gulp

redisの基本コマンド

redisのインストール

brew install redis

resdisサーバーの起動

redis-server

redis-cliの起動

redis-cli

resdisサーバーの状態確認

redisの状態確認

info

### サイズを確認

dbsize

keyの一覧表示

keys *

キーの存在確認

exists キー

データを削除

対象データの削除

del 対象のキー

丸ごと削除

対象データベースのデータを全削除

flushdb

redis-server内の全データを削除する

flushall

#データベースの切り替え

select 0

※ デフォルトでは0-15らしい

データ登録と取得

データの登録

set キー 値

データの取得

get キー

リスト型

登録順序を保つ

リストデータの追加

右側に追加
左側に追加

rpush キー バリュー
lpush キー バリュー

件数を表示

llen 
lrange キー スタート エンド
データを取得とともに削除
rpop
右側を取得して削除
lpop
左側を取得して削除

セット型

登録
sadd キー メンバー
srem キー メンバー
件数
sard
smenber
spop キー

スコアードセット型

zadd キー スコア メンバー
zrem キー メンバー
件数表示
zcard
zcard キー スタート エンド

ハッシュ型

キーバリュー型の形式RDSのデータの持ち方に類似

データ登録
hset キー フィールド バリュー
データ取得
hget キー フィールド
全データ取得
hagetall

データの永続性

espire キー
データの残存期間
ttl

pusblish/subscribe

チャットサービスをイメージすればいい

発信
publish チャンネル 発言内容
受信
subscribe チャンネル