OsTicket を Ubuntu 16.04 に Nginx + PHP-FPM7 + MySQL 5.7 でインストールする

重要: 本手順は Ubuntu 16.04 と特定バージョン(PHP 7.0 / MySQL 5.7)を対象としています。他のバージョンではパッケージ名やソケットパス、設定の差異に注意してください。
目的と想定読者
- 目的: OsTicket を安定して公開できる形でセットアップすること。
- 想定読者: Linux サーバー運用者、ヘルプデスク導入担当者、自己ホスト型のチケットシステムを導入したい開発/運用担当。
主要バージョン(ファクトボックス)
- OS: Ubuntu 16.04
- PHP: 7.0 (PHP-FPM)
- Web サーバー: Nginx
- DB: MySQL 5.7
- OsTicket: v1.10
前提条件
- Ubuntu 16.04 がインストールされている仮想マシンまたは物理サーバー
- root 権限(または sudo 権限)
- 外部に公開する場合は適切な DNS とファイアウォール設定
重要: 本手順ではパスワードやドメイン名の実例( osticket.hakase-labs.com / osticketpw@ )を使っています。実運用では必ず独自の安全な値に置き換えてください。
ステップ 1 — Nginx と MySQL のインストール
まずサーバーへ SSH 接続してパッケージを最新にし、Nginx と MySQL をインストールします。
サーバーにログイン:
ssh [email protected]
リポジトリを更新:
sudo apt-get update
Nginx と MySQL をインストール:
sudo apt-get install -y nginx mysql-server
MySQL の root パスワードを求められたら、安全なパスワードを入力してください。
サービスを再起動して有効化:
systemctl restart nginx
systemctl restart mysql
systemctl enable nginx
systemctl enable mysql
動作確認(ポートとプロセスを確認):
netstat -plntu
期待: ポート 80 が Nginx、ポート 3306 が MySQL によってリッスンされていること。
注意: netstat が無ければ apt-get install net-tools で導入するか、ss コマンドを使ってください。
ステップ 2 — PHP-FPM7 のインストールと設定
OsTicket は複数の PHP 拡張を必要とします(gd, imap, xml, mbstring など)。PHP 7 と必要拡張をインストールし、PHP-FPM を Nginx で利用できるように設定します。
インストール:
sudo apt-get install -y php7.0-cli php7.0-mysql php7.0-cgi php7.0-fpm php7.0-gd php7.0-imap php7.0-xml php7.0-mbstring php7.0-intl php-apcu
php.ini を編集(PHP-FPM 用):
cd /etc/php/7.0/
vim fpm/php.ini
cgi.fix_pathinfo を有効化(値 0 に設定):
cgi.fix_pathinfo=0
保存したら PHP-FPM を再起動して自動起動を有効にします:
systemctl restart php7.0-fpm
systemctl enable php7.0-fpm
次に Nginx の仮想ホスト設定で PHP-FPM ソケットを利用するように設定します。
cd /etc/nginx/sites-available/
vim default
ファイル内で PHP 用の設定行を有効にします(下記は該当箇所の例)。
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
設定を保存して Nginx を再起動:
systemctl restart nginx
PHP の動作確認用に phpinfo を作成してブラウザで確認します:
cd /var/www/html/
echo '' > info.php
ブラウザで http://<サーバーIP>/info.php を開き、PHP 情報が表示されることを確認してください。
セキュリティ注意: phpinfo は詳細情報を公開するため、確認後は必ず削除してください。
ステップ 3 — OsTicket 用データベース作成
MySQL にログインして、OsTicket 用のデータベースとユーザーを作成します。
mysql -u root -p
TYPE YOUR PASSWORD
データベースとユーザーを作成(例):
create database osticket_db;
create user osticket@localhost identified by 'osticketpw@';
grant all privileges on osticket_db.* to osticket@localhost identified by 'osticketpw@';
flush privileges;
作成完了後、MySQL シェルを終了してください。
注意: パスワードは強力な文字列に置き換えてください。リモートアクセスが不要であればユーザーを localhost に限定することは良いプラクティスです。
ステップ 4 — OsTicket 用 Nginx 仮想ホスト作成
Nginx の sites-available に新しい仮想ホストファイルを作成します。例では osticket.hakase-labs.com を使用します。必ず自身のドメインや IP に置き換えてください。
cd /etc/nginx/sites-available/
vim osticket
ファイルに以下を貼り付けます(元のサンプルを含みます):
server {
listen 80;
server_name osticket.hakase-labs.com;
root /var/www/osticket/upload;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
index index.php;
client_max_body_size 2000M;
client_body_buffer_size 100M;
client_header_buffer_size 10M;
large_client_header_buffers 2 10M;
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
gzip on;
gzip_comp_level 2;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/x-javascript text/xml text/css application/xml;
set $path_info "";
location ~ /include {
deny all;
return 403;
}
if ($request_uri ~ "^/api(/[^\?]+)") {
set $path_info $1;
}
location ~ ^/api/(?:tickets|tasks).*$ {
try_files $uri $uri/ /api/http.php?$query_string;
}
if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") {
set $path_info $1;
}
location ~ ^/scp/ajax.php/.*$ {
try_files $uri $uri/ /scp/ajax.php?$query_string;
}
location / {
try_files $uri $uri/ index.php;
}
location ~ \.php$ {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param PATH_INFO $path_info;
}
}
root と server_name を自分の環境に合わせて書き換えてください。保存後は有効化して設定テストを行います。
ln -s /etc/nginx/sites-available/osticket /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
エラーが出たら、nginx -t の出力を確認して修正してください。
ステップ 5 — OsTicket のダウンロードと準備
Web ルート用のディレクトリを作成し、OsTicket をダウンロードして展開します。
mkdir -p /var/www/osticket/
cd /var/www/osticket/
wget http://osticket.com/sites/default/files/download/osTicket-v1.10.zip
unzip osTicket-v1.10.zip
展開後、upload ディレクトリ内のサンプル設定ファイルをコピーします:
cd upload/
cp include/ost-sampleconfig.php include/ost-config.php
ファイルとディレクトリの所有者を www-data に変更します:
cd /var/www/osticket/
chown -R www-data:www-data upload/
権限設定は環境に合わせて調整してください。公開サーバーでは不要な書き込み権限を与えないことが重要です。
ステップ 6 — OsTicket のウェブインストール
ブラウザから仮想ホスト(例: http://osticket.hakase-labs.com)へアクセスすると、要件チェック画面が表示されます。必要な PHP 拡張が緑になっていることを確認してください。
不足がある場合は赤で表示されます。依存モジュールをインストールして再確認してください。
「Continue」をクリックして設定画面へ進みます。システム情報、管理者アカウント、データベース情報を入力します。管理者メールはヘルプデスクのデフォルトメールと異なるアドレスに設定してください。
データベース情報にはステップ 3 で作成した情報を入力します。
「Install Now」をクリックしてインストールを実行します。完了すると成功画面が表示されます。
インストール後、setup ディレクトリを削除またはリネームし、設定ファイルのパーミッションを適切に設定します:
cd /var/www/osticket/upload/
mv setup/ setup-sh/
chmod 0644 include/ost-config.php
これでインストールは完了です。
ステップ 7 — 動作確認と管理画面
- ホームページ: http://osticket.hakase-labs.com/
- 管理画面ログイン: http://osticket.hakase-labs.com/scp/
トラブルシューティングとよくある失敗例
- PHP 拡張不足: 要件画面で赤表示。該当拡張を apt で追加インストールし、php-fpm を再起動。
- パーミッションエラー: web サーバーユーザー(www-data)に所有権を与えるか、必要最小限の書き込み権限のみ付与する。
- Nginx エラー: nginx -t を実行して設定の文法エラーを確認。ログは /var/log/nginx/error.log を参照。
- DB 接続エラー: ユーザー名、パスワード、ホスト(localhost)を再確認。MySQL の権限が正しく付与されているか確認する。
セキュリティ強化のチェックリスト
- セキュアな TLS 設定: Let’s Encrypt 等で HTTPS を有効化し、HTTP を HTTPS にリダイレクトする。
- ファイアウォール: 80/443 のみ許可し、不要なポートは閉じる(ufw 推奨)。
- MySQL の root アクセス制限: リモート root ログインは無効化。
- 設定ファイルの保護: include/ost-config.php のパーミッションを 0640 または 0644 に設定し、公開ディレクトリから直接読めないようにする。
- phpinfo の削除: デバッグ用ファイルは本番で残さない。
- 定期バックアップ: DB と upload 添付ファイルを定期的にバックアップ。
運用上のベストプラクティス(ロール別チェックリスト)
管理者(Admin):
- 初期管理者アカウントの 2 要素認証(プラグインや外部サービスで対応)
- 定期的に管理者メールを監査
- 権限/ロールを最小化
運用担当(DevOps):
- サーバー監視(プロセス/ディスク容量/ログ)
- 自動バックアップと復旧手順の整備
- セキュリティパッチ適用スケジュール
エージェント:
- テンプレートと SLA の設定を事前定義
- 添付ファイルの取り扱いポリシーを整備
受け入れ基準
- Web ルートにアクセスして OsTicket のトップページが表示されること。
- 管理者アカウントでログインでき、管理設定画面へアクセスできること。
- 新規チケットを作成し、エージェント側で受信・更新できること。
- データベース接続が正常で、インストール時のエラーがないこと。
移行やアップグレードの注意点
- OsTicket のメジャーバージョン変更時は、事前にステージング環境で検証する。
- PHP と MySQL のバージョン変更は互換性を確認。特に PHP 7.1+ の挙動差異に注意。
- カスタムテンプレートやプラグインはアップグレード前にエクスポートしておく。
簡易運用プレイブック(SOP)
- 日次: ログ確認、ディスク空き容量確認
- 週次: バックアップ作成(DB + 添付ファイル)
- 月次: パッケージのアップデートと再起動手順の検証
- 障害発生時: まずサービス状態(systemctl status nginx|mysql|php7.0-fpm)、ログ確認、最後のバックアップからのリストア手順準備
ミニ用語集(1 行定義)
- PHP-FPM: PHP を FastCGI として効率的に動かすためのプロセスマネージャ。
- Nginx: 高性能な HTTP サーバー/リバースプロキシ。
- OsTicket: PHP ベースのオープンソースのサポートチケットシステム。
参考リンク
- OsTicket 公式 Wiki: http://osticket.com/wiki/Main_Page
要約:
- 必要パッケージ(Nginx, MySQL, PHP-FPM と拡張)をインストールして設定する。
- MySQL に OsTicket 用 DB とユーザーを作成。
- Nginx 仮想ホストを作成し、OsTicket をダウンロードして配置、ウェブインストールを実行。
- インストール後はセキュリティ強化とバックアップ運用を必ず行う。