Jump to content
Froxlor Forum
  • 0
hede

Debian Stretch und libnss-extrausers

Question

Hallo,

ich habe Debian Strecht und nginx mit MariaDB installiert und möchte gern PHP 7 mit FPM ans laufen bekommen.

Das erste Problem, dass ich habe ist, dass die Ausgabe von ls /var/customers/webs nicht die User sondern nur die ID ausgibt.

drwxr-xr-x 5 10000 10000 4096 Nov 10 15:26 web1

Habe alles wie in der Anleitung beschrieben installiert und erhalte auch hier die User:

cat /var/lib/extrausers/passwd
web1:x:10000:10000:Froxlor User:/var/customers/webs/web1/:/bin/false

Nun läuft der Webserver auch trotzdem und ich kann per FTP Dateien hochladen. Allerdings wird der PHP Socket nicht erstellt.

In der vHost steht z.B.

fastcgi_pass unix:/var/run/php/web1-meinedomain.de-php-fpm.socket;

Im Ordner /var/run/php existieren aber nur php7.0-fpm.pid und php7.0-fpm.sock. Im Froxlor Backend habe ich " Verwende libnss-extrausers anstatt libnss-mysql" aktiviert. Cronjobs sind auch eingerichtet.

 

Ich hatte auch mal in der /etc/php/7.0/fpm/pool.d/www.conf folgende Zeile eingefügt "include=/etc/php-fpm.d/*.conf". Ob das richtig ist weiß ich leider nicht. Aber wenn ich dann fpm neustarte erhalte ich folgende Fehler:

ERROR: [pool meinedomain.de] cannot get uid for user 'web1'

Ich vermute es hat mit libnss zu tun. Habt Ihr vielleicht eine Idee?

Share this post


Link to post
Share on other sites

7 answers to this question

Recommended Posts

  • 0

/etc/nsswitch.conf vergessen anzupassen? Und die PHP-Sockets stimmen schon so, hast du vllt den pfad zu den fpm-pool-configs nicht korrekt gesetzt in den Einstellungen? Bitte nicht davon ausgehen, dass die Defaults 100% passen!!!

Share this post


Link to post
Share on other sites
  • 0

In /etc/nsswitch.conf  steht:

# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
# You should place mysql at the end, so that it is queried after the other mechanisams
#
passwd:         compat mysql
group:          compat mysql
shadow:         compat mysql

hosts:       files dns
networks:    files dns

services:    db files
protocols:   db files
rpc:         db files
ethers:      db files
netmasks:    files
netgroup:    files
bootparams:  files

automount:   files
aliases:     files

Und in den Einstellungen habe ich soweit auch alles angepast:

FastCGI IPC Verzeichnis: /var/run/php/

Pfad zu php-fpm-Konfigurationen: /etc/php-fpm.d/

 

id web1 bringt folgende Ausgabe:
id: ‘web1’: no such user

Share this post


Link to post
Share on other sites
  • 0

joa, nsswitch ist falsch, nach Änderungen in den Einstellungen musst du die Konfigurationsschritte dafür auch noch mal durchgehen, für libnss-extrausers gibt es welche :) die nsswitch.conf muss doch wissen das sie extrausers nutzen soll und nicht mehr mysql

8 minutes ago, hede said:

Pfad zu php-fpm-Konfigurationen: /etc/php-fpm.d/

joa das wird nich passen, wirf mal nen blick in deine php-fpm.conf welcher ordner da inkludiert wird, bei debian meist eher sowas wie /etc/php/7.0/fpm/pool.d/

Share this post


Link to post
Share on other sites
  • 0

Vielen Dank. Habe mir ein paar mal den Konfigurationsschritt angesehen und immer gedacht da hat sich nichts geändert.:unsure:.

Der Pfad der PHP-Config muss auch "/etc/php/7.0/fpm/pool.d/" heißen. Damit werden jetzt die sockets angelegt und die Ordner Berechtigungen werden richtig gesetzt.

Share this post


Link to post
Share on other sites
  • 0

Jetzt habe ich allerdings ein neues Problem und ich kann das Froxlor Backend nicht öffnen, da die "run/php/php7.0-fpm.sock" fehlt.

