Copyright © 2007, 2008 SysCP
This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.0 Germany License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/de/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
| Revision History | |
|---|---|
| Revision 1 | 2007-31-12 |
|
First version | |
Table of Contents
Table of Contents
Welcome to the installation - process for the mod_log_sql - configsection for the SysCP server-management-tool. You have chosen a powerful tool with a very small need of resources. Just execute the commands we show you in this HowTo and you should be happy. If problems occur, ask on our discussion mailinglist or visit our forum. Do yourself a favour and use the powerful search function before asking any question. The results you get might be more efficient than a single question about a particular problem.
In this HowTo, we used the following basic naming conventions:
Commands executed as root:
syscp ~ #
/execute/this/command
Commands executed as a specific user:
vmail@syscp $
/execute/this/command/as/user/vmail
Output of various programs:
I am the echo of a normal command, executed in a
shell
Content of a file:
# The following sets the variable PATH to a useless value PATH=/dev/null
Filenames:
/etc/apache2/httpd.conf
Variable names: $iamavariable
Table of Contents
It is essentially to be familiar with your Linux-Environment. You might encounter situations, where you definitely need a shell. If you wish to install your server according to this HowTo it is advisable to consult and understand the basics of networking, DNS and - of course - Linux itself. Should you, however, have no experience at all how to operate a server which is connected to the Internet, we strongly recommend the usage of a test-environment. A wrongly configured server is a target for all kind of attack and misuse.
This HowTo requires also basic-knowledge about the MySQL database server. Installation and configuration will not be discussed here. Last but not least you need to know basics about your Apache Webserver, without this basic knowledge you wont be able to configure your SysCP - mod_log_sql setup, and the software might not function properly. Every admin should be aware what kind of software is running on his/her system. Please keep in mind one basic thing:
The best admintool can never replace a good administrator
Installing mod_log_sql on Gentoo is quite easy. Ensure you have the ssl - useflag enabled:
syscp ~ # echo "www-apache/mod_log_sql
ssl" >> /etc/portage/package.use
After this easy step, just emerge mod_log_sql:
syscp ~ # emerge
mod_log_sql
Installing mod_log_sql on Debian is quite
easy. Just add the following repository to your
/etc/apt/sources.list if using stable branch of
Debian (mod_log_sql 1.18 only):
syscp ~ # echo "deb
ftp://ftp.gplhost.com/debian stable main" >>
This repository
also includes the following packages: dtc, qmail, ucspi-tcp, mysqmail
and checklocalpasswd. The packages can also be downloaded separately for
version 1.18 and 1.9x on the GPLHost website (http://www.gplhost.com/?rub=softwares&sousrub=logsql).
NOTE: Please direct any issues with these binary releases to Thomas
Goirand (links on the his website), or to the mod_log_sql mailing list.
After this easy step, just install mod_log_sql:/etc/apt/sources.list
syscp ~ # apt-get install
libapache2-mod-log-sql-mysql
Most configuration files of the services might be already existing and don't have to be created. They might have been created during the install process of the service, and will be good enough for a default setup.
WARNING: Do NOT use any Microsoft-Windows editor for editing configuration files, they might become corrupt due to wrong line-breaks. If working with windows, use an editor that can save files in Unix/Linux format.
Open
"/etc/apache2/modules.d/42_mod_log_sql.conf" and
insert the following:
<IfDefine LOG_SQL>
LoadModule log_sql_module modules/mod_log_sql.so
LoadModule log_sql_mysql_module modules/mod_log_sql_mysql.so
</IfDefine>
<IfModule mod_log_sql.c>
LogSQLLoginInfo mysql://syscp:<SYSCPPASSWORD>@localhost/syscp
LogSQLDBParam socketfile /var/run/mysqld/mysqld.sock
LogSQLMassVirtualHosting off
LogSQLCreateTables on
LogSQLMachineID machine_id
LogSQLPreserveFile logs/mod_log_sql_preserve.sql
LogSQLTransferLogFormat AbHhmRSsTUuv
<IfModule mod_ssl.c>
LogSQLTransferLogFormat AbHhmRSsTUuv
</IfModule>
</IfModule>Remember to replace
"[<SYSCPPASSWORD>]" with your real password.
Now modify "/etc/conf.d/apache2" and add
"[-D LOG_SQL]" to the
APACHE2_OPTS.
Open
"/etc/apache2/mods-available/log_sql_mysql.conf"
and insert the following:
<IfDefine LOG_SQL>
LoadModule log_sql_module modules/mod_log_sql.so
LoadModule log_sql_mysql_module modules/mod_log_sql_mysql.so
</IfDefine>
<IfModule mod_log_sql.c>
LogSQLLoginInfo mysql://syscp:<SYSCPPASSWORD>@localhost/syscp
LogSQLDBParam socketfile /var/run/mysqld/mysqld.sock
LogSQLMassVirtualHosting off
LogSQLCreateTables on
LogSQLMachineID machine_id
LogSQLPreserveFile logs/mod_log_sql_preserve.sql
LogSQLTransferLogFormat AbHhmRSsTUuv
<IfModule mod_ssl.c>
LogSQLTransferLogFormat AbHhmRSsTUuv
</IfModule>
</IfModule>Remember to replace "[<SYSCPPASSWORD>]" with your real password. Now you have to disable and enable the mod_log_sql, because apt has enabled it while installing where the config was not present.
syscp ~ # a2dismod
log_sql_mysql
syscp ~ # a2enmod
log_sql_mysql now reload apache2 to use the new
config
syscp ~ # /etc/init.d/apache2
reload
Please log into SysCP with an admin-account (You need the "Change serversettings"- privilege). Now go to the "Settings" - area inside the adminpanel and change the option "Temporary save logs in the database" to "Yes" to enable mod_log_sql in apache2. After saving the settings, wait until the SysCP-cronscript recreated the configfile. In the apache-config written by SysCP a line like "LogSQLTransferLogTable access_log" should be inserted in every vHost.
Now open a page managed by SysCP in your browser. In the SysCP-database a table called "access_log" should appear holding your access_log. If this happens, you configured apache and SysCP correct. Gratulations ;) If not: enable the debug - logging of mod_log_sql, look into the preserve-file and try to find the error. Mostly it's because mod_log_sql can't access the SysCP-database. Doublecheck the "LogSQLLoginInfo", try changing "localhost" to "127.0.0.1" and such stuff.
Table of Contents
Finally! SysCP-mod_log_sql is installed and fully functional. At this point I wish you much fun with your server and SysCP-mod_log_sql.
If you have a lot of "Special logfiles" enabled in SysCP, apache opens two(!) files per domain. This could result in messages like "Too many open files" - errors appearing. mod_log_sql may help you to reduce the opened files by apache. It saves every request in a database-table called "access_log". Yes, this creates a lot of requests, but MySQL should be able to manage this ;)
Why I didn't use the "MassVirtualHosting" - Option of mod_log_sql: This option creates a seperate table for every vHost (if configured). This may result in a lot of tables inside this database. MySQL scales better with big tables than with a lot of tables (and it looks nicer ;) ), I decided to use my own way of filtering the big "access_log". Currently the SysCP traffic-script gathers the data out of the database and inserts this data into the files apache would have written in the normal mode, too. This way we are able to use the standard webalizer-script shipping with SysCP. After writing the logfile, we delete the written data out of the database to keep the table smaller.
Possible improvements: Remove webalizer and write an own real-time-statistic-tool. For this the MassVirtualHosting-Option should be considered again, because there may be a lot of read-requests which need to be very fast. A table holding a few million entries _may_ be a bit slower. This can be circumvented by optimising MySQL ;) At the moment all error_log - entries are written into the default error_log.
You may find the documentation / download of mod_log_sql on its website: http://www.outoforder.cc/projects/apache/mod_log_sql/
This HowTo was written by Florian Aders.
His "Thanks a lot" goes to some persons:
Luca Longinotti for the idea.
Florian Lippert for creating SysCP
Mario Peschel for giving me the time to write this ;)
Martin Burchert for countless assistance on many topics.
Frank Nägler for the debian - part
This HowTo was written to the best of my knowledge. Although it will be maintained carefully, the author cannot guarantee a 100% error free work. Use it at your own risc. The author can not be held responsible for damage on hard/software due to the usage of this document. Feel free to distribute this HowTo as long as the Credits and Disclaimer will remain untouched.