さくらVPSにPostgresqlをインストール

さくらVPSPostgresqlをインストールした時のメモ

# yum update -y
# yum install -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
# yum install -y postgresql96-server postgresql96-contrib postgresql96-devel
# psql --version
psql (PostgreSQL) 9.6.11

初期化

# export PGSETUP_INITDB_OPTIONS="--encoding=UTF-8 --no-locale"
# /usr/pgsql-9.6/bin/postgresql96-setup initdb
# systemctl enable postgresql-9.6
# systemctl start postgresql-9.6

認証方法を変更

$ sudo vim /var/lib/pgsql/9.6/data/pg_hba.conf

peerをtrustに、identをmd5に変更

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

参考

さくらVPSでRubyの環境構築

さくらVPSRailsの環境構築を行った際のメモ。

セットアップ

  • OSインストール
  • ssh接続を確認
$ ssh root@xxx.xxx.xxx.xxx
# yum update
  • 一般ユーザー作成
# adduser vpsuser
# passwd vpsuser
# exit
$ ssh vpsuser@xxx.xxx.xxx.xxx
$ su -
  • sudo 設定の有効化
# usermod -G wheel vpsuser

次回ログイン以降に設定が有効化

$ sudo id
[sudo] password for vpsuser:
uid=0(root) gid=0(root) groups=0(root)
  • rootで直接アクセスを不可に変更
# cd /etc/ssh
# cp sshd_config sshd_config.old
# vim sshd_config

変更前

#PermitRootLogin yes 

変更後

PermitRootLogin no
  • 変更を保存後、sshdを再起動
# systemctl restart sshd.service
  • rootユーザーでssh接続不可を確認
$ ssh root@xxx.xxx.xxx.xxx

以上で一般ユーザーで接続できるところまで準備できました。

鍵認証設定

  • 前提:秘密鍵と公開鍵を作成済
  • 公開鍵をコピー
$ cat ~/.ssh/id_rsa.pub
$ mkdir .ssh && chmod 700 .ssh && cd .ssh
  • .sshディレクトリの下でauthorized_keysを作成し、コピーした公開鍵を貼り付け
$ vim authorized_keys
  • ファイルの読み書きを自分のみに変更
$ chmod 600 authorized_keys
  • 公開鍵で接続確認
$ ssh -i ~/.ssh/id_rsa vpsuser@xxx.xxx.xxx.xxx
  • パスワードによるログインを不可に変更
$ su -
# cd /etc/ssh
# vim sshd_config

変更前

#PasswordAuthentication yes 

変更後

PasswordAuthentication no
  • 変更を保存後、sshdを再起動
# systemctl restart sshd.service

パスワードによるログインができないこと、公開鍵認証によるログインができることを確認して完了します。

ssh接続用ポート番号の変更

$ su -
# vim /etc/ssh/sshd_config
  • ポート番号を任意の値に設定
#Port 22
Port 10022
  • 変更を保存後、sshdを再起動
# systemctl restart sshd.service
  • firewalld の設定ファイルを編集。ポート番号の22の部分を変更。
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>
  • 変更を保存後、設定を有効化
# firewall-cmd --reload
success
  • ポート番号を指定して接続を確認
$ ssh vpsuser@xxx.xxx.xxx.xxx -p 10022

Rubyの環境構築

  • Ruby のインストールに必要なライブラリをインストール
$ sudo yum install -y openssl-devel zlib-devel readline-devel libyaml-devel libffi-devel
  • rbenv をインストール
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ rbenv install 2.5.3
$ rbenv global 2.5.3
$ rbenv rehash

参考

Laravelでメールアドレスを暗号化・復号化

Laravelでメールアドレスを暗号化・復号化して使用する時のメモ。

やりたいこと

  • 保存する時にメールアドレスを暗号化
  • 取り出す時にメールアドレスを復号化

暗号化・復号化自体はこちらの記事を参考にLaravelの機能を使って簡単にできた。 【Laravel 5.4】モデルのフィールドの暗号化・復号化

課題

参考記事内でも言及されているが暗号化した際の値が毎回変わるのでバリデーション時に一致せず、同じメールアドレスで複数のアカウントを登録できる状態になってしまった。参考記事では自作クラスを作成して解決されたようだが、私の場合は引き継ぎを前提とした開発だったので、なるべく認証周りに大きな変更を加えたり自前で何かを作ることはせずにlaravelの標準的な機能で完結させたかった。

対応

メールアドレスをsha256でハッシュ化した値を格納するカラムを別で作成して、それを登録時やログイン時のチェックに使用することにした。

/app/Http/Controllers/Auth/RegisterController.php

    protected function validator(array $data)
    {
        $data['encrypted_email'] = hash('sha256', $data['email']);
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
            'encrypted_email' => 'required|string|unique:users',
        ]);
    }

登録時はencrypted_emailのバリデーションを追加している。

/app/Http/Controllers/Auth/LoginController.php

use Illuminate\Http\Request;

class LoginController extends Controller
{
    (省略)

    protected function credentials(Request $request)
    {
        return ['encrypted_email' => hash('sha256', $request->email), 'password' => $request->password];
    }
}

ログイン時は認証キーをencrypted_emailに変更している。あとはメールアドレスを更新した際にencrypted_emailのカラムも同時に更新するなど細かい修正を加えている。

