Waxx uses a simple YAML file for config. Each environment has its own directory with a
config.yaml file and any other environment-specific files.
In the installation directory, there is a folder
opt/ |-- active -> dev # A symbolic link to the the active config folder (dev in this case) |-- deploy.yaml # How to deploy to each environment (servers and commands to run, see below.) |-- dev # The dev environment | |-- config.yaml # The config file (see details below) | |-- nginx.conf # The webserver config file | `-- ssl # The container for SSL keys and certs | |-- fullchain.pem # Self-signed cert for development | `-- privkey.pem `-- prod # The production environment |-- config.yaml # The config file (see details below) |-- deploy # A deploy script that is run on the production server(s) (see below) `-- nginx.conf # The production webserver config (could be Apache or HAProxy too) # SSL certs for production are stored on the production servers (or you can put them here) # stage and test folders are also here.
server: host: localhost # IP or host name to listen on port: 7777 # Port to listen on min_threads: 4 # Start this many threads (each thread has a database connection) max_threads: 4 # Additional threads will be added up to max if the queue is full idle_thread_timeout: 300 # Kill a thread that is idle for this many seconds log_dir: log # Where to put the logs pid_dir: tmp/pids # Where to store the pid file (used for stopping and restarting the processs) site: name: The name of your app or site support_email: firstname.lastname@example.org # The email used to send email from by default. (This is bogus address for the docs) url: https://www.waxx.io/ # The URL of your site. This is normally not the same as the server/host above. encryption: # Every waxx installation should have its own random strings here. DO NOT COPY THESE!!! cipher: AES-256-CBC # The encryption cypher to use (anything supported by OpenSSL) key: S0M3-r@nd0m-32-CHAR-5TR!NG...... # The 32-character key (random string - DO NOT COPY!!!) iv: A-16-CHAR-5TR!NG # The 16-character initiation vector (random string - DO NOT COPY!!!) cookie: # Cookie options. Waxx uses two cookies user: # A short-lived session cookie name: wxu # Session cookie name expires_after_login_mins: 1440 # Expires in minutes after login expires_after_activity_mins: 480 # Expires in minutes after last activity secure: true # Only send over HTTPS agent: # A long-lived cookie for things like preferences or login name name: wxa # Client cookie name expires_years: 30 # Expires in years. Use decimals for less than 1 year: .25 = 3 months secure: true # Only send over HTTPS debug: # How to handle bugs level: 9 # The level to print to the logs (0 = no debugging, 9 = all debugging) on_screen: true # Show the error report on the screen (normally for dev mode and maybe staging) send_email: false # Send an email bug report (normally for production, maybe for staging) email: email@example.com # Who to send the email to (This is a bogus address) auto_reload_code: true # Detect code changes and reload if changed (set to false for production) databases: # You can have zero or more database connections. Each connection must have a unique name here. app: postgresql://waxx@localhost:5432/waxx # A sample postgres connection string. This connection is available as x.db.app anywhere in the system. blog: sqlite3:///home/waxx/dev/db/blog.db # An sqlite file db. x.db.blog forum: mysql2://waxx@localhost/waxx # A MySQL or MariaDB connection. x.db.forum default: # Defaults path info. If path is "/" then the 'index' runner of the App::Website module will be run app: website # Default module (x.app) act: index # Default runner (x.act) ext: html # Default extension (x.ext). This drived the Content-Type response header too if there is no extension in the path smtp: # SMTP settings. Only needed if your app sends email. server: aeromail.io # Server host name user: smtp-user-name # Login pass: smtp-password # Password port: 587 # Port tls: true # TLS (should be true or authentication should not be plain) authentication: plain # Change for other authentication types file: # Waxx has a primitive file server for dev puposes if needed serve: false # Serve files (not recommended for production) path: public # The path relative to the install directory (Waxx::Root or Conf/:opts/:base)
You can add any other params you want to config.yaml like keys and passwords to third-party services.
All values set here are available system-wide in the
Waxx::Conf constant or the shorcut
Waxx. For example these are all equivelant:
Waxx has very few patches to Ruby standard classes. One of them is the Hash#/ method that gets hash values by string or symbol. Think of it as "dividing the hash by key". So the config options are also available like so:
All four options above will return the name of your site.
When you are ready to put your app in production, see Things to change for production Waxx installations