OpenIndiana Build 151a5とnginxでWebサーバを構築してみる

OpenIndiana Build 151a5がちょっと前にリリースされていたことだし、せっかくなのでnginxでテキトーにWebサーバを立ててみるなど。
なお、OSのインストールは去年あたりに書いた『OpenIndiana oi_151aのインストール→sshで接続→ちょっとだけRHELライクにするところまで』でサラッと触れてたりするので、そっちで代用…するほどのことは書いてないんですけどね。

 

ちなみにメインメモリが900MB以上使えると、64bitモードでインストールされるみたいです。
今回のテスト環境 (VMware ESXi 5.0.0 build 768111に作った仮想マシン)でチマチマと試してみた限りだと、VRAMが16MBで、916MBのメインメモリを割り当てると64bitモードになりました。
もちろんテスト時にはおとなしく1024MBを割り当ててますが。

 

とりあえず想定は前の通り、ご家庭にあるようなネットワークに固定IPアドレスでサーバを立てる感じ。
設定も前と一緒で “192.168.0.0/24” なネットワークで、デフォルトゲートウェイが “192.168.0.1”、Webサーバに “192.168.0.2” を割り当てます。

 

では、インストール完了後から

# cat /etc/release
             OpenIndiana Development oi_151.1.5 X86 (powered by illumos)
        Copyright 2011 Oracle and/or its affiliates. All rights reserved.
                        Use is subject to license terms.
                           Assembled 26 June 2012

# uname -a
SunOS www 5.11 oi_151a5 i86pc i386 i86pc Solaris

 
デフォルトのタイムアウトの時間を30秒から5秒ぐらいに設定

# vi /rpool/boot/grub/menu.lst
timeout 5

 
resolv.confの設定

# vi /etc/resolv.conf
nameserver 192.168.0.1

 
インタフェース名を確認

# dladm show-phys
LINK        MEDIA           STATE       SPEED   DUPLEX      DEVICE
e1000g0     Ehernet         unknown     0       half        e1000g0

 
physical:nwamを停止して、physical:defaultを有効にする

# svcadm disable svc:/network/physical:nwam
# svcadm enable svc:/network/physical:default

 
インタフェースの設定

# ipadm create-if e1000g0
# ipadm create-addr -T static -a 192.168.0.2/24 e1000g0/ipv4if

 
デフォルトゲートウェイを設定する

# route -p add default 192.168.0.1

 
接続性を確認する

# ping 192.168.0.1
192.168.0.1 is alive

# ping www.google.co.jp
www.google.co.jp is alive

 
この時点でsshで接続できるようになっているので、仮想マシンコンソールでやるのが面倒な場合はちゃっちゃとTera Termとかputtyからの操作に変えたほうがよいかと。
 
ネットワークインタフェースの確認

# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.0.2 netmask ffffff00 broadcast 192.168.0.255
        ether 0:c:29:xx:xx:xx
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
        inet6 ::1/128
e1000g0: flags=20002000840<RUNNING,MULTICAST,IPv6> mtu 1500 index 2
        inet6 ::/0
        ether 0:c:29:xx:xx:xx

 
NTPの設定

# vi /etc/inet/ntp.conf
driftfile /var/ntp/drift
statsdir /var/ntp/ntpstats/
restrict default kod nomodify notrap nopeer
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer
restrict ntp1.jst.mfeed.ad.jp nomodify notrap
restrict ntp2.jst.mfeed.ad.jp nomodify notrap
restrict ntp3.jst.mfeed.ad.jp nomodify notrap
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst

 
NTPサービスの起動

# svcadm enable svc:/network/ntp:default

 
同期状態を確認する

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ntp1.jst.mfeed. 210.173.160.56   2 u   22   64    3   13.679   27.985  17.821
*ntp2.jst.mfeed. 210.173.176.251  2 u   23   64    3   14.203   46.283   7.691
+ntp3.jst.mfeed. 210.173.160.56   2 u   23   64    3   13.681   47.729   8.862

 
パッケージの更新を確認し、リブートする。(現時点ではなかったです、はい)

# pkg refresh --full
# pkg install package/pkg
# pkg image-update
# reboot

 
VMware Toolsをインストールする

# cp -p /media/VMware\ Tools/vmware-solaris-tools.tar.gz ~/
# cd ~/
# umount /media/VMware\ Tools
# tar zxf vmware-solaris-tools.tar.gz
# cd vmware-tools-distrib
# ./vmware-install.pl

 
VMware Toolsのインストールは途中でコケます^^;

~~一部抜粋~~
svcprop: Couldn't find property group `options' for service `svc:/application/x11/x11-server'.


Detected XFree86 version 3.0.

Unable to copy the source file
/usr/lib/vmware-tools/configurator/XFree86-3/XF86_VMware to the destination
file /usr/X11/bin/XF86_VMware.

Execution aborted.

 
一応次のような操作をすればインストールは続行できるようになります。良いか悪いかは別ですが。

# touch /usr/lib/vmware-tools/configurator/XFree86-3/XF86_VMware
または
# cp -p /root/vmware-tools-distrib/lib/configurator/XFree86-3/XF86Config /usr/lib/vmware-tools/configurator/XFree86-3/XF86_VMware

次にGCCをインストール

# pkg install gcc-3
# pkg install header-math
# pkg install gcc-dev

 
とまぁ、ここまででOS側の設定はひとまず完了ということにしておいてください。はい。
 
 
 
 
ここからWebサーバ構築作業。
まず、ソースを保存・展開するためのディレクトリを切る。

# mkdir -p /usr/local/src

 
nginxのソースを拾ってくる(この時点でのstableは1.2.3)

# cd /usr/local/src
# wget http://nginx.org/download/nginx-1.2.3.tar.gz
# tar zxf nginx-1.2.3.tar.gz

 
ディレクトリを移動して、configure → make → make install
ちなみに今回は特に用途は限定せず、とりあえず動けばよいかなってことでテキトーにてんこ盛り仕様にしてます。

# cd nginx-1.2.3
# ./configure --prefix=/opt/nginx --sbin-path=/opt/nginx/sbin/nginx --conf-path=/opt/nginx/conf/nginx.conf --error-log-path=/opt/nginx/logs/error.log --http-log-path=/opt/nginx/logs/access.log --pid-path=/opt/nginx/logs/nginx.pid --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-pcre --with-cc-opt="-I/usr/include/pcre"
# make
# make install

 
nginx.confの設定(今回はとりあえず動きゃいいので、かなりテキトーです)

#user  nobody;
user  nginx;
#worker_processes  1;
worker_processes  2;

#error_log  logs/error.log;
error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;
pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            root   /export/home/htdocs;
            index  index.html index.htm;
        }

        error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

 

nginx用のユーザを適当に作成する
面倒なので、Scientific Linux 6.3にyumでnginxを入れたときと同じuidとgidに設定しています。

# groupadd -g 497 nginx
# useradd -u 497 -g 497 -d /opt/nginx -s /bin/false nginx

 
Webサーバのルートディレクトリを切る

# mkdir -p /export/home/htdocs/css

 
HTMLファイルを作る
 
コンフィグテスト

# /opt/nginx/sbin/nginx -t
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful

 
nginxの起動

# /opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf

 
Webブラウザでページを確認
nginx_view

ついでにnginxの停止

# /opt/nginx/sbin/nginx -s quit

 
とまぁ、ここまでかなりテキトーに書いてみましたっと。
自動起動とかはここでは放置で^^;

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中