Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/getolympus/olympus
Ὄλυμπος — **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.
https://github.com/getolympus/olympus
capistrano composer container dionysos hades hera hermes hestia olympus php wordpress wordpress-plugin wordpress-theme wordpress-website zeus
Last synced: 1 day ago
JSON representation
Ὄλυμπος — **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.
- Host: GitHub
- URL: https://github.com/getolympus/olympus
- Owner: GetOlympus
- License: mit
- Created: 2016-01-09T18:10:49.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-06-23T08:39:22.000Z (5 months ago)
- Last Synced: 2024-08-23T18:43:52.463Z (2 months ago)
- Topics: capistrano, composer, container, dionysos, hades, hera, hermes, hestia, olympus, php, wordpress, wordpress-plugin, wordpress-theme, wordpress-website, zeus
- Language: PHP
- Homepage: https://getolympus.me
- Size: 328 KB
- Stars: 1
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Olympus
[![Olympus Component][olympus-image]][olympus-url]
[![CodeFactor Grade][codefactor-image]][codefactor-url]
[![Packagist Version][packagist-image]][packagist-url]
![PHP Version][php-image]
[![Travis Status][travis-image]][travis-url]
[![MIT][license-image]][license-blob]> 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.```sh
# 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?](#what-is-olympus)
- [Features](#features)
- [Get started](#get-started)
- [Install Olympus in 2 steps](#install-olympus-in-2-steps)
- [Update Vhost](#update-vhost)
- [Build database](#build-database)
- [Get started with Capistrano](#get-started-with-capistrano)
- [Build scripts](#build-scripts)
- [Update Vhost with Capistrano](#update-vhost-with-capistrano)
- [Build database with Capistrano](#build-database-with-capistrano)
- [Advanced details](#advanced-details)
- [Application Structure](#application-structure)
- [Configuration files](#configuration-files)
- [Variables definitions](#variables-definitions)
- [Log levels](#log-levels)
- [Release History](#release-history)
- [Authors and Copyright](#authors-and-copyright)
- [Contributing](#contributing)---
## 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**](https://getcomposer.org)
+ Remote server automation tool with [**Capistrano**](http://capistranorb.com/) and [**Olympus Hestia Capistrano**](https://github.com/GetOlympus/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):
```bash
# 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](https://getcomposer.org/doc/00-intro.md) to know how to install Composer_```bash
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**](https://capistranorb.com).
### 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:```bash
# 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**](https://github.com/GetOlympus/Hestia-Capistrano) repository to know more.
### Update Vhost with Capistrano
As seen on the ["Update Vhost"](#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:
```bash
+-- 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 saltsAn 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](#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](#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**][changelog-blob] for all details.
---
## Contributing
1. Fork it ()
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](https://github.com/crewstyle "Achraf Chouk") ~ (c) since a long time.**
**Logo design made lovely by [Anis Chouk](https://anischouk.com/ "Anis Chouk")**[olympus-image]: https://img.shields.io/badge/for-Olympus-44cc11.svg?style=flat-square
[olympus-url]: https://github.com/GetOlympus
[changelog-blob]: https://github.com/GetOlympus/Olympus/blob/master/CHANGELOG.md
[codefactor-image]: https://www.codefactor.io/repository/github/getolympus/olympus/badge?style=flat-square
[codefactor-url]: https://www.codefactor.io/repository/github/getolympus/olympus
[license-blob]: https://github.com/GetOlympus/Olympus/blob/master/LICENSE
[license-image]: https://img.shields.io/badge/license-MIT_License-blue.svg?style=flat-square
[packagist-image]: https://img.shields.io/packagist/v/getolympus/olympus.svg?style=flat-square
[packagist-url]: https://packagist.org/packages/getolympus/olympus
[php-image]: https://img.shields.io/travis/php-v/GetOlympus/Olympus.svg?style=flat-square
[travis-image]: https://img.shields.io/travis/GetOlympus/Olympus/master.svg?style=flat-square
[travis-url]: https://travis-ci.org/GetOlympus/Olympus