Skip to main content

3 posts tagged with "Supervisor"

View All Tags

· 3 min read

サーバーを設定していると対話型になるところがあるけど、それを文章化するのも面倒だし、スクリーンショットを撮るのも面倒だし、何よりも自動化できないので、可能な限りコマンドだけで設定を完了しておきたい。

環境は Ubuntu 14.04 。
インストールするアプリの都合で今回はこのバージョンを使っている。

ホスト名​

ホスト名の変更と hosts の書き換え。

export HOSTNAME=example.jp
hostname $HOSTNAME
sed -i "s/^\(127\.0\.0\.1.\+localhost\)/\1 $HOSTNAME/" /etc/hosts

エディタ​

デフォルトエディタの設定を変更する。
エディタは nano よりも vim の方が好み。

sudo update-alternatives --set editor /usr/bin/vim.basic

対話形式でエディタを選択したい場合はこうする。

sudo update-alternatives --config editor

タイムゾーン​

sudo sh -c 'echo "Asia/Tokyo" > /etc/timezone'
sudo dpkg-reconfigure -f noninteractive tzdata

対話形式でタイムゾーンを選択したい場合はこうする。

sudo dpkg-reconfigure tzdata

NTP​

sudo cp /etc/ntp.conf /etc/ntp.conf.org
sudo sed -i "s/^\(server\) \(.*\)/\1 ntp.nict.jp/" /etc/ntp.conf

server 1.time.constant.com server 2.time.constant.com server 3.time.constant.com

上記が次のようになる。

server ntp.nict.jp server ntp.nict.jp server ntp.nict.jp

MySQL​

export MYSQLPW=INPUT_PASSWORD
echo "mysql-server mysql-server/root_password password $MYSQLPW" | sudo debconf-set-selections
echo "mysql-server mysql-server/root_password_again password $MYSQLPW" | sudo debconf-set-selections
sudo apt-get -y install mysql-server

sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.org
sudo sed -i "/\[mysqld\]/i default-character-set=utf8\n" /etc/mysql/my.cnf
sudo sed -i "/\[mysqldump\]/i character-set-server=utf8\n" /etc/mysql/my.cnf
sudo sed -i "/\[mysql\]/i default-character-set=utf8\n" /etc/mysql/my.cnf

debconf-set-selections を設定せずに mysql をインストールするとrootのパスワードを聞かれる。

Supervisor​

Supervisor用の設定ファイルもコマンドで作成。
Supervisorにかぎらず、ファイルを作成する場合に使える。
sudoにコマンドを渡したいときは sudo -sh -c "command" とするとパイプなども期待通りに使える。

sudo sh -c "cat <<EOF > /etc/supervisor/conf.d/xvfb.conf
[program:xvfb]
priority=1
user=MYAPP
command=Xvfb :1 -screen 0 800x600x24
autostart=true
autorestart=true
directory=/opt/visionect
stdout_logfile=/var/log/xvfb-stdout.log
stderr_logfile=/var/log/xvfb-stderr.log
EOF"

sudo supervisorctl reread
sudo supervisorctl add xvfb
sudo supervisorctl status

Supervisor用の設定ファイルを作成したら、読み込ませることを忘れずに。

· One min read

DockerでConfluence環境を構築した際にちょっと手こずった自動起動。

Supervisor管理下に置く

ConfluenceをSupervisor管理下に置くスクリプト。

[program:confluence] command=/confluence/application/bin/start-confluence.sh -fg user=confluence stdout_logfile=/var/log/supervisor/confluence-stdout.log stderr_logfile=/var/log/supervisor/confluence-stderr.log

重要なのは以下の2つ。

  • "-fg" にしてプロセスをフォアグラウンドで動作させること。
  • confluenceユーザで起動すること。

感想

起動オプションに "-fg" なんてあったんだね〜と初めて知った。

· 6 min read

Dockerはデーモン関係の取り扱いが弱いというか、一癖あるというか、ハマる人が多いような気がしている。
なぜそんな気がしているかというと、調べても情報が少ないっ!
なぜ調べていたかというと、自分がはまっていたから。

環境

環境はUbuntu 12.04。
Ubuntu系ならだいたい似たような感じと想定。
CentOSはわからない。

Docker上でMySQLを動作させる注意点

いくつか注意点があるので順番に紹介していく。

  1. Upstartが動作しない。
  2. 自動起動の方法がわからない。
  3. 初期化処理が実行されない。

これだけ抑えればちょっと変わったプロセスでもSupervisorを使った自動起動ができるようになると思う。