参考

フリーランスエンジニアが2018年に買ってよかったもの

フリーランスエンジニアが2018年に買ってよかった物のまとめです。

サンラメラ ヒーター

長時間座っているためかここ数年冬場になると足の神経痛に悩まされていたのですが、サンラメラを導入してからあまりそれを意識しなくなりました。静音(無音に近い)で乾燥せず部屋の底冷え感も解消されたので個人的に大満足の商品でした。自宅作業で部屋の底冷えに悩んでいる人がいたらおすすめできます。温かさはじんわり系で日光やサウナに近い感覚です。

人感センサー電球

玄関に付けています。家を出る時や帰ってきた時に自動で点灯して少し経つと勝手に消灯します。ちょっとしたことですが、これがあるとないとでは生活の質がだいぶ変わります。パナソニックアイリスオーヤマの電球を両方購入しましたが、パナソニックのほうが細かい動きに反応する気がします。

ティファール フライパン

よくあるコメントになってしまいますが、くっつかず洗いやすく手入れが楽です。

ブッククリップ

コーディングで本を開きっぱなしにしたい時に使っています。これまで適当なものをストッパー代わりに本の上に置いていたのですが、重さが足りなかったりバランスがずれたりで本が閉じて作業が中断してしまうことがありました。ブッククリップを検討してからいくつか比較して、使い勝手の良さそうなこちらの商品を選びました。

プラムネット ブッククリップ

プラムネット ブッククリップ

アーロンチェア

これまでの椅子では2~3時間座っていると腰に痛みがきていたのですが、アーロンチェアに変えてから座れる時間が伸びて痛みの強さも減りました。高額の買い物なので購入に決心は必要でしたが買ってよかった品です。保証期間が12年ありサポートが手厚いことも購入を決めたポイントです。大塚家具でセールのタイミングと重なり15万円台で購入できました。

ブロックチェーンアプリケーション開発の教科書

自分の開発でブロックチェーンを使う機会はなかったのですが、ブロックチェーンの仕組みや周辺環境を学ぶことは海外旅行の異文化体験のように学びが大きいものでした。直近の案件ではスマートコントラクトの概念を参考にするなど多少なり勉強したことを活かせています。

ブロックチェーンアプリケーション開発の教科書

ブロックチェーンアプリケーション開発の教科書

まとめ

2018年の買ってよかったものを振り返ると長年抱えていた健康の問題を多く解消できた気がしています。一方で、価格の割に使用回数が少なかったなど反省点のある買い物も結構な額でありました(主に機材周り)。作業へのノイズや負荷を下げるための買い物が成功しやすい傾向にあるので、来年はそのあたりを意識しながら調整してみたいと思います。

さくらVPSでSSL導入

さくらVPSSSL導入を導入した時のメモ

前提

  • さくらVPSでLaravelの環境を構築済。

tsyknsr.hatenablog.com

作業内容

こちらの続き。

  1. /var/www/html以下にプロジェクト用のディレクトリを作成。既存のLaravelのソースコードを移動する。
  2. バーチャルホストを設定。Apache2.4から書き方が変わったらしくエラーを解消しながら作業。
  3. IPアドレスでアクセスして表示を確認。
  4. GoogleDomains側でネームサーバー設定
  5. さくらVPS側でネームサーバー設定。記事に沿って作業。今回は「簡単設定」を選択。
  6. Let’s Encrypt SSL証明書
  7. バーチャルホストにSSL設定を追加

参考

さくらVPSを借りてやったこと

さくらVPSを借りてやったことのメモ

作業内容

  1. CentOS7に変更
  2. 作業ユーザーを作成
  3. 公開鍵認証設定
  4. rootアカウントのログインを許可しない
  5. パスワード認証を許可しない
  6. Port番号を変更
  7. yum update
  8. Laravel環境の構築

完了するとLaravelのトップページを確認できる。

f:id:tsyknsr:20181126100153p:plain

課題

  • ローカルで開発しているLaravelプロジェクトのデプロイ
  • SSL導入

追記:対応済

tsyknsr.hatenablog.com

参考

Google Domainsで取得したドメインをさくらのレンタルサーバーで使用する

Google Domainsで取得したドメインをさくらのレンタルサーバーで使用する時のメモ

前提

さくら側の設定

記事に沿って作業を進める。 レンタルサーバー取得直後に行うと「初期ドメインDNSに登録されていません。しばらく後に設定して下さい」の表記になる。 (時間を置いて再度設定を行うと問題なく進めた。)

参考:【ドメイン設定】他社で取得・管理中のドメインを利用 – さくらのサポート情報

Google Domains側の設定

カスタムサーバに切り替え。

さくらインターネット指定ネームサーバ

  • ネームサーバー1:ns1.dns.ne.jp
  • ネームサーバー2:ns2.dns.ne.jp

参考:ドメイン ネームサーバーの管理 - Google Domains ヘルプ

SSL対応

SSLを導入する。記事に沿って管理画面から行う。

参考:【無料SSL】サーバコントロールパネルからの導入手順 – さくらのサポート情報

まとめ

レンタルサーバーは環境構築が楽、SSLの導入も簡単。Google Domains使いやすい。