XAMPP(社内wikiサーバー)の自動起動と自動シャットダウン設定

2022-01-06

XAMPPを使う頻度が低い時は気になりませんが、いつも使う場合は毎回コントロールパネルを立ち上げてstartを押すのが手間なので自動起動にしました。

ついでに定時になるとPC(wikiサーバー)も自動でシャットダウンしたいのですが、先日MySQLが壊れた事もあったため自動シャットダウンにMySQLの停止コマンドも追加しました。

XAMPP自動起動の設定

1. PCの定時起動

PC自体の定時起動はBIOS(UEFI)設定の変更から行うため、メーカーによって細部は異なります。頻度は少ないと思いますがノートPCなどでは自動起動の設定が無い事もあるため、その場合は諦めてください。

UEFIの設定変更は以下のリンクを参考にしてください。

2. XAMPP(Apache・MySQL)の自動起動

注意)設定時はXAMPPを管理者として実行してください(管理者権限が無いと設定変更や保存ができません)。
諸々の事情で表示は英語です

XAMPPコントロールパネルをスタートアップに登録

*スタートアップに登録する場合、Windowsへログイン後にApacheとMySQLが起動します。

手順
1. XAMPPのConfig画面からApacheとMySQLの自動起動(XAMPPコントロールパネル起動時)にチェックを入れて保存
XAMPPコントロールパネル
Config画面

2. xamppフォルダ内のxampp-control.exeをスタートアップに登録

スタートアップフォルダの場所

3. 終了

ログインしないと起動しませんがユーザー権限でApacheとMySQLが動くため、後述するサービスとして登録する場合よりもセキュリティリスクは低くなると思います。

個人的な意見ですが、個人の開発環境として使う場合はこちらで問題ないと思います。

ApacheとMySQLをwindowsサービスとして登録

*windowsサービスに登録する場合はログインに関係無くApacheとMySQLが起動します。

手順
1. XAMPPコントロールパネルのサービスにチェックを入れる
XAMPPコントロールパネル

チェックを入れる際に確認メッセージが出るため「Yes」を押してください。

2. 終了

手順としてはこちらの方が簡単です。また、サーバー機として使う場合は毎回ログインする事も少ないと思うため、ログインせずにサービスだけ起動したい場合はこちらの方法を使ってください。

定時シャットダウンの設定

手順としては1. MySQLのバックアップ(mysqldump)、2. MySQLの停止、3. windowsのシャットダウンを実行するスクリプト(バッチファイル)を作成してタスクスケジューラに登録します。

1. MySQLのバックアップ

バックアップにはmysqldumpを使います。Windows + XAMPP環境ではmysqldump.exeがインストールされているのでコマンドラインから直接mysqldumpを実行します。

特に何も変更していない場合はrootのパスワードも設定されていないと思うため、パスワードは指定しなくても実行できます。

*全てのデータベースをdump.sqlにバックアップする場合

C:\xampp\mysql\bin\mysqldump --user=root --all-databases > dump.sql

xamppのインストールディレクトリやroot以外のユーザー、パスワードを変更している場合は適宜オプションを変更してください。

パスワードに特殊文字を入力している場合はダブルクォーテーション(")でくくる必要があるかもしれません。

2. MySQLの停止

XAMPPの自動起動の方法で変わるため、どちらも記載しています。

スタートアップに登録の場合

スタートアップからXAMPPコントロールパネルを実行している場合はユーザー権限のアプリケーションとして動いているため、C:\xampp内のmysql_stop.batを終了スクリプトから呼び出して実行します。

call C:\xampp\mysql_stop.bat

サービスとして登録の場合

windowsサービスとして実行している場合、前述の終了スクリプトでは停止できないためサービス停止のコマンドを実行します(管理者権限が必要)。

*停止だけの場合は、サービスで実行している場合は普通にシャットダウンするだけでも安全に停止するかもしれません。

sc stop mysql

3. windows自体のシャットダウン

こちらは普通のwindowsのシャットダウンコマンドです。誰も使わない時間になってからシャットダウンするため、即時シャットダウンにしています。

shutdown /s /f /t 0

定時シャットダウンスクリプト(例)

現在の私の環境での定時シャットダウンスクリプトです。

C:\xampp\mysql\bin\mysqldump --user=root --all-databases > dump.sql
sc stop mysql
shutdown /s /f /t 0

タスクスケジューラへの登録(最上位の特権で実行)

現在のところは作成したバッチファイルを実行するようにタスクスケジューラへ登録しています。コマンドを個別でタスクに登録しても実行できるかもしれませんが、試していないためわかりません(同時実行になると途中中断されるかも)。

ひとまずのところ、これで問題なく動いていることは確認しています。

*タスクスケジューラへの登録は下記サイトを参考にしてください。

頻度が少なく忘れやすい事は記述

以上が自動起動・定時シャットダウンを一通り設定するまでの操作になります。頻度が少ない時は全て手作業でも気になりませんが、回数を重ねる場合は自動化できる操作はPCに任せる方が楽ですしミスも少ないです。

ただ、手順を作ってしまうとそこから触る事も少ないため、あとから見返すためにも丁寧な記述がある方が自分が助かる場合も多いと思って記載しました。

道具を便利に使いこなして、仕事を減らして楽したいと思っています。