It’s a simple step-by-step tutorial, how to setup Laravel project on openSUSE 42.1.

First some requirements to be able to proceed with all steps:

  • openSUSE server (I have it as virtual machine with openSUSE LEap 42.1)
  • Apache web server install on openSUSE (# zypper install apache2)
  • PHP >= 5.5.9 (# zypper install php5)
  • OpenSSL PHP Extension (# zypper install php5-openssl)
  • PDO PHP Extension (# zypper install php5-pdo)
  • Mbstring PHP Extension (# zypper install php5 mbstring)
  • Tokenizer PHP Extension (# zypper install php5-tokenizer)
  • Phar PHP Extension (# zypper install php5-phar)

Once all above are installed we can install composer.phar and then Laravel Framework

Composer installation

First component we have to download and install is composer. That will allow further activity and Laravel project creation.

dev-lnx-01:~ # curl -sS | php
dev-lnx-01:~ # mv composer.phar /usr/local/bin
dev-lnx-01:~ # cd /usr/local/bin
dev-lnx-01:~ # ln -s composer.phar composer

Now we have composer installed and placed in directory added to search path, so it can be run at any time.

Let’s download Laravel Framework components now…

Laravel download

First step will be to download Laravel Framework components using composer.

dev-lnx-01:~ # composer global require "laravel/installer"

Once we have Laravel components downloaded we want to add location of these files to searchable path.

dev-lnx-01:~ # echo PATH=$PATH:~/.composer/vendor/bin > ~/.bash_profile 
dev-lnx-01:~ # cd /usr/local/bin 
dev-lnx-01:~ # ln -s composer.phar composer

Now we can enjoy Laravel Framework Installer.

dev-lnx-01:~ # laravel
Laravel Installer version 1.3.1

  command [options] [arguments]

  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  help  Displays help for a command
  list  Lists commands
  new   Create a new Laravel application.
dev-lnx-01:~ #

We are ready now to create first Laravel Framework-based project…

Laravel project deployment

In order to create Laravel project we have to use Laravel Framework Installer. That will create folder structure with all required libraries and components, so we will have base for further development.

dev-lnx-01:~ # laravel new demo-project
Crafting application...
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
- Installing jakub-onderka/php-console-color (0.1)
Loading from cache

- Installing vlucas/phpdotenv (v2.2.0)
Loading from cache

- Installing symfony/polyfill-mbstring (v1.1.1)
Loading from cache

- Installing symfony/var-dumper (v3.0.3)
Loading from cache

- Installing symfony/translation (v3.0.3)
Loading from cache

- Installing symfony/routing (v3.0.3)
Loading from cache

- Installing symfony/process (v3.0.3)
Loading from cache

- Installing symfony/polyfill-util (v1.1.1)
Loading from cache

- Installing symfony/polyfill-php56 (v1.1.1)
Loading from cache

- Installing symfony/http-foundation (v3.0.3)
Loading from cache

- Installing symfony/event-dispatcher (v3.0.3)
Loading from cache

- Installing psr/log (1.0.0)
Loading from cache

- Installing symfony/debug (v3.0.3)
Loading from cache

- Installing symfony/http-kernel (v3.0.3)
Loading from cache

- Installing symfony/finder (v3.0.3)
Loading from cache

- Installing symfony/console (v3.0.3)
Loading from cache

- Installing swiftmailer/swiftmailer (v5.4.1)
Loading from cache

- Installing nikic/php-parser (v2.0.1)
Loading from cache

- Installing jakub-onderka/php-console-highlighter (v0.3.2)
Loading from cache

- Installing dnoegel/php-xdg-base-dir (0.1)
Loading from cache

- Installing psy/psysh (v0.7.2)
Loading from cache

- Installing paragonie/random_compat (v1.2.2)
Loading from cache

- Installing nesbot/carbon (1.21.0)
Loading from cache

- Installing mtdowling/cron-expression (v1.1.0)
Loading from cache

- Installing monolog/monolog (1.18.1)
Loading from cache

- Installing league/flysystem (1.0.20)
Loading from cache

- Installing jeremeamia/superclosure (2.2.0)
Loading from cache

- Installing doctrine/inflector (v1.1.0)
Loading from cache

- Installing classpreloader/classpreloader (3.0.0)
Loading from cache

- Installing laravel/framework (v5.2.23)
Loading from cache

- Installing fzaninotto/faker (v1.5.0)
Loading from cache

- Installing hamcrest/hamcrest-php (v1.2.2)
Loading from cache

- Installing mockery/mockery (0.9.4)
Loading from cache

- Installing phpdocumentor/reflection-docblock (2.0.4)
Loading from cache

- Installing phpunit/php-token-stream (1.4.8)
Loading from cache

- Installing symfony/yaml (v3.0.3)
Loading from cache

- Installing sebastian/version (1.0.6)
Loading from cache

- Installing sebastian/global-state (1.1.1)
Loading from cache

- Installing sebastian/recursion-context (1.0.2)
Loading from cache

- Installing sebastian/exporter (1.2.1)
Loading from cache

- Installing sebastian/environment (1.3.5)
Loading from cache

- Installing sebastian/diff (1.4.1)
Loading from cache

- Installing sebastian/comparator (1.2.0)
Loading from cache

- Installing phpunit/php-text-template (1.2.1)
Loading from cache

- Installing doctrine/instantiator (1.0.5)
Loading from cache

- Installing phpunit/phpunit-mock-objects (2.3.8)
Loading from cache

- Installing phpunit/php-timer (1.0.7)
Loading from cache

- Installing phpunit/php-file-iterator (1.4.1)
Loading from cache

- Installing phpunit/php-code-coverage (2.2.4)
Loading from cache

- Installing phpspec/prophecy (v1.6.0)
Loading from cache

- Installing phpunit/phpunit (4.8.24)
Loading from cache

- Installing symfony/css-selector (v3.0.3)
Loading from cache

- Installing symfony/dom-crawler (v3.0.3)
Loading from cache

symfony/var-dumper suggests installing ext-symfony_debug ()
symfony/translation suggests installing symfony/config ()
symfony/routing suggests installing doctrine/annotations (For using the annotation loader)
symfony/routing suggests installing symfony/config (For using the all-in-one router or any loader)
symfony/routing suggests installing symfony/dependency-injection (For loading routes from a service)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
symfony/event-dispatcher suggests installing symfony/dependency-injection ()
symfony/http-kernel suggests installing symfony/browser-kit ()
symfony/http-kernel suggests installing symfony/class-loader ()
symfony/http-kernel suggests installing symfony/config ()
symfony/http-kernel suggests installing symfony/dependency-injection ()
psy/psysh suggests installing ext-pcntl (Enabling the PCNTL extension makes PsySH a lot happier :))
psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)
psy/psysh suggests installing ext-posix (If you have PCNTL, you'll want the POSIX extension as well.)
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
monolog/monolog suggests installing raven/raven (Allow sending log messages to a Sentry server)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing videlalvaro/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
league/flysystem suggests installing ext-fileinfo (Required for MimeType)
league/flysystem suggests installing league/flysystem-aws-s3-v2 (Allows you to use S3 storage with AWS SDK v2)
league/flysystem suggests installing league/flysystem-aws-s3-v3 (Allows you to use S3 storage with AWS SDK v3)
league/flysystem suggests installing league/flysystem-azure (Allows you to use Windows Azure Blob storage)
league/flysystem suggests installing league/flysystem-cached-adapter (Flysystem adapter decorator for metadata caching)
league/flysystem suggests installing league/flysystem-copy (Allows you to use storage)
league/flysystem suggests installing league/flysystem-dropbox (Allows you to use Dropbox storage)
league/flysystem suggests installing league/flysystem-eventable-filesystem (Allows you to use EventableFilesystem)
league/flysystem suggests installing league/flysystem-rackspace (Allows you to use Rackspace Cloud Files)
league/flysystem suggests installing league/flysystem-sftp (Allows you to use SFTP server storage via phpseclib)
league/flysystem suggests installing league/flysystem-webdav (Allows you to use WebDAV storage)
league/flysystem suggests installing league/flysystem-ziparchive (Allows you to use ZipArchive adapter)
laravel/framework suggests installing aws/aws-sdk-php (Required to use the SQS queue driver and SES mail driver (~3.0).)
laravel/framework suggests installing doctrine/dbal (Required to rename columns and drop SQLite columns (~2.4).)
laravel/framework suggests installing guzzlehttp/guzzle (Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).)
laravel/framework suggests installing league/flysystem-aws-s3-v3 (Required to use the Flysystem S3 driver (~1.0).)
laravel/framework suggests installing league/flysystem-rackspace (Required to use the Flysystem Rackspace driver (~1.0).)
laravel/framework suggests installing pda/pheanstalk (Required to use the beanstalk queue driver (~3.0).)
laravel/framework suggests installing predis/predis (Required to use the redis cache and queue drivers (~1.0).)
laravel/framework suggests installing pusher/pusher-php-server (Required to use the Pusher broadcast driver (~2.0).)
fzaninotto/faker suggests installing ext-intl (*)
phpdocumentor/reflection-docblock suggests installing dflydev/markdown (~1.0)
phpdocumentor/reflection-docblock suggests installing erusev/parsedown (~1.0)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.2.1)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
Generating autoload files
> php -r "copy('.env.example', '.env');"
> php artisan clear-compiled
> php artisan optimize
Generating optimized class loader
> php artisan key:generate
Application key [nULSzqAOoIwZ7sO5yK8ThlBdUD53Ib0R] set successfully.
Application ready! Build something amazing.
dev-lnx-01:~ #

Once that command will be completed folder demo-project will be created with all content.

In another article I will describe how to publish our project with Apache 2, so we can start working on it and see the results.