-
Notifications
You must be signed in to change notification settings - Fork 117
/
prod-server.html.md.erb
111 lines (71 loc) · 4.13 KB
/
prod-server.html.md.erb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
---
title: Configuring the production server for Cloud Foundry apps
owner: Buildpacks
---
You can configure a production server for your apps in Cloud Foundry.
When you deploy an app, Cloud Foundry determines the command that is used to start the app through the following process:
1. If you use the command `cf push -c COMMAND`, then Cloud Foundry uses `COMMAND` to start the app.
1. If you create a file called a Procfile, Cloud Foundry uses Procfile to configure the command that launches the app.
See <a href="#procfile">About Procfiles</a>.
1. If you do not use `cf push -c COMMAND` and do not create a Procfile, then Cloud Foundry does one of the following,
depending on the buildpack:
+ Uses a default start command.
+ Fails to start the app and shows a warning that the app is missing a Procfile.
## <a id="procfile"></a>Procfiles
Use a Procfile to specify a start command for buildpacks when a default start command is not provided.
Some buildpacks use Python to work on a variety of frameworks and do not attempt to provide a default start command.
Another reason to use a Procfile is to configure a production server for web apps.
When you use a Procfile, you declare required runtime processes, and called process types, for your web app.
Process managers in a server use the process type to run and manage the workload.
In a Procfile, you declare one process type per line and use the following syntax:
<pre class="terminal">
PROCESS-TYPE: COMMAND
</pre>
Where:
* `PROCESS-TYPE` is `web`. A `web` process handles HTTP traffic.
* `COMMAND` is the command line to launch the process.
For example, a Procfile with the following content starts the launch script created by the build process for a Java app:
```console
web: build/install/MY-PROJECT-NAME/bin/MY-PROJECT-NAME
```
Procfile support is integrated into the [buildpack lifecycle](https://github.com/cloudfoundry/buildpackapplifecycle).
However, due to differing behavior of buildpacks, it might not be suitable with all buildpacks.
Procfiles can be used with the
following buildpacks:
* [Binary buildpack](./binary/index.html)
* [.NET Core buildpack](./dotnet-core/index.html)
* [Go buildpack](./go/index.html)
* [NGINX buildpack](./nginx/index.html)
* [Node.js buildpack](./node/index.html)
* [Python buildpack](./python/index.html)
* [R buildpack](./r/index.html)
* [Ruby buildpack](./ruby/index.html)
## <a id="specify-server"></a>Specifying a web server
Follow these steps to specify a web server using a Procfile.
For more information about configuring a web server for Rails apps, see [Configuring a Ruby web server](#config-ruby).
1. Create a blank file with a command line for a `web` process type.
2. Save it as a file named `Procfile` with no extension in the root directory of your app.
3. Push your app.
## <a id="config-ruby"></a>Configuring a Ruby web server
Cloud Foundry uses the default standard Ruby web server library WEBrick for Ruby and Ruby on Rails apps.
However, Cloud Foundry can support a more robust production web server. For example, Phusion Passenger, Puma, Thin, or Unicorn.
To instruct Cloud Foundry to use a web server other than WEBrick, use the following steps:
1. Add the gem for the web server to your Gemfile.
1. In the `config` directory of your app, create a new configuration file or modify an existing file.
See your web server documentation for how to configure this file.
The following example uses the Puma web server:
<pre class="terminal">
# config/puma.rb
threads 8,32
workers 3
<br>
on_worker_boot do
# things workers do
end
</pre>
1. In the root directory of your app, create a Procfile and add a command line for a `web` process type that points to your web server.
For information about configuring the specific command for a process type, see your web server documentation.<br/><br/>
The following example shows a command that starts a Puma web server and specifies the app runtime environment, TCP port, paths to the server state information, and configuration files:
<pre class="terminal">
web: bundle exec puma -e $RAILS_ENV -p 1234 -S ~/puma -C config/puma.rb
</pre>