スタートアップスクリプトの作り方

さくらのVPS コントロールパネルを使ってスタートアップスクリプトを作成する手順について解説します。

スタートアップスクリプトを書いてみよう

本記事では、コマンドをいくつかまとめた簡単なスタートアップスクリプトを作ってみたいと思います。
題材は公式スタートアップスクリプトにある「yum update」です。
1
2
3
4
5
6
7
8
#!/bin/bash
## ScriptName: CentOS_yum-update

set -x

yum clean all
yum -y update
reboot
1行目の #!/bin/bash はシバン(shebang)といって、どのシェルを使ってスクリプトを実行するかを明記するものです。この場合は/bin/bashを使ってスクリプトを実行しますよ、という意味になります。

2行目以降 #で始まっている行 はコメントになります。コマンドとして実行されずに飛ばされます。実際のプログラミングではこの場所で何の処理を行っていますというようなことをコメントとして挿入したりします。

4行目の set -x は、コマンドの実行結果を出力するものです。スタートアップスクリプトの実行が失敗した場合に、後から確認できるようにするためにつけています。

6行目の yum clean all は、キャッシュ(今までダウンロードしたrpmファイル、ヘッダファイルなど)すべてを削除するものです。きれいな状態にしてからアップデートをかけるためにこうしています。

7行目の yum -y update が本体で、このコマンドでサーバーにインストールされているパッケージ(サーバーに入っているソフトウェア群)を更新します。-yをつけると、途中にyes or noで聞かれる部分も全てyesとして実行します。対話的に実行するときは-yはなくてっも実行できますが、スクリプトの中で自動で実行させる場合には必須になります。

8行目の reboot は、パッケージの更新がすべて終わったあとに最新の状態を反映させるためにOSを再起動させるコマンドです。

スタートアップスクリプトを作成して実行してみよう

ここからは実際にさくらのVPS コントロールパネルを触って、スタートアップスクリプトを作って実行してみます。新コントロールパネル(β)を使った手順について解説します。

さくらのVPS コントロールパネルにログインし、[今すぐβ版を試してみる]をクリックします。

左メニューの[スクリプト](①)をクリックし、右側の[スクリプトを作成](②)をクリックします。

スクリプトの名前を入力します。ここでは「my yum update」としています。利用可能OSは「CentOS7 x86_64」と「CentOS8 x86_64」を選択します。

[スクリプト本文]に、先ほど紹介したyum updateのスクリプト全文をコピーして貼り付けます。

パラメーターはスタートアップスクリプトを実行させる際にユーザーの手入力が必要な項目をスタートアップスクリプト実行時に入力させることができる機能で、これを利用することでスタートアップスクリプトでできることの幅が広がります。今回は使用しませんので、右下の[作成]をクリックします。

以下のように表示されればスタートアップスクリプトを作成は完了です。ここから先では実際にスタートアップスクリプトを使ってみましょう。

スタートアップスクリプトの実行にはOSの再インストールが必要になります。OSを再インストールすると今のデータは全て削除されますので、データが削除されても問題ないVPSで試すようにしてください。
左メニューの[サーバー]をクリックし、スタートアップスクリプトを実行するVPSの名前(ここでは「テスト用」としています)をクリックします。

[OS再インストール]をクリックします。

[インストールOS]は「CentOS7 x86_64」または「CentOS8 x86_64」を選択し(①)、[新しい管理ユーザーのパスワード]を入力し(②)、[スタートアップスクリプト]では[利用する]をクリックし(③)、[スクリプトを検索]をクリックします(④)。

先ほど作成した「my yum update」をクリックし(①)、利用するをクリックします(②)。

右下の[OS再インストール]をクリックします。

確認画面で問題がなければ[OS再インストール]をクリックします。

OS再インストールが開始されます。

スタートアップスクリプトはOS再インストールが完了してから実行されるため、実際に起動してから利用できるまでしばらく時間をおいてください。以上でスタートアップスクリプトの作成と実行は完了です。

まとめ

今回は公式のスタートアップスクリプトをもとに簡単なスタートアップスクリプトを作成して実行してみました。みなさんもぜひスタートアップスクリプトの作成にチャレンジしてみてください。

解説1:スクリプトはコマンドの集合体+α

VPSで使われるCentOSやUbuntuといったLinux系のOSや、FreeBSDといったUnix系のOSは、コマンドを入力することで設定していきます。
このコマンドを受け付けるプログラムのことをシェルと呼びます。シェルに対してコマンドを送る際は、サーバーにコンソールやSSHでログインをして、1命令ごとに入力していくことが一般的ですが、テキストファイルにコマンドをいくつも並べて、コマンド一式を一気に実行させることも可能です。このコマンドの集合体のテキストファイルの中身を、シェルスクリプトと呼びます。

シェルスクリプトでは、単純にコマンドをまとめて実行するだけでなく、繰り返し(for/while/until)や条件分岐(if/case)などの制御文、変数や配列、関数などのプログラミング言語が備える機能も利用が可能です。これがタイトルに書いた「+α」の部分です。

解説2:さくらのVPSのスタートアップスクリプト

さくらのVPSには「スタートアップスクリプト」という機能がありますが、これはサーバーの購入時やOS再インストール時にシェルスクリプトを一緒に実行して、初期設定の手間を省いてくれるものです。
さくらインターネット公式のスタートアップスクリプトには、yum update(簡単に言うとOSの最新状態への更新)をおこなってくれるものから、WordPressのようなブログシステムやMinecraftのようなゲーム用のサーバーを作るスクリプトなどが用意されていて、ユーザーは自分でコマンドを入力してサーバーを構築していく手間なく、すぐにアプリケーションが使えるようになっています。
ユーザーが作ったスタートアップスクリプトをシェアする機能もあり、Terrariaのようなゲーム用のサーバーを作るスタートアップスクリプトなどが公開されています。