From 5f1438354bfa9a45dc4bb0a741c525a8cb7fcde3 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 16 Jan 2012 16:05:00 -0800 Subject: [PATCH] Document nginx, s3 storage in Phabricator Summary: Add nginx documentation and s3 documentation and some other doc tweaks. Test Plan: Generated, read documentation. Reviewers: btrahan, jungejason Reviewed By: btrahan CC: aran, wnemay Maniphest Tasks: T638 Differential Revision: https://secure.phabricator.com/D1426 --- .../configuration/configuration_guide.diviner | 61 +++++++++++++++++-- .../configuring_file_storage.diviner | 11 ++++ src/docs/installation_guide.diviner | 10 +-- 3 files changed, 73 insertions(+), 9 deletions(-) diff --git a/src/docs/configuration/configuration_guide.diviner b/src/docs/configuration/configuration_guide.diviner index 74807f6689..857eaaadf3 100644 --- a/src/docs/configuration/configuration_guide.diviner +++ b/src/docs/configuration/configuration_guide.diviner @@ -28,6 +28,7 @@ Create a new file here: ...where ##myconfig## is some name which identifies your installation. Put this in the file: + name=myconfig.conf.php, lang=php # Change this to the domain which points to your host, i.e. the domain # you set as "phabricator.base-uri". @@ -94,9 +96,60 @@ this: SetEnv PHABRICATOR_ENV custom/myconfig -Now, restart apache 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: +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; + } + } + + location ~ \.php$ { + 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; + } + } + += 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: PHABRICATOR SETUP diff --git a/src/docs/configuration/configuring_file_storage.diviner b/src/docs/configuration/configuring_file_storage.diviner index 3acd641998..0f1def496b 100644 --- a/src/docs/configuration/configuring_file_storage.diviner +++ b/src/docs/configuration/configuring_file_storage.diviner @@ -60,6 +60,17 @@ storage. To do this, set the configuration key: - ##storage.local-disk.path##: Set to some writable directory on local disk. Make that directory. You're done. +== Amazon S3 == + + - **Pros**: Scales well. + - **Cons**: More complicated and expensive than other approaches. + +To enable file storage in S3, set these key: + + - ##amazon-s3.access-key## Your AWS access key. + - ##amazon-s3.secret-key## Your AWS secret key. + - ##storage.s3.bucket## S3 bucket name where files should be stored. + == Custom Engine == For details about writing a custom storage engine, see @{article:File Storage diff --git a/src/docs/installation_guide.diviner b/src/docs/installation_guide.diviner index 5a1a98c117..304d2f7fbd 100644 --- a/src/docs/installation_guide.diviner +++ b/src/docs/installation_guide.diviner @@ -14,8 +14,8 @@ Phabricator is a LAMP application suite, so you basically need LAMP: patches.) Phabricator has active contributors running it on Mac OS X, Amazon Linux, Ubuntu, RHEL and CentOS; if you run into issues on other flavors, send patches or complaints. - - **Apache**: You need Apache. You might be able to use something else, but - you're on your own. + - **Apache** (or nginx): You need Apache (or nginx). You might be able to use + something else, but you're on your own. - **MySQL**: You need MySQL. - **PHP**: You need PHP 5.2 or newer. @@ -38,11 +38,11 @@ If those work for you, you can skip directly to the Otherwise, here's a general description of what you need to install: - git (usually called "git" in package management systems) - - Apache (usually "httpd" or "apache2") + - Apache (usually "httpd" or "apache2") (or nginx) - MySQL Server (usually "mysqld" or "mysql-server") - PHP (usually "php") - - Required PHP extensions: mbstring, iconv, mysql, curl, pcntl (these might be something like - "php-mysql" or "php5-mysql") + - Required PHP extensions: mbstring, iconv, mysql, curl, pcntl (these might be + something like "php-mysql" or "php5-mysql") - Optional PHP extensions: gd, apc (special instructions for APC are available below if you have difficulty installing it), xhprof (instructions below, you only need this if you are developing Phabricator)