Archive for the ‘Apache’ Category

1. FastCGI, PHP-FPM là gì?

PHP Handler là module của web server, dùng để dịch và chạy website PHP. Có nhiều handler cho PHP hiện nay như: DSO, CGI, SuPHP, FastCGI.
FastCGI là phiên bản kế tiếp của CGI, ít tốn tài nguyên CPU và cho tốc độ tải trang php cao, với điều kiện cần một lượng RAM đủ lớn. FastCGI cho phép máy chủ xử lý được nhiều web page hơn tại cùng một thời điểm.
PHP-FPM giúp quản lý tiến trình PHP FastCGI. PHP-FPM là daemon do đó chúng ta có thể cài nó độc lập trên một server, default port là 9000.

2. Cài đặt và cấu hình Apache với PHP-FPM cho PHP 7

Để Apache web server phục vụ PHP với FastCGI và PHP-FPM cho hiệu suất cao nhất cần kết hợp Apache sử dụng Event MPM 
PHP 7 cho tốc độ thực thi code nhanh hơn và hiện đã được sử dụng rộng rãi. Vì vậy bài viết sẽ cài đặt và cấu hình Apache-2.4 với php-fpm cho PHP 7
– Cài đặt repolist
yum -y install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
– Cài đặt Apache
yum -y install httpd
– Cài đặt module php7 và php-fpm
yum -y install php71w php71w-common php71w-gd php71w-phar php71w-xml php71w-cli php71w-mbstring php71w-tokenizer php71w-openssl php71w-pdo php71w-devel
yum -y install php71-fpm
– Cấu hình Apache để hỗ trợ PHP FastCGI
cat >>/etc/httpd/conf.d/php.conf <<EOF
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
EOF
– Start & enable PHP-FPM
systemctl start php-fpm
systemctl enable php-fpm
– Restart Apache
systemctl restart httpd

3. Kiểm tra thông tin php handler

Tạo tệp tin info.php trong Document Root để kiểm tra PHP Handler đang sử dụng
<?php
phpinfo();
?>
Duyệt web và kiểm tra handler tại dòng “Server API
fastcgi php handler

Apache sử dụng Event MPM

Posted: Tháng Bảy 24, 2018 in Apache, Web Server
Thẻ:,

1. Multi-Processing Module (MPM) trong Apache

MPM (Multi-Processing Module):  là các module multi-processing mà quyết định cách thức Apache sẽ tiếp cận và xử lý các request từ client.
MPM là module trong Apache vì vậy mà ta có thể enable/disable trong cấu hình module của apache. Apache cũng yêu cầu và chỉ có thể sử dụng duy nhất 01 trong các module MPM cho cấu hình.
Hiện nay, Apache-2.4 hỗ trợ 03 modules multi-processing cho hệ thống Unix: worker, prefork và event

Worker MPM: Sử dụng nhiều child process với nhiều thread. Và mỗi thread sẽ xử lý một request tại một thời điểm.

Prefork MPM : Sử dụng nhiều child process với một thread. Tại một thời điểm thì mỗi process đó sẽ chỉ xử lý chỉ một request.

Event MPM : Sử dụng mô hình event-based, cho phép truy cập và xử lý các yêu cầu bất đồng bộ (asynchronous).
Event MPM dựa trên mô hình MPM worker, nên nó cũng gần giống với mpm worker.
Nó tạo ra nhiều child process, với nhiều thread. Mỗi parent process chịu trách nhiệm chạy các child process. Mỗi child process tạo ra một số lượng thread cố định (Số lượng thread được định nghĩa trong chỉ thị “ThreadsPerChild“).

Để biết được child process được sinh ra ta sử dụng:

ps -ef |grep httpd |grep -v grep

Chi tiết về MPM có thể tham khảo tại:
http://httpd.apache.org/docs/current/mpm.html

2. Cài đặt và cấu hình Apache sử dụng Event MPM

  • Cài đặt apache web server trên CentOS 7
yum -y install httpd
  • Kiểm tra phiên bản Apache và MPM đang hoạt động
