Update Install.md for Mavericks and fix typos
[WebKit-https.git] / Websites / perf.webkit.org / Install.md
1 # Checking Out the Code and Installing Required Applications
2
3 The instructions assume you're using Mac OS X (Mavericks for Server.app case and Mountain Lion without Server.app) as the
4 host server, and assume that we're installing this application at `/Volumes/Data/perf.webkit.org`.
5
6 You can choose between using Server.app or install the required tools separately
7
8 1. Install Server.app (if you don't want to use Server.app, install PostgreSQL: http://www.postgresql.org/download/macosx/)
9 2. Install node.
10 3. Install Xcode with command line tools (only needed for svn)
11 4. `svn co https://svn.webkit.org/repository/webkit/trunk/Websites/perf.webkit.org /Volumes/Data/perf.webkit.org`
12 5. Inside `/Volumes/Data/perf.webkit.org`, run `npm install pg`.
13
14
15 # Configuring Apache
16
17 You can use apachectl to start/stop/restart apache server from the command line:
18
19  - Starting httpd: `sudo apachectl start`
20  - Stopping httpd: `sudo apachectl stop`
21  - Restarting httpd: `sudo apachectl restart`
22
23 ## Instructions if you're using Server.app
24
25  - Enable PHP web applications
26  - Go to Server Website / Store Site Files In, change it to /Volumes/Data/perf.webkit.org/public/`
27  - Go to Server Website / Edit advanced settings, enable Allow overrides using .htaccess files
28
29 ## Instructions if you're not using Server.app
30
31  - Edit /private/etc/apache2/httpd.conf
32
33      1. Change DocumentRoot to `/Volumes/Data/perf.webkit.org/public/`
34      2. Uncomment `"LoadModule php5_module libexec/apache2/libphp5.so"`
35      3. Modify the directives for the document root and / to allow overriding `"All"`
36      4. Delete directives on CGI-Executables
37
38  - In Mavericks and later, copy php.ini to load pdo_pgsql.so pgsql.so.
39     `sudo cp /Applications/Server.app/Contents/ServerRoot/php.ini /etc/`
40
41
42 ## Common directives for the related apache config file
43
44   httpd config file is located at:
45
46     - With Server.app: /Library/Server/Web/Config/apache2/sites/0000_any_80.conf (and/or 0000_any_`PORT#`.conf)
47     - Without: /private/etc/apache2/httpd.conf
48
49  1. Update ServerAdmin to your email address
50  2. Add the following directives to enable gzip:
51
52         <IfModule mod_deflate.c>
53             AddOutputFilterByType DEFLATE text/html text/xml text/plain application/json application/xml application/xhtml+xml
54         </IfModule>
55
56  3. Add the following directives to enable zlib compression and MultiViews on perf.webkit.org/public:
57
58         Options Indexes MultiViews
59         php_flag zlib.output_compression on
60
61 The apache logs are located at `/private/var/log/apache2`.
62
63
64 # Protecting the Administrative Pages to Prevent Execution of Arbitrary Code
65
66 By default, the application gives the administrative privilege to everyone. Anyone can add, remove, or edit tests,
67 builders, and other entities in the database and may even execute arbitrary JavaScript on the server via aggregators.
68
69 We recommend protection via Digest Auth on https connection.
70
71 Generate a password file via `htdigest -c <path> <realm> <username>`, and then create admin/.htaccess with:
72
73         AuthType Digest
74         AuthName "<Realm>"
75         AuthDigestProvider file
76         AuthUserFile "<Realm>"
77         Require valid-user
78
79 where <Realm> is replaced with the realm of your choice, which will be displayed on the username/password input box.
80
81
82 # Configuring PostgreSQL
83
84 1. Create database: `/Applications/Server.app/Contents/ServerRoot/usr/bin/initdb /Volumes/Data/perf.webkit.org/PostgresSQL`
85 2. Start database:
86    `/Applications/Server.app/Contents/ServerRoot/usr/bin/pg_ctl -D /Volumes/Data/perf.webkit.org/PostgresSQL
87    -l logfile -o "-k /Volumes/Data/perf.webkit.org/PostgresSQL" start`
88
89 ## Creating a Database and a User
90
91 The binaries located in PostgreSQL's directory, or if you're using Server.app in /Applications/Server.app/Contents/ServerRoot/usr/bin/
92
93 1. Create a database: `createdb webkit-perf-db -h localhost`
94 2. Create a user: `createuser -P -S -e webkit-perf-db-user -h localhost`
95 3. Connect to database: `psql webkit-perf-db -h localhost`
96 4. Grant all permissions to the new user: `grant all privileges on database "webkit-perf-db" to "webkit-perf-db-user";`
97 5. Update database/config.json.
98
99 ## Initializing the Database
100
101 Run `database/init-database.sql` in psql as `webkit-perf-db-user`:
102 `psql webkit-perf-db -h localhost --username webkit-perf-db-user -f init-database.sql`
103
104 ## Making a Backup of the Database
105
106 Run `/Applications/Server.app/Contents/ServerRoot/usr/bin/pg_dump -h localhost --no-owner -f <filepath> safari-perf-db`