Skip to content

Ὄλυμπος — **START HERE** — The Olympus framework, a simple, easy to use, secured and powerful framework to deploy and work with WordPress — An ideal way to build enterprise solutions with WordPress.

License

Notifications You must be signed in to change notification settings

GetOlympus/Olympus

Repository files navigation

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 [email protected]: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:

Variable Type Default value Description
wp_memory_limit String '128M' frontend PHP memory_limit
wp_max_memory_limit String '256M' backend PHP memory_limit
autosave_interval Integer 60 interval in seconds between 2 autosaves
wp_cron_lock_timeout Integer 60 interval in seconds to unlock cron tasks
media_trash Boolean true enable or not trash in media page
disallow_file_mods Boolean false allow users to update core, themes or plugins
image_edit_overwrite Boolean false allow editing images to replace the originals
enforce_gzip Boolean false enforce GZIP encoding
fs_method String false FS method: 'direct', 'ssh2', 'ftpext' or 'ftpsockets'
fs_chmod_dir Integer 0755 Change mode on directories
fs_chmod_file Integer 0644 Change mode on files
wp_temp_dir String '' Temp directory ~ We recommand to leave this empty

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/')
Variable Type Default value Description
cookiehash String 'domaintld' current domain cookie hash
user_cookie String 'olympusu_domaintld' user cookie hash
pass_cookie String 'olympusp_domaintld' password cookie hash
auth_cookie String 'olympusa_domaintld' auth cookie hash
secure_auth_cookie String 'olympuss_domaintld' secure auth cookie hash
logged_in_cookie String 'olympusl_domaintld' logged in cookie hash
recovery_mode_cookie String 'olympusr_domaintld' recovery mode cookie hash
cookiepath String 'www.domain.tld' home cookie hash
sitecookiepath String 'www.domain.tld/cms/' site cookie hash
admin_cookie_path String 'www.domain.tld/cms/wp-admin/' admin panel cookie hash
plugins_cookie_path String 'www.domain.tld/statics/plugins/' plugins url cookie hash
cookie_domain Boolean false enable or not cookie domain
test_cookie String 'olympusis_trying' testing cookie hash

Debug section, sets all debug options:

Variable Type Default value Description
concatenate_scripts Boolean false enable or not scripts concatenation
compress_scripts Boolean false enable or not scripts compression
compress_css Boolean false enable or not stylesheets compressions
wp_sandbox_scraping Boolean true turn off WSOD default protection
error_level Integer 200 error level, see Log levels

Multisite section, sets default current site definitions in multisite case

Variable Type Default value Description
subdomain_install Boolean true use or not sub domain display
domain_current_site String 'www.domain.tld' url to the current (main) website
path_current_site String '/cms/' path to current (main) website
site_id_current_site Integer 1 site id of the main website
blog_id_current_site Integer 1 blog id of the main website

Website section, sets all statics folder names:

Variable Type Default value Description
wp_content_dir String '/path/to/web_docroot/statics/' path to your statics folder
wp_content_url String 'https://www.domain.tld/statics/' url to your statics folder
contentdir String '../statics' path from ABSPATH to statics
wpmu_plugin_dir String '/path/to/web_docroot/statics/mu-plugins/' path to your mu-plugins folder
wpmu_plugin_dir String 'https://www.domain.tld/statics/mu-plugins/' url to your mu-plugins folder
muplugindir String '../statics/mu-plugins' path from ABSPATH to mu-plugins
wp_plugin_dir String '/path/to/web_docroot/statics/plugins/' path to your plugins folder
wp_plugin_url String 'https://www.domain.tld/statics/plugins/' url to your plugins folder
plugindir String '../statics/plugins' path from ABSPATH to plugins
wp_theme_dir String '/path/to/web_docroot/statics/themes/' path to your themes folder
wp_theme_url String 'https://www.domain.tld/statics/themes/' url to your themes folder
themedir String '../statics/themes' path from ABSPATH to themes

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

About

Ὄλυμπος — **START HERE** — The Olympus framework, a simple, easy to use, secured and powerful framework to deploy and work with WordPress — An ideal way to build enterprise solutions with WordPress.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published