Utilizzo di systemd per le variables di ambiente Apache o SetEnv?

Il mio sistema:

  1. CentOS 7.2.1511 (Core)
  2. Apache 2.4.6

Ho poche variables d'ambiente che vorrei aggiungere a Apache.

  • Come controllare il server CentOS 6 Server VM dopo un dominio di potere?
  • Certificati client multipli in SSLProxyMachineCertificateFile
  • virt-convertire OVF a KVM
  • Spostare lo spazio da un volume a altro
  • Apache riport uno stato di 200 per gli URL non esistenti di WordPress
  • Certbot letsencrypt su port diversa da 443
  • Attualmente sto facendo aggiungendo nel mio file /etc/httpd/conf.d/vhosts.conf così:

     SetEnv API_USERNAME 'my_special_username' SetEnv API_PASSWORD 'my_special_password' 

    Sono in grado di accedere alle due variables di ambiente in PHP tramite:

     echo $_SERVER['API_USERNAME']; echo $_SERVER['API_PASSWORD']; // or echo getenv('API_USERNAME'); echo getenv('API_PASSWORD'); 

    Recentemente ho scoperto che potrei aggiungere anche variables di ambiente via systemd :

    Creo il file /etc/systemd/systemd/httpd.service.d/envvars.conf :

     [Service] Environment="API_USERNAME=my_special_username" Environment="API_PASSWORD=my_special_password" 

    systemctl daemon-reload

    systemctl restart httpd

    Sono in grado di accedere alle due variables di ambiente in PHP tramite:

     echo getenv('API_USERNAME'); echo getenv('API_PASSWORD'); // $_SERVER does not work when I specify environment variables in systemd echo $_SERVER['API_USERNAME']; // returns blank echo $_SERVER['API_PASSWORD']; // returns blank 

    Domanda

    In termini di sicurezza o best practice, sarebbe meglio aggiungere le mie variables di ambiente Apache in un file di configuration con SetEnv o systemd ? O non import?

    One Solution collect form web for “Utilizzo di systemd per le variables di ambiente Apache o SetEnv?”

    Sono d'accordo con ciò che dice Tvon e vorrei aggiungere in modo più specifico che systemd sarebbe veramente il posto sbagliato per mettere quelle variables di ambiente Apache. Altre applicazioni o processi che utilizzano Systemd non hanno bisogno di conoscere queste variables.

    Vorrei anche considerare se ospitereste più siti PHP sullo stesso server e se così, invece di attaccare tutto

     /etc/httpd/conf.d/vhosts.conf 

    Vorrei anche considerare l'utilizzo del metodo disponibile del sito aka il "modo debian"

    Come configurare Apache (siti-disponibili vs httpd.conf)

    Sotto il metodo basato su questa guida per Centos https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-centos-7#step-four-%E2%80 % 94 new-virtuali-host-files-creare-

     sudo mkdir /etc/httpd/sites-available sudo mkdir /etc/httpd/sites-enabled 

    Dite a Apache di cercare host virtuali nella directory abilitata ai siti. modificando il file di configuration principale di Apache e aggiungere una row che dichiara una directory opzionale per ulteriori file di configuration:

     sudo nano /etc/httpd/conf/httpd.conf 

    Aggiungi una row alla fine del file IncludeOptional sites enabled / *. Conf

    Salvare e chiudere il file. Quindi creare un file host virtuale.

     sudo nano /etc/httpd/sites-available/example.com.conf <VirtualHost *:80> </VirtualHost> 

    Quindi aggiungere le direttive per il tuo primo sito web

     <VirtualHost *:80> ServerName www.example.com ServerAlias example.com SetEnv API_USERNAME 'my_special_username' SetEnv API_PASSWORD 'my_special_password' DocumentRoot /var/www/example.com/public_html ErrorLog /var/www/example.com/error.log CustomLog /var/www/example.com/requests.log combined </VirtualHost> 

    Salvare e chiudere il file. Quindi fare una copia chiamata example2.com.conf per il tuo secondo sito web

     sudo cp /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-available/example2.com.conf 

    Modifica il file e apport le modifiche necessarie

     sudo nano /etc/httpd/sites-available/example2.com.conf <VirtualHost *:80> ServerName www.example2.com ServerAlias example2.com SetEnv API_USERNAME 'my_other_special_username' SetEnv API_PASSWORD 'my_other_special_password' DocumentRoot /var/www/example2.com/public_html ErrorLog /var/www/example2.com/error.log CustomLog /var/www/example2.com/requests.log combined </VirtualHost> 

    Dovnetworking quindi abilitare i siti creando un symlink dalla directory abilitata ai siti alla directory disponibile dei siti

     sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf sudo ln -s /etc/httpd/sites-available/example2.com.conf /etc/httpd/sites-enabled/example2.com.conf 

    Quindi riavviare apache (di solito faccio una configuration prima per vedere se c'è qualche errore)

     sudo apachectl configtest 

    se tutto va bene

     sudo apachectl restart 

    Altri vantaggi di questo metodo è che potresti creare nuove versioni di configurazioni esistenti e utilizzare il collegamento symlink per indicare avanti e indietro se si verificano problemi con la nuova configuration o abilitare / disabilitare siti web quando necessario.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.