安装百夫长统计

为百夫长统计准备LNMP + Redis 安装环境

nginx web服务器是一款快速轻量级的服务器,旨在有效处理高流量网站的需求。尽管通常用于提供静态内容,但它也能很好地处理动态页面。本指南将帮助您在Ubuntu 16.04服务器上通过FastCGI为百夫长统计安装并运行带有PHP的nginx 。


本指南中的步骤需要root权限。请务必按照root或使用sudo前缀运行以下步骤。

设置并确认您的主机名

1. 要确认您的主机名,请在您的服务器上运行以下命令:

hostname
hostname -f

第一个命令显示您的短主机名,第二个命令显示全限定域名(FQDN)。

2. 要重设主机名,请运行以下命令:

hostnamectl set-hostname your_hostname
hostname -F /etc/hostname

第一个命令设置您的主机名,第二个命令从给定文件读取主机名或NIS域名。

3. 重设主机名后要修改host配置文件,否则当您使用带有sudo前缀的命令时将收到unable to resolve host的警告。要解决这个问题,请修改host文件,在localhost一行下插入一行来设置您的新主机名,具体如下。

host文件:/etc/hosts

127.0.0.1  localhost
127.0.0.1  your_hostname

更新您的系统

在开始之前,请确保您的系统是最新的。执行以下命令来更新系统:

sudo apt-get update
sudo apt-get upgrade

本指南是为非root用户编写的。需要提升特权的命令以前缀sudo。如果您不熟悉该sudo命令,请参阅Linux用户和分组指南。

安装nginx,用于处理的PHP和必需的软件包

安装nginx web服务器和PHP依赖项:

sudo apt-get install nginx php7.0-cli php7.0-cgi php7.0-fpm

配置nginx虚拟主机和PHP处理器

在本指南中,该域名example.com用作示例网站。在下面的配置步骤中替换您自己的域名或 IP。

Nginx使用server指令来指定基于名称的虚拟主机。Nginx调用这些server 配置块。所有服务器配置块都包含server在站点文件中的指令中,位于中/etc/nginx/sites-available。激活时,这些默认配置包含在主要的nginx配置中。

1. 我们为您制作了一个示例配置文件。您现在应该在nginx虚拟主机配置中具有以下服务器配置块。将所有实例example.com替换为您的域名,修改root路径,如下所示,并添加location ~ \.php$块。建议使用SSL证书用于连接安全。为SSL添加一个新的服务器配置块来侦听443端口。将示例SSL证书文件替换为您的证书文件。

创建文件:/etc/nginx/sites-available/example.com

server {
    listen 80;
    server_name example.com;

    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

    access_log /var/www/html/example.com/logs/access.log;
    error_log /var/www/html/example.com/logs/error.log;
    root  /var/www/html/example.com/public_html;
    index  index.html index.php;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME /var/www/html/example.com/public_html/$fastcgi_script_name;
    }
}


server {
    listen 443;
    server_name example.com;

    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

    ssl on;
    ssl_certificate /etc/ssl/private/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    access_log /var/www/html/example.com/logs/access.log;
    error_log /var/www/html/example.com/logs/error.log;
    root  /var/www/html/example.com/public_html;
    index  index.html index.php;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME /var/www/html/example.com/public_html/$fastcgi_script_name;
    }
}

2. 创建配置中引用的根目录和日志目录,替换example.com为您的域名:

sudo mkdir -p /var/www/html/example.com/public_html
sudo mkdir -p /var/www/html/example.com/logs

3. 配置PHP7.0-FPM以优化服务器性能。

修改文件:/etc/php/7.0/fpm/pool.d/www.conf( 以下设置基于2GB 内存的 VPS)

;3 possible values for pm: static(recommended), dynamic, ondemand 
pm = static

;Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
pm.max_children = 100

;Note: Used only when pm is set to 'dynamic'
pm.start_servers = 40
pm.min_spare_servers = 20
pm.max_spare_servers = 100

4. 启用popen函数,百夫长统计中的必要函数。
 修改以下三个文件:
/etc/php/7.0/fpm/php.ini
/etc/php/7.0/cli/php.ini
/etc/php/7.0/cgi/php.ini
 找到 disable_functions 这行,删除行中“popen”字段保存即可。

