XLDを使ってCentOS7.xでUbuntu14.04を使う 1)

CentOSのアップデート

$ sudo yum update
$ sudo yum install epel-release
$ sudo yum update

snapdをインストール
snapdとはディストリビューションに依存せずにパッケージ管理を行うためのツールだそうです

最初にCopr(Cool Other Package Repo)をインストールする
$ sudo yum install yum-plugin-copr
正規のディストリビューションには含まれてませんので自己責任で!とか言われます。

Coprにあるsnapdをインストールする
$ sudo yum copr enable ngompa/snapcore-el7
$ sudo systemctl enable --now snapd.socket
Created symlink from /etc/systemd/system/sockets.target.wants/snapd.socket to /usr/lib/systemd/system/snapd.socket.

snapを使ってLXDのインストール

$ sudo snap search lxd
Name Version Publisher Notes Summary
lxd 5.10-b392610 canonical** - LXD - container and VM manager
lxd-bgp 0+git.a30c4fe stgraber - BGP server that exposes LXD routes
lxd-demo-server 0+git.6d54658 stgraber - Online software demo sessions using LXD
lxdmosaic 0+git.c6f53f3f turtle0x1 - A web interface to manage multiple instances of LXD
lxd-gitlab-runner 0.1 alexclewontin - GitLab CI/CD runner with built in LXD executor
microcloud 0+git.d78a41a canonical** - Automated small-scale cloud deployment
fabrica 1.1.0 ogra - Build snaps by simply pointing a web form to a git tree
nova ocata james-page - OpenStack Compute Service (nova)
nova-hypervisor ocata james-page - OpenStack Compute Service - KVM Hypervisor (nova)
distrobuilder 2.1 stgraber classic Image builder for LXC and LXD
satellite 0.1.2 alanzanattadev - Advanced scalable Open source intelligence platform

$ snap install lxd
2023-01-29T06:18:58+09:00 INFO Waiting for automatic snapd restart...
lxd 5.10-b392610 from Canonical** installed

インストールの確認をします

$ sudo ln -s /var/lib/snapd/snap /snap
$ snap list
Name Version Rev Tracking Publisher Notes
core20 20221212 1778 latest/stable canonical** base
lxd 5.10-b392610 24323 latest/stable canonical** -
snapd 2.58 17950 latest/stable canonical** snapd

$ snap services
Service Startup Current Notes
lxd.activate enabled inactive -
lxd.daemon enabled inactive socket-activated
lxd.user-daemon enabled inactive socket-activated

最初、lxdコマンドを入力しても command not found となっていましたが、ログインし直すと反応してくれるようになりました。CentOSでsnapを使う時のご作法のようでした。

$ lxd --version
5.10

きょうはここまで。。。

アクセスログを記録して解析する-1

シェルスクリプトとcronでアクセス毎の時間、url、ホスト名を日ごとに別ファイルに記録する

1)サイト内の各ページ(phpファイル)にアクセス毎にログファイル(log.dat)に記入していくよう記述する

$year = date('Y');
$month = date('m');
$day = date('d');
$hour = date('H');
$hostip = getenv("REMOTE_ADDR");
$hostname = gethostbyaddr($hostip);
$platform = get_browser(null, true);
$browser = $platform["parent"];
/*** アクセス情報を一件のレコードとする ***/
$log = $hour . "," . $item_id . "," . $hostip . "," . $hostname . "," . $browser . "\r\n";
/*** 記録するファイル名 ***/
$countfile = "log.dat";
/*** レコードを末尾へ記入 ***/
$fp = @fopen($countfile,"a");
fputs($fp, $log);
fclose($fp);
使った関数
getenv(“REMOTE_ADDR”) アクセス元のIPアドレスを取得する
gethostbyaddr IPアドレスからホスト名を取得する
get_browser(null, true) ブラウザ情報を取得する

2)毎日夜中にlog.datを[日付].datへコピーして消去する

log.datを[日付].datへコピーして内容を消去するのshellスクリプトlog_bk.shを作成します。

#!/bin/sh
fecha=`date '+%Y%m%d'`            ←日付(fecha)を取得
cp -p log.dat ${fecha}.dat    ←log.datを日付.datへコピー
cat /dev/null >log.dat      ←log.datへnullを書き込み消去

上記のスクリプトを毎日23時59分に実行するようcronを設定します。

#crontab -e

でツールを起動して/etc/crontabを編集します。
viと同じ感じで操作します。

59 23 * * * /[ディレクトリ]/log_bk.sh

と記入。
数字は左から、分、時間、日、月、週 を指定し、実行するファイル名を記入して保存。

#crontab -l

で記入した内容が表示されればOKです。

phpとcronで日毎のlog.datをデータベースへ格納する

1)log.datの中身をDBへ格納するphpファイルlog.phpを作成する

$file_name = "/hoge/log.dat";
$text = fopen($file_name,'r');
while(!(feof($text))){
$lines = fgets($text);
$_line = explode(",", $lines);
$sql = "insert into tbl_log (itm_id, log_ip, log_month, log_day, log_hour, log_year) values ('" . $_line["1"] . "', '" . $_line["2"] . "', '" . $month . "', '" . $day . "', '" . $_line["0"] . "', '" . $year . "')";
$rst = mysql_query($sql,$con)or die("no");
}
fclose($text);

使った関数
fopen ファイルを開く。’r’は読み込み専用
feof ファイルの最後かどうかをチェックする
explode(“[区切り記号]”, “[文字列]”) 文字列を区切り記号で区切って配列に格納する

2)log.phpを毎日実行させる

crontabへ記述します。

58 23 * * * /usr/bin/php /hoge/logtodb.php

phpをcronで実行させるにはcrontabへphpへのパスを指定する必要があります。
user/bin/php

which php

で調べます。

エクアドル、サリーナスのカジキマグロ

にほんブログ村 IT技術ブログ MySQLへ