Installation

Server Requirements

The O2System framework has a few system requirements to start working on your local application development environment. You will need to make sure your server meets the following requirements:

HTTP Server

  • Apache

    • Module Rewrite (mod_rewrite)

    • Module Header (mod_header)

  • NGINX

    • PHP FPM

  • Microsoft IIS

    • PHP Fast-CGI

    • Rewrite Rule

Supported PHP Versions

  • PHP v5.6.0+

  • PHP v7.0.0+ (Recommended)

For best performance, please use v7.0.0+

PHP Extensions

  • Fileinfo

  • Mcrypt

  • OpenSSL

  • Mbstring

  • Tokenizer

  • XML

  • APCu & Zend OPCache

Installing Framework

The O2System Framework use Composer as Dependency Management so the easiest way to installing is issuing the Composer with create-project command in your terminal:

composer create-project o2system/o2system [project-name]

Local Development Server

If you have PHP installed locally and you would like to use PHP's built-in development server to serve your application, you may use the serve O2System Framework Console command. This command will start a development server at http://localhost:8000

php o2system serve

You may also define PHP's built-in development server to serve your application with custom hostname and custom port number:

php o2system serve --host=example.com --port=80

Configuration

Public Directory

After installing O2System Framework, you should configure your web server's document / web root to be the public directory. The index.php in this directory serves as the front controller for all HTTP requests entering your application.

Configuration Files

All of the configuration files for the O2System Framework are stored in the app/Config directory. Each option is documented, so feel free to look through the files and get familiar with the options available to you.

Directory Permissions

After installing O2System Framework, you may need to configure some permissions. Directories within the cache and the storage directories should be writable by your web server or O2System Framework will not run.

Perizinan Direktori

Setelah selesai melakukan instalasi O2System Framework anda wajib memastikan bahwa direktori cache dan storage dapat ditulis oleh aplikasi anda.

  • Mengubah permission pada direktori cache

    $ chmod -R 777 /path/to/your/project/cache
  • Mengubah permission pada direktori storage

    $ chmod -R 777 /path/to/your/project/storage

Web Server Configuration

Apache

O2System Framework includes a public/.htaccess file that is used to provide URLs without the index.php front controller in the path. Before serving O2System Framework with Apache, be sure to enable the mod_rewritemodule so the .htaccess file will be honored by the server.

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

Options +FollowSymlinks -Indexes
RewriteEngine On

# If you installed O2System in a subfolder, you will need to
# change the following line to match the subfolder you need.
# http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
# RewriteBase /

# Rewrite "www.example.com -> example.com"
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

NGINX

If you are using Nginx, the following directive in your site configuration will direct all requests to the index.php front controller:

server {
        listen *:80;
        server_name example.com *.example.com;

        root  /path/to/your/project/public;
        index  index.html index.htm index.php;

        charset utf-8;

        location / {
                try_files $uri $uri/ /index.php$is_args$args;
        }

        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }

        access_log off;
        error_log  /path/to/your/nginx/logs/example.com.error.log;

        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                
                # fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_pass 127.0.0.1:9000;
                
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors off;
                fastcgi_buffer_size 16k;
                fastcgi_buffers 4 16k;

                include fastcgi_params;
        }

        location ~ /\.ht {
                deny all;
        }
}

Microsoft IIS

If you are using IIS create a web.config file at your public directory and put the following code into it, now all request will direct all requests to the index.php front controller:

<configuration>
        <system.webServer>
                <rewrite>
                        <rules>
                                <clear />
                                <rule name="REQUEST_URI" stopProcessing="true">
                                        <match url="^" ignoreCase="false" />
                                        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                                        </conditions>
                                        <action type="Rewrite" url="index.php" />
                                </rule>
                        </rules>
                </rewrite>
        </system.webServer>
</configuration>

Last updated