Skip to content

Installation von Grav & NGinx & PHP7.2

Angeheftet Verschoben Grav
2 1 1.4k
  • Wird nochmal überarbeitet, da ich noch über einige Probleme gestolpert bin! Für Einsteiger im Moment nur bedingt zu empfehlen!

    Ich hatte schon mal auf einem Debian System PHP7 installiert -> https://frank-mankel.de/kategorien/15-joomla/202-debian-joomla-mit-php7-auf-nginx

    Nun habe ich das auf einem ROCKPro64 gemacht und ein wenig Kopfschmerzen bekommen 😉 Ziel des Ganzen ist es eine Grav-Installation zum Laufen zu bekommen.

    Hardware

    • ROCKPro64 v2.0

    Software

    Linux

    rock64@rockpro64v2_0:~$ uname -a
    Linux rockpro64v2_0 4.4.132-1081-rockchip-ayufan-g50be7e64a779 #1 SMP Tue Jul 31 20:09:25 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    NGinx

    rock64@rockpro64:~$ nginx -v
    nginx version: nginx/1.14.0 (Ubuntu)
    

    PHP

     rock64@rockpro64:~$ php -v
     PHP 7.2.7-0ubuntu0.18.04.2 (cli) (built: Jul  4 2018 16:55:24) ( NTS )
     Copyright (c) 1997-2018 The PHP Group
     Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
         with Zend OPcache v7.2.7-0ubuntu0.18.04.2, Copyright (c) 1999-2018, by Zend Technologies
    

    Installation

    NGinx

    sudo apt-get install nginx 
    

    PHP

    sudo apt-get install php7.2
    

    Benötigte Module für PHP

    sudo apt-get install php7.2-mysql php7.2-opcache php7.2-readline php7.2-xml php7.2-xsl php7.2-zip
    sudo apt-get install php7.2-cli php7.2-curl php7.2-gd php7.2-geoip php7.2-intl php7.2-json php7.2-mbstring
    

    Konfiguration NGinx

    /etc/nginx/nginx.conf

    user www-data;
    worker_processes auto;
    worker_rlimit_nofile 8192; # should be bigger than worker_connections
    pid /run/nginx.pid;
    
    events {
        use epoll;
        worker_connections 8000;
        multi_accept on;
    }
    
    http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
    
        keepalive_timeout 30; # longer values are better for each ssl client, but take up a worker connection longer
        types_hash_max_size 2048;
        server_tokens off;
    
        # maximum file upload size
        # update 'upload_max_filesize' & 'post_max_size' in /etc/php5/fpm/php.ini accordingly
        client_max_body_size 32m;
        # client_body_timeout 60s; # increase for very long file uploads
    
        # set default index file (can be overwritten for each site individually)
        index index.html;
    
        # load MIME types
        include mime.types; # get this file from https://github.com/h5bp/server-configs-nginx
        default_type application/octet-stream; # set default MIME type
    
        # logging
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
    
        # turn on gzip compression
        gzip on;
        gzip_disable "msie6";
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 5;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_min_length 256;
        gzip_types
            application/atom+xml
            application/javascript
            application/json
            application/ld+json
            application/manifest+json
            application/rss+xml
            application/vnd.geo+json
            application/vnd.ms-fontobject
            application/x-font-ttf
            application/x-web-app-manifest+json
            application/xhtml+xml
            application/xml
            font/opentype
            image/bmp
            image/svg+xml
            image/x-icon
            text/cache-manifest
            text/css
            text/plain
            text/vcard
            text/vnd.rim.location.xloc
            text/vtt
            text/x-component
            text/x-cross-domain-policy;
        
        # disable content type sniffing for more security
        add_header "X-Content-Type-Options" "nosniff";
        
        # force the latest IE version
        add_header "X-UA-Compatible" "IE=Edge";
        
        # enable anti-cross-site scripting filter built into IE 8+
        add_header "X-XSS-Protection" "1; mode=block";
        
        # include virtual host configs
        include sites-enabled/*;
    }
    

    Unter /etc/nginx/sites-available die Datei default löschen. Die Datei grav-site anlegen.

    /etc/nginx/sites-available/grav-site

    server {
        #listen 80;
        index index.html index.php;
    
        ## Begin - Server Info
        root /var/www/grav;
        server_name localhost;
        ## End - Server Info
    
        ## Begin - Index
        # for subfolders, simply adjust:
        # `location /subfolder {`
        # and the rewrite to use `/subfolder/index.php`
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
        ## End - Index
    
        ## Begin - Security
        # deny all direct access for these folders
        location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
        # deny running scripts inside core system folders
        location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
        # deny running scripts inside user folder
        location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
        # deny access to specific files in the root folder
        location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }
        ## End - Security
    
        ## Begin - PHP
        location ~ \.php$ {
            # Choose either a socket or TCP/IP address
            #fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
             fastcgi_pass 127.0.0.1:9000;
    
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        }
        ## End - PHP
    }
    

    Danach brauchen wir einen symbolischen Link in /etc/nginx/sites-enabled Nur dann funktioniert eine Seite.

    sudo ln -s /etc/nginx/sites-available/grav-site /etc/nginx/sites-enabled/
    

    Installation Grav

    Core installieren
    Option 3 der Anleitung https://learn.getgrav.org/basics/installation

    Admin Panel installieren
    https://learn.getgrav.org/admin-panel/introduction

    Meine Grav-Installation liegt unter

     /var/www/grav
    

    Womit hatte ich nun Probleme? NGinx dient ja als Webserver, dieser Webserver muss jetzt die PHP-Dateien entsprechend verarbeiten können. Dazu gibt es folgenden Block in der Datei /etc/nginx/sites-available/grav-site

     ## Begin - PHP
         location ~ \.php$ {
             # Choose either a socket or TCP/IP address
             #fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
              fastcgi_pass 127.0.0.1:9000;
     
             fastcgi_split_path_info ^(.+\.php)(/.+)$;
             fastcgi_index index.php;
             include fastcgi_params;
             fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
         }
         ## End - PHP
    

    Es war vorher folgendermaßen

    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    #fastcgi_pass 127.0.0.1:9000;
    

    Das hat nicht geklappt. Was sagt die Ubuntu Seite dazu?? Man soll folgendes machen. Datei /usr/local/bin/php-fastcgi anlegen.

     #!/bin/bash
     php-cgi -b 127.0.0.1:9000
    

    Ausführungsrechte

    chmod a+x /usr/local/bin/php-fastcgi 
    

    Danach starten

     sudo php-fastcgi 
    

    Das funktioniert aber nur, wenn folgendes eingestellt ist.

    #fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_pass 127.0.0.1:9000;
    

    Damit wird PHP direkt an die FastCGI-Schnittstelle gebunden.

    Quelle: https://wiki.ubuntuusers.de/nginx/PHP/

    Danach lief meine Grav-Installation.

    0_1532448808009_Grav_ergebnis.jpg

    So weit so gut. Ein kleiner Schönheitsfehler. Konsole zu beendet

    sudo php-fastcgi 
    

    dann war es das wieder mit NGinx. Die Lösung wir brauchen eine Datei /etc/rc.local

    #!/bin/bash
    #
    # rc.local - executed at the end of each multiuser runlevel
    #
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    php-fastcgi 
    exit 0
    

    Den Dienst dann nach dieser Anleitung einrichten

    Danach den Server neu starten und es funktioniert!

    Achtung! Nicht auf einem produktiven System einsetzen, ich bin mir nicht sicher ob das zu 100% sicher ist.

  • Nachdem ich den ROCKPro64 jetzt auf den Mainline umgestellt habe, lief meine Testinstallation von Grav nicht mehr.

    Hilfreiche Sache um das Problem zu lösen -> https://gist.github.com/GhazanfarMir/03bd1f1f770a3834d47274586d46ea62

    Ich bekam immer 502 Bad Gateway, Grund war ein nicht korrekt gestarteter php-pfm Service.

    rock64@rockpro64v2_0:/usr/local/bin$ sudo service php7.2-fpm start
    rock64@rockpro64v2_0:/usr/local/bin$ sudo service php7.2-fpm status
    ● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
       Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2018-08-16 20:15:20 CEST; 21s ago
         Docs: man:php-fpm7.2(8)
     Main PID: 3206 (php-fpm7.2)
       Status: "Processes active: 0, idle: 2, Requests: 3, slow: 0, Traffic: 0.2req/sec"
        Tasks: 3 (limit: 4622)
       CGroup: /system.slice/php7.2-fpm.service
               ├─3206 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
               ├─3207 php-fpm: pool www
               └─3208 php-fpm: pool www
    
    Aug 16 20:15:19 rockpro64v2_0 systemd[1]: Starting The PHP 7.2 FastCGI Process Manager...
    Aug 16 20:15:20 rockpro64v2_0 systemd[1]: Started The PHP 7.2 FastCGI Process Manager.
    
  • OpenCloud - Storage Backends testen

    OpenCloud opencloud linux docker
    2
    0 Stimmen
    2 Beiträge
    70 Aufrufe
    FrankMF
    So, mal weiter damit beschäftigen. Also, durch meine ganze Testerei war doch ein Haufen Müll angefallen. dockeruser@opencloud:~/opencloud/deployments/examples/opencloud_full$ docker volume ls DRIVER VOLUME NAME local 0fcd6f237898477b251f3dacb6cd083996092b783f991f899b06d89befc41b1e local 1d8df3f5d41613ad93ed753ce2102a14738cf00e8e7d127ec79881660be291ab local 3b612ce20b207c226640d6b84c32c788cd0fad9f9157578c2310f4b3db63dd29 local 5dfdde733fefb9fdb805acec8338a860762e88cd0753f4bb4098a19fbcd4b6c3 local 6bd5659759fb99b0d0613175d2392ca268dbdb3bd0353b85ccdf9a6004e798c0 local 6f8881420aa0e7713ed5308e635fcb9382939b6570afbd1d776866a07f6d61f2 local 29f7d20edd9eda935041cea7af5aab0af748175d7df8f345288463753d2afa9a local 66ca6287706aac5013b458a109e7c143c4fb177670734fc7a0f68495b1c62fd4 local 74d304835ef51f91226cc22dbbd494d2ddc9a4d91badf88814cae24126efd04a local 0203eb654c1f28a60899ded4660fb101ea222a5f8c86a225d39f3e5da877f1c0 local 271c474feb2ed915afb8efa85e422461fcfdf8acd4097355841eadf33847b7ef local 569a8c34804afd5861299973bed023c0146f40c0dbda0d980b8651bbcadc7fc9 local 655b1f446b5db9749787d4be4445887dcb3d19906d4244d059a0f292a6cd5f01 local 843bb8d0d7845adab06e146c44b153b842d5a1a1d8eb3972bdee1d3cbcb7e815 local 987ee19b8639ad5fffabba276ceb1ca09af6ebc66efb007e561570589c9c53a8 local 1004f5b7b161a4fe37a07d7960740e5cd09b90d5744f1922fb3e41c1265f800a local 2043c77b57728106cbcca8b7e2d3ae2f07ddf4ca44ee21fca232526c95e07381 local 3685c81df1be0061352dfc5b0e6db8d8d9f9b0915a271f1ca53d2796a7876805 local 9581abcfb4fb42b2fabfabbc8139cc4659ca83d92a8b60041957565409293ef4 local 796650f1fa887ff0b153822b268a10aa3579f4f2ca3ce6855ff292e49b3bb6b8 local 426251107e3131a250b27b96e795355332127f19ccf1ec8252860aff5d0caec8 local bd43ceef38448db348cc34e7dc5c4fee9c834d8b6c5957b1e6cdb83cec7b0974 local d94e7ce6c0fb1f4f7b811f624b4526ea889f2f8b99d2aa1b21e79d00dfeb38d0 local e87a27c307a8be80839fae1c006273d57570bb99f60c78c95e86a1e9ea1a786c local f2b3e30406db730e2a341850243c115b6eb231f30f41f5353c7b2427de39af75 local opencloud_full_certs local opencloud_full_opencloud-apps local opencloud_full_opencloud-config local opencloud_full_opencloud-data Oje, das sieht ziemlich vermüllt aus. Dann mal ganz mutig alles löschen. Vorher alles gestoppt. docker compose down Volume löschen, nur ein Beispiel docker volume rm opencloud_full_opencloud-data Alles gelöscht. Dann mal ein Neustart docker compose up -d Jetzt sieht das schon viel besser aus. dockeruser@opencloud:~/opencloud/deployments/examples/opencloud_full$ docker volume ls DRIVER VOLUME NAME local 3737a8eab68ffdc08d6e41493346feeb2e06ef350a210213ab450775318e49f8 local opencloud_full_opencloud-apps Da ich neugierig bin, schauen wir mal rein. root@opencloud:~ ls -lha /var/lib/docker/volumes/3737a8eab68ffdc08d6e41493346feeb2e06ef350a210213ab450775318e49f8/_data/web/assets/apps/ total 8.0K drwxr-x--x 2 dockeruser dockeruser 4.0K May 19 18:25 . drwxr-x--x 3 dockeruser dockeruser 4.0K May 31 10:21 .. Vermutlich ein Speicher, wo die Web Apps was ablegen können. Der andere zeigt es dann klarer. root@opencloud-4gb-fsn1-2:~# ls -lha /var/lib/docker/volumes/opencloud_full_opencloud-apps/_data total 28K drwxr-x--x 7 dockeruser dockeruser 4.0K May 31 10:22 . drwx-----x 3 root root 4.0K May 31 10:21 .. drwxr-xr-x 2 root root 4.0K May 31 10:22 draw-io drwxr-xr-x 2 root root 4.0K May 31 10:21 external-sites drwxr-xr-x 3 root root 4.0K May 31 10:22 json-viewer drwxr-xr-x 2 root root 4.0K May 31 10:22 progress-bars drwxr-xr-x 3 root root 4.0K May 31 10:22 unzip Ok, das sollte mir erst mal reichen. Meine Installation lagert die certs ja aus, das habe ich im docker compose geändert. dockeruser@opencloud:~/opencloud/deployments/examples/opencloud_full$ ls -lha certs/ total 44K drwxr-xr-x 2 dockeruser dockeruser 4.0K May 30 05:49 . drwxr-xr-x 6 dockeruser dockeruser 4.0K May 31 10:38 .. -rw------- 1 dockeruser dockeruser 33K May 29 11:00 acme.json Im docker-compose.yml volumes: - ./certs:/certs # bind-mount acme.json Der Grund dafür ist, das ich das docker-compose nicht als root laufen haben möchte. Die Hauptdaten sind nach lokal ausgelagert. OC_CONFIG_DIR=/home/dockeruser/oc_data/config OC_DATA_DIR=/home/dockeruser/oc_data/data Somit sollte jetzt alles so passen und ich muss mal langsam mit der Spielerei aufhören
  • Es gibt Hoffnung, das wir diesen Müll noch loswerden.

    Uncategorized linux opensource
    9
    0 Stimmen
    9 Beiträge
    87 Aufrufe
    frankm@nrw.socialF
    @lerothas Ist mir so von einem Systemadministrator berichtet worden, der beide Welten bestens kennt. Ich nutze nur einen M$ Rechner zum zocken, der ist sehr selten an..---
  • RockPro64 - Mainline Kernel 6.8.0-rc3

    ROCKPro64 rockpro64 linux mainline
    2
    0 Stimmen
    2 Beiträge
    480 Aufrufe
    FrankMF
    https://github.com/ayufan-rock64/linux-mainline-kernel/releases/tag/6.8.0-1190-ayufan
  • Proxmox - Umzug auf neue Hardware ASRock N100DC-ITX

    Angeheftet Proxmox n100dc-itx asrock linux
    25
    2
    0 Stimmen
    25 Beiträge
    5k Aufrufe
    FrankMF
    Hallo @wooshell , erst mal sehr schade das Du so einen Stress mit dem Board hast. Ich habe das jetzt schon Monate laufen, übrigens ohne einen Kühler. Ok, wird ordentlich warm aber ich hasse Lüfter Ich kann leider nicht so richtig erkennen, wo dein Problem liegt. Wie groß ist dein Speicher? Ist der in der Liste der unterstützen RAM Riegel? Das habe ich verbaut. RAM: Corsair Vengeance SODIMM 32GB (2x16GB) DDR4 2400MHz CL16 https://www.corsair.com/de/de/Kategorien/Produkte/Arbeitsspeicher/VENGEANCE-DDR4-SODIMM/p/CMSX32GX4M2A2400C16 Aus dem Bauch heraus, würde ich auf RAM tippen.
  • Vaultwarden auf Debian Bookworm 12 installieren!

    Angeheftet Linux vaultwarden bookworm linux
    6
    5
    0 Stimmen
    6 Beiträge
    4k Aufrufe
    I
    Vielen lieben Dank Nico! Jetzt läuft vaultwarden.
  • Portainer - NodeBB Container erstellen

    Linux nodebb portainer linux redis
    1
    5
    0 Stimmen
    1 Beiträge
    345 Aufrufe
    Niemand hat geantwortet
  • Kopia - HTTP/S Server aufsetzen

    Angeheftet Kopia kopia linux
    1
    0 Stimmen
    1 Beiträge
    502 Aufrufe
    Niemand hat geantwortet
  • Redis Replication

    Angeheftet Verschoben Redis linux redis
    4
    1 Stimmen
    4 Beiträge
    599 Aufrufe
    FrankMF
    Um die Verbindung zu testen, kann man folgende Befehle nutzen. redis-cli -h 10.1.1.0 -p 6379 -a <PASSWORD> und telnet 10.1.1.0 6379