Sådan installeres Yii PHP Framework på CentOS 8


Yii er en open source, højtydende, fleksibel, effektiv og sikker PHP-ramme til hurtig opbygning af moderne webapplikationer. Det er en generisk og fuld stack webprogrammeringsramme til at skrive kode på en objektorienteret måde og giver mange gennemprøvede og klar til brug funktioner. Den leveres med en række rimelige standardindstillinger og indbyggede værktøjer, der hjælper dig med at skrive solid og sikker kode.

Her er nogle af Yii's nøglefunktioner:

  • En ren OOP-baseret ramme.
  • En komponentbaseret arkitektur.
  • Implementerer MVC (Model-View-Controller) arkitektonisk mønster.
  • Understøtter forespørgselbyggere og ActiveRecord til både relationelle og NoSQL-databaser.
  • Caching-understøttelse af flere niveauer.
  • RESTful API-udviklingssupport.
  • Det er ekstremt udvideligt, så brugerne kan tilpasse eller udskifte ethvert stykke kode lige fra kernen. Desuden kan brugerne bruge eller udvikle udvidelser, der kan distribueres igen.

Yii 2.0 er den nuværende generation af rammen (i skrivende stund), som kræver PHP 5.4.0 eller derover, men som fungerer bedst med den nyeste version af PHP 7. Den understøtter nogle af de nyeste webteknologier og protokoller, herunder Composer, PSR , navneområder, træk og andre.

At være en generisk ramme for webudvikling i forbindelse med dens væsentlige funktioner, kan Yii bruges til at udvikle næsten alle slags webapplikationer fra bruger-/adminportaler, fora, content management systems (CMS) til e-handelsprojekter, RESTful Web-tjenester, og meget mere i stor skala.

  1. En kørende forekomst af CentOS 8-serveren.
  2. En LAMP- eller LEMP-stak med PHP 5.4.0 eller derover.
  3. En komponist - en pakkehåndtering på applikationsniveau til PHP.

I denne artikel viser vi dig, hvordan du installerer Yii PHP-rammen på en CentOS 8-server for at begynde at udvikle PHP-applikationer ved hjælp af Yii.

Installation af Yii ved hjælp af komponist

Der er flere måder at installere Yii på, men den anbefalede måde at installere Yii på er at bruge Composer-pakkehåndtering, da det giver dig mulighed for at opdatere Yii med en enkelt kommando og også giver dig mulighed for at installere nye udvidelser.

Hvis du ikke allerede har Composer installeret på din CentOS 8-server, kan du installere den ved at køre følgende kommandoer.

# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer
# chmod +x /usr/local/bin/composer

Når Composer er installeret, kan du installere den nyeste stabile version af Yii-applikationsskabelonen under en Apache- eller Nginx-webtilgængelig mappe kaldet testapp . Du kan vælge et andet katalognavn, hvis du vil.

# cd /var/www/html/      [Apache Root Directory]
OR
# cd /usr/share/nginx/html/   [Nginx Root Directory]
# composer create-project --prefer-dist yiisoft/yii2-app-basic testapp

Når installationen er afsluttet, skal du enten konfigurere din webserver (se næste afsnit) eller bruge den integrerede PHP-webserver ved at udføre følgende kommando i testapp projektets rodmappe.

# cd testapp
# php yii serve

Bemærk: Som standard lytter HTTP-serveren til port 8080. Hvis den port allerede er i brug, kan du dog bruge den anden port ved at tilføje --port argumentet som vist.

# php yii serve --port=8888

Åbn nu din browser, og skriv følgende URL for at få adgang til det installerede Yii-program.

http://localhost:8888

Konfiguration af webservere til Yii

På en produktionsserver vil du muligvis konfigurere din webserver til at betjene Yii-webapplikationen via URL http://www.example.com/index.php i stedet for http:/www.example.com/basic/testapp/index.php . I så fald skal du pege din webserver-dokumentrod til mappen testapp/web .

Opret en konfigurationsfil kaldet /etc/nginx/conf.d/testapp.conf.

# vi /etc/nginx/conf.d/testapp.conf

Kopier derefter og indsæt følgende konfiguration i den. Husk at erstatte tecmintapp.lan med dit domænenavn og /usr/share/nginx/html/testapp/web med den sti, hvor dine appfiler er placeret.

server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80; ## listen for ipv4
    #listen [::]:80 default_server ipv6only=on; ## listen for ipv6

    server_name tecmintapp.lan;
    root        /usr/share/nginx/html/testapp/web;
    index       index.php;

    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;

    location / {
        # Redirect everything that isn't a real file to index.php
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # uncomment to avoid processing of calls to non-existing static files by Yii
    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    #    try_files $uri =404;
    #}
    #error_page 404 /404.html;

    # deny accessing php files for the /assets directory
    location ~ ^/assets/.*\.php$ {
        deny all;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        try_files $uri =404;
    }

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

Gem filen, og genstart Nginx for at foretage de seneste ændringer.

# systemctl restart nginx

Brug følgende konfiguration i Apache's httpd.conf-fil eller i en virtuel værtskonfiguration.

# Set document root to be "testapp/web"
DocumentRoot "/var/www/html/testapp/web"

<Directory "/var/www/html/testapp/web">
    # use mod_rewrite for pretty URL support
    RewriteEngine on
    
    # if $showScriptName is false in UrlManager, do not allow accessing URLs with script name
    RewriteRule ^index.php/ - [L,R=404]
    
    # If a directory or a file exists, use the request directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # Otherwise forward the request to index.php
    RewriteRule . index.php

    # ...other settings...
</Directory>

Gem filen, og genstart Apache for at foretage de seneste ændringer.

# systemctl restart httpd

Test af Yii-webapplikation via en browser

Inden du tester vores Yii-webapplikation, skal du sørge for at opdatere sikkerhedskonteksten i mappen /web/assets/ for at gøre den skrivbar til webprocessen ved at køre følgende kommando.

# chcon -R -t httpd_sys_content_rw_t '/usr/share/nginx/html/testapp/web/assets/' [for Nginx]
# chcon -R -t httpd_sys_content_rw_t '/var/www/html/testapp/web/assets/'         [for Apache] 

Derefter skal du opdatere dine firewalld-regler for at tillade HTTP- og HTTPS-anmodninger gennem firewallen til Nginx-serveren.

# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --zone=public --add-service=https --permanent
# firewall-cmd --reload

Test endelig, om din webapplikation fungerer fint og serveres af Nginx eller Apache. Åbn en webbrowser og peg den til følgende adresse:

http://tecmintapp.lan 

Standard Yii-applikationswebsiden skal vises som vist i følgende skærmbillede.

Tillykke! Du har med succes installeret den nyeste generation af Yii PHP-rammen og konfigureret den til at arbejde med Nginx eller Apache på CentOS 8.

For mere information og hvordan du begynder at bruge Yii til at opbygge din webapplikation, se Yii's endelige vejledning.