Vagrant Share でHTTPS通信する
1.Vagrantfile記述
2.オレオレ証明書を発行
① 証明書の発行
# On Vagrant $ yum install mod_ssl openssl $ openssl genrsa -out ca.key 2048 $ openssl req -new -key ca.key -out ca.csr
② 決められた場所に各ファイルを配置する
$ cp ca.crt /etc/pki/tls/certs/ $ cp ca.key /etc/pki/tls/private/ $ cp ca.csr /etc/pki/tls/private/
③ /etc/httpd/conf.d/ssl.confに以下を記述
SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key
④ /etc/httpd/conf/httpd.confに以下を記述
Listen 443 LoadModule ssl_module modules/mod_ssl.so NameVirtualHost *:443 # # <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key <Directory /home/vagrant/www/public> AllowOverride All </Directory> DocumentRoot /home/vagrant/www/public/ ServerName myfirst.test </VirtualHost>
3.Vagrant Shareする
Vagrantが立ち上がっている状態で以下を実行。
$ vagrant share --ssh --https 443
–ssh:シェアする人がSSHでVagrantに入れるようにする設定
–https {{ポート番号}}:Vagrantfile内で定義したdeveliop.vm.network 'forwarded_port', guest: 443, host: 8443
の guest の値
文字化け問題の解決
問題
開発している環境(Vagrant上)で以下の問題が発生。
① viしたときに日本語が文字化けて見える
② git diffしたときに日本語が文字化けて見える
①の解決方法
$ vi ~/.vimrc ---- .vimrc追記内容 ---- set encoding=utf-8 set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8 set fileformats=unix,dos,mac ------------------------ $ source ~/.vimrc
②の解決方法
$ echo "export LESSCHARSET=utf-8" >> ~/.bashrc $ source ~/.bashrc
git の pager が less コマンドを使っていて、その文字コードが utf-8 に設定されていないことが原因。
.bashrc に LESSCHARSET の環境変数を追加。
Vagrant Shareを使ってみた
Vagrant Shareは、ローカルで立てたVagrantの環境へ誰でもアクセスできるようにしてくれます。
まぁとりあえず使ってみよう。
HOW TO
1.ATLASの無料のアカウント作成
https://atlas.hashicorp.com/account/new
2.ローカルのVagrantを立ち上げる
$ vagrant up
3.コマンドライン上からログインする
$ vagrant login You are now logged in.
4.共有できるURLを発行する
$ vagrant share ==> default: Detecting network information for machine... default: Local machine address: 192.168.33.20 default: Local HTTP port: 80 default: Local HTTPS port: disabled ==> default: Checking authentication and authorization... ==> default: Creating Vagrant Share session... default: Share will be at: slight-fox-6296 ==> default: Your Vagrant Share is running! Name: slight-fox-6296 ==> default: URL: http://slight-fox-6296.vagrantshare.com
5.共有をストップ
Ctrl + C
割り振られるURLは毎回違うようです。
Vagrant Shareがお名前解決してくれてるということかな。
すんばらしい〜!
おまけの妄想
AWS構築|Let’s Encrypt で レッツ暗号化
なにするの?
AWSにのっけたWebサービスをHTTPSでアクセスできるようにする。
HOW TO ENCRYPT on AWS
1.Apache停止
$ apachectl stop
2.Certbotをダウンロード
$ git clone https://github.com/certbot/certbot
3.Certbotの実行(証明書の取得)
$ cd certbot/ $ ./certbot-auto certonly --standalone -d kpter.net -d www.kpter.net --debug
※ AWS上では--debug
つけないと文句いわれちゃう
3.5.Emailアドレスの入力
途中、メールアドレスの入力を求められる。(緊急時の通知や鍵をなくした際の復旧用)
↓できたっぽい。
Requesting root privileges to run certbot... /home/ec2-user/.local/share/letsencrypt/bin/letsencrypt certonly --standalone -d kpter.net -d www.kpter.net --debug Version: 1.1-20080819 Version: 1.1-20080819 IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/kpter.net/fullchain.pem. Your cert will expire on 2016-10-16. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew all of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
4.Apacheの設定いじる @ /etc/httpd/conf.d/ssl.conf
- 証明書 /etc/letsencrypt/live/kpter.net/cert.pem
- 秘密鍵 /etc/letsencrypt/live/kpter.net/privkey.pem
- 中間証明書 /etc/letsencrypt/live/kpter.net/chain.pem
<VirtualHost *:443> ServerName kpter.net DocumentRoot "/var/www/html/KPTer-web/lp" SSLEngine on SSLHonorCipherOrder on Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 SSLCertificateFile /etc/letsencrypt/live/kpter.net/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/kpter.net/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/kpter.net/chain.pem </VirtualHost>
※ ssl.confに書かないと以下の警告が出た
[warn] _default_ VirtualHost overlap on port 443, the first has precedence
5.Apache再起動
$ apachectl start
以上で完成です!
サービス開発|KPTアプリをリリースしたよ
このあいだ、「KPTer」というKPTのiOSアプリをリリースしました!
業務中にKPTをしている方も多いのではないかと思います。ぜひ一度つかってみてください(^^)
LPも作ってみました♡ kpter.net
コンセプト
振り返り手法KPTをもちいて、プロジェクトメンバー、友だち、恋人、夫婦などで普段いえないことを共有できるシンプルかつ強力な新しいコミュニケーションツール
ありがとうのきもちを、Keepとして。
むしゃくしゃしたことを、Problemとして。
そして、そこからよりよい明日につながるためのTryを考えていきましょう!
なぜ作ろうと思い至ったか
1.新しい働き方が増える時代に置いて、効果的にコミュニケーションがとれる場をつくりたかった
DMM内でもリモートワークのお話が出たりします。リモートワークを採用する会社もこれから増えてくるのではないでしょうか。
そういった働き方の多様化の時代に、アナログな方法のみでKPTを進めていくと臨場感の喪失や手間などからコミュニケーションに支障がでてしまうことがあるのではないかと考えました。
KPTerが仕事環境においてよりみなさんが業務をより円滑に協力して進められるように手助けできればと思います。
2.KPTをより身近なものにしたかった
チーム内でKPTをするようになってから、プライベートでもKPTを行うようになりました。
そうしたなかで気づいたのは、普段自分がいかに相手に気持ちを伝えきれていなかったかということです。
ありがとうの感謝のきもちも、なにがどう悲しかったかも特別なシーンや気合を入れてからしか伝えてこなかったなと自分を振り返って思いました。
仕事場でだけでなく、KPTをもっと身近な存在にすることで家族や恋人、友人とのこころの距離を縮められたら、と考えました。
3.Swiftさわってみたかってん・・・!
It is because we are engineers.
エンジニアの性なのでしょうか、新しい言語とかさわってみたくなっちゃったんです。
サーバー代がかからないというのもたいへん魅力的でした( ´ ▽ ` )
追加予定機能
まだまだ機能たりてないんです・・・(´-ι_-`)
コミュニケーションを取るにはまだまだ足りてない機能がてんこ盛りなので、Ph2.0以降で実装できればと思っています。
- Web ver
- 同期機能
- 共有機能
- 未完了Try一覧 とかとか。
使ってみてくれたひとの中で、もっとこんな機能ほしーい!っていうのがあったら教えてほしいなぁ(´∀`)
CentOS|SSHログイン時にアスキーアートを表示する
なにがしたい
sshでサーバにログインした時に、AAを表示することでどのサーバにログインしたかをわかりやすくしたい。
HOW TO
1.AAを作成
Text to ASCII Art Generator (TAAG)
2./etc/motdに上記で作成したAAを記述
______ _ _ _ | ___ \ | | | | (_) | |_/ / __ ___ __| |_ _ ___| |_ _ ___ _ __ | __/ '__/ _ \ / _` | | | |/ __| __| |/ _ \| '_ \ | | | | | (_) | (_| | |_| | (__| |_| | (_) | | | | \_| |_| \___/ \__,_|\__,_|\___|\__|_|\___/|_| |_| Production 本番
3.試してみる
$ ssh production Last login: Wed Jul 13 15:41:47 2016 from 172.16.100.15 ______ _ _ _ | ___ \ | | | | (_) | |_/ / __ ___ __| |_ _ ___| |_ _ ___ _ __ | __/ '__/ _ \ / _` | | | |/ __| __| |/ _ \| '_ \ | | | | | (_) | (_| | |_| | (__| |_| | (_) | | | | \_| |_| \___/ \__,_|\__,_|\___|\__|_|\___/|_| |_| Production 本番
イエイ!
くれぐれも「STGと間違って本番にデプロイしちゃった☆」みたいなことがないようにしましょう!
Rails|Emailのバリデーション
背景
はじめはemail_validatorを使用していたのですが、
「hogehoge@hoge.com」のように入力された時、うまくバリデーションがかからなく・・・。
あらためて調べてみると、以下の場合はうまくバリデーションがかかっていないようでした。
- 先頭に半角/全角スペース許容してる
- 全角を許容してる
うーむ、困った。
解決方法
1.email_validatorに代わってvalidates_email_format_ofを使用する
- @前は64文字以内であること
- 全角は弾く
- 先頭/email中/末尾の全角スペースは弾く
- email中の半角スペースは弾く
上記ちゃんとチェックしてくれているようです。
2.先頭/末尾の半角スペースを弾く
バリデーションをかける前に、不要なスペースを排除します。
Stringクラスのstrip
は前後の空白文字を削除してくれる強いやつ。
class User < ActiveRecord::Base before_validation :remove_space # バリデーション前に前後の空白文字を削除 def remove_space self.email.strip! end # validations validates_presence_of :email, message: "入力必須です。" validates_length_of :email, in: 0..100, message: "100文字以内で入力ください。", if: :email? validates :email, :email_format => {:message => '正しいメールアドレスの形式で入力ください。'} end