さくらVPS上にWebサービスを公開したはなし
正月で生活習慣が乱れまくったので、睡眠習慣を記録するWebサービスを作った。
おふとんグラフ
http://ofline.biz/
使用したもの
・サーバ:さくらVPS
・言語:Python
・フレームワーク:Flask(flask-oauth, flask-wtf, sqlalchemy)
・HTTPサーバ:nginx
・DB:MySQL
サービスを公開するにあたって、やったことをメモする。
さくらVPSのリモート設定
参考URL
http://blog.hybridism.com/?p=140
http://dogmap.jp/2011/05/12/vps-security/
※rootログインの禁止とか、ポートの変更とかは上記のサイトをそのまま参考にした。
公開鍵設定もほとんどそのままだけど、おぼえられんのでメモ。
公開鍵の設定
・クライアント側
~/.ssh に任意のフォルダを作り、その中に公開・秘密鍵を生成する GitHubとか使ってると鍵がごちゃつくので、VPS用のフォルダを任意の名前で作っておく $ mkdir ~/.ssh/サーバ名 $ cd ~/.ssh/サーバ名 $ ssh-keygen -t rsa -C "鍵名" ~公開鍵を作成~ Enter file in which to save the key (/home/yui/.ssh/id_rsa): /home/yui/.ssh/サーバ名/秘密鍵名('id_rsa-サーバ名'とかにすると管理しやすい) Enter passphrase (empty for no passphrase): パスワード(2回入れる)
秘密鍵:id_rsa-サーバ名
公開鍵:id_rsa-サーバ名.pub
が生成される。
秘密鍵の権限を600に変更しておく
$ chmod 600 ~/.ssh/サーバ名/id_rsa-サーバ名
公開鍵をscpコマンドでサーバに送っておく
$ scp ~/.ssh/サーバ名/id_rsa-サーバ名.pub ユーザ名@xx.xx.xx.xx: 公開鍵を指定して、ユーザのホームフォルダにコピーする
・サーバ側
.sshに公開鍵をauthorized_keysに設定(なければ空のファイルを作っておく)
$ touch authorized_keys authorized_keys(空ファイル)を作る $ cat さっき送った公開鍵 >> authorized_keys authorized_keysに公開鍵の内容を設定(上書き。複数のクライアントを設定することあるので。)さっき送った公開鍵はサーバから消しておく。 $ chmod 600 authorized_keys ここが間違っていて、はまりました
sshdの設定ファイル変更
/etc/ssh/sshd_configを以下のように修正(バックアップはとっておくこと) RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys #(コメント)を外して公開鍵認証を有効にする PasswordAuthentication no パスワード認証を禁止にする
sshdを再起動する
$ service sshd restart
・クライアントから正常にログインできるかチェック
$ ssh ユーザ名@xxx.xxx.xxx -i ~/.ssh/サーバ名/id_rsa-サーバ名 -i オプションで秘密鍵の場所をを指定すること 正しくつながれば、鍵を生成したときのパスワードを入力してログインできる サーバ側のauthorized_keysの権限設定が間違ってたりすると Permission denied (publickey,gssapi-keyex,gssapi-with-mic) となってログインに失敗する……
設定してない端末からログインできないことも必ず確認しておく。
バックアップ設定
参考URL
http://mukaer.com/archives/2012/03/14/vpscentos/
※mysqlのdumpとか、毎日定期的にバックアップとるようにした。
参考URLのやり方をほぼまねさせてもらった。