Коллеги, приветствую!
Как обещал, пишу краткий отчет по запуску wview.
1) Ставим wview и необходимые зависимости. На память не помню, но все что нужно, присуствует в репозитории. Ставим sqlite3.
2) Далее создаем базу /opt/etc/wview/wview-conf.sdb используя скрипт wview-conf.sql из той же директории
3) Создаем базу /tmp/opt/var/wview/archive/wview-archive.sdb используя скрипт /opt/etc/wview/wview-archive.sql
3) Запускаем wviewconfig и долго и муторно отвечаем на вопросы в интерактивном режиме. На что обратить внимание:
- рекомендую заранее узнать широту и долготу расположения вашей метеостанции (все цифры после запятой) и высоту над уровнем моря в футах
- переменная Where to store generated html and graphics files: PARAMETER: HTMLGEN_IMAGE_PATH - это директория, куда будет генерироваться сайт с погодными данными, не перепутайте ее с нижеследующей переменной (они так же не должны совпадать) - линк на нее нужно будет потом разместить где-то в doc root вашего веб сервера
- переменная Where to find HTML template files: PARAMETER: HTMLGEN_HTML_PATH - это директория, куда утилита wviewhtmlconfig положит выбранный вами шаблон сайта (см. ниже)
- НЕ НУЖНО МЕНЯТЬ ДЕФОЛТОВЫЙ ПАРОЛЬ. Вы его всегда сможете поменять после через веб-интерфейс
4) Запускаем wviewhtmlconfig, генерим нужный шаблон.
5) Стартовый скрипт в дистрибутиве не идет, я сделал свой из имеющихся в дистрибутиве примеров. Вот он. Правьте пути, если нужно в начале. Так же в стартовой части я закомментировал запуск демонов, которые я не использую:
Code:
#!/bin/sh
CONF_DIRECTORY=/opt/etc/wview
WVIEW_DATA_DIR=/opt/var/wview
WVIEW_INSTALL_DIR=/opt/bin
RUN_DIRECTORY=/tmp/opt/var/wview
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
#
# Name: wview - init.d script for busybox wview
# Process Names: radmrouted wviewd htmlgend wviewftpd wvalarmd
# wvcwopd wviewsshd wvhttpd
# Config: /etc/wview/*.conf
# Pidfiles: /var/wview/*.pid
#
RADROUTER_BIN=$WVIEW_INSTALL_DIR/radmrouted
test -x $RADROUTER_BIN || exit 1
WVIEWD_FILE=`cat $CONF_DIRECTORY/wview-binary`
WVIEWD_BIN=$WVIEW_INSTALL_DIR/$WVIEWD_FILE
test -x $WVIEWD_BIN || exit 2
HTMLD_BIN=$WVIEW_INSTALL_DIR/htmlgend
test -x $HTMLD_BIN || exit 3
FTPD_BIN=$WVIEW_INSTALL_DIR/wviewftpd
test -x $FTPD_BIN || exit 4
SSHD_BIN=$WVIEW_INSTALL_DIR/wviewsshd
test -x $SSHD_BIN || exit 5
ALARMD_BIN=$WVIEW_INSTALL_DIR/wvalarmd
test -x $ALARMD_BIN || exit 6
CWOPD_BIN=$WVIEW_INSTALL_DIR/wvcwopd
test -x $CWOPD_BIN || exit 7
HTTP_BIN=$WVIEW_INSTALL_DIR/wvhttpd
SQLD_BIN=$WVIEW_INSTALL_DIR/wviewsqld
PMOND_BIN=$WVIEW_INSTALL_DIR/wvpmond
test -x $PMOND_BIN || exit 10
WVIEWD_PID=$RUN_DIRECTORY/wviewd.pid
HTMLD_PID=$RUN_DIRECTORY/htmlgend.pid
FTPD_PID=$RUN_DIRECTORY/wviewftpd.pid
SSHD_PID=$RUN_DIRECTORY/wviewsshd.pid
ALARMD_PID=$RUN_DIRECTORY/wvalarmd.pid
CWOPD_PID=$RUN_DIRECTORY/wvcwopd.pid
HTTP_PID=$RUN_DIRECTORY/wvhttpd.pid
SQLD_PID=$RUN_DIRECTORY/wviewsqld.pid
RADROUTER_PID=$RUN_DIRECTORY/radmrouted.pid
PMOND_PID=$RUN_DIRECTORY/wvpmond.pid
wait_for_time_set() {
THOUSAND=1000
CURRVAL=`date +%s`
while [ "$CURRVAL" -lt "$THOUSAND" ]; do
sleep 1
CURRVAL=`date +%s`
done
}
kill_running_processes() {
if [ -f $RADROUTER_PID ]; then
echo "radlib router pid file $RADROUTER_PID exists - killing existing process"
kill -15 `cat $RADROUTER_PID`
rm -f $RADROUTER_PID
fi
if [ -f $WVIEWD_PID ]; then
echo "wviewd pid file $WVIEWD_PID exists - killing existing process"
kill -15 `cat $WVIEWD_PID`
rm -f $WVIEWD_PID
fi
if [ -f $HTMLD_PID ]; then
echo "htmlgend pid file $HTMLD_PID exists - killing existing process"
kill -15 `cat $HTMLD_PID`
rm -f $HTMLD_PID
fi
if [ -f $FTPD_PID ]; then
echo "wviewftpd pid file $FTPD_PID exists - killing existing process"
kill -15 `cat $FTPD_PID`
rm -f $FTPD_PID
fi
if [ -f $SSHD_PID ]; then
echo "wviewsshd pid file $SSHD_PID exists - killing existing process"
kill -15 `cat $SSHD_PID`
rm -f $SSHD_PID
fi
if [ -f $ALARMD_PID ]; then
echo "wvalarmd pid file $ALARMD_PID exists - killing existing process"
kill -15 `cat $ALARMD_PID`
rm -f $ALARMD_PID
fi
if [ -f $CWOPD_PID ]; then
echo "wvcwopd pid file $CWOPD_PID exists - killing existing process"
kill -15 `cat $CWOPD_PID`
rm -f $CWOPD_PID
fi
if [ -f $HTTP_PID ]; then
echo "wvhttpd pid file $HTTP_PID exists - killing existing process"
kill -15 `cat $HTTP_PID`
rm -f $HTTP_PID
fi
if [ -f $PMOND_PID ]; then
echo "wvpmond pid file $PMOND_PID exists - killing existing process"
kill -15 `cat $PMOND_PID`
rm -f $PMOND_PID
fi
}
case "$1" in
start)
kill_running_processes
wait_for_time_set
echo "Starting wview daemons:"
if [ -x $RADROUTER_BIN ]; then
$RADROUTER_BIN 1 $RUN_DIRECTORY
else
echo "Cannot find $RADROUTER_BIN - exiting!"
exit 10
fi
sleep 1
$WVIEWD_BIN
sleep 1
$HTMLD_BIN
# $ALARMD_BIN
# $CWOPD_BIN
# $HTTP_BIN
# $FTPD_BIN
# $SSHD_BIN
$PMOND_BIN
;;
start-trace)
kill_running_processes
echo "Starting wview daemons (tracing to $RUN_DIRECTORY):"
echo "Warning: traced processes run very slowly and may effect performance."
if [ -x $RADROUTER_BIN ]; then
$RADROUTER_BIN 1 $RUN_DIRECTORY
else
echo "Cannot find $RADROUTER_BIN - exiting!"
exit 10
fi
sleep 1
strace -o $RUN_DIRECTORY/$WVIEWD_FILE.trace $WVIEWD_BIN -f &> /dev/null &
sleep 1
strace -o $RUN_DIRECTORY/htmlgend.trace $HTMLD_BIN -f &> /dev/null &
strace -o $RUN_DIRECTORY/wvalarmd.trace $ALARMD_BIN -f &> /dev/null &
strace -o $RUN_DIRECTORY/wvcwopd.trace $CWOPD_BIN -f &> /dev/null &
strace -o $RUN_DIRECTORY/wvhttpd.trace $HTTP_BIN -f &> /dev/null &
strace -o $RUN_DIRECTORY/wviewftpd.trace $FTPD_BIN -f &> /dev/null &
strace -o $RUN_DIRECTORY/wviewsshd.trace $SSHD_BIN -f &> /dev/null &
strace -o $RUN_DIRECTORY/wvpmond.trace $PMOND_BIN -f &> /dev/null &
;;
stop)
echo "Shutting down wview daemons..."
if [ -f $PMOND_PID ]; then
kill -15 `cat $PMOND_PID`
fi
if [ -f $HTTP_PID ]; then
kill -15 `cat $HTTP_PID`
fi
if [ -f $CWOPD_PID ]; then
kill -15 `cat $CWOPD_PID`
fi
if [ -f $ALARMD_PID ]; then
kill -15 `cat $ALARMD_PID`
fi
if [ -f $SSHD_PID ]; then
kill -15 `cat $SSHD_PID`
fi
if [ -f $FTPD_PID ]; then
kill -15 `cat $FTPD_PID`
fi
if [ -f $HTMLD_PID ]; then
kill -15 `cat $HTMLD_PID`
fi
if [ -f $WVIEWD_PID ]; then
kill -15 `cat $WVIEWD_PID`
fi
sleep 1
if [ -f $RADROUTER_PID ]; then
kill -15 `cat $RADROUTER_PID`
fi
;;
restart)
$0 stop && sleep 2
$0 start
;;
*)
echo "Usage: $0 {start|start-trace|stop|restart}"
exit 1
esac
exit 0
Теперь можно стартовать wview!
Статусные сообщения и сообщения об ошибках можно увидет в syslog.
Сайт сгенерирован в директорию, задаваемую параметром HTMLGEN_IMAGE_PATH. Сделав линк на нее из doc root вашего вебсервера можно смотреть страничку с погодой через браузер.
6) ХОЗЯЙКЕ НА ЗАМЕТКУ.
Чтобы показания станции корректно считывались, нужно использовать локаль en_US.UTF-8. В случае использования русской локали wview путает десятичные запятые и запятые, которые используются как разделители.
7) Чтобы использовать веб-интерфейс для конфигурирования vwiew, необходимо разархивировать исходники и скопировать директорию wviewmgmt в doc root вашего вебсервера. Веб интерфейс запускается по ссылке http://[адрес вашего вебсервера]/wviewmgmt/login.php.
Для корректной работы wviewmgmt требуется файл functions.php, которого в исходниках нет, зато есть functions.php.sh, который легким движением руки превратится в нужный нам functions.php, если в его начало добавить следующие строки:
Code:
<?php
function GetBinaryPrefix()
{
$WVIEW_BINARY_PREFIX = "/opt";
return $WVIEW_BINARY_PREFIX;
}
function GetConfigPrefix()
{
$WVIEW_CONFIG_PREFIX = "/opt/etc";
return $WVIEW_CONFIG_PREFIX;
}
function GetDataPrefix()
{
$WVIEW_DATA_PREFIX = "/opt/var";
return $WVIEW_DATA_PREFIX;
}
ЗАМЕТКИ НА ПОЛЯХ
Я не очень поял как использовать встренный вебсервер для отображения погоды, поэтому водрузил апач. Чтобы апач заработал с php, я, в конец httpd.conf вставил следующие строки:
Code:
# CUSTOM: Add PHP 5 parsing (via CGI) handler and action
ScriptAlias /local-bin /opt/bin
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php5 /local-bin/php-cgi
<Directory "/opt/bin">
Order allow,deny
Allow from all
</Directory>
php5 должен поддерживать PDO, поэтому необходимо установить соотвествующие пакеты и расскоментировать соотв. строку в php.ini
Вроде все.
Задавайте вопросы.