diff options
author | Christopher Powell | 2001-11-28 05:26:53 +0000 |
---|---|---|
committer | Christopher Powell | 2001-11-28 05:26:53 +0000 |
commit | 92d85f793b1a41bbbde1811004ae2708a47a44aa (patch) | |
tree | 69ecadaf47ae83197b8c92ff3f8b7c2002b15b19 /INSTALL |
Initial revision1.09
Diffstat (limited to 'INSTALL')
-rw-r--r-- | INSTALL | 180 |
1 files changed, 180 insertions, 0 deletions
@@ -0,0 +1,180 @@ | |||
1 | $Id: INSTALL,v 1.1 2001/11/28 05:26:54 helios Exp $ | ||
2 | |||
3 | |||
4 | Requirements | ||
5 | ============ | ||
6 | |||
7 | 0) I run a Red Hat 6.2 system, but these instructions should easily | ||
8 | adapt to any modern distro. | ||
9 | |||
10 | 1) Apache 1.2.x or higher installed. (I run 1.3.22 and it works fine). | ||
11 | You should have already successfully compiled Apache and know what | ||
12 | you're doing there. In fact, you should already have any other | ||
13 | modules and add-ons like mod_ssl or PHP configured and installed | ||
14 | before you start this process. | ||
15 | |||
16 | 2) The MySQL development headers. (I run MySQL-devel-3.23.44-1.i386.rpm). | ||
17 | |||
18 | 3) MySQL configured, installed and running on either localhost or an | ||
19 | accessible networked machine. You should already have a basic | ||
20 | understanding of MySQL and how it functions. | ||
21 | |||
22 | 4) Again, basic administrative skills with Apache and MySQL. I try to | ||
23 | make things as easy as possible in this README, but its purpose is | ||
24 | not to be an administrative tutorial. | ||
25 | |||
26 | Installation | ||
27 | ============ | ||
28 | |||
29 | 0) Perform all the following steps as root so that you have install | ||
30 | privs, etc. | ||
31 | |||
32 | 1) Unpack the archive into a working directory. | ||
33 | |||
34 | # tar zxf mod_log_mysql.tar.gz -C /usr/local/src | ||
35 | # cd /usr/local/src/mod_log_mysql | ||
36 | |||
37 | 2) Edit Makefile and make any adjustments for your system: make sure | ||
38 | that APACHEDIR points to the location of your Apache source code, | ||
39 | and that CFLAGS points to the location of your Apache installation | ||
40 | directory (where your httpd binary lives). | ||
41 | |||
42 | 3) # make all | ||
43 | (You should receive NO warnings or errors of any kind. | ||
44 | If you see messages like this: "mod_log_mysql.c:69: httpd.h: No such | ||
45 | file or directory" then you do not have your CFLAGS correctly | ||
46 | pointing to the right include directory.) | ||
47 | |||
48 | 4) # make install | ||
49 | |||
50 | 5) Change to your Apache source dir. | ||
51 | |||
52 | # cd /usr/local/src/apache-1.3.22/src | ||
53 | |||
54 | 6) Re-make your httpd binary as follows. | ||
55 | |||
56 | 6a) Edit Configuration.apaci as follows... | ||
57 | |||
58 | * Append the following string to the EXTRA_LIBS= line. (/usr/lib/mysql is where your libmysqlclient.a file lives): | ||
59 | -L/usr/lib/mysql -lmysqlclient -lm | ||
60 | |||
61 | * Add this line at the end of the file: | ||
62 | Module mysql_log_module mod_log_mysql.o | ||
63 | |||
64 | 6b) # cp Configuration.apaci Configuration | ||
65 | |||
66 | 6c) # ./Configure | ||
67 | |||
68 | 6d) # make | ||
69 | |||
70 | 6e) # strip httpd | ||
71 | |||
72 | 7) Test your new apache binary: | ||
73 | |||
74 | # ./httpd -l | ||
75 | |||
76 | You should see something like: | ||
77 | |||
78 | Compiled-in modules: | ||
79 | http_core.c | ||
80 | mod_log_mysql.c <-- That's the line you're looking for. | ||
81 | mod_env.c | ||
82 | mod_log_config.c | ||
83 | mod_mime.c | ||
84 | mod_negotiation.c | ||
85 | ...etc... | ||
86 | |||
87 | 8) Install your httpd binary. Copy it over your old httpd binary, | ||
88 | wherever it lives. You can and should rename your old httpd first so | ||
89 | that you can easily revert to that working version in case of bugs or | ||
90 | whatever. | ||
91 | |||
92 | # /etc/rc.d/init.d/httpd stop | ||
93 | # cp -f ./httpd /usr/local/Apache/bin/ | ||
94 | |||
95 | 9) Configure your apache daemon to log to your database. Here's a very | ||
96 | basic set of config lines to start you off. Full docs on them are | ||
97 | included after this section. | ||
98 | |||
99 | EXAMPLE: Connect to the MySQL database called "apache" running | ||
100 | on "dbmachine.foo.com". The module uses username "loguser" and | ||
101 | password "l0gger" to authenticate to the database; this user must, | ||
102 | of course, exist in the MySQL user table and have the proper | ||
103 | permissions -- more on that in step 11. The log entries will be | ||
104 | INSERTed into the table called "access_log". | ||
105 | |||
106 | |||
107 | LogMySQLInfo dbmachine.foo.com loguser l0gger | ||
108 | LogMySQLDB apache | ||
109 | |||
110 | <VirtualHost 1.2.3.4> | ||
111 | [snip] | ||
112 | |||
113 | TransferLogMySQLTable access_log | ||
114 | TransferLogMySQLFormat huSUsbTvRA | ||
115 | |||
116 | [snip] | ||
117 | </VirtualHost> | ||
118 | |||
119 | |||
120 | 10) Create a database and table to hold the new log data. I log the | ||
121 | same data as the regular "combined log" plus a little extra information | ||
122 | that can be useful. | ||
123 | |||
124 | The order that the fields appear in the table is irrelevant | ||
125 | because you can SELECT them in any order you choose. To create | ||
126 | this table I first created a new database called "apache": | ||
127 | |||
128 | # mysql -uadmin -pmypassword | ||
129 | mysql> create database apache; | ||
130 | |||
131 | Then I created the table called "access_log". You should use the | ||
132 | enclosed SQL file to do this for you. | ||
133 | |||
134 | mysql> source access_log.sql | ||
135 | |||
136 | |||
137 | 11) Create a specific mysql userid that httpd will use to authenticate | ||
138 | and enter data. This userid need not be an actual Unix user. It | ||
139 | is a userid specific to mysql with specific privileges. To create a | ||
140 | user called "loguser" with the password "l0gger" with only the | ||
141 | capability of INSERT to "access_log": | ||
142 | |||
143 | mysql> grant insert on apache.access_log to loguser@my.apachemachine.com identified by 'l0gger'; | ||
144 | |||
145 | |||
146 | 12) Enable full logging of your MySQL daemon (at least temporarily | ||
147 | for debugging purposes) if you don't do this already: | ||
148 | |||
149 | Edit /etc/my.cnf and add the following line to your [mysqld] section: | ||
150 | |||
151 | log=/var/log/mysql-messages | ||
152 | |||
153 | Then restart MySQL. | ||
154 | |||
155 | 13) Restart apache. | ||
156 | |||
157 | # /etc/rc.d/init.d/httpd start | ||
158 | |||
159 | 13) Load your web site in a browser to trigger some hits, then confirm that | ||
160 | the entries are being successfully logged: | ||
161 | |||
162 | # mysql -hmysql.host.com -umysqladmin -p -e "select * from access_log" apache; | ||
163 | Enter password: | ||
164 | |||
165 | +---------------------------------------------------+-------------+-------------+------------------+------------------+------------+--------+------------+------------------------------------+ | ||
166 | | remote_host | remote_user | request_uri | request_duration | virtual_host | time_stamp | status | bytes_sent | referer | | ||
167 | +---------------------------------------------------+-------------+-------------+------------------+------------------+------------+--------+------------+------------------------------------+ | ||
168 | [snipped lines] | ||
169 | . | ||
170 | . | ||
171 | . | ||
172 | +---------------------------------------------------+-------------+-------------+------------------+------------------+------------+--------+------------+------------------------------------+ | ||
173 | |||
174 | 14) You have basic functionality. Don't disable your regular Apache logs until | ||
175 | you feel comfortable that the database is behaving as you'd like and that | ||
176 | things are going well. | ||
177 | |||
178 | |||
179 | |||
180 | |||