disable_functions = popen,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

5. 启用该站点,禁用默认配置,然后重新启动Web服务器:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
sudo rm /etc/nginx/sites-enabled/default
sudo systemctl restart php7.0-fpm nginx

6. 要禁用站点,只需删除符号链接:

sudo rm /etc/nginx/sites-enabled/example.com
sudo systemctl restart nginx


如果您使用nginx来托管多个站点,请使用上述方法创建多个虚拟主机文件。

您可能还需要编辑该http区块在文件/etc/nginx/nginx.conf中,该区块的设置适用于所有网站,并允许使用以下选项:

    使用隐藏HTTP头信息server_tokens    

    配置SSL / TLS设置

    自定义日志文件路径

安装MySQL数据库服务器

MySQL数据库引擎是领先的开源关系数据库引擎之一,是基于Web应用程序的流行数据库解决方案。

1. 安装MySQL服务和MySQL所需的PHP支持:

sudo apt-get install mysql-server php7.0-mysql

在安装过程中,系统会提示您通过ncurses菜单为MySQL root用户设置密码 。选择一个高强度的密码并将其保存在安全的地方以供将来使用。

2. 以root用户身份登录到MySQL命令行界面(CLI)。出现提示时,提供步骤1安装过程中设置的密码:

mysql -u root -p

3. 为确保PHP能够访问刚才安装的MySQL连接器,请通过执行以下命令来重新启动PHP服务:

sudo systemctl restart php7.0-fpm

4. 编辑mysql配置文件来改变字符集设置和sql模式。

修改文件:/etc/mysql/my.cnf

将以下设置添加到 [client] 区块和 [mysqld] 区块。

[client]
default-character-set = utf8

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
sql_mode = "NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
注意    

如果在任何时候您需要更改根密码,请按照步骤2中所示登录并输入以下命令,并用新的root密码替换密码:

ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH ‘mysql_native_password’ BY ‘password’;

安装Redis和PHP-Redis扩展

sudo apt-get install redis-server php-redis

为百夫长统计安装其他PHP扩展

sudo apt-get install php7.0-gd php7.0-curl php7.0-mbstring php7.0-json

为邮件通知服务安装Postfix

sudo apt-get install postfix

注意:一些VPS提供商禁用了邮件发送端口。因此,请确保您的VPS可以使用邮件发送端口,否则Postfix将无法正常工作。

重新启动PHP和Nginx以确保所有更改都已生效

sudo systemctl restart php7.0-fpm nginx

用FastCGI测试PHP

 使用以下内容创建一个test.php在您的网站public_html目录中调用的文件:

文件:/var/www/html/example.com/public_html/test.php

<?php phpinfo(); ?>

当你http://www.example.com/test.php在浏览器中访问 时,标准的'phpinfo'信息将显示输出。



下载百夫长统计安装文件

1.您可以从GitHubGitee下载百夫长统计安装文件。执行以下命令:

cd /var/www/html/example.com/public_html
git clone https://gitee.com/WMJonssen/Centcount-Analytics.git CA
mv CA/.git .
rm -rf CA
git reset --hard

2.解压缩包含在百夫长统计项目中的IP地址库压缩包。
执行以下命令:

cd /var/www/html/example.com/public_html/ipdb
unzip ipdb.zip

百夫长统计打包了2个免费的IP地址库(IP2LocationGeoIP),并提供API来访问它。您可以直接将免费版更换为提供ISP信息的,更精准的商业版。而且您不必更改任何代码。

3.修改安全配置文件:/var/www/html/example.com/public_html/config/config_security.php

/************* 安全配置开始 *************/
//force ssl
define('FORCE_SSL', true);//如果你没有SSL证书,请将此常量设置为"false"。
//check ssl
define('IS_HTTPS', isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] === 1 || $_SERVER['HTTPS'] === 'on') ? true : false);
//define security transfer protocol
define('PROTOCOL', IS_HTTPS ? 'https://' : 'http://');
//define API transfer protocol
define('CURL_PROTOCOL', 'https://');//如果你没有SSL证书,请将此常量设置为"http://"。
/************** 安全配置结束 **************/

