¿Utilizar systemd para variables de entorno Apache o SetEnv?

Mi sistema:

  1. CentOS 7.2.1511 (Núcleo)
  2. Apache 2.4.6

Tengo bastantes variables de entorno que me gustaría añadir a Apache.

Actualmente lo estoy haciendo añadiendo en mi file /etc/httpd/conf.d/vhosts.conf como así:

 SetEnv API_USERNAME 'my_special_username' SetEnv API_PASSWORD 'my_special_password' 

Puedo acceder a las dos variables de entorno en PHP a través de:

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

Recientemente , descubrí que también podría agregar variables de entorno a través de systemd :

Creo el 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

Puedo acceder a las dos variables de entorno en PHP a través de:

 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 

Pregunta

En términos de security o mejores prácticas, ¿sería mejor agregar mis variables de entorno Apache a un file de configuration con SetEnv o systemd ? ¿O no importa?

Estoy de acuerdo con lo que dice Tvon y quisiera agregar más específicamente que systemd realmente sería el lugar equivocado para poner esas variables de entorno Apache. Otras aplicaciones o processs que utilizan Systemd no tienen necesidad de conocer esas variables.

También me gustaría considerar si usted sería el alojamiento de múltiples sitios de PHP en el mismo server y si es así en lugar de pegar todo en

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

También me gustaría considerar el uso del método disponible en el sitio aka el "debian-way"

Cómo configurar Apache (sites-available vs httpd.conf)

Debajo del método basado en esta guía para Centos https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-centos-7#step-four-%E2%80 % 94-create-new-virtual-host-files

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

Dígale a Apache que busque hosts virtuales en el directory habilitado para sitios. editando el file de configuration principal de Apache y agregando una línea que declare un directory opcional para files de configuration adicionales:

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

Añadir una línea al final del file IncludeOptional sitios habilitados / * .conf

Guarde y cierre el file. A continuación, cree un file de host virtual.

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

A continuación, agregue los directvies para su primer website

 <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> 

Guarde y cierre el file. Luego haga una copy llamada example2.com.conf para su segundo website

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

Editar el file y realizar cambios relevantes

 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> 

A continuación, deberá habilitar los sitios creando un enlace simbólico desde el directory habilitado para sitios al directory disponible en los sitios

 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 

A continuación, reinicie apache (normalmente hago un configtest primero para ver si hay algún error)

 sudo apachectl configtest 

si todo está bien

 sudo apachectl restart 

Otros beneficios de este método es que podría crear nuevas versiones de configuraciones existentes y utilizar el enlace simbólico para señalar hacia adelante y hacia atrás si hay problemas con la nueva configuration o habilitar / deshabilitar sitios web cuando sea necesario.