Прикручиваем AWStats к nginx в Arch Linux

Возникла необходимость собирать статистику посещений одного из django-проектиков. Так как когда-то, давным-давно, имел кое-какой опыт работы с awstats, его же и решил прикрутить. Ранее, правда, работал с apache2, а тут nginx. Можно, конечно, поставить apache2, чтоб слушал какой-нибудь 8080-порт, или типа того. Но зачем?

Порывшись в интернетах нашел несколько гайдов по прикручиванию, но ни один не подошел/не заработал в силу разных причин. Потому приведу здесь компиляцию всего найденого.

Подразумевая что nginx уже поставлен и настроен, доставляем недостающие для решения задачи пакеты:

1
sudo pacman -S awstats fcgiwrap spawn-cgi

awstats положит все ему необходимое в /usr/share/webapps/awstats (за другие дистрибутивы не ручаюсь). Копию всего этого добра, с которой будем работать, ложим в /srv/http/awstats, чтобы получилась такая структура:

1
tree -d /srv/http/awstats
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/srv/http/awstats/
├── cgi-bin
│   ├── lang
│   │   ├── tooltips_f
│   │   ├── tooltips_m
│   │   └── tooltips_w
│   ├── lib
│   └── plugins
│       └── example
├── classes
│   └── src
├── css
├── icon
│   ├── browser
│   ├── clock
│   ├── cpu
│   ├── flags
│   ├── mime
│   ├── os
│   └── other
└── js

Ставим права:

1
chown -R http:http /srv/http/awstats

Далее правим конфиг vhost’а, для которого прикручиваем awstats (конечно, можно и в отдельный vhost вынести, но я не стал):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
server {
    ...
    # тут основная часть конфига vhost'а
    ...  
    location /awstats {
        auth_basic      "Restricted";
        auth_basic_user_file    /etc/nginx/auth/htpasswd;
        root /srv/http/awstats/cgi-bin;
        fastcgi_pass    unix:/var/run/fcgiwrap.sock;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_NAME     /awstats.pl;
        fastcgi_param   QUERY_STRING    $query_string;
        fastcgi_param   REQUEST_METHOD  $request_method;
        fastcgi_param   CONTENT_TYPE    $content_type;
        fastcgi_param   CONTENT_LENGTH  $content_length;
        include         fastcgi_params;
    }
    location /awstatsclasses/ {
        alias /srv/http/awstats/classes/;
    }
    location /awstatscss/ {
        alias /srv/http/awstats/css/;
    }
    location /icon/ {
        alias /srv/http/awstats/icon/;
    }
}

Создаем пользователя, которому разрешено смотреть статистику (ограничивать по IP неохота, т. к. с разных мест нужно будет смотреть):

1
htpasswd -cmb /etc/nginx/auth/htpasswd имя_пользователя пароль

