Latest

Wednesday, 28 December 2022

How to install PHP Laravel Framework on Rocky Linux 9

How to install PHP Laravel Framework on Rocky Linux 9

In this configuration guide, you will learn how to install PHP Laravel Framework on Rocky Linux 9 or other Red Hat based Linux distros.

 

Table of Contents:

     

    What is Laravel? :

    Laravel is a free, open-source PHP web framework, created by Taylor Otwell and intended for the development of web applications following the model–view–controller (MVC) architectural pattern and based on Symfony. Some of the features of Laravel are a modular packaging system with a dedicated dependency manager, different ways for accessing relational databases, utilities that aid in application deployment and maintenance, and its orientation toward syntactic sugar. (Source: Wikipedia)

    The source code of Laravel is hosted on GitHub and licensed under the terms of MIT License.

     

    Environment Specification:

    We are using a minimally installed Rocky Linux 9 virtual machine with following specifications.

    • CPU - 3.4 Ghz (2 cores)
    • Memory - 2 GB
    • Storage - 20 GB
    • Operating System - Rocky Linux release 9.1 (Blue Onyx)
    • Hostname – laravel-01.centlinux.com
    • IP Address - 192.168.116.131/24

     

    Preparing your Linux Server:

    Connect with your Rocky Linux server as root user by using a SSH client software.

    Set a Fully Qualified Domain Name (FQDN) for your Linux server by executing hostnamectl command.

    # hostnamectl set-hostname laravel-01.centlinux.com

    Edit /etc/hosts file by using vim text editor.

    # vi /etc/hosts

    Add following line in this file to setup name resolution for your server.

    192.168.116.131 laravel-01 laravel-01.centlinux.com

    Rebuild your cache for enabled yum repositories.

    # dnf makecache

    Execute following command to update software packages in your Linux operating system.

    # dnf update -y

    Sometimes, above command also updates your Linux Kernel. In such scenario, you should reboot your Linux operating system with newly installed Kernel.

    # reboot

    You may also need git and unzip commands during installation of PHP Composer, therefore, it is better to install them now.

    # dnf install -y git unzip

    Confirm the Linux Kernel and operating system versions that are being used in this tutorial.

    # cat /etc/rocky-release
    Rocky Linux release 9.1 (Blue Onyx)
    
    # uname -r
    5.14.0-162.6.1.el9_1.0.1.x86_64

     

    Installing PHP:

    In Rocky Linux 9, PHP 8.1 is available in standard yum repositories. Therefore, you can easily install it by using dnf command and there is no need to install EPEL or REMI yum repositories.

    Check the available versions of PHP module in yum repository.

    # dnf module list php
    Last metadata expiration check: 0:06:23 ago on Mon 26 Dec 2022 07:31:44 AM CST.
    Rocky Linux 9 - AppStream
    Name      Stream      Profiles                        Summary
    php       8.1         common [d], devel, minimal      PHP scripting language
    
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

    Install PHP module by executing following command at Linux bash prompt.

    # dnf module install -y php
    ...
    Installed:
      httpd-filesystem-2.4.53-7.el9.noarch
      libxslt-1.1.34-9.el9.x86_64
      nginx-filesystem-1:1.20.1-13.el9.noarch
      oniguruma-6.9.6-1.el9.5.x86_64
      php-cli-8.1.8-1.module+el9.1.0+13171+4883e0c8.x86_64
      php-common-8.1.8-1.module+el9.1.0+13171+4883e0c8.x86_64
      php-fpm-8.1.8-1.module+el9.1.0+13171+4883e0c8.x86_64
      php-mbstring-8.1.8-1.module+el9.1.0+13171+4883e0c8.x86_64
      php-xml-8.1.8-1.module+el9.1.0+13171+4883e0c8.x86_64
    
    Complete!

     

    Installing PHP Composer:

    You may need PHP Composer to install and configure Laravel Framework.

    Download and install PHP Composer by executing following command at Linux bash prompt.

    # cd /tmp
    # curl -sS https://getcomposer.org/installer | php
    All settings correct for using Composer
    Downloading...
    
    Composer (version 2.5.1) successfully installed to: /tmp/composer.phar
    Use it: php composer.phar

    Rename and move the composer.phar file to location that is included in your PATH variable. So you can execute composer command from anywhere. Also set execution permissions of composer file.

    # mv composer.phar /usr/local/bin/composer
    # chmod +x /usr/local/bin/composer

    Execute following command now, to check the PHP Composer version.

    # composer -V
    Composer version 2.5.1 2022-12-22 15:33:54

     

    Installing PHP Laravel Framework:

    Now you can download and install Laravel Framework and dependent libraries by using composer command.

    # composer global require "laravel/installer"
    Changed current directory to /root/.config/composer
    Info from https://repo.packagist.org: #StandWithUkraine
    ./composer.json has been created
    Running composer update laravel/installer
    Loading composer repositories with package information
    Updating dependencies
    Lock file operations: 11 installs, 0 updates, 0 removals
      - Locking laravel/installer (v4.2.17)
      - Locking psr/container (2.0.2)
      - Locking symfony/console (v6.2.2)
      - Locking symfony/deprecation-contracts (v3.2.0)
      - Locking symfony/polyfill-ctype (v1.27.0)
      - Locking symfony/polyfill-intl-grapheme (v1.27.0)
      - Locking symfony/polyfill-intl-normalizer (v1.27.0)
      - Locking symfony/polyfill-mbstring (v1.27.0)
      - Locking symfony/process (v6.2.0)
      - Locking symfony/service-contracts (v3.2.0)
      - Locking symfony/string (v6.2.2)
    Writing lock file
    Installing dependencies from lock file (including require-dev)
    Package operations: 11 installs, 0 updates, 0 removals
      - Downloading symfony/process (v6.2.0)
      - Downloading symfony/polyfill-mbstring (v1.27.0)
      - Downloading symfony/polyfill-intl-normalizer (v1.27.0)
      - Downloading symfony/polyfill-intl-grapheme (v1.27.0)
      - Downloading symfony/polyfill-ctype (v1.27.0)
      - Downloading symfony/string (v6.2.2)
      - Downloading psr/container (2.0.2)
      - Downloading symfony/service-contracts (v3.2.0)
      - Downloading symfony/deprecation-contracts (v3.2.0)
      - Downloading symfony/console (v6.2.2)
      - Downloading laravel/installer (v4.2.17)
      - Installing symfony/process (v6.2.0): Extracting archive
      - Installing symfony/polyfill-mbstring (v1.27.0): Extracting archive
      - Installing symfony/polyfill-intl-normalizer (v1.27.0): Extracting archive
      - Installing symfony/polyfill-intl-grapheme (v1.27.0): Extracting archive
      - Installing symfony/polyfill-ctype (v1.27.0): Extracting archive
      - Installing symfony/string (v6.2.2): Extracting archive
      - Installing psr/container (2.0.2): Extracting archive
      - Installing symfony/service-contracts (v3.2.0): Extracting archive
      - Installing symfony/deprecation-contracts (v3.2.0): Extracting archive
      - Installing symfony/console (v6.2.2): Extracting archive
      - Installing laravel/installer (v4.2.17): Extracting archive
    6 package suggestions were added by new dependencies, use `composer suggest` to see details.
    Generating autoload files
    9 packages you are using are looking for funding.
    Use the `composer fund` command to find out more!
    No security vulnerability advisories found
    Using version ^4.2 for laravel/installer

    Composer downloads the Laravel and other libraries in ~/.config/composer/vendor/bin directory.

    Therefore, to make laravel command executable from anywhere, you need to include this location in PATH variable.

    # echo 'export PATH="$PATH:$HOME/.config/composer/vendor/bin"' >> ~/.bash_profile

    Execute .bash_profile once to load these changes.

    # source ~/.bash_profile

     

    Create a New Laravel Project:

    Go to your home directory and create a new Laravel project as follows.

    # laravel new helloworld
    
       _                               _
      | |                             | |
      | |     __ _ _ __ __ ___   _____| |
      | |    / _` | '__/ _` \ \ / / _ \ |
      | |___| (_| | | | (_| |\ V /  __/ |
      |______\__,_|_|  \__,_| \_/ \___|_|
    
    Creating a "laravel/laravel" project at "./helloworld"
    Installing laravel/laravel (v9.4.1)
      - Downloading laravel/laravel (v9.4.1)
      - Installing laravel/laravel (v9.4.1): Extracting archive
    Created project in /root/helloworld
    > @php -r "file_exists('.env') || copy('.env.example', '.env');"
    Loading composer repositories with package information
    Updating dependencies
    Lock file operations: 107 installs, 0 updates, 0 removals
      - Locking brick/math (0.10.2)
      - Locking dflydev/dot-access-data (v3.0.2)
      - Locking doctrine/inflector (2.0.6)
      - Locking doctrine/instantiator (1.4.1)
      - Locking doctrine/lexer (1.2.3)
      - Locking dragonmantank/cron-expression (v3.3.2)
      - Locking egulias/email-validator (3.2.1)
      - Locking fakerphp/faker (v1.21.0)
      - Locking filp/whoops (2.14.6)
      - Locking fruitcake/php-cors (v1.2.0)
      - Locking graham-campbell/result-type (v1.1.0)
      - Locking guzzlehttp/guzzle (7.5.0)
      - Locking guzzlehttp/promises (1.5.2)
      - Locking guzzlehttp/psr7 (2.4.3)
      - Locking hamcrest/hamcrest-php (v2.0.1)
      - Locking laravel/framework (v9.45.1)
      - Locking laravel/pint (v1.3.0)
      - Locking laravel/sail (v1.16.6)
      - Locking laravel/sanctum (v3.0.1)
      - Locking laravel/serializable-closure (v1.2.2)
      - Locking laravel/tinker (v2.7.3)
      - Locking league/commonmark (2.3.8)
      - Locking league/config (v1.2.0)
      - Locking league/flysystem (3.12.0)
      - Locking league/mime-type-detection (1.11.0)
      - Locking mockery/mockery (1.5.1)
      - Locking monolog/monolog (2.8.0)
      - Locking myclabs/deep-copy (1.11.0)
      - Locking nesbot/carbon (2.64.0)
      - Locking nette/schema (v1.2.3)
      - Locking nette/utils (v3.2.8)
      - Locking nikic/php-parser (v4.15.2)
      - Locking nunomaduro/collision (v6.3.2)
      - Locking nunomaduro/termwind (v1.15.0)
      - Locking phar-io/manifest (2.0.3)
      - Locking phar-io/version (3.2.1)
      - Locking phpoption/phpoption (1.9.0)
      - Locking phpunit/php-code-coverage (9.2.22)
      - Locking phpunit/php-file-iterator (3.0.6)
      - Locking phpunit/php-invoker (3.1.1)
      - Locking phpunit/php-text-template (2.0.4)
      - Locking phpunit/php-timer (5.0.3)
      - Locking phpunit/phpunit (9.5.27)
      - Locking psr/container (2.0.2)
      - Locking psr/event-dispatcher (1.0.0)
      - Locking psr/http-client (1.0.1)
      - Locking psr/http-factory (1.0.1)
      - Locking psr/http-message (1.0.1)
      - Locking psr/log (3.0.0)
      - Locking psr/simple-cache (3.0.0)
      - Locking psy/psysh (v0.11.10)
      - Locking ralouphie/getallheaders (3.0.3)
      - Locking ramsey/collection (1.2.2)
      - Locking ramsey/uuid (4.7.0)
      - Locking sebastian/cli-parser (1.0.1)
      - Locking sebastian/code-unit (1.0.8)
      - Locking sebastian/code-unit-reverse-lookup (2.0.3)
      - Locking sebastian/comparator (4.0.8)
      - Locking sebastian/complexity (2.0.2)
      - Locking sebastian/diff (4.0.4)
      - Locking sebastian/environment (5.1.4)
      - Locking sebastian/exporter (4.0.5)
      - Locking sebastian/global-state (5.0.5)
      - Locking sebastian/lines-of-code (1.0.3)
      - Locking sebastian/object-enumerator (4.0.4)
      - Locking sebastian/object-reflector (2.0.4)
      - Locking sebastian/recursion-context (4.0.4)
      - Locking sebastian/resource-operations (3.0.3)
      - Locking sebastian/type (3.2.0)
      - Locking sebastian/version (3.0.2)
      - Locking spatie/backtrace (1.2.1)
      - Locking spatie/flare-client-php (1.3.1)
      - Locking spatie/ignition (1.4.1)
      - Locking spatie/laravel-ignition (1.6.2)
      - Locking symfony/console (v6.2.2)
      - Locking symfony/css-selector (v6.2.0)
      - Locking symfony/deprecation-contracts (v3.2.0)
      - Locking symfony/error-handler (v6.2.2)
      - Locking symfony/event-dispatcher (v6.2.2)
      - Locking symfony/event-dispatcher-contracts (v3.2.0)
      - Locking symfony/finder (v6.2.0)
      - Locking symfony/http-foundation (v6.2.2)
      - Locking symfony/http-kernel (v6.2.2)
      - Locking symfony/mailer (v6.2.2)
      - Locking symfony/mime (v6.2.2)
      - Locking symfony/polyfill-ctype (v1.27.0)
      - Locking symfony/polyfill-intl-grapheme (v1.27.0)
      - Locking symfony/polyfill-intl-idn (v1.27.0)
      - Locking symfony/polyfill-intl-normalizer (v1.27.0)
      - Locking symfony/polyfill-mbstring (v1.27.0)
      - Locking symfony/polyfill-php72 (v1.27.0)
      - Locking symfony/polyfill-php80 (v1.27.0)
      - Locking symfony/polyfill-php81 (v1.27.0)
      - Locking symfony/polyfill-uuid (v1.27.0)
      - Locking symfony/process (v6.2.0)
      - Locking symfony/routing (v6.2.0)
      - Locking symfony/service-contracts (v3.2.0)
      - Locking symfony/string (v6.2.2)
      - Locking symfony/translation (v6.2.2)
      - Locking symfony/translation-contracts (v3.2.0)
      - Locking symfony/uid (v6.2.0)
      - Locking symfony/var-dumper (v6.2.2)
      - Locking theseer/tokenizer (1.2.1)
      - Locking tijsverkoyen/css-to-inline-styles (2.2.5)
      - Locking vlucas/phpdotenv (v5.5.0)
      - Locking voku/portable-ascii (2.0.1)
      - Locking webmozart/assert (1.11.0)
    Writing lock file
    Installing dependencies from lock file (including require-dev)
    Package operations: 107 installs, 0 updates, 0 removals
      - Downloading doctrine/inflector (2.0.6)
      - Downloading doctrine/lexer (1.2.3)
      - Downloading webmozart/assert (1.11.0)
      - Downloading dragonmantank/cron-expression (v3.3.2)
      - Downloading fakerphp/faker (v1.21.0)
      - Downloading symfony/http-foundation (v6.2.2)
      - Downloading fruitcake/php-cors (v1.2.0)
      - Downloading psr/http-message (1.0.1)
      - Downloading psr/http-client (1.0.1)
      - Downloading ralouphie/getallheaders (3.0.3)
      - Downloading psr/http-factory (1.0.1)
      - Downloading guzzlehttp/psr7 (2.4.3)
      - Downloading guzzlehttp/promises (1.5.2)
      - Downloading guzzlehttp/guzzle (7.5.0)
      - Downloading laravel/pint (v1.3.0)
      - Downloading voku/portable-ascii (2.0.1)
      - Downloading symfony/polyfill-php80 (v1.27.0)
      - Downloading phpoption/phpoption (1.9.0)
      - Downloading graham-campbell/result-type (v1.1.0)
      - Downloading vlucas/phpdotenv (v5.5.0)
      - Downloading symfony/css-selector (v6.2.0)
      - Downloading tijsverkoyen/css-to-inline-styles (2.2.5)
      - Downloading symfony/var-dumper (v6.2.2)
      - Downloading symfony/polyfill-uuid (v1.27.0)
      - Downloading symfony/uid (v6.2.0)
      - Downloading symfony/routing (v6.2.0)
      - Downloading symfony/polyfill-php72 (v1.27.0)
      - Downloading symfony/polyfill-intl-idn (v1.27.0)
      - Downloading symfony/mime (v6.2.2)
      - Downloading psr/event-dispatcher (1.0.0)
      - Downloading symfony/event-dispatcher-contracts (v3.2.0)
      - Downloading symfony/event-dispatcher (v6.2.2)
      - Downloading psr/log (3.0.0)
      - Downloading egulias/email-validator (3.2.1)
      - Downloading symfony/mailer (v6.2.2)
      - Downloading symfony/error-handler (v6.2.2)
      - Downloading symfony/http-kernel (v6.2.2)
      - Downloading symfony/finder (v6.2.0)
      - Downloading symfony/polyfill-php81 (v1.27.0)
      - Downloading ramsey/collection (1.2.2)
      - Downloading brick/math (0.10.2)
      - Downloading ramsey/uuid (4.7.0)
      - Downloading psr/simple-cache (3.0.0)
      - Downloading nunomaduro/termwind (v1.15.0)
      - Downloading symfony/translation-contracts (v3.2.0)
      - Downloading symfony/translation (v6.2.2)
      - Downloading nesbot/carbon (2.64.0)
      - Downloading monolog/monolog (2.8.0)
      - Downloading league/mime-type-detection (1.11.0)
      - Downloading league/flysystem (3.12.0)
      - Downloading nette/utils (v3.2.8)
      - Downloading nette/schema (v1.2.3)
      - Downloading dflydev/dot-access-data (v3.0.2)
      - Downloading league/config (v1.2.0)
      - Downloading league/commonmark (2.3.8)
      - Downloading laravel/serializable-closure (v1.2.2)
      - Downloading laravel/framework (v9.45.1)
      - Downloading laravel/sail (v1.16.6)
      - Downloading laravel/sanctum (v3.0.1)
      - Downloading nikic/php-parser (v4.15.2)
      - Downloading psy/psysh (v0.11.10)
      - Downloading laravel/tinker (v2.7.3)
      - Downloading hamcrest/hamcrest-php (v2.0.1)
      - Downloading mockery/mockery (1.5.1)
      - Downloading filp/whoops (2.14.6)
      - Downloading nunomaduro/collision (v6.3.2)
      - Downloading sebastian/version (3.0.2)
      - Downloading sebastian/type (3.2.0)
      - Downloading sebastian/resource-operations (3.0.3)
      - Downloading sebastian/recursion-context (4.0.4)
      - Downloading sebastian/object-reflector (2.0.4)
      - Downloading sebastian/object-enumerator (4.0.4)
      - Downloading sebastian/global-state (5.0.5)
      - Downloading sebastian/exporter (4.0.5)
      - Downloading sebastian/environment (5.1.4)
      - Downloading sebastian/diff (4.0.4)
      - Downloading sebastian/comparator (4.0.8)
      - Downloading sebastian/code-unit (1.0.8)
      - Downloading sebastian/cli-parser (1.0.1)
      - Downloading phpunit/php-timer (5.0.3)
      - Downloading phpunit/php-text-template (2.0.4)
      - Downloading phpunit/php-invoker (3.1.1)
      - Downloading phpunit/php-file-iterator (3.0.6)
      - Downloading theseer/tokenizer (1.2.1)
      - Downloading sebastian/lines-of-code (1.0.3)
      - Downloading sebastian/complexity (2.0.2)
      - Downloading sebastian/code-unit-reverse-lookup (2.0.3)
      - Downloading phpunit/php-code-coverage (9.2.22)
      - Downloading phar-io/version (3.2.1)
      - Downloading phar-io/manifest (2.0.3)
      - Downloading myclabs/deep-copy (1.11.0)
      - Downloading doctrine/instantiator (1.4.1)
      - Downloading phpunit/phpunit (9.5.27)
      - Downloading spatie/backtrace (1.2.1)
      - Downloading spatie/flare-client-php (1.3.1)
      - Downloading spatie/ignition (1.4.1)
      - Downloading spatie/laravel-ignition (1.6.2)
      - Installing doctrine/inflector (2.0.6): Extracting archive
      - Installing doctrine/lexer (1.2.3): Extracting archive
      - Installing symfony/polyfill-ctype (v1.27.0): Extracting archive
      - Installing webmozart/assert (1.11.0): Extracting archive
      - Installing dragonmantank/cron-expression (v3.3.2): Extracting archive
      - Installing symfony/deprecation-contracts (v3.2.0): Extracting archive
      - Installing psr/container (2.0.2): Extracting archive
      - Installing fakerphp/faker (v1.21.0): Extracting archive
      - Installing symfony/polyfill-mbstring (v1.27.0): Extracting archive
      - Installing symfony/http-foundation (v6.2.2): Extracting archive
      - Installing fruitcake/php-cors (v1.2.0): Extracting archive
      - Installing psr/http-message (1.0.1): Extracting archive
      - Installing psr/http-client (1.0.1): Extracting archive
      - Installing ralouphie/getallheaders (3.0.3): Extracting archive
      - Installing psr/http-factory (1.0.1): Extracting archive
      - Installing guzzlehttp/psr7 (2.4.3): Extracting archive
      - Installing guzzlehttp/promises (1.5.2): Extracting archive
      - Installing guzzlehttp/guzzle (7.5.0): Extracting archive
      - Installing laravel/pint (v1.3.0): Extracting archive
      - Installing voku/portable-ascii (2.0.1): Extracting archive
      - Installing symfony/polyfill-php80 (v1.27.0): Extracting archive
      - Installing phpoption/phpoption (1.9.0): Extracting archive
      - Installing graham-campbell/result-type (v1.1.0): Extracting archive
      - Installing vlucas/phpdotenv (v5.5.0): Extracting archive
      - Installing symfony/css-selector (v6.2.0): Extracting archive
      - Installing tijsverkoyen/css-to-inline-styles (2.2.5): Extracting archive
      - Installing symfony/var-dumper (v6.2.2): Extracting archive
      - Installing symfony/polyfill-uuid (v1.27.0): Extracting archive
      - Installing symfony/uid (v6.2.0): Extracting archive
      - Installing symfony/routing (v6.2.0): Extracting archive
      - Installing symfony/process (v6.2.0): Extracting archive
      - Installing symfony/polyfill-php72 (v1.27.0): Extracting archive
      - Installing symfony/polyfill-intl-normalizer (v1.27.0): Extracting archive
      - Installing symfony/polyfill-intl-idn (v1.27.0): Extracting archive
      - Installing symfony/mime (v6.2.2): Extracting archive
      - Installing symfony/service-contracts (v3.2.0): Extracting archive
      - Installing psr/event-dispatcher (1.0.0): Extracting archive
      - Installing symfony/event-dispatcher-contracts (v3.2.0): Extracting archive
      - Installing symfony/event-dispatcher (v6.2.2): Extracting archive
      - Installing psr/log (3.0.0): Extracting archive
      - Installing egulias/email-validator (3.2.1): Extracting archive
      - Installing symfony/mailer (v6.2.2): Extracting archive
      - Installing symfony/error-handler (v6.2.2): Extracting archive
      - Installing symfony/http-kernel (v6.2.2): Extracting archive
      - Installing symfony/finder (v6.2.0): Extracting archive
      - Installing symfony/polyfill-intl-grapheme (v1.27.0): Extracting archive
      - Installing symfony/string (v6.2.2): Extracting archive
      - Installing symfony/console (v6.2.2): Extracting archive
      - Installing symfony/polyfill-php81 (v1.27.0): Extracting archive
      - Installing ramsey/collection (1.2.2): Extracting archive
      - Installing brick/math (0.10.2): Extracting archive
      - Installing ramsey/uuid (4.7.0): Extracting archive
      - Installing psr/simple-cache (3.0.0): Extracting archive
      - Installing nunomaduro/termwind (v1.15.0): Extracting archive
      - Installing symfony/translation-contracts (v3.2.0): Extracting archive
      - Installing symfony/translation (v6.2.2): Extracting archive
      - Installing nesbot/carbon (2.64.0): Extracting archive
      - Installing monolog/monolog (2.8.0): Extracting archive
      - Installing league/mime-type-detection (1.11.0): Extracting archive
      - Installing league/flysystem (3.12.0): Extracting archive
      - Installing nette/utils (v3.2.8): Extracting archive
      - Installing nette/schema (v1.2.3): Extracting archive
      - Installing dflydev/dot-access-data (v3.0.2): Extracting archive
      - Installing league/config (v1.2.0): Extracting archive
      - Installing league/commonmark (2.3.8): Extracting archive
      - Installing laravel/serializable-closure (v1.2.2): Extracting archive
      - Installing laravel/framework (v9.45.1): Extracting archive
      - Installing laravel/sail (v1.16.6): Extracting archive
      - Installing laravel/sanctum (v3.0.1): Extracting archive
      - Installing nikic/php-parser (v4.15.2): Extracting archive
      - Installing psy/psysh (v0.11.10): Extracting archive
      - Installing laravel/tinker (v2.7.3): Extracting archive
      - Installing hamcrest/hamcrest-php (v2.0.1): Extracting archive
      - Installing mockery/mockery (1.5.1): Extracting archive
      - Installing filp/whoops (2.14.6): Extracting archive
      - Installing nunomaduro/collision (v6.3.2): Extracting archive
      - Installing sebastian/version (3.0.2): Extracting archive
      - Installing sebastian/type (3.2.0): Extracting archive
      - Installing sebastian/resource-operations (3.0.3): Extracting archive
      - Installing sebastian/recursion-context (4.0.4): Extracting archive
      - Installing sebastian/object-reflector (2.0.4): Extracting archive
      - Installing sebastian/object-enumerator (4.0.4): Extracting archive
      - Installing sebastian/global-state (5.0.5): Extracting archive
      - Installing sebastian/exporter (4.0.5): Extracting archive
      - Installing sebastian/environment (5.1.4): Extracting archive
      - Installing sebastian/diff (4.0.4): Extracting archive
      - Installing sebastian/comparator (4.0.8): Extracting archive
      - Installing sebastian/code-unit (1.0.8): Extracting archive
      - Installing sebastian/cli-parser (1.0.1): Extracting archive
      - Installing phpunit/php-timer (5.0.3): Extracting archive
      - Installing phpunit/php-text-template (2.0.4): Extracting archive
      - Installing phpunit/php-invoker (3.1.1): Extracting archive
      - Installing phpunit/php-file-iterator (3.0.6): Extracting archive
      - Installing theseer/tokenizer (1.2.1): Extracting archive
      - Installing sebastian/lines-of-code (1.0.3): Extracting archive
      - Installing sebastian/complexity (2.0.2): Extracting archive
      - Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive
      - Installing phpunit/php-code-coverage (9.2.22): Extracting archive
      - Installing phar-io/version (3.2.1): Extracting archive
      - Installing phar-io/manifest (2.0.3): Extracting archive
      - Installing myclabs/deep-copy (1.11.0): Extracting archive
      - Installing doctrine/instantiator (1.4.1): Extracting archive
      - Installing phpunit/phpunit (9.5.27): Extracting archive
      - Installing spatie/backtrace (1.2.1): Extracting archive
      - Installing spatie/flare-client-php (1.3.1): Extracting archive
      - Installing spatie/ignition (1.4.1): Extracting archive
      - Installing spatie/laravel-ignition (1.6.2): Extracting archive
    70 package suggestions were added by new dependencies, use `composer suggest` to see details.
    Generating optimized autoload files
    > Illuminate\Foundation\ComposerScripts::postAutoloadDump
    > @php artisan package:discover --ansi
    
       INFO  Discovering packages.
    
      laravel/sail .......................................................... DONE
      laravel/sanctum ....................................................... DONE
      laravel/tinker ........................................................ DONE
      nesbot/carbon ......................................................... DONE
      nunomaduro/collision .................................................. DONE
      nunomaduro/termwind ................................................... DONE
      spatie/laravel-ignition ............................................... DONE
    
    81 packages you are using are looking for funding.
    Use the `composer fund` command to find out more!
    > @php artisan vendor:publish --tag=laravel-assets --ansi --force
    
       INFO  No publishable resources for tag [laravel-assets].
    
    No security vulnerability advisories found
    > @php artisan key:generate --ansi
    
       INFO  Application key set successfully.
    
       INFO  Application ready! Build something amazing.

    You have successfully created a new Laravel project.

    Typically, you may use a web server such as Apache or Nginx to serve your Laravel applications. If you are on PHP 5.4+ and would like to use PHP's built-in development server, you may use the serve Artisan command.

    Artisan is the command line interface included with Laravel. Artisan exists at the root of your application as the artisan script and provides a number of helpful commands that can assist you while you build your application.

    Execute following command to check version of your Laravel Framework.

    # cd helloworld/
    # php artisan --version
    Laravel Framework 9.45.1

    Execute the following command to start Laravel development server.

    # php artisan serve --host=laravel-01.centlinux.com &
    [1] 3571
       INFO  Server running on [http://laravel-01.centlinux.com:8000].
    
      Press Ctrl+C to stop the server

     

    Configure Linux Firewall:

    Artisan default service port is 8000/tcp. Therefore, you need to allow it in your Linux Firewall.

    # firewall-cmd --permanent --add-port=8000/tcp
    success
    
    # firewall-cmd --reload
    success

    Open URL http://laravel-01.centlinux.com:8000/ in a web browser.

    PHP Laravel Default Page

    Your Laravel application server has been started successfully.

    Read Also: How to install PHP Laravel Framework on Rocky Linux 8


    Conclusion:

    In this article, you have learned how to install PHP Laravel Framework on Rocky Linux 9 or other Red Hat based Linux distros. To start building some amazing application, you may read Laravel: Up & Running: A Framework for Building Modern PHP Apps 2nd Edition by Matt Stauffer.

    If you find this article useful? Consider supporting us by Buy Me A Coffee


    No comments:

    Post a Comment

    © 2022 CentLinux. All Rights Reserved.