In "/etc/php/7.0/fpm/pool.d" sind jetzt nur noch die configs von Froxlor drin und die vorherige www.conf wurde gelöscht. Wenn ich diese per Hand anlege wird wieder eine php7.0-fpm.sock angelegt aber das ist ja nicht sinn der Sache und wird nach jedem Cronjob gelöscht. Im Backend unter einstellungen habe ich beim Webserver den Pfad zu run/php/php7.0-fpm.sock angegeben.

Share this post


Link to post
Share on other sites
  • 0

Dann solltest du für das Froxlor panel selbst auch fpm aktivieren, ein mischmasch mit fpm und anderer integration ist nich zu empfehlen. Einstellungen -> Froxlor Vhost Einstellungen

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Similar Content

    • By irisdina
      Debian (9) Stretch
      1. 
      sudo apt install curl wget apt-transport-https dirmngr git 1a. Keys install
      wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb && dpkg -i deb-multimedia-keyring_2016.8.1_all.deb && wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key && curl https://packages.sury.org/php/apt.gpg | apt-key add - 1b. Source List ( nano /etc/apt/source.list )
      1c. 
      sudo apt update && sudo apt dist-upgrade && sudo apt autoclean && sudo apt autoremove 2.  MariaDB Install
      use sudo command for install MariaDB!
      sudo apt install mariadb-server mariadb-client 2a. MariaDB 10.1 Workround (Optional)
      when you MariaDB install with not sudo command, have you Problems with your Froxlor install. 
      you can use this workround: (Thanks J-BBB for this Note  )
      mysql -u root MariaDB [(none)]> update mysql.user set password=password('your PASS') where user='root'; MariaDB [(none)]> update mysql.user set plugin='' where user='root'; MariaDB [(none)]> flush privileges; 3. nginx Install
      sudo apt install nginx 3a. 
      mkdir /etc/nginx/sites-available mkdir /etc/nginx/sites-enabled 3b. nano /etc/nginx/nginx.conf
      3c. 
      service nginx restart 4. PHP install
      sudo apt update && sudo apt install php7.1-mysql php7.1-curl php7.1-gd php7.1-intl php-pear php-imagick php7.1-imap php7.1-mcrypt php-memcache php7.1-memcached php7.1-pspell php7.1-recode php7.1-sqlite3 php7.1-tidy php7.1-xmlrpc php7.1-xsl php7.1-mbstring php-gettext php7.1-fpm php7.1-cli php7.1-cgi php-bcmath php-zip 4a.
      service nginx restart service php7.1-fpm restart  
      Ubuntu 17.10 (Artful)
      1. 
      sudo apt install curl wget apt-transport-https dirmngr git software-properties-common python-software-properties 1b. Source List ( nano /etc/apt/source.list )
      1c. Key Install
      sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 1d. PPA (https://askubuntu.com/questions/4983/what-are-ppas-and-how-do-i-use-them/4987#4987)
      sudo add-apt-repository ppa:ondrej/nginx-mainline sudo add-apt-repository ppa:ondrej/php 2. 
      sudo apt update && sudo apt dist-upgrade && sudo apt autoclean && sudo apt autoremove 3.  MariaDB Install
      sudo apt install mariadb-server mariadb-client 3a. MariaDB 10.1 Workround (Optional)
      when you MariaDB install with not sudo command, have you Problems with your Froxlor install. 
      you can use this workround: (Thanks J-BBB for this Note  )
      mysql -u root MariaDB [(none)]> update mysql.user set password=password('your PASS') where user='root'; MariaDB [(none)]> update mysql.user set plugin='' where user='root'; MariaDB [(none)]> flush privileges; 4. nginx Install
      sudo apt install nginx 4a. nano /etc/nginx/nginx.conf
      4b. 
      service nginx restart 5. PHP install
      sudo apt update && sudo apt install php7.1-mysql php7.1-curl php7.1-gd php7.1-intl php-pear php-imagick php7.1-imap php7.1-mcrypt php-memcache php7.1-memcached php7.1-pspell php7.1-recode php7.1-sqlite3 php7.1-tidy php7.1-xmlrpc php7.1-xsl php7.1-mbstring php-gettext php7.1-fpm php7.1-cli php7.1-cgi php-bcmath php-zip 5a.
      service nginx restart service php7.1-fpm restart  
      Froxlor Install Git version
      1. vhost
      nano /etc/nginx/sites-enabled/frox 1a. 
      service nginx restart 2. Change dir
      cd /usr/share/nginx/ 2a. Froxlor git Load
      sudo git clone https://github.com/Froxlor/Froxlor.git 2a. Folder Rename
      mv /usr/share/nginx/Froxlor /usr/share/nginx/your Folder Name 2b. User/Group Change for Froxlor Folder
      sudo chown -HR www-data:www-data Your Froxlor Folder 3. Browser Open
      http://your-SubDomain/your-Frolxor-Folder 3c. Change Your DB/User Name for Froxlor

      Install Froxlor finish
      3d. Move userdata (Optional)
      mv /tmp/userdata.inc.php /usr/share/nginx/Your Froxlor Folder/lib/ 4. vhost delete
      rm /etc/nginx/site-enable/frox don't restart nginx!
      Froxlor Settings
      1. cronjob
      nano /etc/cron.d/froxlor # # Set PATH, otherwise restart-scripts won't find start-stop-daemon # PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # # Regular cron jobs for the froxlor package # # Please check that all following paths are correct # */5 * * * *    root    /usr/bin/nice -n 5 /usr/bin/php -q /usr/share/nginx/your Froxlor Folder/scripts/froxlor_master_cronjob.php chmod 0640 "/etc/cron.d/froxlor" chown root:0 "/etc/cron.d/froxlor" service cron restart Froxlor Panel
      1. Change your PHP-Backend Settings
      Settings > Webserver settings > Nginx PHP backend
      from 127.0.0.1:8888 to unix:/run/php/php7.1-fpm.sock
      2. Make Folder and Change chmod
      mkdir -p /etc/nginx/sites-enabled/ chown root:0 /etc/nginx/sites-enabled/ chmod 0600 /etc/nginx/sites-enabled/ mkdir -p /etc/nginx/sites-enabled/ chown root:0 /etc/nginx/sites-enabled/ chmod 0600 /etc/nginx/sites-enabled/ mkdir -p /home/customers/webs/ mkdir -p /var/customers/logs/ mkdir -p /var/customers/tmp chmod 1777 /var/customers/tmp service nginx restart 2a. IPs and Ports > Add IP/Port

      2a(1), SSL Port



      Wait 5min for Autimatic Start Froxlor's cronjob
      Optional
      PHP-FPM activate
      1. User/Group add
      sudo adduser froxlorlocal --disabled-password --no-create-home 2. libnss-extrausers install
      sudo apt install install nscd libnss-extrausers mkdir -p /var/lib/extrausers touch /var/lib/extrausers/{passwd,group,shadow} mv "/etc/nsswitch.conf" "/etc/nsswitch.conf.frx.bak" nano /etc/nsswitch.conf # Make sure that `passwd`, `group` and `shadow` have mysql in their lines # You should place mysql at the end, so that it is queried after the other mechanisams # passwd:         compat extrausers group:          compat extrausers shadow:         compat extrausers hosts:       files dns networks:    files dns services:    db files protocols:   db files rpc:         db files ethers:      db files netmasks:    files netgroup:    files bootparams:  files automount:   files aliases:     files sudo service nscd restart sudo nscd --invalidate=group 2a. Settings > System settings > Activate > Use libnss-extrausers instead of libnss-mysql

      3. Settings > PHP-FPM > Activated:
      Change from NO to YES
      3a. Settings > PHP-FPM > Settings
      Change > Configuration directory of php-fpm to 
      /etc/php/7.1/fpm/pool.d/ Change > php-fpm restart command to
      /etc/init.d/php7.1-fpm restart or service php7.1-fpm restart 3b. Settings > Froxlor VirtualHost settings > Activate > Enable PHP-FPM for the Froxlor vHost

      3c. When you 502 error on Nginx have, use this command (Optional) (Thanks lino16 for this Note)
      sudo usermod -a -G www-data froxlorlocal SSL / Let's Encrypt activate
      1. Create Folder on nginx
      mkdir /etc/nginx/ssl cd /etc/nginx/ssl 1a. Create SSL File
      sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt 1b. create acme.conf
      nano /etc/nginx/acme.conf location /.well-known/acme-challenge {     alias /usr/share/nginx/Your Froxlor Folder/.well-known/acme-challenge;     location ~ /.well-known/acme-challenge/(.*) {         default_type text/plain;     } } 2. Open your  Froxlor Panel
      Settings> SSL > Activated:
      Change from NO to YES
      2a. Settings > SSL > Settings
      Change your path from your certificate / Keyfile
      Path to the SSL certificate
      insert
      /etc/nginx/ssl/nginx.crt Path to the SSL Keyfile
      insert
      /etc/nginx/ssl/nginx.key 2b. Settings > SSL > Settings
      Activate > Enable Let's Encrypt

      2c. Activate on Settings > Froxlor VirtualHost settings
      - Enable Let's Encrypt for the froxlor vhost
      - Enable SSL-redirect for the froxlor vhost
      - HTTP Strict Transport Security (HSTS)
      - Include HSTS for any subdomain

       
    • By Pro-Webs
      Ein weiteres Problem, welches ich bei der Konfiguration von Nginx mit Froxlor habe wäre:
      Wie leite ich direkt bei Aufruf der domain bspw. www.hochzeitsfotografie-pajo.de auf https um?
      Soweit ich es ergoogelt habe müsste ich weitere "server" blöcke einbauen, dass geht über die vHost Einstellungen in Froxlor jedoch nicht.
      Eine Verschachtelung ist ebenfalls nicht möglich. Was wäre hier also der richtige Ansatz?
      Das gefundene Snippet wäre wie folgt:
      server { listen 80; listen [::]:80; server_name www.example.com; return 301 https://$server_name$request_uri; } server { listen 443 default_server ssl; server_name www.example.com; ssl_certificate /path/to/my/cert; ssl_certificate_key /path/to/my/key; }  
      Ideen und Vorschläge sind sehr willkommen
    • By OliverRahner
      Hi,
      because I had some issues with HTTP2 and php via fcgid under Apache I tried to switch to php_fpm.
      While I was at it, I noticed a problem that I couldn't pinpoint and decided to try nginx. The issue stayed the same, basically these log entries:
      nginx:
      connect() to unix:/var/lib/apache2/fastcgi/domainname.de-php-fpm.socket failed (13: Permission denied) while connecting to upstream, client: xx.xx.xx.xx, server: domainname.de, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://unix:/var/lib/apache2/fastcgi/domainname.de-php-fpm.socket:", host: "domainname.de", referrer: "https://domainname.de/" Apache:
      (13)Permission denied: [client xx.xx.xx.xx:63318] FastCGI: failed to connect to server "/var/www/php-fpm/web2/domainname.de/ssl-fpm.external": connect() failed The way I understand this problem:
      By design, php-fpm sockets created by Froxlor have permissions which only allow the vhost user to connect.
      But neither Apache nor nginx are told anywhere under which identity to connect to the socket.
      The SuExecUserGroup line in the vhost config file for Apache which does this for fcgid vanished when switching to php-fpm.
      I currently solved the problem by changing the line "listen.owner" inside the php-fpm pools to "www-data".
      That should not lower security, because php-fpm in itself takes care that the php process runs as the vhost user.
       
      Can someone tell me where I misunderstood the whole concept?
    • By OliverRahner
      And the next issue on my way to nginx'iness.
      I want to run Seafile on one vhost. I added all the settings Seafile told me to in their manual (https://manual.seafile.com/deploy/deploy_with_nginx.html).
      Didn't work at first (got 404'ed after the initial redirect), but once I commented out either the "try_files" in "location /" or in "location @php" it started working.
      It seems that the =404 which is default in "location @php" is the issue.
      Even after reading through the source code's "mergeVhostCustom" magic I couldn't find a way to override the default try_files statement without patching my Froxlor installation...
      Any hints?


×