1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-29 18:52:22 +01:00

update readme and docker readme

This commit is contained in:
cyril 2016-04-11 20:24:09 +02:00
parent 563266f160
commit 4845c1cc91
5 changed files with 118 additions and 90 deletions

View File

@ -6,26 +6,27 @@ FabManager is the FabLab management solution. It is web-based, open-source and t
##### Table of Contents
1. [Software stack](#software-stack)
2. [Contributing](#contributing)
3. [Setup a development environment](#setup-a-development-environment)<br/>
3.1. [General Guidelines](#general-guidelines)<br/>
3.2. [Environment Configuration](#environment-configuration)
4. [PostgreSQL](#postgresql)<br/>
4.1. [Install PostgreSQL 9.4 on Ubuntu/Debian](#postgresql-on-debian)<br/>
4.2. [Install and launch PostgreSQL on MacOS X](#postgresql-on-macosx)<br/>
4.3. [Setup the FabManager database in PostgreSQL](#setup-fabmanager-in-postgresql)
5. [ElasticSearch](#elasticsearch)<br/>
5.1. [Install ElasticSearch on Ubuntu/Debian](#elasticsearch-on-debian)<br/>
5.2. [Install ElasticSearch on MacOS X](#elasticsearch-on-macosx)<br/>
5.3. [Setup ElasticSearch for the FabManager](#setup-fabmanager-in-elasticsearch)
6. [Internationalization (i18n)](#i18n)<br/>
6.1. [Translation](#i18n-translation)<br/>
6.1.1. [Front-end translations](#i18n-translation-front)<br/>
6.1.2. [Back-end translations](#i18n-translation-back)<br/>
6.2. [Configuration](#i18n-configuration)<br/>
6.2.1. [Settings](#i18n-settings)<br/>
6.2.2. [Applying changes](#i18n-apply)
7. [Known issues](#known-issues)
8. [Related Documentation](#related-documentation)
3. [Setup a production environment with Docker and CoreOS](#setup-a-production-environment)<br/>
4. [Setup a development environment](#setup-a-development-environment)<br/>
4.1. [General Guidelines](#general-guidelines)<br/>
4.2. [Environment Configuration](#environment-configuration)
5. [PostgreSQL](#postgresql)<br/>
5.1. [Install PostgreSQL 9.4 on Ubuntu/Debian](#postgresql-on-debian)<br/>
5.2. [Install and launch PostgreSQL on MacOS X](#postgresql-on-macosx)<br/>
5.3. [Setup the FabManager database in PostgreSQL](#setup-fabmanager-in-postgresql)
6. [ElasticSearch](#elasticsearch)<br/>
6.1. [Install ElasticSearch on Ubuntu/Debian](#elasticsearch-on-debian)<br/>
6.2. [Install ElasticSearch on MacOS X](#elasticsearch-on-macosx)<br/>
6.3. [Setup ElasticSearch for the FabManager](#setup-fabmanager-in-elasticsearch)
7. [Internationalization (i18n)](#i18n)<br/>
7.1. [Translation](#i18n-translation)<br/>
7.1.1. [Front-end translations](#i18n-translation-front)<br/>
7.1.2. [Back-end translations](#i18n-translation-back)<br/>
7.2. [Configuration](#i18n-configuration)<br/>
7.2.1. [Settings](#i18n-settings)<br/>
7.2.2. [Applying changes](#i18n-apply)
8. [Known issues](#known-issues)
9. [Related Documentation](#related-documentation)
@ -49,6 +50,11 @@ Contributions are welcome. Please read [the contribution guidelines](CONTRIBUTIN
**IMPORTANT**: **do not** update Arshaw/fullCalendar.js as it contains a hack for the remove-event cross.
<a name="setup-a-production-environment"></a>
## Setup a production environment with Docker and CoreOS
[Docker Readme](docker/README.md)
<a name="setup-a-development-environment"></a>
## Setup a development environment
@ -543,7 +549,7 @@ After modifying any values concerning the localisation, restart the application
<a name="related-documentation"></a>
## Related Documentation
- [Ruby 2.2.3](http://ruby-doc.org/core-2.2.3/)
- [Ruby 2.3.0](http://ruby-doc.org/core-2.3.0/)
- [Ruby on Rails](http://api.rubyonrails.org)
- [AngularJS](https://docs.angularjs.org/api)
- [Angular-Bootstrap](http://angular-ui.github.io/bootstrap/)

View File

@ -1,14 +1,50 @@
# full procedure to put into production a fabmanager app with Docker
## Docker
This README tries to describe all steps to put a fabmanager app into production on a server, based on a solution using Docker and DigitalOcean.
In order to make all this stuff working, please use the same directories structure as described in this guide in your fabmanager app folder.
Docker is an application deployment software.
### docker/env
## PREPARE HOST COREOS
Install VPS WITH Version coreOS STABLE (Ex : on DigitalOcean)
Make a copy of the **env.example** and use it as a starting point.
List all the environment variables needed by your application.
### Creating Swap File in CoreOS
### docker/nginx_with_ssl.conf.example
* Use nginx.conf.example especially if you are not using **SSL**
* Replace **MAIN_DOMAIN** (example: fab-manager.com).
* Replace **URL_WITH_PROTOCOL_HTTPS** (example: https://www.fab-manager.com).
* Replace **ANOTHER_URL_1**, **ANOTHER_URL_2** (example: .fab-manager.fr)
## Things are getting serious, starting deployment process guys
### setup the server
Go to **DigitalOcean** and create a Droplet with operating system coreOS **stable**.
You need at least 2GB of addressable memory (RAM + swap) to install and use FabManager!.
Choose datacenter. Set hostname as your domain name.
### Buy domain name and link it with the droplet
1. Buy a domain name on OVH
2. Replace IP of the domain with droplet's IP (you can enable the flexible ip and use it)
3. **Do not** fuck up trying to access your domain name right away, DNS are not aware of the change yet so **WAIT** and be patient.
### Connect to the droplet via SSH
You can already connect to the server with this command: `ssh core@droplet-ip`. When DNS propagation will be done, you will be able to
connect to the server with `ssh core@your-domain-name`.
### Create SWAP file in coreOS
Firstly, switch to sudo and create swap file
```bash
sudo -i
touch /2GiB.swap
@ -18,7 +54,8 @@ chmod 600 /2GiB.swap
mkswap /2GiB.swap
```
Create file /etc/systemd/system/swap.service with
Create file **/etc/systemd/system/swap.service**, filling it with the lines:
```bash
[Unit]
Description=Turn on swap
@ -35,43 +72,44 @@ WantedBy=multi-user.target
```
Then add service and start:
```bash
systemctl enable /etc/systemd/system/swap.service
systemctl start swap
systemctl start swap
exit
```
## PREPARE FOLDERS AND ENV CONFIG ON HOST
### Setup folders and env file
```bash
mkdir -p /home/core/fabmanager/config
MOVE docker/env.example to /home/core/fabmanager/config/env
CUSTOM ENV
```
Copy the previously customized `env` file as `/home/core/fabmanager/config/env`.
```bash
mkdir -p /home/core/fabmanager/config/nginx
MOVE docker/nginx.conf.example to /home/core/fabmanager/config/nginx/fabmanager.conf
CUSTOM fabmanager.conf
```
IF SSL
mkdir -p /home/core/fabmanager/config/nginx/ssl
Move your crt and deprotected key
MOVE docker/nginx_with_ssl.conf.example to /home/core/fabmanager/config/nginx/fabmanager.conf
CUSTOM fabmanager.conf
Copy the previously customized `nginx.conf` as `/home/core/fabmanager/config/nginx/fabmanager.conf`.
## DEPLOY DOCKERS CONTAINERS ON HOST
### Deploy dockers containers on host
```bash
docker pull redis:3.0
docker pull postgres:9.4
docker pull elasticsearch:1.7
docker pull sleede/fabmanager
docker pull sleede/fab-manager
docker run --restart=always -d --name=fabmanager-postgres -v /home/core/fabmanager/postgresql:/var/lib/postgresql/data postgres:9.4
docker run --restart=always -d --name=fabmanager-redis -v /home/core/fabmanager/redis:/data redis:3.0
docker run --restart=always -d --name=fabmanager-elastic -v /home/core/fabmanager/elasticsearch:/usr/share/elasticsearch/data elasticsearch:1.7
```
### DB CREATE
### Rails specific commands
#### DB CREATE
```bash
docker run --rm \
@ -80,11 +118,11 @@ docker run --rm \
--link=fabmanager-elastic:elasticsearch \
-e RAILS_ENV=production \
--env-file /home/core/fabmanager/config/env \
sleede/fabmanager \
sleede/fab-manager \
bundle exec rake db:create
```
### DB MIGRATE
#### DB MIGRATE
```bash
docker run --rm \
@ -93,11 +131,11 @@ docker run --rm \
--link=fabmanager-elastic:elasticsearch \
-e RAILS_ENV=production \
--env-file /home/core/fabmanager/config/env \
sleede/fabmanager \
sleede/fab-manager \
bundle exec rake db:migrate
```
### DB SEED
#### DB SEED
```bash
docker run --rm \
@ -106,12 +144,12 @@ docker run --rm \
--link=fabmanager-elastic:elasticsearch \
-e RAILS_ENV=production \
--env-file /home/core/fabmanager/config/env \
sleede/fabmanager \
sleede/fab-manager \
bundle exec rake db:seed
```
### PREPARE ELASTIC
#### PREPARE ELASTIC
```bash
docker run --rm \
@ -121,27 +159,12 @@ docker run --rm \
--link=fabmanager-elastic:elasticsearch \
-e RAILS_ENV=production \
--env-file /home/core/fabmanager/config/env \
sleede/fabmanager \
sleede/fab-manager \
bundle exec rake fablab:es_build_stats
```
### recreate every versions of images
```bash
docker run --rm \
--link=fabmanager-postgres:postgres \
--link=fabmanager-redis:redis \
--link=fabmanager-elastic:elasticsearch \
-e RAILS_ENV=production \
--env-file /home/core/fabmanager/config/env \
-v /home/core/fabmanager/public/uploads:/usr/src/app/public/uploads \
sleede/fabmanager \
bundle exec rake fablab:build_images_versions
```
### BUILD ASSETS
#### BUILD ASSETS
```bash
docker run --rm \
@ -151,16 +174,12 @@ docker run --rm \
-e RAILS_ENV=production \
--env-file /home/core/fabmanager/config/env \
-v /home/core/fabmanager/public/assets:/usr/src/app/public/assets \
sleede/fabmanager \
sleede/fab-manager \
bundle exec rake assets:precompile
docker run --rm -v /home/core/fabmanager/public/assets:/usr/src/app/public/assets sleede/fabmanager cp vendor/assets/components/select2/select2.png public/assets/select2.png
docker run --rm -v /home/core/fabmanager/public/assets:/usr/src/app/public/assets sleede/fabmanager cp vendor/assets/components/select2/select2x2.png public/assets/select2x2.png
docker run --rm -v /home/core/fabmanager/public/assets:/usr/src/app/public/assets sleede/fabmanager cp vendor/assets/components/select2/select2-spinner.gif public/assets/select2-spinner.gif
```
### RUN APP
#### RUN APP
```bash
docker run --restart=always -d --name=fabmanager \
@ -177,19 +196,22 @@ docker run --restart=always -d --name=fabmanager \
-v /home/core/fabmanager/public/uploads:/usr/src/app/public/uploads \
-v /home/core/fabmanager/invoices:/usr/src/app/invoices \
-v /home/core/fabmanager/log:/var/log/supervisor \
sleede/fabmanager
sleede/fab-manager
```
### for debug
```bash
docker run --rm -it \
--link=fabmanager-postgres:postgres \
--link=fabmanager-redis:redis \
--link=fabmanager-elastic:elasticsearch \
-e RAILS_ENV=production \
--env-file /home/core/fabmanager/config/env \
sleede/fabmanager \
bash
```
### Dockers utils
#### Restart app
`docker restart fabmanager-app`
#### Remove app
`docker rm -f fabmanager-app`
#### Open a bash in the app context
`docker exec -it fabmanager-app bash`

View File

@ -4,7 +4,7 @@ upstream puma {
server {
listen 80;
server_name demo.fab-manager.com;
server_name MAIN_DOMAIN;
root /usr/src/app/public;
location ^~ /assets/ {

View File

@ -4,11 +4,11 @@ upstream puma {
server {
listen 443 ssl;
server_name demo.fab-manager.com;
server_name MAIN_DOMAIN;
root /usr/src/app/public;
ssl on;
ssl_certificate /etc/nginx/conf.d/ssl/fab-manager.crt;
ssl_certificate_key /etc/nginx/conf.d/ssl/fab-manager.deprotected.key;
ssl_certificate /etc/nginx/conf.d/ssl/MAIN_DOMAIN.crt;
ssl_certificate_key /etc/nginx/conf.d/ssl/MAIN_DOMAIN.deprotected.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
@ -58,6 +58,6 @@ server {
server {
listen 80;
server_name demo.fab-manager.com;
rewrite ^ https://demo.fab-manager.com$request_uri? permanent;
server_name MAIN_DOMAIN ANOTHER_DOMAIN_1 ANOTHER_DOMAIN_2;
rewrite ^ URL_WITH_PROTOCOL_HTTPS$request_uri? permanent;
}

View File

@ -5,7 +5,7 @@ file=/var/run/supervisor.sock ; path to your socket file
nodaemon=true ; dont run supervisord as a daemon
logfile=/var/log/supervisor/supervisord.log ; supervisord log file
logfile_maxbytes=10MB ; maximum size of logfile before rotation
logfile_backups=10 ; number of backed up logfiles
logfile_backups=100 ; number of backed up logfiles
loglevel=info ; info, debug, warn, trace
pidfile=/var/run/supervisord.pid ; pidfile location
user=root ; default user