Installation Requirements:

  • PHP 7.1
  • Composer

Installing Legato is very simple, first ensure you have the right PHP version and composer installed then in your command prompt run:

$ composer create-project legato/legato blog

The above command will create a new Legato project inside a new folder name blog, then:

$ cd blog

and then run

$ composer dump-autoload

Local Development With VirtualHost

The entry point for your Legato framework project is the index.php file which located inside the public directory, of course, you're free to change this according to your need.

If you choose to follow the default setup, then you may need to create an entry in /etc/httpd/vhosts (for apache users on Linux) similar to the following:

<VirtualHost *:80>

    DocumentRoot /var/www/html/blog/public

    ServerName example.com

</VirtualHost>

Restart Apache $ service httpd restsart

And for Nginx add the following directive to your conf file

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

Restart Nginx $ service nginx restart

Navigate to http://example.com, you should be able to view the app.

Local Development With PHP inbuilt server

This is the faster and easier way to start using Legato framework, to run Legato using the inbuilt php server do one of the following:

Default

Open the terminal and switch to your project root directory and then type the command below

php legato start

This will start a server which you can access at: http://localhost:8000

if the server fails to start because it could not find the PHP executable, then you may pass in the --path option to specify the path for your PHP executable for example on a linux OS you may type which php to determine the path of your php executable in most cases it will be /usr/bin/php or simply php.

To specify the path to your PHP executable type:

php legato start --path=/usr/bin/php

Specifying a Different Hostname

if you wish to specify a different hostname you can pass in an optional hostname option to the start command like so:

php legato start --hostname=example.com

make sure to create the domain entry inside your hosts file like so:

#hosts file
127.0.0.1 example.com

This will start a php server which you can access at: http://example.com:8000

Specifying a Different Port number

if you wish to specify a different port you can pass in an optional port option to the start command like so:

php Legato start --port=8009

this will start a php server which you can access at: http://localhost:8009

Specifying a Different Hostname and Port number

if you wish to use a different hostname and port altogether then make sure to create the hostname entry inside your hosts file:

#hosts file
127.0.0.1 example.com

then issue the start command with both options, the order does not matter

php Legato start --hostname=example.com --port=8009

With all options

php Legato start --hostname=example.com --port=8009 --path=/usr/bin/php

this will start a php server which you can access at: http://example.com:8009

Local Development Without VirtualHost

if you choose to run your project without VirtualHost, for example, accessing it with http://localhost/blog/public then ensure to update application css and javascript path from /css/all.css absolute to css.all.css relative.

Production Environment

This guide will help you install Legato anywhere on your filesystem and make it available at http://www.domain.com.

Note: The installation may require the right permissions to change the DocumentRoot on Apache web servers.

After installing your application using one of the methods above into the directory of your choosing, you can simply set your document root to the public directory in the folder you installed Legato and if everything is setup properly you should be able to view you app at http://www.domain.com.

URL Rewriting

Apache

Legato includes a .htaccess file in the public folder which is used to provide URLs without index.php in the path.

Before serving Legato with Apache, be sure to enable the mod_rewrite module so the .htaccess file will be honored by the server.

It should look something like:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

In most OS the line above will be commented out by default, so you may just need to remove the leading # symbols.

After you make changes, restart Apache to make sure the settings are active.

If the .htaccess file that ships with Legato does not work with your Apache installation, try adding:

Options +FollowSymLinks at the very top

Nginx

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

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

Note: Make sure your root is pointing to the public directory

Something like this:


server {
    listen 80;
    server_name www.domain.com;
    root /var/www/project/public;

    index index.php;

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