58e5be778f7c5ae0555d2788db8d7d49e556dae8
[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. Disable directives for CGI-Executables
36
37  - In Mavericks and later, copy php.ini to load pdo_pgsql.so pgsql.so.
38     `sudo cp /Applications/Server.app/Contents/ServerRoot/etc/php.ini /etc/`
39
40
41 ## Common directives for the related apache config file
42
43   httpd config file is located at:
44
45     - With Server.app: /Library/Server/Web/Config/apache2/sites/0000_any_80.conf (and/or 0000_any_`PORT#`.conf)
46     - Without: /private/etc/apache2/httpd.conf
47
48  1. Update ServerAdmin to your email address
49  2. Add the following directives to enable gzip:
50
51         <IfModule mod_deflate.c>
52             AddOutputFilterByType DEFLATE text/html text/xml text/plain application/json application/xml application/xhtml+xml
53         </IfModule>
54
55  3. Add the following directives to enable zlib compression and MultiViews on DocumentRoot (perf.webkit.org/public):
56
57         Options Indexes MultiViews
58         php_flag zlib.output_compression on
59
60 The apache logs are located at `/private/var/log/apache2`.
61
62
63 # Protecting the Administrative Pages to Prevent Execution of Arbitrary Code
64
65 By default, the application gives the administrative privilege to everyone. Anyone can add, remove, or edit tests,
66 builders, and other entities in the database and may even execute arbitrary JavaScript on the server via aggregators.
67
68 We recommend protection via Digest Auth on https connection.
69
70 Generate a password file via `htdigest -c <path> <realm> <username>`, and then create admin/.htaccess with:
71
72         AuthType Digest
73         AuthName "<Realm>"
74         AuthDigestProvider file
75         AuthUserFile "<Realm>"
76         Require valid-user
77
78 where <Realm> is replaced with the realm of your choice, which will be displayed on the username/password input box.
79
80
81 # Configuring PostgreSQL
82
83 1. Create database: `/Applications/Server.app/Contents/ServerRoot/usr/bin/initdb /Volumes/Data/perf.webkit.org/PostgresSQL`
84 2. Start database:
85    `/Applications/Server.app/Contents/ServerRoot/usr/bin/pg_ctl -D /Volumes/Data/perf.webkit.org/PostgresSQL
86    -l logfile -o "-k /Volumes/Data/perf.webkit.org/PostgresSQL" start`
87
88 ## Creating a Database and a User
89
90 The binaries located in PostgreSQL's directory, or if you're using Server.app in /Applications/Server.app/Contents/ServerRoot/usr/bin/
91
92 1. Create a database: `createdb webkit-perf-db -h localhost`
93 2. Create a user: `createuser -P -S -e webkit-perf-db-user -h localhost`
94 3. Connect to database: `psql webkit-perf-db -h localhost`
95 4. Grant all permissions to the new user: `grant all privileges on database "webkit-perf-db" to "webkit-perf-db-user";`
96 5. Update database/config.json.
97
98 ## Initializing the Database
99
100 Run `database/init-database.sql` in psql as `webkit-perf-db-user`:
101 `psql webkit-perf-db -h localhost --username webkit-perf-db-user -f init-database.sql`
102
103 ## Making a Backup of the Database
104
105 Run `/Applications/Server.app/Contents/ServerRoot/usr/bin/pg_dump -h localhost --no-owner -f <filepath> safari-perf-db`