apachectl -V |grep -i 'version\|MPM'

Server version: Apache/2.4.6 (CentOS)
Server MPM: prefork

Version hiện tại là Apache/2.4.6 và mặc định sử dụng MPM prefork
Thông số cấu hình mặc định của mpm prefork:

<IfModule prefork.c>
    StartServers 5
    ServerLimit 256
    MinSpareServers 5
    MaxSpareServers 10
    MaxRequestWorkers 256
    MaxConnectionsPerChild 0
</IfModule>

Cấu hình Apache sử dụng mpm event
– Comment dòng sau để disable module mod_mpm_prefork

sed -i 's/.*mod_mpm_prefork.so/#&/' /etc/httpd/conf.modules.d/00-mpm.conf 
  • Thêm dòng sau để enable mod_mpm_event
sed -i '/.*mod_mpm_event.so/s/^#//g' /etc/httpd/conf.modules.d/00-mpm.conf 
  • Restart Apache web server
systemctl restart httpd
  • Check MPM module
httpd -V | grep MPM 
Server MPM: event

Thông số cấu hình mpm event mặc định như sau:

    ThreadsPerChild           25
    StartServers               3
    ServerLimit               16
    MinSpareThreads           75
    MaxSpareThreads          250
    MaxRequestWorkers        400
    MaxConnectionsPerChild     0

Để tùy chỉnh Event MPM thêm đoạn sau vào tệp tin cấu hình httpd (/etc/httpd/conf/httpd.conf)

<IfModule mpm_event_module>
    ServerLimit              100
    StartServers             12
    MinSpareThreads          25
    MaxSpareThreads          250
    ThreadLimit              64
    ThreadsPerChild          25
    MaxRequestWorkers        2500
    MaxConnectionsPerChild   0
    AsyncRequestWorkerFactor 4
</IfModule>
  • Tùy chỉnh một số directive:
    MaxRequestWorkers = ServerLimit * ThreadsPerChild

Trong phần trước, mình có cấu hình Nginx làm reverse proxy cho Apache web server. Với giao thức http – một giao thức chưa được mã hóa. Để đảm bảo an toàn hơn trong giao tiếp giữa client và server qua trình duyệt, chúng ta cần cài đặt chứng chỉ SSL trên server.

Nginx reverse proxy with SSL for Apache webserver

1. Tự tạo self-signed certificate

Đây là certificate mà ta sẽ tự tạo ra trên chính server. Certificate này không được xác thực bởi các nhà cung cấp chứng chỉ số.

Các bước tạo self-signed certificate và cấu hình Nginx sử dụng SSL như sau:

Step1: Tạo private key

mkdir -p /etc/nginx/ssl/example
cd /etc/nginx/ssl/example
# Tạo key với mã hóa RSA
openssl genrsa -des3 -out server.key 2048
# Quá trình tạo key yêu cầu nhập pass phrase
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
# Chúng ta sẽ remove passphrase bỏ qua quá trình hỏi passphare
openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:
writing RSA key

Step2: Đăng ký certificate

openssl req -new -key server.key -out server.csr

Đăng ký certificate có thể như sau:

Country Name (2 letter code) [XX]:VN
State or Province Name (full name) []:HN
Locality Name (eg, city) [Default City]:HN
Organization Name (eg, company) [Default Company Ltd]:Example
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server’s hostname) []:example.local
Email Address []:

Step3:  Tạo certificate

Dựa vào CSR ở trên, chúng ta tạo một self-signed certificate, với hiệu lực 365 ngày

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Step4: Cấu hình Nginx reverse proxy với SSL cho website example.local

Tạo hay sửa đổi tệp tin cấu hình site example.local với nội dung sau:

(vim /etc/nginx/sites-enabled/example.conf)

server {
    listen 80;
    server_name example.local;
    rewrite ^(.*) https://example.local$1 permanent; #redirect from http to https
    #return 301 https://$host$request_uri;
    }
