UbuntuServer16.04にOSSのDCIM・IPAMツール「netbox」をインストールする
Pocket

以前に紹介したDCIM・IPAMツール「netbox」を、Ubuntu Server 16.04にインストールしてみる。
インストール手順については、公式ドキュメントがあるのでそれを参考にする。

1.PostgreSQLのインストール・設定

まずはPostgreSQLのインストールから。
以下のコマンドを実行する。

sudo apt-get install -y postgresql libpq-dev python-psycopg2

 

PostgreSQLインストール後、DBの作成などを行わせる。
(この手順では、PostgreSQLでパスワードの設定とか行っていない。実際に利用する場合はちゃんと設定することを推奨する。パスワードも例として「P@ssw0rd」にしているが、これもちゃんとランダムなものを設定したほうがいいので、環境や状況に合わせて変更を。)

sudo -u postgres psql << EOF
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'P@ssw0rd';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
EOF

 

2.netboxのインストール・初期設定

Webサーバの前にnetboxのインストール。
まず、以下のコマンドを実行して前提パッケージを導入する。

sudo apt-get install -y python2.7 python-dev python-pip libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev git

 

次に、githubからnetboxのソースを持ってくる。

sudo mkdir -p /opt/netbox/
cd /opt/netbox/
sudo git clone -b master https://github.com/digitalocean/netbox.git .

 

pipで必要になるpythonパッケージのインストールを行う。

sudo pip install -r requirements.txt

 

設定ファイルをテンプレートをコピーして作成する。

cd netbox/netbox/
sudo cp configuration.example.py configuration.py

 

設定ファイルを編集して、DBの接続情報を記述する。

sudo sed -e "1i DEBUG=True" \
         -e "/^ALLOWED_HOSTS/s/\[\]/\[ 'アクセス可能なIPアドレス(*で指定も可能)' \]/g" \
         -e "/PostgreSQL username/s/''/'netbox'/g" \
         -e "/PostgreSQL password/s/''/'P@ssw0rd'/g" \
         -e "/^SECRET_KEY/s/''/'$(../generate_secret_key.py)'/g" \
         -i.bk ./configuration.py
Sponsored Links

DBへのテーブル作成などマイグレーションを実行する。

cd /opt/netbox/netbox/
./manage.py migrate

 

netboxの管理ユーザを作成する。

./manage.py createsuperuser
blacknon@BS-PUB-UBUNTU-01:/opt/netbox/netbox$ ./manage.py createsuperuser
Username (leave blank to use 'blacknon'):
Email address:
Password:
Password (again):
Superuser created successfully.

 

静的ファイルの設定。

./manage.py collectstatic
blacknon@BS-PUB-UBUNTU-01:/opt/netbox/netbox$ sudo ./manage.py collectstatic

You have requested to collect static files at the destination
location as specified in your settings:

    /opt/netbox/netbox/static

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes
Copying '/opt/netbox/netbox/project-static/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.svg'
Copying '/opt/netbox/netbox/project-static/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.woff2'
Copying '/opt/netbox/netbox/project-static/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.ttf'
Copying '/opt/netbox/netbox/project-static/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.woff'
Copying '/opt/netbox/netbox/project-static/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.eot'
Copying '/opt/netbox/netbox/project-static/bootstrap-3.3.6-dist/js/bootstrap.min.js'
...

 

最後に、テストでサーバを動作させる。

./manage.py runserver 0.0.0.0:8000 --insecure
blacknon@BS-PUB-UBUNTU-01:/opt/netbox/netbox$ ./manage.py runserver 0.0.0.0:8000 --insecure
Performing system checks...

System check identified no issues (0 silenced).
September 16, 2016 - 15:56:23
Django version 1.10, using settings 'netbox.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

 

無事、以下のようにページが表示されれば動作は問題ないだろう。

20160917_102152000000

 

3.Webサーバのインストール・設定

最後に、ちゃんとWebブラウザから接続できるようにWebサーバのインストール・設定を行う。
今回はWebサーバとしてNginxを用いる。

sudo apt-get install -y gunicorn supervisor nginx

 

Nginxの設定ファイルを配置する。

sudo sh -c 'cat <<"EOF" > /etc/nginx/sites-available/netbox
server {
    listen 80;

    server_name サーバ名(ドメインやIPアドレスなど);

    access_log off;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        add_header P3P '\''CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'\'';
    }
}
EOF'

 

デフォルトの読み込みファイルを削除してシンボリックリンクを作成する。

cd /etc/nginx/sites-enabled/
sudo rm default
sudo ln -s /etc/nginx/sites-available/netbox

 

nginxの起動をする。

sudo service nginx restart

 

最後に、gunicornおよびsupervisordの設定ファイルを作成してサービスを起動させる。

sudo sh -c "cat <<EOF > /opt/netbox/gunicorn_config.py
command = '/usr/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = '127.0.0.1:8001'
workers = 3
user = 'www-data'
EOF"
sudo sh -c "cat <<EOF > /etc/supervisor/conf.d/netbox.conf
[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data
EOF"
sudo chown -R www-data:www-data /opt/netbox/
sudo service supervisor restart

 

あとは、対象のサーバにブラウザからアクセスするだけだ。

20160917_135603000000

 

無事、インストールが完了した。

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。