Webサイト制作を請け負って生活していると、ある日突然複数台環境での開発を余儀なくされることがあります。「黒い画面でやれ! 終了」と言えばそれまでなのですが、僕はGUIの方がなんとなく気楽なので、そのための設定方法を紹介します。サーバにデプロイする時のドキドキ感を減らしたいというわけですね。
1. アプリの紹介
デプロイが完全自動化(コミット→ビルド→自動テスト→デプロイ)されているならまあいいですが、僕はそうでない環境で日夜過ごしているため、サーバをいじるときにこんなアプリを使っています。
Transmit(SFTPクライアント)
これはSFTP用クライアントですね。有料。「同期」という機能があって、それが地味に便利です。ただし、ファイルのタイムスタンプしか見ていないので、複数人で使う場合はなんの役にも立ちません。コツとしては、「同期専用」のローカルコピーを作ることですね。
Transmitにはファイルを「Transmitで編集」という機能があります。この機能はサーバ上のファイルをテキストエディットっぽいGUIで編集できます。「設定ファイル書き間違えてたヤベヤベ」みたいな時にサクッと直せます。もっとも、Nginxなんかは設定ファイル書き直した時点で再起動しなきゃいけないので、ssh必須ですが……
Sequel Pro
MySQLクライアントです。無料。レンタルサーバに慣れている人はphpMyAdminとか使うと思いますが、サーバ複数台環境でphpMyAdminが用意されることってあまりないので、これを使うと楽です。SQLもちょっとずつ直しながら試せるし。
MySQL自体はコマンドラインから使う人が多いようですが、以前かなり優秀なインフラエンジニアがMySQLデータベースをぶっとばしたのを見てから、僕は絶対にコマンドラインからMySQLを触らないと誓いましたね。
2. SSHの設定
さて、上で紹介したTransmitとSequel Proなのですが、両方ともSSHでの接続が可能です。が、鍵認証の設定があんまりうまくありません。なんでかわかりませんが。
たとえば、Transmitだと秘密鍵を指定するオプションがあるのですが、これがこける場合がよくあります。こういう場合はちょっとメンドクサイですけど、黒い画面を立ち上げてSSHの設定ファイルを編集します。たとえば、データベースサーバのIPが210.00.00.000
で、ユーザー名がme
、秘密鍵がid_rsa_db_1
、ポートが6022
だったとしましょう。
vi ~/.ssh/config # vimが立ち上がる Host myproject.db HostName 210.00.00.000 User me Port 6022 IdentityFile ~/.ssh/id_rsa_db_1
こうやって書いておくと、Transmitの「サーバ」にmyproject.db
って書くだけで認証が通ります。鍵にパスワードが指定されていた場合は変なダイアログが立ち上がります。キーチェーンに覚えさせておけば、二度と聞かれなくなくなります。
ま、とにかくSSHさえ繋がるようにしておけば、GUIアプリで繋げることはできるというわけですね。はじめは黒い画面を触らなくてはいけませんが、二回目からはとても楽ちんです。
3. ポートフォワーディング対応
複数台の構成だと、普通は踏み台サーバがあって、そのサーバを経由しないとWebサーバやデータベースにアクセスできません。
ターミナルでやればなんとかなるのですが、マスターからRsyncするだけのWebサーバに行ったらVimが入ってないとか、そういうメンドクサイこともありえます。
それに、ファイルをアップロードするだけでも一々scp
してcp
してとかやりたくないので、Transmitでぽんと上げられたら楽ですね。
で、TransmitやSequel Pro自体には踏み台をどうにかする機能はないのですが、このためのアプリが存在します。それがCoccinellidaです。てんとう虫って意味ですかね。
このアプリはSSH Tunnelを設定するためのアプリです。細かい設定はMac OS X で簡単に SSH Tunnel を構築する方法とかを読んでください。
このアプリを使うと、サーバlocalhost
のポート30022
と設定するだけで、普通にTransmitとかが使えるようになります。この設定を済ませておくと、複数台構成のサーバでもロリポップみたいに使えますよ。
終わりに
「俺は黒い画面を使いこなすぜ! ウィザードだぜ!」という方も多々おられると思いますが、人は疲れているときに思わぬミスをしてしまうもの。デプロイが大変だと、責任者が官僚化しやすい(ex. ほう、こんな糞コードをデプロイしろとな?)ですし、仕事を終えて家に帰っても電話がかかって来たりします。
また、GUIアプリで設定を済ませておくことのメリットは、「スキルが低くてもデプロイできる」という点ですね。「スキル低いヤツがデプロイできていいのか」という問題もありますが、バナー1個アップロードするのに大騒ぎするような状況よりはましでしょう。
IT業界は人の移り変わりが激しく、付き合いのある会社が1年経ったら社長以外全員別人ということもざら。フロントエンド、ミドルウェアなんでもござれという優秀な人を際限なく雇えるならともかく、そうじゃない場合はこんな感じでGUIアプリの設定を済ませておいて、「このMac使ってね」で終わります。
この方法の問題点はお金がかかるということですが、人件費に比べたら安いもんですよ、奥さん。おわり。
[429] [429] Client error: `POST https://webservices.amazon.co.jp/paapi5/getitems` resulted in a `429 Too Many Requests` response: {"__type":"com.amazon.paapi5#TooManyRequestsException","Errors":[{"Code":"TooManyRequests","Message":"The request was de (truncated...)