forked from scc/slash
-
Notifications
You must be signed in to change notification settings - Fork 0
/
INSTALL
1491 lines (1141 loc) · 67.4 KB
/
INSTALL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
NAME
INSTALL - Slash Installation
SYNOPSIS
This document describes how to install Slash, versions 2.2 and
pre-releases of 2.3 and 2.5. For instructions on installation or upgrade
of previous versions of Slash, see the INSTALL document included with
those distributions.
These instructions have only been tested on Linux. Installation under
BSD and other Unix OSes is doable, with minor glitches (see "BSD
Systems" below). Windows is not supported.
Slash can always be downloaded from SourceForge.net, from the FTP site,
and via CVS.
http://sf.net/projects/slashcode/
ftp://ftp.slashcode.com//pub/slashcode/
http://cvs.slashcode.com/
See the SourceForge.net page for patches and bug reports.
Which version should I use?
First of all: if you are using Slash 2.2.5 or before, including all
2.1.x, 2.0.x, and 1.x versions, you should upgrade to the latest version
in the 2.2 tree, 2.2.6, as soon as possible. There are security issues
with previous versions. You should not install previous versions.
As of this writing (August 2006), our last official release (2.2.6) was
long ago, and many features have been added since. All development has
been in CVS. If you are installing a new Slash site, you don't want to
use 2.2.6. And while you probably don't want to use the very latest CVS,
you almost certainly do want to use the latest "R_" tag available in
CVS. See "VERSIONS", "CVS tags", below, for advice on choosing and
maintaining a CVS installation.
Read, then install
We know you want to get right into the installation, but you must first
read, carefully, these sections of this INSTALL file:
* REQUIREMENTS, to make sure you have the right hardware and software
* "CVS tags," in VERSIONS, to make sure you have the right version of
this code
* SECURITY NOTES, to keep your system safe
* INSTALLATION (the longest section), to make sure you will be able to
finish what you start
And it's a good idea to at least skim:
* INSTALLATION OPTIONS
* TROUBLESHOOTING
Read those sections before you begin actually performing the steps in
"INSTALLATION".
This document also contains information on upgrading a Slash site (which
can be tricky), and uninstalling (which is easy).
Updates to this file
This INSTALL file you are currently reading may not be the latest.
Again, you probably don't want to upgrade your whole Slash checkout to
the very latest CVS. But if you encounter problems, it might not be a
bad idea to look over the very latest version of this INSTALL file,
which you can find at:
http://slashcode.cvs.sourceforge.net/*checkout*/slashcode/slash/INSTALL
The version of this file that you are currently reading is:
$Id$
If there are more recent versions of this file, you can find a list of
those changes at:
http://slashcode.cvs.sourceforge.net/slashcode/slash/INSTALL
INSTALLATION
Installation Note
All of the installation steps below should be executed as root. If this
is a problem, then Slash is probably not for you (see "Non-Root" below,
under "INSTALLATION OPTIONS"). Type carefully. Now's a good time to back
up anything important.
Installation Procedure
There are eight steps to installation. Anything already done can be
skipped -- but only if you have the correct version and configuration,
particularly with Apache/mod_perl.
1. Install MySQL.
If it is already installed, doublecheck that its version is at least
the minimum required (see "REQUIREMENTS"). If you have questions
about the installation process, please refer to MySQL documentation.
Slash requires that your MySQL server run in the GMT timezome. Find
your global my.cnf file (probably "/etc/my.cnf" or
"/etc/mysql/my.cnf"), locate the "[mysqld_safe]" (or
"[safe_mysqld]") group, and add this line to it:
timezone = GMT
Start MySQL (it must be running for the installation of Slash and
some perl modules). Or, if it is already running, restart MySQL (if
you have other services using MySQL, you should probably stop and
start them -- make sure they are timezone-agnostic!).
Create a database to be used by Slash. Our default name is 'slash':
CREATE DATABASE slash;
Create a username/password that can access that database, and ensure
that user has at least privileges to select, insert, update, delete,
lock, create, drop, index and alter. For example, if your whole site
(slashd daemon and apache) will run on the same machine as your
mysql server, and you wanted to use the mysql username 'slash', you
might:
GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES, CREATE, DROP,
INDEX, ALTER ON slash.* TO 'slash'@'localhost'
IDENTIFIED BY (quoted password);
GRANT PROCESS ON *.* TO 'slash'@'localhost' IDENTIFIED BY
(quoted password);
In this case, 'slash' would also be the name of your MySQL user as
described in "Types of Users" below. You'll have to give your MySQL
user to DBIx::Password when you install and configure it, so don't
forget it.
2. Install perl.
Perl is likely already installed on your machine; doublecheck that
its version is at least the minimum required (see "REQUIREMENTS").
Also, check the "Libraries" (or "Debian libraries") section under
"REQUIREMENTS", below. You may need to install dev packages for not
only perl but mysql and expat as well and now's a good time to take
care of that.
3. Install Apache and mod_perl.
You MUST install mod_perl and Apache as directed here. OK, that is
not strictly true, but unless you really know what you're doing,
just assume it's true. If you already have mod_perl installed, it is
probably not configured properly to work with Slash and you will
have to rebuild it.
If you are using the provided httpd.conf file from the slash
distribution, and find that Apache is giving you errors, chances are
mod_perl is not installed correctly, and you need to build it from
scratch. Not following this direction is one of the most common
reasons we see for a Slash install not working.
Of course, if you have your own Apache modules or build options, you
will need to modify the instructions here appropriately.
First, untar apache and mod_perl. Then, go to the mod_perl
directory, and have mod_perl build and install apache for you:
perl Makefile.PL APACHE_SRC=../where_you_have_apache/src \
DO_HTTPD=1 USE_APACI=1 PERL_MARK_WHERE=1 EVERYTHING=1 \
APACHE_PREFIX=/where_apache_will_be_installed
make
make test
make install
NOTE: You may be unsuccessful with "make test" if the perl modules
are not yet installed. However, some perl modules will not install
without Apache and mod_perl installed. If you wish, skip "make
test", run "make install", install the perl modules in step 4, and
then come back and run "make test" here again to make sure
everything is OK.
NOTE: If you know what you're doing, Slash will work with a DSO
Apache. Be sure you're on the latest versions of Apache and mod_perl
and remember PERL_MARK_WHERE=1 and EVERYTHING=1.
NOTE: See also "Other requirements" under "REQUIREMENTS".
Ubuntu NOTE: In mid-2006 Ubuntu 6.x switched sh to point to dash
instead of bash, which apparently breaks the above step (because
dash's 'echo -E' isn't compliant enough for apache's 'configure').
We're looking into it, but for now apparently (temporarily) linking
/bin/sh to /bin/bash during this step is a workaround.
"dash-as-bin-sh" in https://launchpad.net/ubuntu/+spec (Update: this
appears to no longer be a problem, but if you encounter problems on
Ubuntu, check where your /bin/sh points.)
4. Install the perl modules.
Slash is powerful and complex, and, rather than reinvent the wheel,
it often relies on CPAN modules. Open-source code reuse has many
advantages. One disadvantage is that installing all those modules
can be tricky, as you may be about to find out.
You could install each module in Bundle/Slash.pm by hand, but this
would be time-consuming. Instead, you'll want to install the bundle
"Bundle::Slash" using CPAN.
IMPORTANT NOTES (read through these first! really!):
Overall comment about CPAN module failure
It is possible that upon typing "install Bundle::Slash", you
will have one or more modules fail to install on the first
try. The rest of the modules will be successfully installed
but some won't. In that case you will want to fix the
problems and retype "install Bundle::Slash" to make sure
everything proceeds smoothly. Once that command gives you
just a long list of "Foo::Bar is up to date," you are done.
Until that point, you are not done; you must resolve the
errors.
Old Version of Bundle::Slash
If you have previously installed Bundle::Slash, you will
want to install it again, but you will need to delete the
existing version. Go to your .cpan/Bundle directory (usually
~/.cpan/Bundle/) and remove Slash.pm.
Overactive CPAN
With some versions of the CPAN module, the module will try
to download and install the latest version of perl. Watch
what the module is doing; if it begins to download an entire
perl distribution, interrupt it (hit ctrl-C) until it stops,
then try again with the CPAN module. This should not be an
issue in the latest version of Bundle::Slash.
Uninstalling Old Modules
Sometimes, you will be installing a newer version of a
module that exists elsewhere on the system. You probably
want to tell the CPAN module to automatically remove older
files. To do that from the CPAN shell, type:
cpan> o conf make_install_arg UNINST=1
And if you want that to be CPAN's default from now on, add:
cpan> o conf commit
Automatically Installing Dependencies
Some of the modules in Bundle::Slash require other modules.
We have not put some of those other modules in Bundle::Slash
because, if those requirements change in the future, we
don't want to make future Slash sites install more than they
have to.
If you see this:
---- Unsatisfied dependencies detected during [FOO/Bar-1.23.tar.gz] -----
Foobar::Baz
Shall I follow them and prepend them to the queue
of modules we are processing right now? [yes]
That's normal; just hit return.
If it annoys you to have to do this, edit the
"prerequisites_policy" field of your CPAN/Config.pm file.
Or, just do this to change it to automatically follow
dependencies and commit the change:
cpan> o conf prerequisites_policy follow
cpan> o conf commit
Data::JavaScript::Anon
There are bugs in versions earlier than 1.00 that break our
JS. Unfortunately, CPAN seems to prefer version 0.9 even
though 1.00 is available. You may have to install a better
version in CPAN by hand:
cpan> install A/AD/ADAMK/Data-JavaScript-Anon-1.00.tar.gz
Additional Libraries
You must have certain libraries existing on your system
before building, for Compress::Zlib, XML::Parser, DBI and
DBD::mysql. See "Libraries" under "REQUIREMENTS", below.
BSD Systems
If running BSD, also install the BSD::Resource module. We
have heard reports of minor problems running Slash on BSD,
but you are welcome to try. See SLASH_PREFIX below, and
after the install, doublecheck the init scripts. If you have
to make changes to get it to work, send us patches or
detailed bug reports please: we want to support the BSDs.
DBIx::Password
When installing DBIx::Password, you will be asked for
various information, the same information used to create the
database and database user in Step 1. First, you'll be asked
for a virtual user name, which will be the identifier for
all of this data. You can just use the name of your site, or
any other alphanumeric string. This string will be your
"DBIx::Password virtual user" as described in "Types of
Users" below -- you will use this in other places, so don't
forget it.
Then you'll be asked for your DBI driver (mysql), the name
of the database you CREATEd in Step 1, its machine (maybe
'localhost' or an IP number) and port, and then the MySQL
user name you GRANTed privileges to in Step 1 and its
password.
Some perl modules you can hit return for defaults and
they'll work. This isn't one of them. If you don't
understand what you're doing here, don't fake it -- that's a
common reason for Slash installations failing.
Documentation
To read the README for any module, before or after
installing:
cpan> readme MODULE
To read the documentation of any of the modules, once they
have been installed, type "perldoc MODULE" at the command
line.
See perlmodinstall for more information on installing perl
modules.
Now that you have read the above notes, you're ready to install the
perl modules.
To use the CPAN module, invoke the CPAN shell:
perl -MCPAN -e shell
(Or, you may have the program "cpan" already available, which does
the same thing.)
If this is the first time you've invoked CPAN, you will be asked to
configure it. Note that CPAN works best if most or all of these
helper programs are installed: bzip2 gzip tar unzip make curl lynx
wget ncftpget ncftp ftp gpg. If your OS installation is very anemic
and you lack most of them, you might ^C its questions, install the
missing programs, and then re-invoke the CPAN shell to restart
configuration.
It's probably a good idea here to install the latest version of the
CPAN module itself, along with all the helper modules it requires.
This is an optional step but may make the rest of module
installation easier:
cpan> install Bundle::CPAN
If you chose to do that, then afterwards, "exit" the CPAN and
reinvoke it. (The plain shell command "cpan" will probably now
work.)
Next, install some important networking modules. This is also
optional but, if there are problems with these modules, you'll want
to resolve them before moving on to the rest of the installation:
cpan> install Bundle::LWP
Make sure all those modules are installed and up to date before
proceeding. Note that Net::Cmd has a history of being a little
broken in its tests; if it fails on tests 8 and 9 of t/require, then
it's OK; just do "force install Net::Cmd" and repeat "install
Bundle::LWP". On Mac OS X and possibly other operating systems, if
LWP's live/https tests fail, "install Net::SSL" manually and retry.
Assuming you chose to install the LWP, then after it's been
configured successfully, again, "exit" the CPAN and reinvoke it.
Finally, you must install Bundle::Slash:
cpan> install Bundle::Slash
This will be a long process. Several modules will ask to be
configured during this process. Here are some tips:
DBI Don't worry about the threading warning. Slash doesn't use
threads.
DBIx::Password
See "DBIx::Password" under IMPORTANT NOTES above.
Apache::Test and Apache::Cookie
You will need "httpd" and "apxs" in your $PATH, and even if they
are there, you will probably see the lengthy error that starts
"Apache cannot spawn child processes as 'root'". This is
because, ironically, Apache::Test's self-tests are a colossal
pain to actually run (I take the option to skip them). And
personally I just "force install Apache::Cookie" which is lame
but solves the problem.
Template
The Template Toolkit is a complex install. Try accepting all the
defaults and see if it works. It has 90 test scripts with over
2000 tests, and installation will be halted if just 1 of these
tests fails. Do a "look Template" and try your best to resolve
the issues. The README includes a URL to the mailing list
archives, where you may find help. If you're getting 100 errors,
you need to fix them, but if you're down to 1 or 2 you can't
fix, you might just make a note of what the failures were and
just "force install Template".
Other failures
We can't predict whether bugs will appear in CPAN modules in
future. Often the bugs are not in the software proper, but in
its too-strictly coded test suites, which don't allow for
changed but still-legitimate output. When this happens, the
module itself is fine but it will not install unless forced. As
of October 2006, we've noticed the following module throw
spurious errors, requiring a "force install":
HTML::CalendarMonth 1.18
If you have problems, feel free to re-run "install Bundle::Slash".
It will safely skip anything already installed.
Again: once you are able to do "install Bundle::Slash" and see
nothing but a long list of modules that are "up to date," you are
done. Until you see that, you are not done with this step!
If you wish to take full advantage of Slash, there are some plugins
not installed and vars not turned on by default, which provide
additional features, improve performance, or help in testing, which
require additional perl modules and sometimes non-perl libraries.
See the listing at the bottom of Bundle/Slash.pm, and see also the
tips in plugins/Admin/README, plugins/HumanConf/INSTALL-NOTES, and
plugins/Stats/README.
5. Install Slash.
Unpack the distribution, go to the new directory that creates, and
type:
make
make install
Note: you will want the GNU versions of fileutils and make. Older
versions of install, and make and cp from other systems, might not
work.
There are a few options to "make" and "make install" you may want to
change.
option default purpose
==========================================================
SLASH_PREFIX /usr/local/slash Location for
installed files
INIT /etc or /etc/rc.d Location for init
scripts
USER nobody User to own files
GROUP nobody Group to own files
CP cp Name of or path to
alternate 'cp'
INSTALL install Name of or path to
alternate 'install'
(USER and GROUP can also be changed later on a per-site basis, in
step 6, while running "install-slashsite".)
So, for example, you might type (although the default SLASH_PREFIX
is *strongly* recommended):
make SLASH_PREFIX=/home/slash
make install SLASH_PREFIX=/home/slash
When done, a configuration file for Apache will be created at
$SLASH_PREFIX/httpd/slash.conf. You can put its contents into your
httpd.conf, or you can just "Include" it in your httpd.conf. You
must do one or the other!
WARNING!
Please be aware that if you include $SLASH_PREFIX/slash.conf or
$SLASH_PREFIX/sites/sitename/sitename.conf more than once, or if
this file shares contents with directives in httpd.conf, that your
Slash site WILL break. The directives in $SLASH_PREFIX/slash.conf
should be run only ONCE in any any site context. Read through
$SLASH_PREFIX/slash.conf to make sure it all looks proper.
6. Install your Slash site.
At this point, you may want to (re)read "DBIx::Password" in
"SECURITY NOTES" at the end of this section, and consider the option
of installing your site with a custom unix system user and group for
added security. You will be prompted for user and group shortly.
Go to your installation directory (by default, /usr/local/slash) and
execute (where "VIRTUAL_USER" is the name of the virtual user given
in the DBIx::Password distribution):
bin/install-slashsite -u VIRTUAL_USER
The program will prompt for answers to several configuration
questions. Then it will install your site.
Another configuration file will be created at
$SLASH_PREFIX/$SITENAME/$SITENAME.conf, which will be "Include"'d in
$SLASH_PREFIX/httpd/slash.conf. You'll want to add an "Include" for
the latter in your Apache's httpd.conf if you haven't done so on a
previous site install.
If you are using virtual hosting by hostname, you may also need to
add a NameVirtualHost.
If you don't have your Slash site in the root of the web server
(e.g., http://www.example.com/mysite/ instead of the more usual
http://www.example.com/), you will need to adjust the rootdir,
rdfimage, imagedir, absolutedir, and cookiepath variables, and you
also need to change your Apache config appropriately. If you're
planning on having sections with more than two dots in the hostname
(e.g. your mainpage will be at http://division.company.com/ with a
section at http://newprojects.division.company.com/) you will also
want to set the cookiedomain var (e.g. to .division.company.com).
These are all in the vars table of your database.
NOTE: Read the message printed at the end of running
install_slashsite. Failure to pay attention here is another common
reason we see for Slash installations not working.
Ubuntu NOTE: Reported after installing on Kubuntu 7.10, a Slash
install's idea of run-levels was not sufficient to start slashd at
boot. The following makes sure that all the right run-levels are
covered, and that rebuilding Slash won't mistakenly double-start the
daemon:
sudo update-rc.d -f slash remove
sudo update-rc.d slash defaults
sudo mv /etc/rc3.d/S*slash /etc/rc3.d/S99slash
sudo mv /etc/rc6.d/K*slash /etc/rc6.d/K99slash
7. Start it up.
After installation of the site is done, you'll need to start Apache.
Stop it if necessary, then start it:
apachectl stop
apachectl start
Use the apachectl script under the APACHE_PREFIX you specified in
step 3. Don't try its "restart" or "graceful" options, you'll need
to do a full stop and start.
Then run slashd. This should be done via the init script:
/etc/init.d/slash start
slashd is the daemon that runs routine maintenance on Slash sites,
including sending out daily mailings, cleaning up the database, and
updating stories. The init script above will start up an individual
slashd daemon process for each installed site (and while running,
they will spawn child processes, some of which may run for a long
time or until you stop slashd with "slash stop").
Now's a good time to (re)read the "SECURITY NOTES" section at the
end of this file.
8. Stay in touch.
For as long as you are running a Slash site, you should stay on our
"slashcode-announce" mailing list, to receive notification of
security issues (and, rarely, other major news of interest to Slash
admins). You can sign up at:
https://lists.sourceforge.net/lists/listinfo/slashcode-announce
You may wish to subscribe to "slashcode-general", for discussion of
running Slash sites. This list probably averages 1-2 emails a day,
mostly on administration issues, and bugs and features in Slash.
https://lists.sourceforge.net/lists/listinfo/slashcode-general
You may also wish to create a user on slashcode.com and subscribe to
its daily newsletter. If/when news is posted to that site, you'll be
in the loop.
If you want to register your new site, feel free to do so at
http://slashcode.com/sites.pl.
INSTALLATION OPTIONS
Multiple Servers
You can, of course, have a separate database server from your Slash
server. Further, you can have multiple web servers for one Slash site,
and a good thing too because web server RAM/CPU will probably be your
first bottleneck as your site grows.
Slashdot has one primary server with all of the code (Apache, perl,
etc.) in /usr/local. That server runs slashd and NFS. Our slashd writes
directly to its /usr/local/slash. Each web server mounts /usr/local
read-only over NFS. (Yes, NFS has a reputation for being flaky, but
we've never had a problem with it, which we attribute both to good
sysadmins and to only exporting our filesystem read-only.)
Some notes:
* Make sure the MySQL server allows the user to log in from each web
server, and the slashd server.
* Make sure, if you use the same httpd tree on all machines, that the
httpd.conf is listening to the proper IP addresses. This can be done
by putting all of the IP addresses in the conf file, or by having a
separate Listen file on each machine. Similarly, make sure that each
web server's logfiles are unique to each machine, not written to the
NFS volume.
Virtual Hosts
Slash has support for virtual hosts, so you can have multiple Slash
sites on one machine. Simply execute step 6 in the install process for
each Slash site (after adding a new virtual user to DBIx::Password for
each).
SSL
In Slash, there are two variables for the root URL of the site.
absolutedir is the full URL, including protocol, while rootdir is the
URL without protocol:
absolutedir http://slashcode.com
rootdir //slashcode.com
absolutedir is used only for creating external links to the site (such
as in RSS files). rootdir is used for internal links; that way, you can
use the same HTML pages for SSL and non-SSL. You don't have to do
anything special to the code or preferences to allow it to work with SSL
by itself, SSL and non-SSL together, or non-SSL by itself.
Non-Root
It is theoretically possible to install and run everything here without
root.
It is not easy. If you don't know your flavor of unix intimately, we
don't recommend trying this.
Describing the process for a non-root install would take up significant
space and time, having to account for differences in various systems,
and all the workarounds necessary for it to work. We don't support it,
and we're not going to document it.
If you must have a non-root install, consult the various documentation
for Apache, MySQL, and perl about running and installing without root
access. Then, for Slash, you need to set the make variables PREFIX,
SLASH_PREFIX, and INIT appropriately for your needs.
Note: Slash sites (or, more accurately, Apache + mod_perl and MySQL)
take up a lot of system resources. It is *not advisable* for anyone to
run Slash on any system, without the permission of the administrator of
that system.
Memcached
Memcached is not required, but Slash includes optimizations that move
load from your (expensive) MySQL server to a (very cheap) memcached
server or servers. If you are concerned about performance, this is one
of the first options to install. You can probably install it using your
operating system's package management, and/or see
http://www.danga.com/memcached/.
A 64 or 128 MB memcached instance should be plenty for moderate-sized
Slash sites. Just set the vars 'memcached', 'memcached_keyprefix', and
'memcached_servers', and restart apache and slashd. That's it.
(As of August 2006, Slashdot uses a total of 2 GB of memcached, but
that's in small allocations spread across many servers because we like
redundancy. Last I checked the 2 GB wasn't even half full.)
Separate Image Server
Those of you with infinite RAM will have no problems hosting as many
Slash sites as you want on a single box running just Apache. Those whose
RAM is limited may be able to keep your MaxClients down to a reasonable
level to avoid going into swap, and still not lock clients out of your
website, by using a separate webserver process to deliver your images.
This is possible with any website, of course, not just a Slash site, but
because Slash's httpd clients all have mod_perl, a lot of perl modules,
and a lot of templates all compiled into RAM, they are especially heavy.
While serving an image may take only a few milliseconds, which would you
rather have tied up on your computer for those milliseconds, 25 MB of
RAM or 5 MB?
Slashdot, and some other Slash sites we're hosting, are currently using
boa 0.94.14rc17 (http://www.boa.org/) for images. Boa is fast and has a
small footprint. It's easy to build ("./configure && make") but you have
to install it yourself by copying the binary and mkdir'ing a little tree
wherever you want it. We did roughly this. Your mileage may vary. This
sets up an alternate server just for images on port 8080, and sets
Slash's imagedir var to point to it. Your apache will still serve images
at the old URLs if anyone requests them, but nobody will, because your
site's pages will all point to boa:
# Install boa and set up its files.
cd /usr/local/src/boa-0.94.14rc17
./configure && make
mkdir /usr/local/boa
mkdir /usr/local/boa/bin
mkdir /usr/local/boa/htdocs
cp -a src/{boa,boa_indexer,webindex.pl} /usr/local/boa/bin/
ln -s /usr/local/slash/site/mysite/htdocs/images /usr/local/boa/htdocs/images.mysite.com
touch /usr/local/boa/htdocs/favicon.ico
# Set up and edit boa conf file.
cp examples/boa.conf /usr/local/boa/
# At this point we patched /usr/local/boa/boa.conf, changing
# Port to 8080, ServerName to www.mysite.com, DocumentRoot to
# /usr/local/boa/htdocs, and commenting out the DirectoryIndex,
# DirectoryMaker, Alias and ScriptAlias directives.
# Start boa.
/usr/local/boa/bin/boa
# In mysql client:
# UPDATE vars SET value='//www.mysite.com:8080/images.mysite.com' WHERE name='imagedir';
# INSERT IGNORE INTO story_dirty SELECT stoid FROM stories WHERE in_trash='no';
# Restart apache, slashd; let slashd rewrite .shtml files both
# recent and archived.
You'll probably also want to create a script in your init.d and rcN.d
directories so boa runs at startup along with apache.
UPGRADING
Some of these upgrade procedures are still in testing. Please read them
entirely before beginning. We are not responsible for any loss of data
or functionality.
Slash 1.0 -> Slash 2.2
You've got a site running Slash 1.0, from 2001? We're so sorry to hear
that.
Please read the complete documentation of utils/slash1toslash2.2. We
believe it will convert your database from Slash 1.0 to a new Slash 2.2
database, but it hasn't been tested in some time. The program
documentation (which can be read with perldoc) details exactly what
process it follows to do the conversion, so you can attempt to do it by
hand if you prefer.
Slash 2.0 -> Slash 2.2
Slash 2.2 is a major upgrade from Slash 2.0. It takes a little bit of
work to get it going.
1. BACK EVERYTHING UP ON THE EXISTING SITE.
2. Install Bundle::Slash. If you have done so previously, follow the
instructions for removing the existing version of Bundle::Slash
before proceeding.
3. Apply this patch to your installed Slash::Install module (probably
easiest to hand-edit the file):
--- Install.pm~ Wed May 9 15:02:34 2001
+++ Install.pm Fri Sep 28 12:44:41 2001
@@ -116,7 +116,7 @@
sub writeTemplateFile {
my($self, $filename, $template) = @_;
open(FILE, '>' . $filename) or die "$! unable to open file $filename to write to";
- for (keys %$template) {
+ for (qw(section description title page lang name template seclev)) {
next if ($_ eq 'tpid');
print FILE "__${_}__\n";
$template->{$_} =~ s/\015\012/\n/g;
4. Run "template-check" on your site, and make a note of every change
you've made to the standard templates. You will need to make those
changes again, manually, later.
This is unfortunately unavoidable, because templates include code
that changes significantly between releases. It is recommended that
you compile your changes into a THEME so they may easily be updated
and applied.
5. Stop Apache and slashd on the target machine(s).
6 Install Slash.
If installing on a different machine ...
1 Install slash 2.2 as normal. Do not yet run "install-slashsite".
2 Make sure that from this machine, you can access not only the
database used for this installation, but the one used for the
old installation. You may wish to, instead of accessing that
database directly if it on another machine, dumping it and
adding it to your new database server under a different name.
3 Add a virtual user to DBIx::Password for the old installation.
If installing on the same machine ...
1 Create a new database for the new installation. You cannot use
the same database for both installations.
2 Add a new virtual user to DBIx::Password for the new database,
and update (and flush) MySQL privileges appropriately. You
cannot use the same virtual user for both installations.
3 It is highly recommended that you move /usr/local/slash (or
whatever your installation directory is) to a new location, such
as /usr/local/slash-old, and install a clean slash 2.2
installation. However, this is not necessary to do; you may
install slash 2.2 on top of the slash 2.0 installation.
The reason to not move anything is that you can keep any
customizations done (images, additional scripts and plugins,
static files, etc.). The reason to move it is so that everything
is clean. It is highly recommended that you move it, and then
manually copy back the pieces you want.
4 In any event, either move the old directory, or don't, and then
install slash 2.2 as normal. Do not yet run "install-slashsite".
7. If you have plugins or themes from the old installation to install,
copy them over now. Warning: some plugins and themes might need to
be ported first. You may wish to deal with them later if they are
not yet ported to slash 2.2.
8. Run "install-slashsite". Use the new virtual user.
9. Copy over any files (images, FAQs, etc.) that need to be copied, if
necessary.
10. Run update script, utils/slash2toslash2.2. Read its instructions!
11. Update templates.
12. Doublecheck Apache configs (httpd/slash.conf,
site/sitename/sitename.conf). These configs have changed from the
last version. Read the comments and set them up as desired.
13. Start Apache.
14. Start slashd.
Slash 2.2.x -> Slash 2.2.y
Read all of this section before doing any of it.
The first thing to do is to, as per the instructions below under
INSTALLATION, unpack the latest distribution and run make and make
install with the proper arguments.
Overwriting Changes
This process will overwrite any customizations of your installed
modules, or customizations of the installed scripts in
/usr/local/slash/themes/ and /usr/local/slash/plugins/ (for themes
and plugins that come with Slash). If you ran "install-slashsite"
with the default option of using symlinks, and made customizations
to the originals instead of breaking the symlink and copying the
file over, then this will overwrite your changes.
If you did modify the original instead of a copy, then break the
symlink, copy over the original (as modified), and then continue.
The original will be copied over by the new version, and your
modified copy will remain intact.
Templates
With every update, there are changes to templates. But most people
will modify their templates. A relatively simple way to see what has
changed is to use template-tool and template-check. This procedure
should help most users deal with the integration of new templates
into an existing site (it will only work with the slashcode theme,
but a simple modification to the code of template-check can fix
that).
Dump
Use template-tool to dump your templates into an empty
directory.
% mkdir templates
% cd templates
% template-tool -u VIRTUAL_USER -d
(Defaults to current directory.)
Compare
Use template-check to compare installed templates in
/usr/local/slash/themes/slashcode/ and /usr/local/slash/plugins/
against the templates that have been dumped.
% template-check -u VIRTUAL_USER
(Defaults to current directory.)
This will use diff to show you the differences. You can either
go into the templates with a text editor (in another window) and
change the dumped ones by hand, edit them by hand in the
Template Editor via the web browser, or take a note of every
template you want to copy over your existing template.
After each directory of templates is done, hit "q" to continue
to the next plugin/theme.
Sync
If you made changes by hand via the web, you are done.
Otherwise, take the list of templates to update, and pass the
full filenames to template-tool (this will either be the
templates you modified by hand in the dump directory, or the
unmodified ones in the installation directories). You might need
to put each filename in quotes because of the ";" character in
the filenames. This will overwrite your existing template with
the new template.
% template-tool -u VIRTUAL_USER -s LIST
Slash 2.2.6 -> Slash CVS
Use the sql/mysql/upgrades file; see "VERSIONS", "CVS tags", below. This
file is human-readable and very long. You can upgrade a 2.2.6 to the
latest CVS by methodically applying every step in this file, but it is
tedious and requires an engaged human brain reading the comments (i.e.,
don't "mysql slash < upgrades", that will fail miserably).
Slash CVS -> later Slash CVS
Again, use the sql/mysql/upgrades file (and the caveat just mentioned
still applies). Start from the CVS tag you left off at, and proceed to
the CVS tag you upgraded to (which should be the end of the file). If
you're not sure which tag you left off at, you might check the var
'cvs_tag_currentcode', which will contain the right value if you last
updated after September 2005.
In general, you should stop apache and slashd, do a "make install",
apply the upgrades file a line at a time for each Slash site, run
"template-tool -U -u virtusename" and "symlink-tool -U -u virtusername"
for each Slash site, and then start slashd and apache back up.
REQUIREMENTS
Software Requirements
Below, we list the main software components needed. The recommended
version is given. Usually this is the version we have done extensive
testing on, typically a version we have used on Slashdot for some time.
In parentheses we include (but do not recommend or support) the earliest
version we believe could work.
Perl
Version 5.8.7 (5.6.1).
http://www.cpan.org/
MySQL
Version 5.0.22 (4.0.12).
http://www.mysql.com/
MySQL 3.23.x is no longer supported, as of CVS tag T_2_5_0_33
(October 18, 2004). MySQL 4.0.x is not being actively updated by
MySQL AB except for security issues (though as far as we know it
still works fine), so we would recommend that you upgrade to at
least 4.1.x. At some point in the future we will switch over to some
syntaxes which have been recommended for some time which will break
on 4.0.x, so you'll have to upgrade to at least 4.1.x eventually
anyway. (You probably have until 2007 before we spring this on you.)
Slashdot ran on 4.1.x for a long time with no problems, so we now
recommend either that or 5.0.x. We have been testing on 5.0.x for
months, and as of this writing (August 2006), Slashdot has been
running on 5.0.18 and 5.0.22 for some time with no problems. For
what it's worth, we have found the MySQL upgrade process, even
between major versions, to be about as painless as we could have
imagined.
Apache
Version 1.3.34 (1.3.33).
http://httpd.apache.org/
Since most of Apache 1.3.x's recent releases included security
fixes, we wouldn't recommend running an earlier version. Slash is
not compatible with Apache 2.x and we have no plans to port to 2.x
(though we aren't excluding the possibility).
mod_perl
Version 1.29.
http://perl.apache.org/
memcached
Version 1.1.12 (1.1.11).
See "Memcached" above.
Sendmail or other mail transport agent
Refer to your OS distribution.
Perl module distributions
The latest version of each perl module is recommended. To download
and install them, use CPAN -- see "INSTALLATION", item 4, "Install
the perl modules."
Libraries
For Compress::Zlib, the zlib development library is required. For
XML::Parser, the expat library is required. If they are not present
on the system already, download and install them before installing
the modules.
http://www.gzip.org/zlib/
http://sf.net/projects/expat/
The current list of required perl modules can be found in the
Bundle/Slash.pm file. At its end we also list optional modules,
which may be required depending on your setup.
Debian libraries
On Debian Linux, or Debian-based distributions like Ubuntu, the
above libraries can be installed with:
apt-get install zlib1g zlib1g-dev libexpat1 libexpat1-dev
Also on Debian, as of the current writing (July 2006), you will want
libperl-dev. DBD::mysql requires mysql_config and mysql.h; on Debian