getolympus/olympus

The Olympus framework, your simple, easy to use and powerfull framework to deploy and work with WordPress. An awesome framework build with ♥ for WordPress developers.


README

Olympus

Olympus Component CodeFactor Grade Packagist Version PHP Version Travis Status MIT

The Olympus package is the easiest and secure way to install WordPress websites with the powerfull Zeus Core framework. All WordPress optimizations are listed and enabled here. You can use theme easily.

# Quick install ~ See #install-olympus-in-2-steps section for details
git clone https://github.com/GetOlympus/Olympus.git projectname && cd $_
composer install

Table of Contents

What is Olympus?

The Olympus package is a set of line codes that provides a secure WordPress application structure with better tools to developers. It is aimed to WordPress developers of any levels.

In order to provide those tools, the Olympus package uses dependency manager and remote server automation tool such as Composer and Capistrano. A bunch of auto-generated files and auto-loaded plugins make your WordPress website more secure and faster.

Features

  • Better and secure folder structure
  • Autoloader for mu-plugins
  • Auto-generated configuration files with composer install
  • Dependency management with Composer
  • Remote server automation tool with Capistrano and Olympus Hestia Capistrano

Get started

Install Olympus in 2 steps

1st step, clone the repository (use SSH key if you want on git@github.com:GetOlympus/Olympus.git):

# Change "projectname" to your root website folder name
git clone https://github.com/GetOlympus/Olympus.git projectname && cd $_

2nd step, install package vendors via Composer and set your parameters when it's asked:
See this documentation to know how to install Composer

composer install

Update Vhost

This is quite simple: make the web/ folder as your docroot.
The web/index.php file will bootstrap WordPress with all your configuration files.
Restart your server and That's all folkes.

Build database

Go to your website homepage URL to launch your WordPress install.

Get started with Capistrano

Capistrano is a remote server automation tool.
It supports the scripting and execution of arbitrary tasks, and includes a set of sane-default deployment workflows.

You can find all details on Capistrano website.

Build scripts

You'll need to create your deployments scripts for all your environments. These scripts are written in Ruby programming language.
The Olympus package provides you 2 examples you can easily copy/paste in the app/deploy/stages/ folder:

# You can find all explanations as comments in the `app/deploy/stages/staging.rb.dist` file.
cp app/deploy/stages/production.rb.dist app/deploy/stages/production.rb
cp app/deploy/stages/staging.rb.dist app/deploy/stages/staging.rb

Feel free to read the README.md file of the Olympus Hestia Capistrano repository to know more.

Update Vhost with Capistrano

As seen on the "Update Vhost" section, you'll need to set the current/web/ folder as your docroot this time.
Restart your server and That's all folkes.

Build database with Capistrano

Go to your website homepage URL to launch your WordPress website install.

Advanced details

Application Structure

The Olympus package is structured as this:

+-- app/                        # ~ main application folder
|  +-- cache/                   # stores cache files generated by WordPress plugins and Olympus components
|  +-- components/              # stores custom components used to autoload mu-plugins and error logger
   |  +-- Autoloader
   |  +-- Error
   |  +-- Handler
|  +-- config/                  # stores custom configuration files
   |  +-- env.php.dist
   |  +-- opts.php.dist
   |  +-- own.php.dist
   |  +-- salt.php.dist
|  +-- deploy/                  # stores Capistrano workflows deployments
   |  +-- stages/
      |  +-- production.rb.dist
      |  +-- staging.rb.dist
   |  +-- config.rb.dist
|  +-- environments/            # stores WordPress constants definitions
   |  +-- cache.php
   |  +-- configuration.php
   |  +-- cookies.php
   |  +-- database.php
   |  +-- debug.php
   |  +-- multisite.php
   |  +-- website.php
|  +-- logs/                    # stores log file generated by Monolog package
|  +-- app.php
|  +-- autoload.php
|  +-- environment.php
|  +-- error.php
+-- vendor/                     # ~ vendors downloaded with composer
+-- web/                        # ~ web server doc root
|  +-- cms/                     # stores default WordPress installation
|  +-- resources/               # stores assets files expected by Olympus bundles
   |  +-- dist/
|  +-- statics/                 # stores default "wp-content" folder contents
   |  +-- languages/
   |  +-- mu-plugins/
   |  +-- plugins/
   |  +-- themes/
   |  +-- uploads/
   |  +-- advanced-cache.php
|  +-- .htaccess.dist
|  +-- constants.php            # defines default Olympus package constants
|  +-- favicon.ico              # custom favicon.ico made by anischouk.com
|  +-- index.php                # ~ main file, bootstraps WordPress
|  +-- robots.txt.dist
|  +-- wp-config.php
|  +-- xmlrpc.php
+-- .gitattributes
+-- .gitignore
+-- .travis.yml
+-- Capfile
+-- CHANGELOG.md
+-- composer.json
+-- Gemfile
+-- LICENCE
+-- phpcs.xml
+-- README.md
+-- wp-cli.yml

Configuration files

Go to your app/config/ folder and make sure to find:

  • env.php, contains WordPress website environment configuration
  • own.php, a simple blank PHP file you can fill with your own constants definitions
  • salt.php, contains WordPress authentication unique keys and salts

An other file you can create if needed is:

  • opts.php, contains WordPress constants overrides. Simply copy the opts.php.dist file to opts.php and edit it.
    Be carefull with this file: you can change your WordPress core functions
    See Variables definitions to know more about this opts.php file contents.

Variables definitions

Configuration section, sets memory limit, some security and features options:

Cookies section, sets all cookies names.
In these examples, you can replace:

  • olympus by the result of md5('olympus')
  • domaintld by the result of md5('https://www.domain.tld/cms/')

Debug section, sets all debug options:

Multisite section, sets default current site definitions in multisite case

Website section, sets all statics folder names:

Log levels

  • 100 Detailed debug information.
  • 200 Interesting events, like User logs in, SQL logs.
  • 250 Uncommon events.
  • 300 Exceptional occurrences that are not errors, like use of deprecated APIs, poor use of an API, etc.
  • 400 Runtime errors.
  • 500 Critical conditions.
  • 550 Action must be taken immediately.
  • 600 Urgent alert.

Release History

See CHANGELOG.md for all details.

Contributing

  1. Fork it (https://github.com/GetOlympus/Olympus/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request

Built with ♥ by Achraf Chouk ~ (c) since a long time.
Logo design made lovely by Anis Chouk