2011-02-11 14:58:45 -08:00
|
|
|
@title Configuration Guide
|
|
|
|
@group config
|
|
|
|
|
|
|
|
This document contains basic configuration instructions for Phabricator.
|
|
|
|
|
|
|
|
= Prerequisites =
|
|
|
|
|
|
|
|
This document assumes you've already installed all the components you need.
|
|
|
|
If you haven't, see @{article:Installation Guide}.
|
|
|
|
|
2011-05-05 11:00:05 -07:00
|
|
|
= Configuring Phabricator =
|
|
|
|
|
|
|
|
Create a new file here:
|
|
|
|
|
|
|
|
path/to/phabricator/conf/custom/myconfig.conf.php
|
|
|
|
|
|
|
|
...where ##myconfig## is some name which identifies your installation. Put this
|
|
|
|
in the file:
|
|
|
|
|
2012-01-16 16:05:00 -08:00
|
|
|
name=myconfig.conf.php, lang=php
|
2011-05-05 11:00:05 -07:00
|
|
|
<?php
|
|
|
|
|
|
|
|
return array(
|
|
|
|
|
|
|
|
// Important! This will put Phabricator into setup mode to help you
|
|
|
|
// configure things.
|
|
|
|
'phabricator.setup' => true,
|
|
|
|
|
2011-05-12 08:15:02 -07:00
|
|
|
// This will be the base domain for your install, and must be configured.
|
|
|
|
// Use "https://" if you have SSL. See below for some notes.
|
|
|
|
'phabricator.base-uri' => 'http://phabricator.example.com/',
|
|
|
|
|
2011-09-14 08:15:34 -07:00
|
|
|
// Connection information for MySQL.
|
|
|
|
'mysql.host' => 'localhost',
|
|
|
|
'mysql.user' => 'root',
|
|
|
|
'mysql.pass' => 'trustno1hunter2',
|
|
|
|
|
|
|
|
// Basic email domain configuration.
|
|
|
|
'metamta.default-address' => 'noreply@phabricator.example.com',
|
|
|
|
'metamta.domain' => 'phabricator.example.com',
|
|
|
|
|
|
|
|
// NOTE: Check default.conf.php for detailed explanations of all the
|
|
|
|
// configuration options, including these.
|
|
|
|
|
2011-05-05 11:00:05 -07:00
|
|
|
) + phabricator_read_config_file('production');
|
|
|
|
|
|
|
|
For the last line, you can also use ##'development'## instead of
|
|
|
|
##'production'## if you are planning to develop Phabricator itself. This will
|
|
|
|
turn on some debugging features.
|
|
|
|
|
Make SQL patch management DAG-based and provide namespace support
Summary:
This addresses three issues with the current patch management system:
# Two people developing at the same time often pick the same SQL patch number, and then have to go rename it. The system catches this, but it's silly.
# Second/third-party developers can't use the same system to manage auxiliary storage they may want to add.
# There's no way to build mock databases for unit tests that need to do reads.
To resolve these things, you can now name your patches whatever you want and conflicts are just merge conflicts, which are less of a pain to fix than filename conflicts.
Dependencies are now a DAG, with implicit dependencies created on the prior patch if no dependencies are specified. Developers can add new concrete subclasses of `PhabricatorSQLPatchList` to add storage management, and define the dependency branchpoint of their patches so they apply in the correct order (although, generally, they should not depend on the mainline patches, presumably).
The commands `storage upgrade --namespace test1234` and `storage destroy --namespace test1234` will allow unit tests to build and destroy MySQL storage.
A "quickstart" mode allows an upgrade from scratch in ~1200ms. Destruction takes about 200ms. These seem like fairily reasonable costs to actually use in tests. Building from scratch patch-by-patch takes about 6000ms.
Test Plan:
- Created new databases from scratch with and without quickstart in a separate test namespace. Pointed the webapp at the test namespaces, browsed around, everything looked good.
- Compared quickstart and no-quickstart dump states, they're identical except for mysqldump timestamps and a few similar things.
- Upgraded a legacy database to the new storage format.
- Destroyed / dumped storage.
Reviewers: edward, vrana, btrahan, jungejason
Reviewed By: btrahan
CC: aran, nh
Maniphest Tasks: T140, T345
Differential Revision: https://secure.phabricator.com/D2323
2012-04-30 07:54:00 -07:00
|
|
|
= PHABRICATOR_ENV Environment Variable =
|
|
|
|
|
|
|
|
When running Phabricator scripts, they will ask you to set the `PHABRICATOR_ENV`
|
|
|
|
environment variable to point at your config. If you put your script in
|
|
|
|
`custom/myconfig.conf.php`, you can identify the config with
|
|
|
|
`custom/myconfig`, like this:
|
|
|
|
|
|
|
|
$ PHABRICATOR_ENV=custom/myconfig ./some_phabricator_command
|
|
|
|
|
|
|
|
NOTE: Make sure you put 'PHABRICATOR_ENV=...' at the beginning of the line, not
|
|
|
|
in the middle. The shell won't parse environmental variables declared after the
|
|
|
|
command. You can also ##export PHABRICATOR_ENV=...## in your ~/.bashrc or
|
|
|
|
~/.profile or similar, depending on which shell you use and how your system is
|
|
|
|
configured.
|
|
|
|
|
|
|
|
= Storage: Configuring MySQL =
|
|
|
|
|
|
|
|
Get MySQL running and verify you can connect to it. Consult the MySQL
|
|
|
|
documentation for help. When MySQL works, you need to load the Phabricator
|
|
|
|
schemata into it. To do this, run:
|
|
|
|
|
|
|
|
phabricator/ $ ./bin/storage upgrade
|
|
|
|
|
|
|
|
If your configuration uses an unprivileged user to connect to the database, you
|
|
|
|
may have to override the default user so the schema changes can be applied with
|
|
|
|
root or some other admin user:
|
|
|
|
|
|
|
|
phabricator/ $ ./bin/storage upgrade --user <user> --password <password>
|
|
|
|
|
|
|
|
You can avoid the prompt the script issues by passing the ##--force## flag (for
|
|
|
|
example, if you are scripting the upgrade process).
|
|
|
|
|
|
|
|
phabricator/ $ ./bin/storage upgrade --force
|
|
|
|
|
|
|
|
NOTE: When you update Phabricator, run `storage upgrade` again to apply any
|
|
|
|
new updates.
|
|
|
|
|
2012-01-16 16:05:00 -08:00
|
|
|
= Webserver: Configuring Apache =
|
2011-02-11 14:58:45 -08:00
|
|
|
|
|
|
|
Get Apache running and verify it's serving a test page. Consult the Apache
|
|
|
|
documentation for help. Make sure ##mod_php## and ##mod_rewrite## are enabled,
|
|
|
|
and ##mod_ssl## if you intend to set up SSL.
|
|
|
|
|
|
|
|
If you haven't already, set up a domain name to point to the host you're
|
|
|
|
installing on. You can either install Phabricator on a subdomain (like
|
|
|
|
phabricator.example.com) or an entire domain, but you can not install it in
|
|
|
|
some subdirectory of an existing website. Navigate to whatever domain you're
|
|
|
|
going to use and make sure Apache serves you something to verify that DNS
|
|
|
|
is correctly configured.
|
|
|
|
|
|
|
|
Now, either create a VirtualHost entry (to put Phabricator on a subdomain)
|
|
|
|
or edit the Directory entry for the DocumentRoot. It should look something like
|
|
|
|
this:
|
|
|
|
|
2012-01-16 16:05:00 -08:00
|
|
|
name=httpd.conf
|
2011-02-11 14:58:45 -08:00
|
|
|
<VirtualHost *>
|
2011-05-12 08:15:02 -07:00
|
|
|
# Change this to the domain which points to your host, i.e. the domain
|
|
|
|
# you set as "phabricator.base-uri".
|
2011-02-11 14:58:45 -08:00
|
|
|
ServerName phabricator.example.com
|
2011-03-06 14:56:12 -08:00
|
|
|
|
2011-02-11 14:58:45 -08:00
|
|
|
# Change this to the path where you put 'phabricator' when you checked it
|
|
|
|
# out from github when following the Installation Guide.
|
|
|
|
DocumentRoot /path/to/phabricator/webroot
|
2011-03-06 14:56:12 -08:00
|
|
|
|
2011-02-11 14:58:45 -08:00
|
|
|
RewriteEngine on
|
|
|
|
RewriteRule ^/rsrc/(.*) - [L,QSA]
|
|
|
|
RewriteRule ^/favicon.ico - [L,QSA]
|
2012-03-15 15:14:24 -07:00
|
|
|
RewriteRule ^(.*)$ /index.php?__path__=$1 [B,L,QSA]
|
2011-02-11 14:58:45 -08:00
|
|
|
|
2011-05-05 11:00:05 -07:00
|
|
|
# This will use the config file you set up in the previous step. If you
|
|
|
|
# called it something other than 'myconfig', put that here.
|
|
|
|
SetEnv PHABRICATOR_ENV custom/myconfig
|
2011-02-11 14:58:45 -08:00
|
|
|
</VirtualHost>
|
2011-03-06 14:56:12 -08:00
|
|
|
|
2012-01-16 16:05:00 -08:00
|
|
|
Continue to "Setup" below.
|
|
|
|
|
|
|
|
= Webserver: Configuring nginx =
|
|
|
|
|
|
|
|
For nginx, use a configuration like this:
|
|
|
|
|
|
|
|
name=nginx.conf
|
|
|
|
server {
|
|
|
|
server_name phabricator.example.com;
|
|
|
|
|
|
|
|
root /path/to/phabricator/webroot;
|
|
|
|
try_files $uri $uri/ /index.php;
|
|
|
|
|
|
|
|
location / {
|
|
|
|
index index.php;
|
|
|
|
|
|
|
|
if ( !-f $request_filename )
|
|
|
|
{
|
|
|
|
rewrite ^/(.*)$ /index.php?__path__=/$1 last;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-06-14 15:38:55 -07:00
|
|
|
location /index.php {
|
2012-01-16 16:05:00 -08:00
|
|
|
fastcgi_pass localhost:9000;
|
|
|
|
fastcgi_index index.php;
|
|
|
|
|
|
|
|
#custom environment variable
|
|
|
|
fastcgi_param PHABRICATOR_ENV "custom/myconfig";
|
|
|
|
|
|
|
|
#required if PHP was built with --enable-force-cgi-redirect
|
|
|
|
fastcgi_param REDIRECT_STATUS 200;
|
|
|
|
|
|
|
|
#variables to make the $_SERVER populate in PHP
|
|
|
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
|
|
fastcgi_param QUERY_STRING $query_string;
|
|
|
|
fastcgi_param REQUEST_METHOD $request_method;
|
|
|
|
fastcgi_param CONTENT_TYPE $content_type;
|
|
|
|
fastcgi_param CONTENT_LENGTH $content_length;
|
|
|
|
|
|
|
|
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
|
|
|
|
|
|
|
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
|
|
|
|
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
|
|
|
|
|
|
|
|
fastcgi_param REMOTE_ADDR $remote_addr;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
Add docs for using lighttpd as the webserver.
lighttpd could support rules like this, to add efficiency:
# Aggressively cache all static files
$HTTP["url"] =~ "\.(jpg|gif|png|css|js|htc)" {
expire.url = ( "" => "access 1 years" )
}
# Compress files for faster transfer
compress.filetype = (
"text/plain",
"text/html",
"text/javascript",
"text/css",
"text/xml"
)
compress.cache-dir = <would need to set to something>?
I don't know if that is necessary or useful. Probably not a good idea
at this point, where the code is changing so rapidly: a 1 year cache
of javascript code could cause trouble. And i think the default
lighttpd.conf already compresses text/html, text/plain, text/css, and
application/x-javascript by default, so we're ok there (could add
text/javascript and text/xml, I guess).
2012-05-03 13:28:04 -07:00
|
|
|
= Webserver: Configuring lighttpd =
|
|
|
|
|
|
|
|
For lighttpd, add a section like this to your lighttpd.conf:
|
|
|
|
|
|
|
|
$HTTP["host"] =~ "phabricator(\.example\.com)?" {
|
|
|
|
server.document-root = "/path/to/phabricator/webroot"
|
|
|
|
url.rewrite-once = (
|
|
|
|
"^(/rsrc/.*)$" => "$1",
|
|
|
|
"^(/favicon.ico)$" => "$1",
|
|
|
|
# This simulates QSA ("query string append") mode in apache
|
|
|
|
"^(/[^?]*)\?(.*)" => "/index.php?__path__=$1&$2",
|
|
|
|
"^(/.*)$" => "/index.php?__path__=$1",
|
|
|
|
)
|
|
|
|
setenv.add-environment = (
|
|
|
|
"PHABRICATOR_ENV" => "custom/myconfig",
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
You should also ensure the following modules are listed in your
|
|
|
|
server.modules list:
|
|
|
|
|
|
|
|
mod_fastcgi
|
|
|
|
mod_rewrite
|
|
|
|
mod_setenv
|
|
|
|
|
|
|
|
Finally, you should run the following commands to enable php support:
|
|
|
|
|
|
|
|
$ sudo apt-get install php5-cgi # for ubuntu; other distros should be similar
|
|
|
|
$ sudo lighty-enable-mod fastcgi-php
|
|
|
|
|
2012-01-16 16:05:00 -08:00
|
|
|
= Setup =
|
|
|
|
|
|
|
|
Now, restart your webserver and navigate to whichever subdomain you set up. You
|
|
|
|
should either see the Phabricator setup screen, which is a simple text page that
|
|
|
|
looks something like this:
|
2011-05-05 11:00:05 -07:00
|
|
|
|
|
|
|
PHABRICATOR SETUP
|
|
|
|
|
|
|
|
This setup mode will guide you through setting up your Phabricator
|
|
|
|
configuration.
|
|
|
|
|
|
|
|
>>> REQUIRED PHP EXTENSIONS ------------------------------------------------
|
|
|
|
...
|
|
|
|
|
|
|
|
If you see this, you're in good shape. Follow the instructions and correct any
|
|
|
|
problems setup detects. If you don't see it but you do see a useful error
|
|
|
|
message, try to fix that. If neither of these cover you, something is wrong.
|
|
|
|
If you can't figure it out, come get help in IRC or on the mailing list (see
|
|
|
|
http://phabricator.org/ for links).
|
2011-02-11 14:58:45 -08:00
|
|
|
|
|
|
|
= Configuring Phabricator =
|
|
|
|
|
2011-05-05 11:00:05 -07:00
|
|
|
Now that basic setup is complete, you should configure Phabricator for your
|
|
|
|
installation. Phabricator configuration options which control how the
|
|
|
|
applications behave are documented here:
|
2011-02-11 14:58:45 -08:00
|
|
|
|
2011-05-05 11:00:05 -07:00
|
|
|
/path/to/phabricator/conf/default.conf.php
|
2011-03-06 14:56:12 -08:00
|
|
|
|
2011-05-05 11:00:05 -07:00
|
|
|
There are several builtin configurations:
|
2011-02-11 14:58:45 -08:00
|
|
|
|
2011-02-11 16:12:02 -08:00
|
|
|
- ##default.conf.php##: root configuration, lists every configuration option
|
|
|
|
and sets some default for it. Look in this file to figure out what you can
|
2011-02-11 14:58:45 -08:00
|
|
|
configure.
|
2011-02-11 16:12:02 -08:00
|
|
|
- ##development.conf.php##: pulls in ##default.conf.php##, but overrides some
|
2011-02-11 14:58:45 -08:00
|
|
|
configuration options to better values for doing development on Phabricator.
|
|
|
|
You probably don't need to even look at this file unless you're making
|
|
|
|
changes to Phabricator itself.
|
2011-02-11 16:12:02 -08:00
|
|
|
- ##production.conf.php##: pulls in ##default.conf.php##, but overrides some
|
2011-02-11 14:58:45 -08:00
|
|
|
configuration options to provide better values for a production install.
|
2011-03-06 14:56:12 -08:00
|
|
|
|
2011-05-05 11:00:05 -07:00
|
|
|
To actually configure your install, edit your ##custom/myconfig.conf.php## file
|
|
|
|
and override values from either the ##'production'## or ##'development'##
|
|
|
|
configurations. You should not edit the builtin configurations directly because
|
|
|
|
that will make upgrading Phabricator more difficult in the future.
|
2011-04-11 16:47:51 -07:00
|
|
|
|
2011-05-12 08:15:02 -07:00
|
|
|
= Next Steps =
|
|
|
|
|
|
|
|
Continue by:
|
|
|
|
|
2011-05-12 11:02:59 -07:00
|
|
|
- setting up your admin account and login/registration with
|
|
|
|
@{article:Configuring Accounts and Registration}; or
|
2012-07-02 15:22:35 -07:00
|
|
|
- configuring where uploaded files and attachments will be stored with
|
2011-07-19 22:48:38 -07:00
|
|
|
@{article:Configuring File Storage}; or
|
2011-05-12 08:15:02 -07:00
|
|
|
- configuring Phabricator so it can send mail with
|
|
|
|
@{article:Configuring Outbound Email}; or
|
|
|
|
- configuring inbound mail with @{article:Configuring Inbound Email}; or
|
2012-01-12 18:30:36 -08:00
|
|
|
- importing repositories with @{article:Diffusion User Guide}; or
|
2011-05-12 08:15:02 -07:00
|
|
|
- learning about daemons with @{article:Managing Daemons with phd}; or
|
2012-03-13 19:03:01 -07:00
|
|
|
- contributing to Phabricator with @{article:Contributor Introduction}.
|