Клепаем конфиг awstats (/etc/awstats/awstats.доменное_имя_сайта.conf):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
LogFile="/var/log/nginx/access.log"
LogType=W
LogFormat=1
LogSeparator=" "
SiteDomain="доменное_имя_сайта"
HostAliases="localhost 127.0.0.1"
DNSLookup=1
DirData="/srv/http/awstats"
DirCgi="/cgi-bin"
DirIcons="/icon"
AllowToUpdateStatsFromBrowser=1
AllowFullYearView=2
EnableLockForUpdate=1
DNSStaticCacheFile="dnscache.txt"
DNSLastUpdateCacheFile="dnscachelastupdate.txt"
SkipDNSLookupFor=""
AllowAccessFromWebToAuthenticatedUsersOnly=0
AllowAccessFromWebToFollowingAuthenticatedUsers=""
AllowAccessFromWebToFollowingIPAddresses=""
CreateDirDataIfNotExists=1
BuildHistoryFormat=text
BuildReportFormat=html
SaveDatabaseFilesWithPermissionsForEveryone=0
PurgeLogFile=0
ArchiveLogRecords=0
KeepBackupOfHistoricFiles=0
DefaultFile="index.php index.html"
SkipHosts=""
SkipUserAgents=""
SkipFiles=""
SkipReferrersBlackList=""
OnlyHosts=""
OnlyUserAgents=""
OnlyUsers=""
OnlyFiles=""
NotPageList="css js class gif jpg jpeg png bmp ico rss xml swf"
ValidHTTPCodes="200 304"
ValidSMTPCodes="1 250"
AuthenticatedUsersNotCaseSensitive=0
URLNotCaseSensitive=0
URLWithAnchor=0
URLQuerySeparators="?;"
URLWithQuery=0
URLWithQueryWithOnlyFollowingParameters=""
URLWithQueryWithoutFollowingParameters=""
URLReferrerWithQuery=0
WarningMessages=1
ErrorMessages=""
DebugMessages=0
NbOfLinesForCorruptedLog=50
WrapperScript=""
DecodeUA=0
MiscTrackerUrl="/js/awstats_misc_tracker.js"
LevelForBrowsersDetection=2
LevelForOSDetection=2
LevelForRefererAnalyze=2
LevelForRobotsDetection=2
LevelForSearchEnginesDetection=2
LevelForKeywordsDetection=2
LevelForFileTypesDetection=2
LevelForWormsDetection=0
UseFramesWhenCGI=1
DetailedReportsOnNewWindows=1
Expires=0
MaxRowsInHTMLOutput=1000
Lang="auto"
DirLang="/srv/http/awstats/lang"
ShowMenu=1
ShowSummary=UVPHB
ShowMonthStats=UVPHB
ShowDaysOfMonthStats=VPHB
ShowDaysOfWeekStats=PHB
ShowHoursStats=PHB
ShowDomainsStats=PHB
ShowHostsStats=PHBL
ShowAuthenticatedUsers=0
ShowRobotsStats=HBL
ShowWormsStats=0
ShowEMailSenders=0
ShowEMailReceivers=0
ShowSessionsStats=1
ShowPagesStats=PBEX
ShowFileTypesStats=HB
ShowFileSizesStats=0
ShowDownloadsStats=HB
ShowOSStats=1
ShowBrowsersStats=1
ShowScreenSizeStats=0
ShowOriginStats=PH
ShowKeyphrasesStats=1
ShowKeywordsStats=1
ShowMiscStats=a
ShowHTTPErrorsStats=1
ShowSMTPErrorsStats=0
ShowClusterStats=0
AddDataArrayMonthStats=1
AddDataArrayShowDaysOfMonthStats=1
AddDataArrayShowDaysOfWeekStats=1
AddDataArrayShowHoursStats=1
IncludeInternalLinksInOriginSection=0
MaxNbOfDomain = 10
MinHitDomain  = 1
MaxNbOfHostsShown = 10
MinHitHost    = 1
MaxNbOfLoginShown = 10
MinHitLogin   = 1
MaxNbOfRobotShown = 10
MinHitRobot   = 1
MaxNbOfDownloadsShown = 10
MinHitDownloads = 1
MaxNbOfPageShown = 10
MinHitFile    = 1
MaxNbOfOsShown = 10
MinHitOs      = 1
MaxNbOfBrowsersShown = 10
MinHitBrowser = 1
MaxNbOfScreenSizesShown = 5
MinHitScreenSize = 1
MaxNbOfWindowSizesShown = 5
MinHitWindowSize = 1
MaxNbOfRefererShown = 10
MinHitRefer   = 1
MaxNbOfKeyphrasesShown = 10
MinHitKeyphrase = 1
MaxNbOfKeywordsShown = 10
MinHitKeyword = 1
MaxNbOfEMailsShown = 20
MinHitEMail   = 1
FirstDayOfWeek=1
ShowFlagLinks=""
ShowLinksOnUrl=1
UseHTTPSLinkForUrl=""
MaxLengthOfShownURL=64
HTMLHeadSection=""
HTMLEndSection=""
MetaRobot=0
Logo="awstats_logo6.png"
BarWidth   = 260
BarHeight  = 90
StyleSheet=""
color_Background="FFFFFF"
color_TableBGTitle="CCCCDD"
color_TableTitle="000000"
color_TableBG="CCCCDD"
color_TableRowTitle="FFFFFF"
color_TableBGRowTitle="ECECEC"
color_TableBorder="ECECEC"
color_text="000000"
color_textpercent="606060"
color_titletext="000000"
color_weekend="EAEAEA"
color_link="0011BB"
color_hover="605040"
color_u="FFAA66"
color_v="F4F090"
color_p="4477DD"
color_h="66DDEE"
color_k="2EA495"
color_s="8888DD"
color_e="CEC2E8"
color_x="C1B2E2"
LoadPlugin="hashfiles"
ExtraTrackedRowsLimit=500

Далее запускаем первоначальное накопление капитала данных для статистики:

1
/usr/share/webapps/awstats/cgi-bin/awstats.pl -config=доменное_имя_сайта -update

Создаем systemd-таймер, чтоб раз в n-минут (у меня 10) awstats обновлял данные:

1
sudo nano /etc/systemd/system/awstats-доменное_имя_сайта.service
1
2
3
4
5
6
7
8
[Unit]
Description=awstats for доменное_имя_сайта
[Service]
Type=simple
ExecStart=/usr/share/webapps/awstats/cgi-bin/awstats.pl -config=доменное_имя_сайта -update > /dev/null
User=root
Group=users
1
sudo nano /etc/systemd/system/awstats-доменное_имя_сайта.timer
1
2
3
4
5
6
7
8
9
[Unit]
Description=awstats for доменное_имя_сайта
[Timer]
OnBootSec=10min
OnUnitActiveSec=10min
[Install]
WantedBy=timers.target

Врубаем таймер:

1
2
sudo systemctl enable awstats-доменное_имя_сайта.timer
sudo systemctl start awstats-доменное_имя_сайта.timer

Врубаем fcgiwrap:

1
2
sudo systemctl enable fcgiwrap.socket
sudo systemctl start fcgiwrap.socket

Перезапускаем nginx:

1
sudo systemctl restart nginx

Ну а далее переходим на http(s)://доменное_имя_сайта/awstats?config=доменное_имя_сайта

 

Запись опубликована в рубрике it с метками , , , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *