Create manual_installation_production.md

I think it's this. Please review to be sure that I am not missing anything.
I was a bit confused with the directory links in the installer instructions, because in unix you don't create directories to then link them, since the command `ln -s` already creates the linked directory. But I think it's this. Please review and amend it accordingly
This commit is contained in:
João Pimentel Ferreira
2020-11-11 22:28:19 +01:00
committed by Javi Martín
parent 1eb5495754
commit 140fd80b23
2 changed files with 95 additions and 0 deletions

View File

@@ -20,6 +20,7 @@
* [Installer](en/installation/installer.md)
* [Create a deploy user](en/installation/create_deploy_user.md)
* [Generating SSH Key](en/installation/generating_ssh_key.md)
* [Manual installation (not recommended)](en/installation/manual_installation_production.md)
* [Digital Ocean](en/installation/digital_ocean.md)
* [Heroku](en/installation/deploying-on-heroku.md)
* [Docker](en/installation/docker.md)

View File

@@ -0,0 +1,94 @@
# Manual installation for production
**WARNING:** This method is *not recommended* and not officially supported, since you should use the [installer](https://github.com/consul/installer) instead. Use this method if the installer isn't an option and you can already deal with PostgreSQL, puma or passenger, NGNIX and SSL (with letsencrypt, for instance).
This guide assumes you've already [installed all the necessary packages](prerequisites.md) on your system.
The created directory structure herein is to be used with [capistrano](https://capistranorb.com/documentation/getting-started/structure/).
## Folder structure
First, create the main folder, clone the repo to a repo directory, and create the needed folders:
```
mkdir consul
cd consul
git clone --mirror https://github.com/consul/consul.git repo
mkdir releases shared
mkdir shared/log shared/tmp shared/config shared/public shared/storage
mkdir -p shared/public/assets shared/public/system shared/public/ckeditor_assets shared/public/machine_learning/data
```
## Initial release
Extract from the repo the first release to the respective directory, and create the symbolic link of the current release (replace `<latest_consul_stable_version>` with the latest version number, like 1.3.1 or 1.4.1):
```
cd repo
git archive <latest_consul_stable_version> | tar -x -f - -C ../releases/first
cd ..
ln -s releases/first current
```
## Gems installation
Install the gems CONSUL depends on:
```
cd releases/first
bundle install --path ../../shared/bundle --without development test
cd ../..
```
## Configuration files
Generate the `database.yml` and `secrets.yml` files:
```
cp current/config/secrets.yml.example shared/config/secrets.yml
cp current/config/database.yml.example shared/config/database.yml
cd releases/first/config
ln -s ../../../shared/config/database.yml
ln -s ../../../shared/config/secrets.yml
cd ../../..
```
Edit the `shared/config/database.yml` file, filling in `username` and `password` with the data generated during the [PostgreSQL setup](debian.md#postgresql-94).
We now need to generate a secret key:
```
cd current
bin/rake secret RAILS_ENV=production
cd ..
```
Copy that generated key, and edit the `shared/config/secrets.yml` file; under the section `production`, change the following data:
```
secret_key_base: enter_the_secret_key_you_have_just_generated
server_name: enter_your_domain
```
If you aren't using a SSL certificate, replace the line saying `force_ssl: true` with `force_ssl: false`.
## Database setup
Create a database, load the seeds and compile the assets:
```
cd current
bin/rake db:migrate RAILS_ENV=production
bin/rake db:seed RAILS_ENV=production
bin/rake assets:precompile RAILS_ENV=production
```
## Starting the application
And, finally, start the Rails server:
```
bin/rails s -e production
```
Congratulations! Your server is now running in the production environment :smile:.