server {
    listen 443;
    server_name example.local;
    root /var/www/example;
    location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf|zip|rar|html|htm|pdf)$ {
      expires 30d; # caching, expire after 30 days
   }
    access_log /var/log/nginx/nginx.local-access.log;
    error_log /var/log/nginx/nginx.local-error.log;
    ssl on;
    #Only using some protocols, not use SSLv2, SSLv3
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_certificate /etc/nginx/ssl/example/server.crt;
    ssl_certificate_key /etc/nginx/ssl/example/server.key;
    location / {
        proxy_pass http://localhost:8080; #request to webserver
        include /etc/nginx/proxy_params;
   }
}

2. Sử dụng SSL Certificate miễn phí của Let’s Encrypt

Với self-signed certificate thì chúng ta chỉ sử dụng cho nội bộ công ty. Đối với website public mà cần độ tin tưởng từ người dùng, chúng ta cần phải sử dụng certificate được cung cấp từ CA (certificate authority) nào đó. Nếu là cá nhân hoặc để thử nghiệm website sử dụng SSL, chúng ta có thể sử dụng của Let’s Encrypt.

Let’s Encrypt là nhà cung cấp SSL miễn phí. Hiện tại thì Let’s Encrypt cho phép chúng ta đăng ký certificate miễn phí 3 tháng và sau đó yêu cầu renew.

Để lấy certificate từ Let’s Encrypt chúng ta sử dụng công cụ Certbot

Step1:  Cài đặt Certbot

yum install python-certbot-nginx

Step2: Thông tin cấu hình Nginx khi chưa có SSL

Certbot có thể tự động cấu hình SSL cho Nginx, tuy nhiên điều kiện cần là nó cần xác định được cấu hình website đã tồn tại. Thông tin cấu hình cơ bản như sau cho site vnsys.vn (thay site vnsys.vn với tên site phù hợp chúng ta sử dụng)

server {
  listen 80;
  server_name vnsys.vn;
  root /var/www/vnsys;
  # Select files to be deserved by nginx
  location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf|zip|rar|html|htm|pdf)$ {
      access_log        off;
      log_not_found     off;
      expires 30d; # caching, expire after 30 days
  }
  location / {
        proxy_pass http://localhost:8080;
        include /etc/nginx/proxy_params;
  }
  ## Only allow GET and HEAD request methods
    if ($request_method !~ ^(GET|HEAD|POST)$ ) {
        return 444;
    }
}

Step3:  Lấy một SSL Certificate

Certficate sẽ được xác thực qua internet đến CA, vì vậy yêu cầu sử dụng site public, trong trường hợp này ta sẽ lấy cert cho site vnsys.vn

certbot --nginx -d vnsys.vn

Thông tin lấy cert như sau:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for vnsys.vn
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/vnsys.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/vnsys.conf

-------------------------------------------------------------------------------
Congratulations! You have successfully enabled https://vnsys.vn

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=vnsys.vn
-------------------------------------------------------------------------------

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/vnsys.vn/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/vnsys.vn/privkey.pem

Step4: Tệp tin cấu hình Nginx của site vnsys.vn sau khi lấy certificate

server {
  server_name vnsys.vn;
  root /var/www/vnsys;
  # Select files to be deserved by nginx
  location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf|zip|rar|html|htm|pdf)$ {
      access_log        off;
      log_not_found     off;
      expires 30d; # caching, expire after 30 days
  }
  location / {
        proxy_pass http://localhost:8080;
        include /etc/nginx/proxy_params;
  }
  ## Only allow GET and HEAD request methods
    if ($request_method !~ ^(GET|HEAD|POST)$ ) {
        return 444;
    }
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.local/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.local/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = vnsys.vn) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

  listen 80;
  server_name vnsys.vn;
    return 404; # managed by Certbot
}

3.  Cấu hình Apache web server

Trong phần đầu của bài viết “https://vnsys.wordpress.com/2018/07/17/su-dung-nginx-lam-reverse-proxy-cho-apache-web-server/” cũng đã hướng dẫn cài đặt và cấu hình cơ bản Apache web server.

