Author(s): Theo Petersen
Publisher: Greenwich, Conn. Manning
Year: 2002
Language: English
Pages: 433
Web Development with Apache and Perl......Page 1
Title page......Page 4
acknowledgments......Page 17
author online......Page 18
about the cover illustration......Page 19
Contents (linked)......Page 8
Who should read this book?......Page 14
What’s in the book?......Page 15
Source code......Page 16
Part 1 Web site basics......Page 20
1.1 What is Open Source?......Page 22
1.2.1 Support......Page 24
1.2.2 Quality......Page 27
1.2.3 Security......Page 29
1.2.4 Innovation......Page 30
Bearing the standard......Page 31
Feature competition......Page 32
1.3.1 Stable version and ongoing development......Page 33
1.3.3 Leveraging other investments......Page 34
1.3.4 Ongoing costs......Page 35
1.4 Open Source licensing......Page 36
1.4.2 The BSD/MIT license......Page 37
1.4.4 The right license?......Page 38
2 The web server......Page 39
2.1.1 Hardware......Page 40
Performance......Page 41
2.1.3 Re-evaluation and installation......Page 42
2.2 Securing the site......Page 43
2.3 The case for Apache......Page 44
2.3.1 Installation......Page 45
2.3.2 First tests......Page 46
2.4.1 The httpd.conf configuration file......Page 47
2.4.2 Things you need to change......Page 48
Options......Page 49
UserDir......Page 50
ScriptAlias......Page 51
2.6.1 Allow everything......Page 52
2.6.3 Allow approved documents......Page 53
2.7 Using apachectl......Page 54
2.8 Serving documents......Page 55
2.9 thttpd......Page 56
3 CGI scripts......Page 58
3.1 Why scripting......Page 59
3.1.1 Scripting language choices......Page 60
3.2 The case for Perl......Page 61
3.2.2 Testing a sample script......Page 63
3.2.3 Updating Perl modules with CPAN......Page 64
3.3 Inside CGI......Page 65
3.3.1 Hello, Web!......Page 67
3.3.2 Dynamic content......Page 70
3.3.3 Interacting......Page 73
3.3.4 HTML forms with CGI.pm......Page 76
3.3.5 Taking action......Page 82
3.4 Strictness, warnings, and taint checking......Page 85
3.5 CGI modules......Page 86
Part 2 Tools for web applications......Page 88
4 Databases......Page 90
4.2 Address book......Page 91
4.3 Hash files......Page 94
4.3.1 Perl’s tie and hash files......Page 95
4.3.2 Hash file address book......Page 96
4.4.1 What’s relational?......Page 101
4.4.3 MySQL......Page 103
4.4.4 PostgreSQL......Page 104
4.5.3 Add users and permissions......Page 106
4.5.5 Testing the server......Page 107
4.6.1 Installing the Perl modules......Page 108
4.6.2 Making a connection......Page 109
4.6.3 CGI scripts with DBI......Page 110
4.7.2 HTMLView, an alternative to WDBI......Page 116
4.7.3 Installing WDBI......Page 117
4.7.4 Creating a definition file......Page 118
4.7.5 Using WDBI......Page 119
4.7.6 Enhancing forms......Page 121
5 Better scripting......Page 123
5.1 Why CGI is slow......Page 124
5.1.1 Stateless protocol......Page 125
5.1.2 Session-oriented persistent CGI......Page 126
5.2 FastCGI......Page 127
5.3 The case for mod_perl......Page 128
5.3.1 Buyer’s guide......Page 129
5.4 Installing mod_perl......Page 130
5.4.2 Apache run-time configuration......Page 131
5.5 Scripting with mod_perl......Page 133
5.5.1 Apache::Registry......Page 134
5.5.2 Apache::DBI......Page 136
5.5.3 When CGI attacks......Page 137
5.6 Beyond CGI......Page 138
5.6.1 Beyond CGI.pm?......Page 140
5.7 mod_perl goodies......Page 141
5.8 Maintaining user state......Page 142
5.8.1 Apache::Session......Page 143
5.8.2 A to-do list......Page 144
5.8.3 Cookie sessions......Page 148
5.8.4 Session management and user management......Page 151
6.1 Listening in on the Web......Page 153
6.2 Secure Sockets Layer (SSL)......Page 154
6.2.1 Legal issues......Page 155
6.3.1 Apache-SSL......Page 156
6.3.3 Installing mod_ssl......Page 157
6.3.4 Certificates......Page 158
6.3.5 Configure and test......Page 160
6.4 User authentication......Page 162
6.4.1 Using HTTP authentication......Page 163
6.4.2 Doing your own authentication......Page 165
6.5 User management......Page 171
6.6 Login sessions......Page 175
7.1 HTML design......Page 182
7.2 Server-side includes......Page 183
7.2.1 SSI with mod_perl and Apache::Include......Page 185
7.3 Scripting in HTML......Page 186
7.3.1 Perl and HTML......Page 187
7.3.2 Templates......Page 189
7.4.1 The case for Mason......Page 193
7.4.2 Installation......Page 194
7.4.3 Making pages from components......Page 195
7.4.4 How Mason interprets components......Page 199
7.4.5 Faking missing components with dhandlers......Page 200
7.4.6 Autohandlers......Page 201
7.4.7 Session management......Page 205
7.4.8 Mason resources......Page 208
7.5 The Template Toolkit......Page 209
7.5.1 Template environment......Page 210
7.5.2 Uploading a document......Page 213
7.5.3 Viewing the upload directories......Page 217
7.6 XML alternatives......Page 221
Part 3 Example sites......Page 224
8 Virtual communities......Page 226
8.1.1 Community site examples......Page 227
imdb.com......Page 228
investorama.com......Page 229
8.2.1 News......Page 230
Newslog......Page 231
8.2.2 Forums......Page 233
mwForum......Page 234
8.2.3 Chats......Page 237
EveryChat and derivatives......Page 238
8.2.4 Search engines......Page 240
PerlfectSearch......Page 241
8.3 Building a site......Page 243
8.3.1 Installation......Page 244
8.3.2 httpd.conf......Page 245
8.3.4 The front page......Page 247
8.3.5 News......Page 250
8.3.7 Chat......Page 251
8.3.9 Improvements......Page 252
8.4 Slash, the Slashdot code......Page 253
8.5.1 Search engine submission......Page 254
9 Intranet applications......Page 256
9.1.1 Documentation directory tree......Page 257
9.1.2 File server......Page 258
9.1.3 Generating index pages......Page 259
9.1.4 mod_perl for indexing......Page 260
9.2 Office applications......Page 261
9.2.1 Email......Page 262
NeoMail......Page 264
Other stand-alone mail packages......Page 265
9.2.2 Calendar......Page 266
WebCal......Page 267
9.2.3 Project management......Page 269
9.3 Interfaces to nonweb applications......Page 270
9.3.1 Other Perl interface tools......Page 271
9.3.2 Passwords......Page 273
9.3.3 File management......Page 274
9.4 System administration......Page 275
9.4.1 WebMIN......Page 276
9.5 Build your own portal......Page 278
9.5.1 Maintaining links......Page 279
9.5.2 UserDir, Redirect, and mod_rewrite for user maintenance......Page 281
9.5.3 mod_perl for translation and redirection......Page 283
9.6 Joining multiple intranets......Page 288
9.6.1 VPNs......Page 289
9.6.4 Put it all together, it spells.........Page 290
10 The web storefront......Page 292
10.1.1 Security and privacy......Page 293
10.1.2 Stress testing......Page 294
10.2 Components of an e-commerce site......Page 295
10.2.1 Catalog......Page 296
10.2.2 Account data......Page 301
10.2.3 Shopping cart......Page 305
10.2.4 Taking the order......Page 310
10.2.5 Tracking shipments......Page 315
10.3.1 Product reviews......Page 318
10.3.2 Customer feedback and other services......Page 321
10.4 Open Source e-commerce tools......Page 322
10.4.1 Interchange......Page 323
Installation and first catalog......Page 324
Customization......Page 325
Features......Page 326
10.4.2 AllCommerce......Page 327
Customization......Page 328
Nonfeatures......Page 329
10.5 Credit card processing......Page 330
10.5.1 CCVS......Page 332
Part 4 Site management......Page 334
11 Content management......Page 336
11.1 Development life cycle......Page 337
11.1.2 A staging area on your production server......Page 338
Virtual hosts......Page 339
Staging mod_perl applications......Page 341
Separate servers......Page 342
11.2.1 FrontPage......Page 345
11.2.2 rsync......Page 346
Running an rsync server......Page 349
Mason concepts......Page 352
Setting up Mason-CM......Page 353
Managing files with Mason-CM......Page 355
Managing Mason components......Page 360
11.2.4 WebDAV......Page 362
11.3.1 Configuration......Page 364
11.3.2 Development to staging......Page 368
11.3.3 Staging to production......Page 369
11.4 Backup and recovery......Page 371
Remote or local......Page 372
Is a copy enough?......Page 373
Backup sites......Page 374
11.4.3 Test and verify!......Page 375
12 Performance Management......Page 377
12.1 Victims of success......Page 378
12.1.1 Monitoring system loads......Page 380
Apache::VMonitor......Page 381
12.1.2 Stress-testing your server......Page 383
HTTPD::Bench::ApacheBench......Page 384
12.2 Tuning your server......Page 387
12.2.1 Apache configuration......Page 388
Per-request costs......Page 391
12.2.2 mod_perl issues......Page 392
Sharing (more) memory......Page 394
Server suicide, mod_perl style......Page 396
Keep-Alive......Page 399
Lingering close......Page 400
12.3 Web farming......Page 401
12.3.1 Reverse proxies......Page 402
Apache with mod_proxy......Page 403
12.3.2 Squid accelerator......Page 407
12.3.3 Load balancing......Page 408
DNS round-robin......Page 409
mod_backhand......Page 410
Linux Virtual Server......Page 411
Bibliography......Page 414
Online resources......Page 415
Index (linked)......Page 416