レンタルサーバのスペック比較表で「ssh」って書いてあるの見たことある方も多いと思います。個人のブログで使っている方はともかく、仕事でレンタルサーバを使っている方は絶対と言っていいほど使い方を覚えた方がよいツールです。そんなsshについてさらっとご紹介します。
ssh?黒い画面?ターミナル?
実はsshはプロトコルの名前でして、ターミナルとか、黒い画面とか、シェルとか言われています。名前はどうでもいいけど、サーバをリモートコントロールする仕組みって覚えておけば良いです。
FTPも一緒じゃん?FFFTPとか黒くない画面で使えるから便利!って思う方もいらっしゃると思いますがちょっと待ってください。FTP=File Transfer Protocolです。ファイルを転送するだけの話なので、編集してると思ってるのは、FFFTPがファイルをダウンロード、ローカルで編集、保存されたらアップロードって勝手にやってるだけなんですよ。
sshでターミナルからレンタルサーバにログインすると、サーバ内のファイル操作や編集がサーバ側で実行できるのが最大のメリットです。また、レンタルサーバにアプリがインストールされていれば、それをsshを使って実行することができるわけです。
ええ?そんなん使えるの当たり前じゃないん?って思う方もいらっしゃると思いますが、実はシェルログインしてサーバ操作できる人ってものすごく少ないんですよほんと。WordCampとかで聞いたら、そういう作業は外注してるという方も多いです。こんな便利なのに!
sshを使うメリットって
一番多いのが、WordPressのプラグイン変な編集しちゃってダッシュボード真っ白とかよくあるじゃないですか?そんな時、sshでログインしてプラグインディレクトリの名前変えちゃえばサクッと復旧できるんですよ、ご存じでした?Gitの設定とかして履歴管理できればいいんだけど、よくわからない人はとりあえずディレクトリごとコピーしたい人も多いと思います。そんな操作も一発でできるんです。
また、WordPressサイトの引っ越しするときも、プラグイン使うとPHPのアップロードファイルサイズ制限とかにひっかかって上手くいかないときがありますが、引っ越し元にsshでログインして、ファイルを引っ越し先に直送できます。それで引っ越し先にインストールしてあるWordPressを上書きしたらファイル転送完了するの、めちゃくちゃ便利だと思いません?
All in one WP Migrationとか、便利なプラグインがありますが、それらは所詮PHP上で動いてるアプリケーションなんです。PHP経由でデータベースダンプしたりファイルコピーしてるだけなので、PHPでできることという制限があります。
sshが使えれば、引っ越し元サーバからrsyncでファイルをコピーして、データベースインポートしてwp-config.phpを書き換えたらすぐ引っ越し完了ですよ、素敵!FTPでローカルにダウンロードしてアップロードし直しとかしなくていいんです。一度ローカルを経由すると、自分のインターネット回線速度に依存するけど、サーバー間で直送したらサーバ同士のネットワーク帯域でコピーできるので大抵高速です。何より、コマンド操作は一回覚えたらどこのサーバでもほぼ一緒なのもいいですね。
※細かいコマンドはOSごとに違いはあるものの、ファイル操作する分にはほぼ一緒です。
何を覚えて良いかわからない
sshでできること=サーバでできること(リモコンだから当たり前ですよね)なので、何を覚えて良いかわからない方が多いと思います。WordPressサイトの運用に役立つコマンドをいくつか挙げますが、これ以外にもできることはたくさんあるのでやりたいことがあったら検索してみるのがいいです。
sshでの接続方法をまずは覚えよう
つなぎ方はさくらのレンタルサーバの場合、サポートページに書いてあります。が、他のレンタルサーバも使い方はだいたい同様で、接続先のドメイン、ポート番号とID/パスワード、もしくは鍵認証の鍵を設定すればつなげます。コントロールパネルでONにする、もしくは鍵やパスワードを発行するところもありますので、各社のマニュアルを見ましょう。ターミナルアプリは好きなのを使えば良いと思います。僕はWSLにUbuntuをインストールしているのでそこからアクセスします。Macだと最初からターミナル.appが入ってるのでわかりやすいですね。Windowsだと一般的にはPuttyみたいなターミナルアプリが使われていると思います。
※リモート接続であることを意識する
sshはサーバをリモートコントロールするプロトコルです。なので、接続先のサーバによってコマンドが違う場合があります。ターミナルはあくまでリモコン操作するコマンドを入れる場所であって、実行されるのは接続先のサーバです。本番環境のファイルを削除したら当然ファイルは消えて無くなります。ゴミ箱とか便利なものがないので、ファイルの操作をするときは気をつけましょう。
ファイルの削除、移動、コピー
ファイルの移動(リネーム)、削除、コピーがコマンドでできます。最低限、引数とパスの書き方を覚えれば大丈夫です。腐ったプラグインディレクトリの名前を変えるときは
mv plugin_name plugin_name_new
って書いたら名前が変わりますよ。元のファイルを残したいときはコピー。
cp -R plugin_name plugin_name_new
一個上のディレクトリにディレクトリをコピー
cp -R hoge ../
ディレクトリを移動する必要もあります。
cd wp-content/themes/
いっこ上に戻ることもできます。
cd ../
間違ってコピーしたら削除
rm wp-config.php.bak
サーバをまたぐコピー
サーバをまたぐファイルのコピーには、scpかrsyncが利用されます。scpは単純なコピーなのでCPU負荷が低いのですが、コピー時の処理が甘かったりするのでrsyncを使う方が良いでしょう。レンタルサーバの引っ越しなどの場合に、引っ越し元からsshを使ってrsyncするとFTPでローカルに落としてあげ直すよりも2倍以上早く終わります。圧縮転送やパーミション保持のオプションがあり、めちゃくちゃ高機能です。
パーミション保持したままコピーとかもできるんだけど、ややこしくなりそうなので僕はいつも何も考えないで空のディレクトリに丸ごとファイルコピーしてきて、マニュアル見て適切なパーミションに設定し直しています。
ファイルの編集
ファイルを編集するときはvimというアプリケーションを使います。大抵のレンサバには入ってます。
vim wp-config.php
wp-config.phpを編集したかったらこのように打てばファイルが編集できます。ファイルが無ければ新規で作成できます。vimはコマンドラインで操作するアプリケーションなので当然マウスなどは使えません。 :w で上書き保存(Ctrl+s)、:q で終了(Alt+F4)など、ちょっと操作方法が変わっていますが、編集して保存するぐらいならそこまで多くのコマンドを覚える必要はありません。興味ある方はゴリラさんの書いているVim講座をみてみてください。コマンドだけを知りたければ、「vim コマンド」とかで検索したら死ぬほど出てきます。iキー&ESCキーでのモード変更と保存、編集、カーソル移動ぐらい覚えればとりあえず大丈夫。
そんなのレンタルサーバのファイルマネージャで操作すりゃいいじゃん!と思われるかも知れませんが、ファイルマネージャは各社独自UIで、学習コストがそれぞれかかります。Vimは一度操作方法を覚えれば各社のレンタルサーバで大体操作方法は同じなので学習コストは低くなります。.htaccess1つ編集するだけでも、ファイルマネージャの使い方を覚えるのとsshでログインしてサーバ上で編集するなら後者の方がやり方わかってれば楽ですよね。
パーミション(権限)
サーバOSには(厳密に言えばWindowsにもありますが)、ファイルやディレクトリの権限という概念があり、権限が無いファイルは編集できなかったり閲覧すらできなかったりします。レンタルサーバでWordPressサイトを運営する場合、このファイルパーミションを操作する場合があります。
chmod 604 wp-config.php
よく使われるパーミションは775や705、755などあります。777で全開になり、サーバ上の全ユーザが編集できるようになります。ユーザのみが読み書きできるファイルは600になります。適切な管理がされているレンタルサーバなら777にしても他ユーザが閲覧したりできるわけではないですが、鉄則として望んだ処理が出来る範囲でパーミションは小さい方がいいです。wp-config.phpは604が良いと言われるのはこのためです。
ただレンタルサーバの仕様によって、実行ファイルを604に設定するとPHPが動かないこともあります。各社適切なパーミションがマニュアルに書いてありますので確認してみましょう。さくらのレンタルサーバでは、プログラムが動かないときは755や705で確認してみましょうとマニュアルに書いてあります。
よくわからなくなってきたかと思いますが、ぶっちゃけWordPressで権限無いぞ!って怒られなければ初期設定で大丈夫です。ただ、他のレンタルサーバからファイルを移してきたときに権限問題でサイトが見れなかったりする場合がありますので、「なんか動作がおかしかったら、確認するべき項目の1つとしてファイルの権限がある」ってことは頭に入れておきましょう。基本的に緩める方向には問題が悪化することはない(緩めすぎは良くないですが)ので、いったん緩めてみて、動作を確認して問題が解決しなければ権限が問題ではないと思ったら良いでしょう。緩めたパーミションは元に戻してください。
MySQLの操作
MySQL、レンタルサーバだとphpMyAdminから使うのが一般的ですよね。確かにGUIで操作できるのは便利なんですが、いつも思うのがphpMyAdmin高機能すぎ問題。インポート、エクスポートしたいだけなのに設定項目多過ぎなんですよね。もちろんsshでサーバにログインしたらMySQL操作だってできますよ!
mysql -u USERNAME -p -h HOST_NAME DATABASE_NAME < filename.sql
ファイルを全部上書きした上で、ダンプしたsqlファイルを、引っ越し先のレンタルサーバに作ったデータベースに↑のコマンドでインポートし、wp-config.phpのデータベースサーバ設定を引っ越し先のレンタルサーバにあわせて書き換えます。ホストネームとユーザーネームはレンタルサーバのアカウントじゃなくて、データベースの情報なのでご注意を。
Prefixで複数サイトが1つのデータベースに入っている場合は条件付けしてエクスポートしても良いし、ダンププラグインでダンプしても良いでしょう。
wp-cliが使える!
wp-cliって知ってますか?WordPressをコマンドラインから操作できるコマンドで、さくらのレンタルサーバではデフォルトでインストールされています。これがWordPress周りのツールの例に漏れず異様に高機能になっておりまして、投稿の編集などは当たり前、プラグインの一括アップデートや初期のインストール、検索、インポートなどヤバいぐらい高機能です。コマンド一覧を見てみてください。
ニッチな用途ですが、WordPressのダウンロード、インストール、ドメイン、初期ユーザの設定を1行コマンドにして、CSVから各情報を読み込んで連続実行するシェルスクリプトを作ってハンズオン用のWordPressサイトを大量に作ったりしています。複数サーバに1個ずつWordPressをインストールする必要があるのでこの方法はめっちゃ便利ですね。(これもしや、〇〇とか△△△作るのに便利なのでは?)
というわけで、今日はssh(シェルログイン?ターミナル?)使えると便利ですよーって話でした。雑な内容ですが、ちゃんと書くと自社媒体に書いてくれって怒られるので、興味持ったら自身で調べてください!