Sau khi cài đặt Apache với hướng dẫn cấu hình Apache như vậy, khi duyệt web và kiểm tra chúng ta thấy có lỗi mixed-content như hình dưới

mixed-content

Để giải quyết mixed-content, cần báo cho Apache là chúng ta đang sử dụng giao thức https, khi Nginx reverse proxy đang phục vụ website mà sử dụng SSL

Thêm nội dung sau vào tệp tin cấu hình chính của Apache ( /etc/httpd/conf/httpd.conf)
<IfModule mod_setenvif.c>
    SetEnvIf X-Forwarded-Proto "^https$" HTTPS
</IfModule>

Trong bài viết này chúng ta sẽ sử dụng Nginx làm Reverse proxy cho Apache web server

Nginx reverse proxy for Apache web server

1. Cài đặt và cấu hình Apache web server

Hiện tại bản mới của Apache web server là 2.4.xx, đã được tích hợp sẵn trong các repo cài đặt trên CentOS 7. Apache-2.4 hỗ trợ đầy đủ tính năng của Event MPM, ngoài ra Apache-2.4 sử dụng lượng memory thấp hơn so với Apache-2.2.

Cài đặt Apache

yum -y install httpd

Cấu hình Apache listen ở port 8080, chúng ta sẽ sử dụng port 80 cho Nginx reverse proxy.

sed -i '/Listen 80/c\Listen 8080' /etc/httpd/conf/httpd.conf

Thay đổi LogFormat, để Apache ghi nhận địa chỉ IP thực của agent từ Nginx, thay vì địa chỉ IP localhost (127.0.0.1). Sửa nội dung directive LogFormat trong tệp tin cấu hình httpd.conf với nội dung sau:

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Tạo virtualhost “example.local

cat >/etc/httpd/conf.d/example.conf <<EOF
<VirtualHost *:8080>
    ServerAdmin webmaster@example.local
    ServerName example.local
    ServerAlias www.example.local
    DocumentRoot /var/www/example/
    #Allow to use .htaccess, enable rewrite module
    <Directory /var/www/example>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog /var/log/httpd/example-error.log
    CustomLog /var/log/httpd/example-access.log combined
</VirtualHost>
EOF

Tạo home directory  cho site example.local và thiết lập Apache owner cho home directory

mkdir -p /var/www/example
chown -R apache:apache /var/www/example
  • Start & enable Apache
systemctl start httpd.service
systemctl enable httpd.service

2. Cấu hình sử dụng Nginx làm reverse proxy

Cài đặt Nginx có thể tham khảo bài viết “Cài đặt Nginx từ source”

Hoặc cài đặt từ prebuild từ repo (mặc định đã support proxy): yum -y install nginx

2.1 Cấu hình các tham số chuẩn cho proxy

cat >/etc/nginx/proxy_params <<EOF
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           32 4k;
EOF

Trong tệp tin /etc/nginx/proxy_params, chúng ta làm rõ một số tham số:

  • proxy_set_header Host $host: Chúng ta dùng định nghĩa lại trường Host request header mà truyền đến backend khi mà cached được enable trên nginx . $host bằng giá trị server_name trong trường Host request header. Chúng ta thiết lập

  • proxy_set_header X-Real-IP: Truyền Real IP của client vào header khi gửi request đến Backend

  • proxy_set_header X-Forwarded-For: Mặc định client request thì thông tin sẽ chỉ giao tiếp với reverse proxy, vì vậy mà thông tin log của Backend server (Apache web server) sẽ chỉ nhận được là địa chỉ IP của Nginx proxy. Để ghi nhận địa chỉ IP thực của client vào backend web server, chúng ta sử dụng tham số: “proxy_set_header X-Forwarded-For”

  • proxy_set_header X-Forwarded-Proto: Xác định giao thức (http hoặc https) mà client gửi request tới proxy

– client_max_body_size: Thiết lập kích thước tối đa mà client sẽ gửi thông tin đến server

2.2  Reverse proxy cho example.local

  • Mở rộng thêm các tệp tin cấu hình

