2018年12月30日日曜日

An Installation of lighttpd(1.4.52) on Raspberry Pi

Raspberry Piをコントローラに使っている自律走行系などのロボットのhttp通信は、lighttpdを使っているわけで

1.4.52をインストール

いろいろ試行錯誤してきたけど

aptでインストールできるバーションが、1.4.45になっているので素直に居れてバーションアップする方法が一番良いという事になってきた。

以前は、数年もメンテされていなかったlighttpdだけど最近はメンテが計画的に行われているようで安心して使える。

特に、Apatchに比べて早いし、柔軟性もあるので僕はlighttpdをロボット用では使う予定。


インストールの大まかな手順

・標準インストール ( sudo apt install lighttpd )
・lighttpd のページから最新版をdownloadしてmakeする
・環境設定

・エラーが起こった

追加:
違うRaspberry Piに、この手順でインストールしたら標準インストール、バージョンアップもエラー無しにできました。
最初のマシンの固有の問題かしら、、、

(1) 標準インストール

$ sudo apt install lighttpd

で、、、思いもよらないエラー


● lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Sun 2018-12-30 09:55:42 JST; 28ms ago
  Process: 684 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=255)

$ ls -la /etc/lighttpd

drwxr-xr-x   2 root root  4096 Dec 30 09:55 conf-available
drwxr-xr-x   2 root root  4096 Jan 15  2017 conf-enabled

アレ? lighttpd.conf が無い

???  以前、lighttpd インストールしてremove したから、、、

sudo apt-get purge lighttpd
sudo apt-get autoremove lighttpd


それから、

sudo apt install lighttpd

ls /etc/lighttpd
ls /etc/lighttpd/conf*

systemctl status lighttpd 

● lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset:
   Active: active (running) since Sun 2018-12-30 10:10:00 JST; 8min ago
 Main PID: 2250 (lighttpd)
   CGroup: /system.slice/lighttpd.service
           mq2250 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

Dec 30 10:10:00 rcpm-r51 systemd[1]: Starting Lighttpd Daemon...
Dec 30 10:10:00 rcpm-r51 systemd[1]: Started Lighttpd Daemon.

ls -al /var/www
drwxr-xr-x  2 root root 4096 Jan 15  2017 cgi-bin
drwxr-xr-x  2 root root 4096 Dec 30 10:09 html

ブラウザーにアクセスしても、、、


という事で、標準インストールは、OK

(2) 最新版のビルド

最初にbuildに必要なモジュールのインストール

sudo apt-get install libpcre3-dev bzip2 libbz2-dev

https://www.lighttpd.net/    からダウンロード。因みに1.4.52でした。

展開し、ディレクトリーに入って

./configure
make
sudo make install

sudo systemctl restart lighttpd

念の為に、、、、え???

$ lighttpd -v
lighttpd/1.4.45 (ssl) - a light and fast webserver
Build-Date: Jan 14 2017 21:07:19

$ cat /lib/systemd/system/lighttpd.service
[Unit]
Description=Lighttpd Daemon
After=network.target

[Service]
Type=simple
ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf
ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target

make install でインストールされる場所は、
/usr/local/sbin

buildした定義は

[Unit]
Description=Lighttpd Daemon
After=network-online.target

[Service]
Type=simple
PIDFile=/var/run/lighttpd.pid
ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf
ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
ExecReload=/bin/kill -USR1 $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

という事で、最初のlighttpd.serviceを使うとして
/usr/sbinを/usr/local/sbinに変更

$ sudo systemctl daemon-reload
$ sudo systemctl restart lighttpd

$ lighttpd -v
lighttpd/1.4.45 (ssl) - a light and fast webserver
Build-Date: Jan 14 2017 21:07:19

???

$ /usr/local/sbin/lighttpd -v
lighttpd/1.4.52 - a light and fast webserver

意味不明なので、、、

残骸を消して
$ sudo rm r- /usr/lib/lighttpd

$ sudo reboot

$ lighttpd -v
lighttpd/1.4.52 - a light and fast webserver

本当に意味不明、、、、、でも時間が無いのでよし!

(3) 環境設定

/etc/lighttpd/lighttpd.conf

これはそのまま、、、

$ cd /etc/lighttpd/conf-available

$ vi 10-cgi.conf
$ cat 10-cgi.conf
# /usr/share/doc/lighttpd/cgi.txt

server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( "" => "" )
}
$HTTP["url"] =~ "^/api/" {
        cgi.assign = ( "" => "" )
}

## Warning this represents a security risk, as it allow to execute any file
## with a .pl/.py even outside of /usr/lib/cgi-bin.
#
#cgi.assign      = (
#       ".pl"  => "/usr/bin/perl",
#       ".py"  => "/usr/bin/python",
#)

$ cd ../conf-enabled
$ sudo ln -s ../conf-available/10-cgi.conf
$ ls -al
10-cgi.conf -> ../conf-available/10-cgi.conf

$ sudo mkdir /var/www/api

・エラーが起こった

さぁこれで!  アドレスにアクセスするとエラー
動いていない

$ systemctl status lighttpd

Dec 30 13:57:21 rcpm-r51 systemd[1]: Starting Lighttpd Daemon...
Dec 30 13:57:21 rcpm-r51 systemd[1]: Started Lighttpd Daemon.
Dec 30 13:57:21 rcpm-r51 lighttpd[863]: 2018-12-30 13:57:21: (server.c.748) opening errorlog '/var/log/lighttpd/error.log' failed: No such file or directory
Dec 30 13:57:21 rcpm-r51 lighttpd[863]: 2018-12-30 13:57:21: (server.c.1454) Opening errorlog failed. Going down.
Dec 30 13:57:21 rcpm-r51 systemd[1]: lighttpd.service: Main process exited, code=exited, status=255/n/a
Dec 30 13:57:21 rcpm-r51 systemd[1]: lighttpd.service: Unit entered failed state.
Dec 30 13:57:21 rcpm-r51 systemd[1]: lighttpd.service: Failed with result 'exit-code'.
Dec 30 13:57:21 rcpm-r51 systemd[1]: lighttpd.service: Service hold-off time over, scheduling restart.
Dec 30 13:57:21 rcpm-r51 systemd[1]: Stopped Lighttpd Daemon.

つまり、/var/log/lighttpd/error.log が無い

$ sudo mkdir /var/log/lighttpd
$ sudo chown www-data:www-data /var/log/lighttpd
$ sudo chmod 750  /var/log/lighttpd

でも、なんでかなぁ、、、

$ sudo systemctl restart lighttpd
$ sudo systemctl status lighttpd
$ systemctl status lighttpd

● lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset:
   Active: active (running) since Sun 2018-12-30 14:15:08 JST; 9min ago
  Process: 1343 ExecStartPre=/usr/local/sbin/lighttpd -tt -f /etc/lighttpd/light
 Main PID: 1351 (lighttpd)
   CGroup: /system.slice/lighttpd.service
           mq1351 /usr/local/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

Dec 30 14:15:08 rcpm-r51 systemd[1]: Starting Lighttpd Daemon...
Dec 30 14:15:08 rcpm-r51 systemd[1]: Started Lighttpd Daemon.

Peace!!













0 件のコメント:

コメントを投稿