Unselected Kids Blog

プログラミングを中心に好きなことを好きなように書くブログ

Centos7 + Nginx + Ruby on Rails をVPSにセットアップ その2

独自ドメインSSL + Http2化

ConoHa + お名前.com に独自ドメイン設定

お名前.comで,DNSレコード設定で 登録したいURL Type A で ConoHa の ip を設定する. VPS設定 で IPアドレス の逆引きホスト名に登録したいURLを登録します.

SSL + Http2化

参考文献

qiita.com

SSLは,Let's Encrypt で発行してもらいます.

その為,準備としてNginx を止めます.

systemctl stop nginx

そして ipv6 も無効化しておきます.
ipv6 の ConoHa でポートを閉じておきましょう. cerbot をインストールして自動設定してもらいます.
メールアドレスを聞かれるので設定するのはそこだけです.

yum install epel-release
yum install certbot
certbot-auto certonly --standalone -d URL

次に Nginx の設定です. etc/sysctl.conf に設定した.

    server{
        listen       443 ssl http2;
        server_name URL;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/URL/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/URL/privkey.pem;
        location / {
           proxy_pass http://unicorn;
        }
    }

あとはこのサイトで HTTP2 をテストすることができます.
HTTP/2 Test | A simple HTTP/2.0 test tool

Capistrano で自動デプロイ

qiita.com

Gemfile に追加

group :development, :test do
  gem 'capistrano'#, '~> 3.2.1'
  gem 'capistrano-rails'
  gem 'capistrano-rbenv'
  gem 'capistrano-bundler'
  gem 'capistrano3-unicorn' #Unicornの起動を簡単に行える
end

Capistrano の設定

初期テンプレートファイルを作ってくれるコマンドを叩きます.

bundle exec cap install

作られた Capfile に以下を追記します.

# Load DSL and Setup Up Stages
require 'capistrano/setup'

# Includes default deployment tasks
require 'capistrano/deploy'

require 'capistrano/setup'
require 'capistrano/deploy'

# rbenvを使用している場合
require 'capistrano/rbenv'

# デプロイ先のサーバで、ユーザディレクトリでrbenvをインストールしている場合
set :rbenv_type, :user
set :rbenv_ruby, '2.5.0'

require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'

require 'capistrano3/unicorn'

デプロイ設定

共通部分の設定を config/deploy.rb に記述する

lock '3.10.1'
set :application, "sample"
set :repo_url, "https://GitHub_Personal access tokens:@github.com/GitHub_User/sample.git"
set :deploy_to, '/var/www/sample'
set :rbenv_ruby, '2.5.0'
set :scm, :git
set :log_level, :debug
set :pty, true
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets bundle public/system public/assets}
set :default_env, { path: "/usr/local/rbenv/shims:/usr/local/rbenv/bin:$PATH" }
set :keep_releases, 5

after 'deploy:publishing', 'deploy:restart'
namespace :deploy do

  desc 'Restart application'
  task :restart do
    invoke 'unicorn:restart'
  end
end

Railsアプリの稼働ディレクトリである/var/www/sampleと設定 config/unicorn/staging.rb

@app_path = '/var/www/sample'
working_directory @app_path + "/current"

worker_processes 2
preload_app true
timeout 30
listen "/tmp/unicorn.sock", :backlog => 64
pid "/var/www/sample/shared/tmp/pids/unicorn.pid"

stderr_path "#{@app_path}/log/unicorn.stderr.log"
stdout_path "#{@app_path}/log/unicorn.stdout.log"

before_fork do |server, worker|
  ENV['BUNDLE_GEMFILE'] = File.expand_path('Gemfile', ENV['RAILS_ROOT'])
end