Thêm dòng sau vào trong khối http { } trong tệp cấu hình nginx.conf

include /etc/nginx/sites-enabled/*;

Tạo thư mục chứa các tệp cấu hình Nginx mở rộng

mkdir /etc/nginx/sites-available/
mkdir /etc/nginx/sites-enabled/
– Tạo tệp tin cấu hình cho site example.local với nội dung sau:
cat >/etc/nginx/sites-available/example.conf<<EOF
server {
  server_name example.local;
  root /var/www/example;
  #Caching static files
  location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf|zip|rar|html|htm|pdf)$ {
      expires 30d; # caching, expire after 30 days
  }
  location / {
        #pass requests for dynamic content to Apache
        proxy_pass http://example.local:8080;
        include /etc/nginx/proxy_params;
  }
}
EOF

Nginx phục vụ các tệp tin tĩnh nhanh hơn so với Apache. Vì vậy mà, trong tệp tệp tin example.conf ở trên, khi có request static file, Nginx sẽ trực tiếp phục vụ các yêu cầu đó, thay vì phải chuyển tiếp xử lý đến Apache.

– Tham số proxy_pass, dùng để thiết lập giao thức và địa chỉ của máy chủ backend và một URI tùy chọn mà một location sẽ được ánh xạ. Địa chỉ ở đây có thể là domain hoặc địa chỉ IP và một cổng tùy chọn. Trong trường hợp của chúng ta, Nginx phục vụ BackEnd có domain là example.local với port 8080. Trong nhiều trường hợp mà khả năng phân giải tên miền có vấn đề sẽ gây ra lỗi dịch vụ, vì vậy chúng ta nên ưu tiên sử dụng địa chỉ IP

proxy_pass http://127.0.0.1:8080;

– Enable reverse proxy for site example.local

cd /etc/nginx/sites-enabled
ln -s ../sites-available/example.conf .
systemctl restart nginx.service

Trước đây 2012-2013, mình hay dùng Apache cho web server nên có sử dụng awstats để thống kê số liệu như: Visit, Hits, Bandwidth, … cho từng ngày, tháng, năm.

AWStats for Apache web server statistics

Vì xem AWStats thống kê rất trực quan, nên tiện có dự án về Apache web server, hôm nay viết tiếp bài đơn giản liên quan phần thông kê cho Apache

AWStats là công cụ miễn phí:

– Dùng để phân tích log và xuất thông tin về web, streaming, ftp or mail server.

– Nó làm việc như CGI hoặc từ dòng lệnh và hiển thị tất cả các thông tin mà nó đọc từ tệp log ra dạng graphic trên trang web.

Tôi cũng không biết thực sự AWStats phân tích được tệp log lớn cỡ nào, còn những số liệu như hình trên thì nó làm việc một cách bình thường.

AWStats hỗ trợ phân tích các định dạng log (LogFormat) sau:
# 1 – Apache or Lotus Notes/Domino native combined log format (NCSA combined/XLF/ELF log format)
# 2 – IIS or ISA format (IIS W3C log format). See FAQ-COM115 For ISA.
# 3 – Webstar native log format.
# 4 – Apache or Squid native common log format (NCSA common/CLF log format)

Hôm nay, chúng ta sẽ sử dụng awstats to phân tích log cho Apache web server phiên bản Apache-2.4.6

Các bước cài đặt và cấu hình AWStats như sau trên CentOS 7:

Step1: Setup awstats
Download awstats bản mới nhất tại: https://www.awstats.org/

cd /opt/
wget https://prdownloads.sourceforge.net/awstats/awstats-7.7.tar.gz
tar zxvf awstats-7.7.tar.gz
mv awstats-7.7 /usr/local/awstats

#Chạy tệp cài đặt awstats

perl awstats_configure.pl

—– AWStats awstats_configure 1.0 (build 20140126) (c) Laurent Destailleur —–
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
– You are not an administrator user,
– You want to analyze downloaded log files without web server,
– You want to analyze mail or ftp log files instead of web log files,
– You need to analyze load balanced servers log files,
– You want to ‘understand’ all possible ways to use AWStats…
Read the AWStats documentation (docs/index.html).

—–> Running OS detected: Linux, BSD or Unix

—–> Check for web server install

Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
Config file path (‘none’ to skip web server setup):

> /etc/httpd/conf/httpd.conf

—–> Check and complete web server config file ‘/etc/httpd/conf/httpd.conf’
Add ‘Alias /awstatsclasses “/usr/local/awstats/wwwroot/classes/”‘
Add ‘Alias /awstatscss “/usr/local/awstats/wwwroot/css/”‘
Add ‘Alias /awstatsicons “/usr/local/awstats/wwwroot/icon/”‘
Add ‘ScriptAlias /awstats/ “/usr/local/awstats/wwwroot/cgi-bin/”‘
Add ‘<Directory>’ directive
AWStats directives added to Apache config file.

—–> Update model config file ‘/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf’
File awstats.model.conf updated.

—–> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y

—–> Define config file name to create
What is the name of your web site or profile analysis ?
Example: http://www.mysite.com
Example: demo
Your web site, virtual server or profile name:

> example.local

—–> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
>

—–> Create config file ‘/etc/awstats/awstats.example.local.conf’
Config file /etc/awstats/awstats.example.local.conf created.

—–> Restart Web server with ‘/sbin/service httpd restart’
Redirecting to /bin/systemctl restart httpd.service

—–> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=example.local
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue…

A SIMPLE config file has been created: /etc/awstats/awstats.example.local.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for ‘example.local’ with command:
> perl awstats.pl -update -config=example.local
You can also read your statistics for ‘example.local’ with URL:
> http://localhost/awstats/awstats.pl?config=example.local

Press ENTER to finish…

Ở trên chúng ta vào một số thông tin sau:

– Chỉ đường dẫn tệp tin cấu hình chính Apache (/etc/httpd/conf/httpd.conf)

– Thông tin domain sẽ cần để phân tích (cái này sau có thể phân tích thêm nhiều domain, virtualhost)

Step2: Thiết lập cấu hình cho awstats

Sửa một vài thông tin trong tệp awstats.example.local.conf với nội dung sau:
vim /etc/awstats/awstats.example.local.conf

LogFile="/var/www/example.local/logs/access.log #log path mà awstats sẽ phân tích
SiteDomain="example.local" #Tên domain
LogFormat=1 #Phân tích log cho định dạng Apache hỗ trợ NCSA Combined
mkdir /var/lib/awstats
chown -R apache:apache /var/lib/awstats
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=example.local

khi chạy awstats.pl như trên quá trình phân tích log diễn ra như sau:

Create/Update database for config “/etc/awstats/awstats.example.local.conf” by AWStats version 7.7 (build 20180105)
From data in log file “/var/www/example.local/logs/access.log”…
Phase 1 : First bypass old records, searching new record…
Searching new records from beginning of log file…
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)…
Jumped lines in file: 0
Parsed lines in file: 218092
Found 180 corrupted records,
Found 217912 new qualified records.

####Sửa đổi cấu hình httpd.conf
Hiện tại awstat vẫn đang thiết lập cấu hình cho bản Apache-2.2.x về trước, do đó chúng ta sửa đổi nội dung dưới đây để phù hợp với bản Apache 2.4

Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"
#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/awstats/wwwroot">
 Options None
 AllowOverride None
# Order allow,deny
# Allow from all
 Require ip 192.168.10.186
</Directory>

Step3: Đặt lịch để chạy script

Nếu muốn xem số liệu thủ công thì mỗi lần vào server và chạy lệnh sau:

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=example.local

Tất nhiên thực tế ta sẽ đặt lịch để AWStats tự phân tích logs, việc của mình chỉ là xem qua màn hình số liệu graphic.

crontab -e 
00 01 * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=example.local

Step4: Truy cập Apache web server statistics

http://192.168.10.111:9090/awstats/awstats.pl?config=example.local

AWStats for Apache Web server statistics