サーバー上で作業を行う上での注意点と、知っているときっと役に立つであろうLinuxコマンドの使用方法についてまとめました。
サーバー上で作業を行う上での注意点と、知っているときっと役に立つであろうLinuxコマンドの使用方法についてまとめました。
こんにちは。
エンジニアブログ第2弾は、Linuxサーバー上での作業についての内容を書かせていただきます。
サーバーのOSにも実に様々な種類がありますが、その中でも世の中的に広く使用されているLinuxサーバーについて、大きく2つの内容を取り挙げてご紹介したいと思います。
※ここでは、ディストリビューションによる違いは取り挙げないため、広義においてLinuxという表現を用いています。
Linux環境に限った話ではありませんが、サーバー上で作業を行う際は、常に細心の注意をはらって作業を行う必要があります。
リリース作業は特に、コマンド操作を1つ誤っただけで、最悪の場合サーバーが壊れてしまう、サービスが停止してしまう、なんてことにもなりかねないからです。
サーバー作業は、常にそれだけ危険と隣り合わせであるということを念頭においた上で、作業に臨む必要があります。
トラブルを回避するために、人によって気をつけているポイントが色々あると思いますが、本記事では私が特に気をつけているポイントを5点ご紹介させていただきます。
root権限(ユーザー)は、何でもできてしまいます。
開発環境上で自由にいじくりまわす分には構わないかもしれないですが、本番環境でrootでログインして作業したり、sudoしまくるような行為は危険極まりなく、事故る確率が高くなります。
(そもそもrootで普通にログインできてしまう設定は問題があるような気がします・・)
普段rootで操作し慣れている方は、本番環境でもついついrootになりたくなると思いますが、そこは我慢して、必要最小限に留めましょう。
サーバー作業時に、〇〇の設定をし忘れた、間違えて××のオプションの指定が抜けていた、なんてことが稀に起こると思います。
上記のような状況を回避するためには、予め作業手順を用意してから作業を行うようにすることで、事故を防ぎやすくなります。
本番環境で作業を行う場合は、必ず作業手順を用意して、手順に記載されていない操作は行わないようにする。
これを意識的に実施することをオススメします。
サーバー作業時に設定ファイルを変更する際は、事前にバックアップをとることをオススメします。
いきなり直接編集してしまうと、もし間違った内容で保存してしまった場合に、元に戻せなくなってしまうためです。
設定変更を行うファイルのバックアップをとる→編集する→バックアップ前後で修正内容の差分を確認する、という流れを徹底することで、変更ミスを防ぐことができます。
※バックアップの取得や差分確認のオススメの方法は、のちほどご紹介します。
コマンドの実行ミスを防ぐための有効な手段として、カーソルチェックがオススメです。
カーソルチェックとは、一通り入力し終えたあとに、入力カーソルを一番先頭に戻して、一文字ずつ入力した内容に間違いがないかを確認していくという方法です。
文字を目で追うだけだと、どうしても見落としが発生しがちになってしまうので、カーソルを用いて一文字一文字に焦点を当てて確認していくことで、カーソルが当っている文字を集中して確認することができます。
短時間でできてとても効果のある方法なので、ぜひ活用してみてもらえればと思います。
最後は、Enterキーを押す際の心持ちについてです。
サーバー上で、必要なコマンドを入力したあとに、Enterキーを押すことで実行されます。
このEnterキーを押すという操作は、すなわち世界を変える、ということに繋がります。
少々大げさに思われるかもしれないですが、紛れもない事実です。
Enterキーを押したら、世界が変わります。
正しく実行が完了したら、良い未来(リリース完了)がやってきます。
もし間違ったコマンドを実行してしまったり、想定外の実行結果になったら、悪い未来(障害対応)がやってきます。
良い未来に行けるように、Enterキーを押す前に一度立ち止まって、入力した内容に誤りがないか、本当に実行しても大丈夫なのか、今一度考えるようにしてみてください。
以上、サーバー上で作業する上で気をつけるべき5か条をご紹介させていただきました。
どれも本当に重要な内容なので、ぜひ強く意識していただきたいです。
さて、ここからは、知っておくと少しだけ良い未来に近づける便利なコマンドの使い方をご紹介したいと思います。
(コマンド自体の目新しさというよりは、使い方の部分に重きをおいています)
最初はバックアップ関連でよく使用するコマンドです。
サーバー上のファイルのバックアップを取得する際は、cp、tarがよく使われます。
cpは設定ファイルのバックアップに、tarはソースコード(アップロード含む)のバックアップによく使われるかなと思います。
具体的には、私はよく以下のような形で使用しています。
# 設定ファイルのバックアップ
$ cp -p hoge.conf{,.yyyymmdd}
# 設定ファイル編集&保存
$ vi hoge.conf
# 差分確認
$ diff -u hoge.conf{.yyyymmdd,}
上記のcpやdiffで出てくる{,.yyyymmdd}
や{.yyyymmdd,}
は、それぞれ以下と同様です。
# 以下はどちらも同じ結果になる
$ cp -p hoge.conf{,.yyyymmdd}
$ cp -p hoge.conf hoge.conf.yyyymmdd
# 以下はどちらも同じ結果になる
$ diff -u hoge.conf{.yyyymmdd,}
$ diff -u hoge.conf.yyyymmdd hoge.conf
上の書き方の方はぱっと見だと少々わかりづらいかもしれないですが、文字の入力量が少なくなるのと、階層を間違えて指定する、といったことがなくなるので、オススメです。
ソースコードのバックアップやリストアでは、tarコマンドがよく使われます。
Linux系OSでは、拡張子はgzip形式が主流なので、zオプションを使用することが多いかと思います。
# ソースコードのバックアップ
$ tar zcf src_yyyymmdd.tar.gz src/
ちなみに、詳細を表示するvオプションは、処理が動いていることをわかりやすくするために指定されるケースが多いと思いますが、私は指定しないことが多いです。
理由は、画面表示に時間がかかるからです。
ソースコードやアップロードファイルのバックアップを取得する場合、合計のファイル数が何千〜何万ファイル(あるいはそれ以上)なんてことがしばしばあります。
vオプションをつけてtarコマンドを実行すると、これらのファイルをすべて画面に表示しようとするため、その分時間がかかります。
そのため、バックアップ・リストア処理そのものはとっくに終わっているのに、vオプションをつけたことで全ファイル名を画面に表示する部分だけが終わらず、ひたすら終わるのを待つ、ということになったりします。
ソースコード・アップロードファイル群のサイズによっては、バックアップ・リストア処理自体に時間がかかるケースが多々あるため、待ち時間の短縮という意味でも、vオプションをあえてつけずに実行するという方法が有効です。
このコマンドは、実行するコマンドの先頭にtimeと指定して実行することで、実行したコマンドの処理に要した時間を表示できるようにするコマンドです。
以下のような形で、tarコマンドでバックアップを取得する場合や、バッチ処理を実行する場合なんかに有用です。
# バックアップに要した時間を把握できる
$ time tar zcf src_yyyymmdd.tar.gz src/
real 0m12.778s
user 0m11.802s
sys 0m1.585s
このコマンドは、-fオプションをつけて実行することで、指定したファイルのフルパスを調べることができます。
$ readlink -f public_key.pem
/var/lib/mysql/public_key.pem
活用シーンとしては、scpコマンドでリモート→ローカルにファイルをコピーしたい場合なんかに、リモートのサーバー上のフルパスを調べる際に使用できます。
今回ご紹介するコマンド・使用例は以上とさせていただきます。
どれもサーバー作業において、よく使うものばかりですので、ぜひ活用していただければと思います。
上記の他にも、まだまだ便利なコマンドや活用方法がありますので、また別の機会にご紹介できればと思います。
今回は、サーバー作業においての心構えと、便利なコマンドについてご紹介させていただきました。
サーバー作業は、作業による影響度合いが大きく、またとても責任重大な作業なので、大変な作業ではありますが、それだけやりがいのある作業だと思います。
緊張感をもちつつ、毎回ミスなく確実に作業をやり遂げられるように、常日頃から、高い意識をもって作業に臨んでいきたいですね。
EMoshUは、会社のインフラ部分を支えてくれるエンジニアを募集しています。
会社を自分の力で大きくしていきたいという、そんな志を持って一緒に戦ってくれる方、さらなるレベルアップを図りたいという方がいらっしゃいましたら、ぜひ募集要項をご確認の上、ご連絡いただければと思います。