dockerでSSLを使う(nginx + php-fpm)
SSL(https)のローカル環境が作れるDockerファイルを作りました!
localhostで鍵がちゃんとつきます^^
使い方
*git clone
git clone git@github.com:yoshiko-tsuka/wordpress-nginx-docker-ssl.git
*Homebrewインストール(インストールがまだの場合)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
*opensslインストール
brew install openssl
*SSLの証明書作成
cd /docker/cli
/bin/bash create-cert.sh
/bin/bash trust-cert.sh
> Password: Mac にログインするときのユーザーパスワードを入力
cd ../../
*composerのcreate-project実行
(vendorフォルダとcomposer.lockが作成されます)
docker-compose run composer create-project
*コンテナをスタート
docker-compose up -d
*ブラウザで下記にアクセス。Wordpressの初期画面が表示されれば成功!
*ブラウザで下記にアクセス。PhpMyAdminのログイン画面が表示されます
*ブラウザで下記にアクセス。phpで送信されたメールを確認できます。
*その他
.env とwp-config.phpは、自由に変更可能です。
例えば、初期設定では
DOMAIN=localhostになっています。が、
DOMAIN=test.local などに変更可能です。
DOMAINを変更した場合、hostsファイルに設定が必要
(127.0.0.1 test.local を追加など)ですが、
下記を実行することで、ドメインを追加&削除できます
cd /docker/cli/
/bin/bash setup-hosts-file.sh
> test.local(DOMAINで設定したドメイン名)
以上ですーー!!
今回はnginxのSSL化を試しました。
時間があれば、ApacheでもSSL化を試してみようと思います。
おやすみなさい^^
reCAPTCHA v3の導入方法
というわけで、今回はreCAPTCHA V3の導入方法を紹介していきます
目次
1. reCAPTCHA v2とv3の違い
2. v3の導入方法:概要
3. v3の導入方法:2つのKey取得
4. v3の導入方法:フロントエンドのコーディング(JS)
5. v3の導入方法:バックエンドのコーディング(PHP)
1. reCAPTCHA v2とv3の違い
v2はこんな感じで、クリックしたり、「電車の画像を選べ」みたいな、めちゃむずな問題に答えないとダメだった、、、
v3はユーザのサイト内の動きを見て、勝手にスコアをつけてくれる!
(仕組みはよくわかんないけど、googleさんすごい!!)
スコアは0から1の範囲でつけてくれる。
ドキュメントはこちら
ローカルでやってみたところ、0.9がつきました!
本番環境じゃないとフルスコアは出ないのかも、、?
2. v3の導入方法:概要
大まかにreCAPTCHAのスコア判定方法はこんな感じ
*フロントで、reCAPTCHAでスコア判定を入れたいformに、下記のinputを追加して、一緒にPOST送信する
<input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
<input type="hidden" name="action" value="validate_captcha">
*この時、name="g-recaptcha-response"のinputのvalue(以降トークンと呼ぶ)は、JSで動的に取得する。
そのために、事前にgoogleアカウントで取得していたKey1(以降サイトキーと呼ぶ)を使用
*formのsubmitで情報を受け取ったバックで、受け取ったトークンと、事前にgoogleアカウントで取得していたKey2(以降シークレットキーと呼ぶ)を使用して、https://www.google.com/recaptcha/api/siteverify
宛にAPI通信し、スコアを取得する
以降、具体的な方法を紹介します
3. v3の導入方法:2つのKey取得
下記にアクセス
https://www.google.com/recaptcha/admin/create
ラベルや、ドメインを指定して「送信」
二つのKeyが取得できるので、メモっておく
(後から確認できないので、この時にメモるの忘れないでーー)
4. v3の導入方法:フロントエンドのコーディング(JS)
*reCAPTCHAでスコア判定を入れたいformに、下記のinputを追加
<input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
<input type="hidden" name="action" value="validate_captcha">
*ヘッダとかに、下記を追加(トークン発行のため)
<script src="https://www.google.com/recaptcha/api.js?render=サイトキー"></script>
*Bodyの最後とかに、下記を追加(これで、g-recaptcha-responseのvalueに、トークンが設定される)
<script>
grecaptcha.ready(function() {
grecaptcha.execute('サイトキー', {action: 'submit'}).then(function(token) {
var recaptchaResponse = document.getElementById('g-recaptcha-response');
recaptchaResponse.value = token;
});
});
</script>
5. v3の導入方法:バックエンドのコーディング(PHP)
今回はPHP のコードを紹介します。
ですが、やっていることは、
*送られてきたトークンと、シークレットキーを使って
https://www.google.com/recaptcha/api/siteverify
*返ってきたレスポンス(JSON)に含まれているスコアをみて、0.5以下ならアクセス拒否する。レスポンスはこんな感じ
{
"success": true|false,
"score": number
"action": string
"challenge_ts": timestamp,
"hostname": string,
"error-codes": [...] // optional
}
なので、他の言語でも同様に実装可能です
phpのコード例
// トークンが空ではないか判定
if (isset($_POST["g-recaptcha-response"]) && !empty($_POST["g-recaptcha-response"])) {
$token =$_POST["g-recaptcha-response"];
} else {
echo "トークンが空です";
exit;
}
$secretKey = "シークレットキー";
//API Request URL
$url = 'https://www.google.com/recaptcha/api/siteverify';
//パラメータを指定
$data = array(
'secret' => $secretKey,
'response' => $token
);
$context = array(
'http' => array(
'method' => 'POST', // POST メソッドを使う
'header' => implode("\r\n", array('Content-Type: application/x-www-form-urlencoded',)),
'content' => http_build_query($data)
)
);
//上記パラメータを指定して レスポンスを取得
$api_response = file_get_contents($url, false, stream_context_create($context));
//レスポンス(JSON形式)をデコード
$result = json_decode($api_response);
if (!$result->success) {
// リキャプチャの認証に失敗したらBotと判定。
echo '<h2>認証失敗しました。</h2>';
} else if ($result->success==true && $result->score <= 0.5) {
// リキャプチャの認証に成功しても、スコアが一定以下であればBotと判定。
echo '<h2>認証失敗しました。</h2>';
} else {// リキャプチャの認証に成功したときの処理
}
以上ですー!
はやくv2の無いセカイになります様に、、、、
まずはv1(グニャグニャ文字)の撲滅が先ですかね、、、
おやすみなさいぃぃ
2分で分かる!Docker チュートリアル
上記の様に、ローカルの環境を作っていた私。でも、自分の環境では動くのに、他の人の環境だと動かないいい!!ってことが度々発生してしまいました。
Dockerを使ってみよう!ということで、Dockerをダウンロードして、ローカル環境(チュートリアル)を作成してみました!
*Docker ダウンロード
*チュートリアルをローカルにclone(下記の青ボタンをクリックすると、Cloneコマンドが右側のコンソールで実行されます)
ローカルにGETTING-STARTEDフォルダができる!
*チュートリアルをbuildしてDockerイメージを作成(下記の青ボタンをクリックする)
まだブラウザでlocalhostに接続してもチュートリアルサイトは見えません
docker imagesコマンドで、Imageが作成されたことを確認できます
*buildしたImageでContainerをRun(下記の青ボタンをクリックする)
ブラウザでLocalhostにアクセス(下記の青ボタンをクリック)
LocalhostでDockerチュートリアルページが表示されました!
*おまけ
docker run -it docker101tutorial bin/sh で、dockerで立てたサーバに入れます。
htmlフォルダとhtml/assetsフォルダ内に、ビルドされたファイルが配置されていることが分かります
次回は、dockerを使ってWordpressとMysqlの開発環境構築の方法を紹介します
Docker便利!
おやすみなさい
Database管理ツールDataGripを使ってみた!
MySQLならPhpMyAdmin、PostgresSQLならPostico、、、、など、今までデータベースによって違うツールを使っていました。
今回、いろんなデータベースを一つのツールで管理できる!という素晴らしいツールを幸運にも無料でGet!!
その名も「DataGrip」!!
使ってみて、めっちゃ便利やん!!と感動したので、
その素晴らしさを紹介します。JetBrainsさん、ありがとう
※JetBrainsさんの回し者ではありません
(どうやって無料でGetしたの?については記事の最後で紹介してますので、気になる方はチェックしてね)
1. いろんなDBを一つのツールで管理できる
DBに接続する時に、どの種類のDBにするか選べます。いいね!
上記はデフォルトで選べるデータベースですが、ドライバーをインストールすることで、接続できるデータベースの種類が増えるー!
今後もドライバーはどんどん増えていくと思うので、AWSとかAzureのDB使ってる人でも、どんどん使いやすくなってくはず
2. SQL文がツール内で実行、保存できる
データベースごとにSQLファイルが保存できます。
左上の緑の▶︎ボタンで実行!
下記のように、文法のガイドや、存在するテーブルのガイドも出るので、サクサク書ける!(白い部分はSQL文を実行する対象のデータベース名)
実行結果はこんな感じで表示され、データの編集はGUI形式でも可能
今のところ、この2つが、とってもいいな!と思った部分です。
今後使っていくうちに、便利機能など見つけたらシェアします^^
番外編:どうやって無料で入手したの?
DISTさんのオンラインイベントに参加して、当選しました!
抽選の参加方法は、twitterでDISTさんをフォロー&イベントに#distgame のハッシュタグを付けてツイートするだけ!
JetBrains 製品1年間無料クーポンプレゼントもありますので、ぜひつぶやいてご参加ください!#distgame
— DIST (@dist_jp) 2020年9月29日
DISTさんは今後もWebクリエイター向けのイベントを開催する予定です!
イベント、とってもタメになる&面白いスピーカーさんばかりだったので、皆さんも次回参加してみては?
おやすみなさい^^
2020最新MacBookProでRubyOnRails環境構築
2020最新MacBookのOSがCatalinaになり、デフォルトシェルがzshになりました!
このMacで、RubyOnRailsの開発環境を作成しましたので手順を紹介します。
今回はzshに慣れたいということもあり、デフォルトシェルをbashに戻すことなく、なるべくシェルをzshのまま使って開発環境構築していきます。
*やりたいこと
現行のシステム(Rubyバージョン2.4.2, Postgresql)を、Local(2020最新MacBookPro)でプレビューできるようにする
(現行システムを最新のRubyバージョンで使えるようにメンテしろよ!というツッコミは今回は無視で、、、これからやるんだよ?ほんとだよ?汗)
*目次
0.現行のシステム(システム名:test)をgit clone
1. Rubyバージョン2.4.2を使用できるようにする
2. Postgresqlを使用できるようにする
*0.現行のシステム(システム名:test)をgit clone
git clone リモートレポジトリURL(レポジトリ名:test)
これでカレントディレクトリにtestというフォルダができる
*1. Rubyバージョン2.4.2を使用できるようにする
homebrewをインストール
(これは公式の推奨コマンドでbashが使用されていたので、そのままbash使用)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
homebrewを使用して、readline, openssl, rbenv, ruby-buildをインストール
brew install readline
brew install openssl
brew install rbenv
brew install ruby-build
pathが通るか確認
which ruby
>/Users/username/.rbenv/shims/ruby
pathが”/Users/username/.rbenv/shims/ruby”となっていない場合(/usr/bin/rubyなどになってしまっている場合)は、
pathを通すため、~/.zshenv と ~/.zshrc を編集する
※デフォルトでは存在しないため作成必要あり
~/.zshenvファイルに下記を追加
export PATH="$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"
eval "$(rbenv init -)"
~/.zshrcファイルに下記を追加
source $HOME/.zshenv
上記設定を反映するため下記コマンド実行
source ~/.zshrc
インストールされたRubyのバージョンを確認
ruby -v
>2.6.3 //最新のRubyが設定されている。でも必要なのは2.4.2!!
pathが通るか確認
which ruby
>/Users/username/.rbenv/shims/ruby
rbenvを使用し、必要なRubyバージョン(2.4.2)をインストール
rbenv install 2.4.2
rbenv rehash
bundler インストール
gem install bundler rails --no-ri --no-rdoc
上記実行時、--no-ri is invalid と出た場合は、下記を実行(新しいコマンドリファレンス)
sudo gem install bundler rails -N
testレポジトリ内に移動
cd test
testレポジトリで必要なRubyバージョン2.4.2を選択(.ruby-versionファイルが作成される)
rbenv local 2.4.2
Rubyバージョンがtestレポジトリ内で2.4.2 になっていることを確認
ruby -v
> 2.4.2
*2. Postgresqlを使用できるようにする
homebrewを使用して、postgresqlをインストール
brew install postgresql
postgresサーバ起動
brew services start postgresql
ユーザ名と同じ名前のデータベース作成(これでpsqlコマンドが使用できるようになる)
createdb
psqlが使用できるか、試す
testレポジトリで必要なデータベース(test_db)作成後psqlから抜ける
CREATE DATABASE test_db;
exit
bundle install後マイグレーションと必要ならSeedも行う
bundle install
rake db:migrate
rake db:seed
サーバ起動
rails s
ブラウザで、localhostでプレビューが見れたら完了〜〜〜!!
やっぱり毎回PC変えるたびに環境構築するの面倒だなぁぁ
というわけで、Dockerをいじって遊んでみてます。
Dockerをドカドカ作るぞー^^
Dockerについても今後ブログでシェアできればと思います。
おやすみなさいぃぃ
Defaultシェルzshに注意!2020最新MacBookPro
新しく購入したMacBookProで環境構築中、今までのコマンドがうまくいかない!?
ということがありました。
ターミナルのデフォルトシェルがbashではなくなって、zshになってたせいでした。
*うまくいかないコマンドを、下記のようにbashで実行
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
*または、chshコマンドでデフォルトシェルをbashに変更
(ターミナル再起動後変更される)
chsh -s /bin/bash
zshで気をつけることは下記の記事がよくまとまっていたので、紹介しておきます。
おやすみなさい^^
スマルナ:ピル(低容量、中容量、アフター)が届くアプリ
先日、アフターピルが薬局で購入できるように、政府が検討しはじめるとのニュースがトレンドになっていました!
性犯罪にあった場合はもちろん、ゴムが破けてしまった場合など、お守りとしてピルは入手しやすい方がいいですよね。
今は、主に産婦人科で入手できますが、なかなか病院に行く時間がない、、、という方も多いはず。
そんな方に、産婦人科に行く必要なくアプリで診察&ピル購入できるサービス、
「スマルナ」を今回は紹介したいと思います。
利用は以下の流れで行います。
1、本人確認
2、問診
3、医師と相談
4、購入
今回は低容量ピルの購入方法を紹介しますが、中容量やアフターピルも購入可能です。
1、本人確認
*個人情報を登録&身分証明書を送信します。
身分証明書を送信してから承認されるまで、数十分かかります。
2、問診
*30問ほど、健康状態などの質問に回答します。
*以下質問の例です
3、医師と相談
*どの種類の低容量ピルにするか、不安な点などを相談します。
(低容量ピルにも複数種類があるので、体にあったものを相談できます。)
*医師のプロフィールを見て1名の医師を選択できます。
医師からチャットでメッセージが来ます。
4、購入
*支払い方法を選択、届け先の住所登録をします。
あとは自宅に届くのを待つだけ!
大体購入してから二日以内に届きます。
スマルナ以外にも同じようなサービスがあるので、値段などを比較しながら、使ってみるのをお勧めします。LINEでOnline診療して、アフターピルを届けてくれるところもあります。
今はまだまだ値段が高いピルですが、多くの女性が使うようになれば、値段も下がっていくと思います。
健康面のメリットデメリットも考慮して、体を守るために、ピルという選択肢を選ぶハードルが下がることを願って。
おやすみなさい。