[[system_configuration]] == Configuration [[deployment_configuration]] === Deployment Configuration There are a few main tasks to perform after just running the installer to get your system fully operational. The script `/opt/perforce/helix-web-services/bin/hws_configure` can be run on most "clean" operating systems to perform all of these steps. Not all of these steps will be performed, necessarily. For example, if you already have nginx running, we will not modify your system configuration. You will have to configure a reverse proxy to the unicorn server running at port 9000. [cols="2*", options="header"] |=== | Description | Default set by `hws_configure` | Notes | Establish the user account for running Helix Web Services | helixwebservices | Will not be created if already exists | Create directory for temporary data, assign to user account | `/var/lib/perforce/helix_web_services` | Will not be created if already exists | Create directory for logging data, assign to user account | `/var/log/perforce/helix_web_services` | Will not be created if already exists | Link upstart configuration | `/etc/init/helix_web_services.conf` is linked from `/opt/perforce/helix-web-services/etc/init/helix_web_services.conf` | | Install and configure nginx | nginx is installed from system packages, a self-signed key is created or installed, and the default /etc/nginx/nginx.conf is setup as a reverse proxy to Unicorn running at port 9000 | If nginx is already installed, *none of these steps* will be performed. | Install and configure a Helix Versioning Engine for evaluation | Installs the `perforce-server` system package, and then configures a `helix-evaluation` instance to run at port 1666. | If `perforce-server` is already installed, does nothing. |=== For details of the steps taken, review the script code online at: https://swarm.workshop.perforce.com/projects/perforce-software-helix-web-services/files/main/source/helix_web_services/bin/hws_configure === Available Application Settings System default settings for Helix Web Services can be set by creating a YAML file at `/etc/perforce/helix_web_services.conf`. If you're unfamiliar with YAML, you simply use the variables below in simple key-value pairs. Pay attention, however, to the type of the variable. In many cases we use strings when you might have thought it were a number. For example: /etc/perforce/helix_web_services.conf ---- P4PORT: 'perforce.mycompany.com:1999' ---- Many settings in Helix Web Services are overridable by HTTP headers on a per-request basis. The "Overridable" column in the table below means you can specify this header. If it is not available, you can _only_ specify the configuration in the system config file. For more information on specifying the system header, see <<per_request_configuration>>. [cols="5*", options="header"] |=== | Variable | Type | Overridable | Description | Default | `COMMAND_WHITELIST` | Array | No | Allows access to run commands via <<get_p4_vX_commands_command>> or <<post_p4_vX_commands_command>>. Each element in the array is either the name of a command to allow, or an array of the command name and any required arguments. | `["info", ["files", "-m"]]` | `CUSTOM_SCRIPTS` | String | No | The local directory that will load up user defined Ruby scripts. | /var/lib/perforce/helix_web_services/scripts | `ENABLE_GIT_FUSION` | Boolean | No | Switch to enable GitFusion endpoints. | false | `CLOUD_SETTINGS` | String | No | Settings file to load to enable running against Helix Cloud | config/hws_settings.conf | `HVE_PROJECTS_PATH` | String | Yes | The depot location in the Helix Versioning Engine that hosts all projects in that server. | | `P4HOST` | String | Yes | The hostname for the perforce server, e.g., `perforce.example.com` | | `P4PORT` | String | Yes | The port number (or port and hostname combination) that indicates our Perforce connection | `1666` | `P4CHARSET` | String | Yes | The charset value for P4 connections. Set to `none` if you are connecting to a non-unicode server. | `auto` | `P4PASSWD` | String | Yes | The user password to use for p4 connections. For many cases, like where the authentication source is a p4d server, this will default to the authentication token password. | | `SERVICE_CONFIGURATION` | String | No | Local file location that defines how services are to be configured. | `/etc/perforce/services.json` | `TRUST_FINGERPRINTS` | String | No | Local file path that indicates a list of allowed SSL fingerprints. | | `WORKSPACE_DIR` | String | No | The local directory used for generating temporary Perforce Client Workspaces to do some basic operations. | `/var/lib/perforce/helix_web_services/workspaces` |===
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#7 | 16114 | Doug Scheirer | Merge from main | ||
#6 | 16080 | Doug Scheirer | Update the cloud settings configurable, improve the example file with supported values | ||
#5 | 16079 | Doug Scheirer | Merge from main | ||
#4 | 16014 | Doug Scheirer | Merge down from main | ||
#3 | 15726 | Doug Scheirer | merge from main | ||
#2 | 15715 | Doug Scheirer | merge changes from main | ||
#1 | 15688 | Doug Scheirer |
Populate -o //guest/perforce_software/helix-web-services/... //guest/doug_scheirer/helix-web-services/.... |
||
//guest/perforce_software/helix-web-services/main/source/doc/03_configuration.asc | |||||
#1 | 15622 | tjuricek |
Move source code to 'source/' subdirectory of branch. build/ will remain where it is. |
||
//guest/perforce_software/helix-web-services/main/doc/03_configuration.asc | |||||
#11 | 15545 | tjuricek | Place in config and hooks for Helix Cloud authentication. | ||
#10 | 15483 | tjuricek |
Add a new 'hws_console` application to the deployment. This should give users the ability to use the Ruby client for quick and dirty debugging of issues with HWS. Since it's so easy, I've added it to the deployment guide. |
||
#9 | 15437 | tjuricek |
Basic "HVE Project" implementation. This will allow directories in a HVE instance to host 'projects' for use by helix sync. There are no methods defined for creating the projects, however. This does not include any specialization or testing in the Qt API yet. I may investigate creating a "higher level" interface for Qt client apps. |
||
#8 | 15297 | tjuricek |
Implement of 'cluster services' configuration. The configuration will be stored in a local JSON file, which is expected to be maintained by the systems admin. Eventually, it's expected to have this sort of thing implemented via Helix Admin. |
||
#7 | 15257 | tjuricek |
Added stress test, corrected per-request header config. Apparently using underscores is a "special" mechanism for HTTP headers, and requires adjusting nginx to allow such things. Might as well just recommend using hyphens, which get converted to underscores anyway. The current test just hits a listing of 20000 files against p4play. Returns a 2.5 MB response, which doesn't seem to cause problems (yay). |
||
#6 | 15240 | tjuricek |
Set api level via request path on all Helix Versioning Engine methods. This will allow migration of applications to different P4D versions. Our internal methods (like project API) should attempt to handle backward compatibility similarly. P4WEBAPI-118 |
||
#5 | 15229 | tjuricek | Remove incorrect default setting for P4HOST | ||
#4 | 15208 | tjuricek |
Revise 'command' implementation, tests, and documentaiton. This includes a change from a command blacklist to a whitelist. See P4WEBAPI-21 |
||
#3 | 15110 | tjuricek | Revise changes methods for new p4 connection handling, add server specs, remove model references in client, and update asciidoc documentation. | ||
#2 | 15090 | tjuricek |
Update _proposed_ API for project services. This is *very likely* to change, and will not be implemented until reviewed. |
||
#1 | 15038 | tjuricek | Document 'login' auth method and client programming overview. |