diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 2addbbe17..f88e3c711 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -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) diff --git a/docs/en/installation/manual_installation_production.md b/docs/en/installation/manual_installation_production.md new file mode 100644 index 000000000..6de6accac --- /dev/null +++ b/docs/en/installation/manual_installation_production.md @@ -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 `` with the latest version number, like 1.3.1 or 1.4.1): + +``` +cd repo +git archive | 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:.