before_fork do |server, worker|
  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.connection.disconnect!
  end

  old_pid = "#{server.config[:pid]}.oldbin"
  if File.exists?(old_pid) && server.pid != old_pid
    begin
      Process.kill("QUIT", File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH
    end
  end
end

after_fork do |server, worker|
  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.establish_connection
  end
end

/config/environments/staging.rbは、production.rbをコピー

cp /config/environments/production.rb /config/environments/staging.rb

/config/deploy/staging.rbに対象のサーバとSSHの設定を記述

set :rails_env, "staging"
set :unicorn_rack_env, "staging"

role :app, %w{IP:PORT}
role :web, %w{IP:PORT}

server 'ip', user: 'USER', roles: %w{app web}, port: PORT
set :ssh_options, {
  keys: %w(~/.ssh/SSH_RSA),
  forward_agent: false,
  auth_methods: %w(publickey)
}

最後にデプロイコマンドです.

bundle exec cap staging deploy

個人開発Webサービスを公開するときにやったことリスト

はじめに

サービス開始時に何をやったかリストアップする機会があったので備忘録としてここにも書いとく 2016年9月15日にリリースしたamazonの家具を寸法と価格から検索できる「家具search|Amazon,楽天,Yahooの家具をサイズ検索!」をリリースしたときに行った作業をです.

www.kagusearch.com

一様最高 1 ヶ月 15,000 円ほどの収益を上げていますが,2017年通年では 10万 ほどでした.
ここ最近 Google 先生になぜかインデックス数と検索順位ともにあれな感じにされているので収益が上がらないのが実情です.

サービスを公開するときにやったことリスト

ほぼ基本的な事項のみ
これもやっとけみたいなのあればコメントいただけると助かります.
モンバイルファーストインデックス始まったみたいなのでスマホ用サイトとPC用サイトの情報格差はなくしたほうがいいらしいです.

  • サービス公開用サーバのセットアップ
  • SEO
    • ターゲットキーワードの設定
      • 競合サイトのターゲットキーワード調査
      • キーワードプランナーを利用したキーワードの検索数調査
      • Google サジェストを利用した周辺ワード調査
    • url正規化
      • http通信はhttps通信にリダイレクト
      • トラディショナルスラッシュの設定
      • URLの一本化
    • Google Bot 用 サイトマップ (sitemap.xml) の作成
    • メタタグの設定
      • title,descriptionの設定
      • favicon.icoの作成と設定
      • SNSシェア用のtitle,description,画像の設定
    • ユーザ向けサイトマップの作成
    • 画像の圧縮
    • 見出しタグの設定
    • HTML,JavaScriptCSS の圧縮
    • Search Console の設定
      • サイトマップの登録
      • robots.txt の登録
    • Google Analytics
      • コンバージョン設定
      • Google Search Console との連携
  • ランディングページ もしくは help ページの作成
  • 利用規約ページの作成
  • サイト紹介の作成
  • スクリーンショット -サービスの紹介文章
  • 紹介動画
  • webサイト評価ツールで一定の評価を得る
  • 独自ドメインとSSL証明書の設定
  • リリースと宣伝開始

ここまでやるとだいたい PageSpeed Insights にて90点くらい取れています. f:id:UnselectedKids:20180124024121p:plain f:id:UnselectedKids:20180124024132p:plain しかし検索順位などはメタメタな感じです.
誰か理由を教えてほしい...

Centos7 + Nginx + Ruby on Rails をVPSにセットアップ その1

はじめに

自分用の備忘録です.
参考にしたURLを貼っているのでそこも読みつつ進めていってください.

セキュリティの初期設定に関しては以下のチェックシートを参考にしながらやってます.
セキュリティ対策チェックリスト [VPS・CentOS7編] - Qiita

初期設定

yum update

sudo yum -y update

ユーザ作成とsudo許可

CentOSでuserをsudo可能にする - Qiita

$ useradd sampleuser
$ passwd sampleuser
$ visudo

sampleuserにsudoを許可

sampleuser  ALL=(ALL)       ALL

sshをprot22から変更

CentOS7でSSHのポート番号を変更する - Qiita
22番ポートは攻撃の対象となるので2222番ポートに変更する.

vi /etc/ssh/sshd_config

sshd_configのProtを 22 から 2222 に変更

- # Port 22
+ Port 2222
#sshdを再起動
systemctl restart sshd
# ssh.xmlのコピーのssh-2222.xmlを作成
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-2222.xml
vi /etc/firewalld/services/ssh-2222.xml

/ssh-2222.xml を編集

-  <port protocol="tcp" port="22"/>
+  <port protocol="tcp" port="2222"/>
#2222ポートを許可
firewall-cmd --permanent --add-service=ssh-2222
#ssh(22ポート)のfirewallの許可一覧から削除
firewall-cmd --remove-service=ssh --zone=public --permanent
#firewallを再起動
firewall-cmd --reload

作成したユーザに秘密鍵公開鍵認証ログインを設定

ローカルPCにて鍵作成と鍵送信

ssh-keygen
cd .ssh
mv id_rsa vps_rsa
mv id_rsa.pub vps_rsa.pub
chmod 0600 vps_rsa vps_rsa.pub
#scpで鍵を送信
scp ./vps_rsa.pub sampleuser@ip

リーモートサーバにて鍵のセットアップ

mv vps_rsa.pub .ssh/authorized_keys

ローカルからsshができるか確認[sampleuser@ip ~]$になれば成功している.

ssh -i .ssh/id_rsa.pub sampleuser@ip

ローカルで ssh config もついでに書いておく.

Host vps
     HostName ip
     Port     2222
     IdentityFile ~/.ssh/vps_rsa
     User sampleuser

rootユーザへ直接ログインを禁止

rootでのSSHログインを禁止 - SSHサーバーの設定 - Linux入門 - Webkaru
configにてルートログインを禁止

sudo vim /etc/ssh/sshd_config
- PermitRootLogin yes
+ PermitRootLogin no
# sampleuser だけ ssh を許可
+ AllowUsers sampleuser

sshd を再起動

sudo systemctl restart sshd

パスワードログインを禁止

[CentOS]sshのパスワード認証方式を無効にする | ごった煮 - tips about programming and building a server
よりセキュア―な秘密鍵認証を利用するのでパスワードログインを禁止.
必ず秘密鍵認証でログインできることを確認してから行ってください.

sudo vim /etc/ssh/sshd_config
- PermitEmptyPasswords yes
- PasswordAuthentication yes
+ PermitEmptyPasswords no
+ PasswordAuthentication no

sshd を再起動

systemctl restart sshd

Denyhosts 導入

CentOSでSSHへのブルートフォースアタック(総当り)への対策2
何度もログインを試みるIPをブロックする Denyhosts を導入する.

yum install denyhosts
systemctl start denyhosts
systemctl enable denyhosts

/etc/denyhosts.confの以下のように編集

# ログインが成功した場合にリセットする(たまに失敗したりしていつか入れなくならないように)
+ RESET_ON_SUCCESS = yes
- #RESET_ON_SUCCESS = yes

ログインできなくなった時は以下のファイルから自分のipアドレスを削除しましょう.

/etc/hosts.deny
/var/lib/denyhosts/hosts
/var/lib/denyhosts/hosts-restricted
/var/lib/denyhosts/hosts-root
/var/lib/denyhosts/hosts-valid
/var/lib/denyhosts/users-hosts

Nginxセットアップ

パッケージのみで CentOS の Nginx を HTTP/2 対応にする - Qiita

インストール・起動・デフォルトで再起動設定

yum -y install epel-release 
yum -y install nginx  
systemctl enable nginx  
systemctl start nginx
systemctl status nginx.service

http、httpsをfirewallの許可一覧に追加
最後のfirewall のstatsの public に http、https が追加されていれば完了

firewall-cmd --permanent --add-service=http 
firewall-cmd --permanent --add-service=https
firewall-cmd --add-service=https 
firewall-cmd --reload
firewall-cmd --list-all-zones

Nginx セキュリティの設定

ここを見ながら設定していきました.
nginx/Railsのセキュリティ対策メモ - Qiita

ここから設定する項目の意味はここに載っているので読んでおきましょう.

セキュリティを強化する7つの便利なHTTPヘッダ

Nginxのバージョン番号を返さない

まずバージョン依存の虚弱性をつかれないようにNginxのバージョン情報などをレスポンスとして返さないようにする. /etc/nginx/niginx.confに以下を追加

http{
# Nginxのバージョン番号をエラーページとServer headerに含まれないようにします
server_tokens off;

X-XSS-Protection

「X-XSS-Protection」はWebブラウザのクロスサイトスクリプティングXSS)に対するフィルタ機能をを強制的に有効にするというものです.
/etc/nginx/conf.d/default.conf

#XSS対策
add_header X-XSS-Protection "1; mode=block";

ちなみにRailsを利用する場合にはデフォルトで設定されるので設定不要

Content-Security-Policy

Content-Security-Policy (以下CSP) を利用する場合、実行を許可するスクリプトの正しいドメインをブラウザに向けて指定することにより、XSS の発生する箇所を削減・根絶することができます。CSP をサポートするブラウザは、サーバから指定されたホワイトリストに載っているドメインスクリプトのみ実行し、他のスクリプトはすべて無視します。

Content Security Policy (CSP) - HTTP | MDN
/etc/nginx/conf.d/default.conf に以下を追記

add_header Content-Security-Policy "default-src 'self'";

Strict-Transport-Security

通常http通信をhttps通信にリダイレクトすると思います.この時ユーザ側は一旦http通信を行ってしまうので中間者攻撃を受けてしまうリスクが生じます.
Strict-Transport-Securityを利用することでWeb サイトはブラウザに対して、そのサイトでは HTTP を使用せず、代わりに HTTPS へ置き換えてアクセスすることを試みるように伝達することが可能になります.
HTTP Strict Transport Security - Web セキュリティ | MDN
/etc/nginx/conf.d/default.conf に以下を追記

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

X-Frame-Options(クリックジャッキング対策)

クリックジャッキング対応として、自身と生成元が同じフレーム内に限りページを表示する設定をします.
/etc/nginx/conf.d/default.conf に以下を追記

add_header X-Frame-Options SAMEORIGIN;

X-Content-Type-Options

サーバーが応答ヘッダー "X-Content-Type-Options: nosniff" を送信する場合、script 要素と styleSheet 要素は、誤った MIME タイプでの応答を拒否します。これは、MIME タイプの問題を悪用した攻撃を防ぐためのセキュリティ機能です。 MIME タイプのセキュリティ リスクの軽減 (Windows)

/etc/nginx/conf.d/default.conf

add_header X-Content-Type-Options nosniff;

設定を反映

Nginx を再起動して Welcame to Nginx が表示されれば完了.

systemctl restart nginx

Ruby on Rails のセットアップ

依存パッケージインストール

yum install gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel git

rbenvインストール

git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv
echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile
echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile
echo 'eval "$(rbenv init -)"' >> /etc/profile

ruby-buildインストール

git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build

Ruby install

お手元のバージョンをお使いください.
インストールとバージョンを指定

rbenv install -v 2.5.0
rbenv global 2.5.0

Ruby on Rails install

gem update --system
gem install --no-ri --no-rdoc rails
gem install bundler
rbenv rehash

Rails アプリの作成

Railsアプリを作成して / にアプセスすると hoge を表示する.

rails new sample
cd sample 
rails g controller index
vim app/view/index/index.html.erb # hogeを表示する
vim config/routes.rb # root :to => 'web#index'

Unicorn セットアップ

Nginx + Unicorn + Rails - Qiita
Gemfile に unicorn を追加

- gem 'puma'
+ gem 'uncorn'
bundle install

uncornの設定ファイルを以下のように作成する. /config/unicron.rb

File.expand_path: https://ruby-doc.org/core-2.2.0/File.html#method-c-expand_path
rails_root = File.expand_path('../../', __FILE__)
worker_processes 2
working_directory rails_root

listen "#{rails_root}/tmp/unicorn.sock" 
pid "#{rails_root}/tmp/unicorn.pid" 

stderr_path "#{rails_root}/log/unicorn_error.log"
stdout_path "#{rails_root}/log/unicorn.log"

デーモン化起動

unicorn_rails -c config/unicorn.rb -E development -D

停止

ps ax|grep unicorn|grep -v grep
kill 番号

Nginx と Unicorn を接続

defaultを直接いじる前にバックアップはとっておきましょう.
/etc/nginx/conf.d/default.conf

upstream unicorn {
  server unix:/Rails_root_path/tmp/unicorn.sock;
}

server {
    listen       80;
    server_name  localhost;

    add_header Content-Security-Policy "default-src 'self'";
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options SAMEORIGIN;

    location / {
         proxy_pass http://unicorn;
    }
}

Nginxリスタート

systemctl restart nginx

これで hoge が表示されれば設定は完了です.

プチビジネス月次レポート 2017年5月号

はじめに

今回の1ヶ月レポート対象は、2016年9月15日にリリースしたamazonの家具を寸法と価格から検索できる「家具search|Amazon,楽天,Yahooの家具をサイズ検索!」です。

www.kagusearch.com

学生の内にサービス立ち上げ経験を得たくてプチビジネスとして初めた。 作るのは非常に楽しいのですが冷静に分析する機会を作らないとなかなか難しいので、分析を行う。理由とその時何を考えていたかのログをとる意味で書いていくつもりです。 学生の内にサービス立ち上げや運営してみたい人の参考になればいいなー

サービスの目標

 去年は、1 ヶ月運営費用が 12 $ 位なので 1.5万円 を 3~4 月に回収すること。これは達成しました。具体的には、2月 11,012円、3月 9,597円となりました。

 今年度の目標は去年の倍額を稼ぐことです。つまり、20,609円の倍額である41,218円を2ヶ月で稼ぐことです。

注意事項

Google analyticsの詳細なデータの開示が利用規約違反にあたるので四捨五入した値を公開することにします。 Amazon アソシエイトは大丈夫そうなので生の値で公開します。 なので全て約〇〇だと思って見ていただければ幸いです。

5月

行ったこと

  • サイトのリニューアル
    • 楽天の追加
    • Yahooショッピングの追加

データ・ユーザ分析

  • Google Analytics
    • 前月→今月
    • UU:614→520↓
    • PV:2272→2474↑
    • 直帰率:47.96%→57.45%↓
    • ページ/セッション:2.99→3.35↑

全体として好調に推移している。

  • バイス種別
    • desktop:56%→63%↑
    • mobile:38%→34%↓
    • tablet:5%→2%↓

mobileの割合が大きく伸びた。tabletが増えた理由はなぞ。

  • 集客

    • Direct:450→298↓
    • Organic Search:250→216↓
    • Referral:35→160↑
    • Social:16→58↑
  • Amazon アソシエイト

    • amazon商品ページ移動数:808→735↑
    • 注文数:78→42↑
    • 売上:約23,0943円 → 約230,743円↑
    • 利益:約7,447円 → 約 6893円↑

失敗と反省

 web記事での紹介からアクセス数はある程度稼げていますが一時的なものです。家具サイズ検索など1位だった検索順位を取り戻さないと収益は6月以降は収益性が下がっていくことは明白です。

Amazon,楽天,yahooショッピングの家具サイズ検索サイト「家具search」を作った

作成したサイト概要

一言で言えば,Amazon楽天,yahooショッピングで家具を幅、奥行き、高さ、価格の範囲指定してサイズ検索できるサービスです。
実物はこちら→家具search

www.kagusearch.com


家具search | Amazon,楽天,Yahooの家具をサイズから検索できるサービス

きっかけ

棚をECサイトで探す場合、「棚 150」とかで検索すると思います。
しかし検索結果にはサイズは表記されません。
そのため幅150cmと思ってクリックすると違った大きさのものだったりするのが非常にイライラされられます。
他にも高さや奥行きなどの要素も含んだ検索はAmazonでは現状不可能です。 またmmとcmと表記が統一されておらずいい感じに検索できません。
しかもAmazonならカテゴリを選択しないと価格の絞込さえできません。

そこで家具を幅、奥行き、高さ、価格を範囲指定して検索できる家具サイズ検索サイトを作ろうと思いました。

使い方

トップページや各ページにあるこのフォームに幅,高さ,奥行き,価格が 最小値 < 最大値 になるようにしてください。

f:id:UnselectedKids:20170517235143p:plain:w600

aはアマゾン、YはYahooショッピング、Rは楽天を意味します。下の画像の場合は値段が amazon < Yahooショッピング < 楽天 であることを意味します。

f:id:UnselectedKids:20170517235811p:plain:w300

最後に

皆様にぴったりサイズの家具との出会いがありますように! twitter、fasebook、はてなブックマークなんかのソーシャルシェアをして頂けると助かります。 利用した感想ご意見などは以下のフォームで送っていただけると幸いです。
家具searchに関して

Google Cloud PlatformでPostgreSQLを起動してHerokuから接続する方法

はじめに

今回は自分の運営するamazonの家具を寸法と価格から検索できる「家具サイズ検索」で使っているDBをGoogle Cloud Platform(以後GCP)に変更したので備忘録として記事にしておきます。

先日GCPの無料枠が変更されて様々なサービスの無料枠が強化されました。
qiita.com

公式 https://cloud.google.com/free/
https://cloud.google.com/free/docs/always-free-usage-limits

ここで注目したのが試用期間で使える$300クーポンが一年間使えるようになったこと
これまで無料枠が無かったCompute Engineの無料枠ができました。
1月分のGoogle Compute Engineの無料枠の詳細は以下のような感じです。
・USリージョンのf1-microが1機無料
・30 GBのHDD、5 GBのスナップショット
・North Americaからすべてのリージョンに対してのネットワーク利用1GB

起動方法

今回はGoogle Cloud Platformのこちらのテンプレートを利用します。
f:id:UnselectedKids:20170315204148p:plain

ここでリージョンをUSのどこかにしておけば無料枠の対象になるとおもいます。
f:id:UnselectedKids:20170315205300p:plain

デプロイ完了後上記のようなページが表示される。ここにあるuser名とpasswordを使って接続できます。IPはInstanceの欄をクリックした先に外部IPがあるのでそこに対して接続を設定します。 以下のようにheroku configを設定する。

 heroku config:set DATABASE_URL="postgres://[user]:[passwd]@[IP]:5432/postgres"
 

以上で完了です。 DBを作ったりuser変えたりしたい場合は公式のドキュメントを見れば載っているのでやってみてもいいでしょう。

Bitnami PostgreSQL for Google Cloud Platform

dump

まずdumpファイルをscpで送っておきます.

gcloud compute --project "プロジェクトID" copy-files --zone "ゾーン名" ローカルのファイルパス GCEインスタンス名:コピー先パス

あとはsshで接続して普通にリストアします.聞かれるパスワードは先程のパスワードと同様.

psql -U postgres postgres < dump_file_name

追記[2017/12/11]

なんでか知りませんがデフォルトで設定できていたtpc:5432ポートの開放を自分でやらないとだめになっていました.
VPCネットーワーク設定でposgresのタグでtcp:5432を0.0.0.0/0に対して許可したものを作成します.
詳しい作り方は下を参照しました.

dev.classmethod.jp

んで作成したGCEを編集でネットワークタグにてpostgresを追記して保存すれば繋げられるはずです.
なんでこんな改悪されたんや...

プチビジネス月次レポート 2017年2月号

はじめに

今回の1ヶ月レポート対象は、2016年9月15日にリリースしたamazonの家具を寸法と価格から検索できる「家具search|Amazon,楽天,Yahooの家具をサイズ検索!」です。

furniture-size-search.herokuapp.com

学生の内にサービス立ち上げ経験を得たくてプチビジネスとして初めた。 作るのは非常に楽しいのですが冷静に分析する機会を作らないとなかなか難しいので、分析を行う。理由とその時何を考えていたかのログをとる意味で書いていくつもりです。 学生の内にサービス立ち上げや運営してみたい人の参考になればいいなー

サービスの目標

 家具が一番売れるのは 3~4 月位だと思うので「 3~4月に1年間の運営費を稼げるサービス 」にしていくことです。具体的には、現在の 1 ヶ月運営費用が 12 $ 位なので 1.5万円 を 3~4 月に回収すること。

注意事項

Google analyticsの詳細なデータの開示が利用規約違反にあたるので四捨五入した値を公開することにします。 Amazon アソシエイトは大丈夫そうなので生の値で公開します。 なので全て約〇〇だと思って見ていただければ幸いです。

2月

行ったこと

データ・ユーザ分析

  • Google Analytics
    • 前月→今月
    • UU:480→570↑
    • PV:1,520→1,830↑
    • 直帰率:60%→51%↑
    • ページ/セッション:2.5→2.7↓

全体として好調に推移している。

  • バイス種別
    • desktop:67%→54%↓
    • mobile:28%→40%↑
    • tablet:4%→4%↑

mobileの割合が大きく伸びた。tabletが増えた理由はなぞ。

  • 集客

    • Direct:274→223↑
    • Organic Search:224→400↑
    • Referral:62→22↓
    • Social:14→11↓
  • Amazon アソシエイト

    • UU:225→240↑
    • amazon商品ページ移動数:689→729↑
    • 注文数:36→42↑
    • 売上:約188,000円 → 約 410,000円↑
    • 利益:約5,400円 → 約 11,000円↑

失敗と反省

 2月はフォーム改善・デザイン変更のためにA/Bテストを行えるように頑張ると宣言していたものの2月は実際何もやってなかった。意識して時間を作ってやらないとまずいなぁ。目標はすでに達成してしまった感があって来年の今の時期までの新たな目標を立てるなりしないと。