我们强烈建议您为您的统计网站使用SSL证书。

4.修改通用配置文件:/var/www/html/example.com/public_html/config/config_common.php

/*************** CA CONFIG START **************/
//encode factor
define('ENCODE_FACTOR', 123456789);//重设你的私有加密因子,这非常重要。
//mysql local host name
define('DB_HOST_LOCAL', 'localhost');//设置你的MySQL主机名或IP地址
//mysql local root name
define('ROOT_USER_LOCAL', 'root');//设置你的mysql登录用户名(该用户必须有创建数据库权限)
//mysql local root password
define('ROOT_PASSWORD_LOCAL', 'password');//设置你的mysql登录密码
//administrator's timezone: PRC
define('ADMIN_TIMEZONE', 'PRC');//设置管理员时区
//default timezone: PRC
define('DEFAULT_TIME_ZONE', 'PRC');//设置默认时区
//error log host
define('ERROR_LOG_HOST', 'www.yourdomainname.com');//设置错误日志主机(此处替换为你的域名)
/**************** CA CONFIG END ***************/

注意: 一些VPS提供商禁用了邮件发送端口。因此,请确保您的VPS可以使用邮件发送端口,否则Postfix将无法正常工作。

5.修改邮件配置文件:/var/www/html/example.com/public_html/config/config_mail.php

/************* Config Mail Start ***********/
//administrator mail
defined('ADMIN_MAIL') || define('ADMIN_MAIL', 'admin@centcount.com');//设置管理员接收通知邮箱(请将下面三个通知邮箱放入管理员邮箱白名单列表)
//auto response mail
defined('AUTORESPONSE_MAIL') || define('AUTORESPONSE_MAIL', 'autoresponse@centcount.com');//设置自动回复邮件发送邮箱
//notification mail
defined('NOTIFICATION_MAIL') || define('NOTIFICATION_MAIL', 'notification@centcount.com');//设置通知邮件发送邮箱
//fatal error mail
defined('FATALERROR_MAIL') || define('FATALERROR_MAIL', 'fatalerror@centcount.com');//设置错误信息邮件发送邮箱
/************** Config Mail End ************/

6.修改Redis配置文件:/var/www/html/example.com/public_html/config/config_redis.php

/************* Redis Config Start *************/
//redis instance 0 for kernel process (information of process, ticket, session)
define('REDIS_IP_0', '127.0.0.1');
define('REDIS_PORT_0', 6379);
define('REDIS_DB_0', 0);
//redis instance 1 for realtime visitor data (all information of realtime)
define('REDIS_IP_1', '127.0.0.1');
define('REDIS_PORT_1', 6379);
define('REDIS_DB_1', 1);
//redis instance 2 for CA javascript (site settings, site domains, robots list)
define('REDIS_IP_2', '127.0.0.1');
define('REDIS_PORT_2', 6379);
define('REDIS_DB_2', 2);
//redis instance 3 for session (session information)
define('REDIS_IP_3', '127.0.0.1');
define('REDIS_PORT_3', 6379);
define('REDIS_DB_3', 3);
/************** Redis Config End **************/

如果您的VPS配置了多核CPU。我们强烈建议您设置多实例Redis来提高百夫长统计的性能。

安装百夫长统计

至此,一切都已准备就绪,接下来可以安装百夫长统计了。 

1. 在浏览器中访问网址:https://www.yourdomainname.com/install.php。百夫长统计最终用户使用许可协议将显示。

步骤1

2. 安装前请仔细阅读百夫长统计最终用户使用许可协议。如果您同意所有条款,请点击“接受”按钮继续。


第2步

3. 如果所有设置和配置都正确,请单击“下一步”按钮继续安装。如果出现问题,请确保在安装之前解决所有问题。


步骤3

4. 输入MySQL用户名和密码,为百夫长统计指定管理员的登录电子邮件和密码。然后点击“安装CA”按钮完成安装。


步骤4

5. 现在,您可以登录百夫长统计来添加需要被统计的网站了。

恭喜,您已成功安装了百夫长统计!


上一篇下一篇