Usando o systemd para variáveis de ambiente do Apache ou SetEnv?

5

Meu sistema:

  1. CentOS 7.2.1511 (essencial)
  2. Apache 2.4.6

Eu tenho algumas variáveis de ambiente que gostaria de adicionar ao Apache.

No momento, estou adicionando meu arquivo /etc/httpd/conf.d/vhosts.conf da seguinte forma:

SetEnv API_USERNAME 'my_special_username'
SetEnv API_PASSWORD 'my_special_password'

Eu consigo acessar as duas variáveis de ambiente no PHP via:

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

Recentemente , descobri que também podia adicionar variáveis de ambiente através do systemd :

Eu crio o arquivo /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

Eu consigo acessar as duas variáveis de ambiente no PHP via:

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

Pergunta

Em termos de segurança ou melhores práticas, seria melhor adicionar minhas variáveis de ambiente do Apache a um arquivo de configuração com SetEnv ou systemd ? Ou isso não importa?

    
por Jeffrey Wen 13.12.2016 / 01:21

1 resposta

1

Concordo com o que o Tvon diz e gostaria de acrescentar mais especificamente que o systemd seria realmente o lugar errado para colocar essas variáveis de ambiente do Apache. Outros aplicativos ou processos que usam o Systemd não precisam saber sobre essas variáveis.

Eu também consideraria se você estaria hospedando vários sites PHP no mesmo servidor e, em caso afirmativo, em vez de colocar tudo em

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

Eu também consideraria usar o método disponível no site, também conhecido como "debian-way"

Como configurar o Apache (sites disponíveis vs httpd. conf)

Abaixo o método baseado neste guia para Centos. passo-quatro-% E2% 80% 94-criar-novo-virtual-host-files "> link

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

Diga ao Apache para procurar hosts virtuais no diretório habilitado para sites. editando o arquivo de configuração principal do Apache e adicionando uma linha declarando um diretório opcional para arquivos de configuração adicionais:

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

Adicione uma linha ao final do arquivo     IncludeOptional sites-enabled / *. Conf

Salve e feche o arquivo. Em seguida, crie um arquivo host virtual.

sudo nano /etc/httpd/sites-available/example.com.conf

<VirtualHost *:80>

</VirtualHost>

Em seguida, adicione os directvies para o seu primeiro site

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

Salve e feche o arquivo. Então faça uma cópia chamada example2.com.conf para o seu segundo site

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

Edite o arquivo e faça alterações 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>

Você precisará ativar os sites criando um link simbólico do diretório habilitado para sites para o diretório disponível para sites

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

Em seguida, reinicie o apache (geralmente eu faço um configtest primeiro para ver se há algum erro)

sudo apachectl configtest

se tudo estiver bem

sudo apachectl restart

Outros benefícios desse método é que você pode criar novas versões de configurações existentes e usar o link simbólico para apontar e para trás se houver problemas com a nova configuração ou ativar / desativar sites quando necessário.

    
por 11.01.2017 / 01:16