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