Моя система:
У меня есть несколько переменных среды, которые я хотел бы добавить в Apache.
Сейчас я делаю это, добавляя в свой /etc/httpd/conf.d/vhosts.conf
файл так:
SetEnv API_USERNAME 'my_special_username'
SetEnv API_PASSWORD 'my_special_password'
Я могу получить доступ к двум переменным среды в PHP через:
echo $_SERVER['API_USERNAME'];
echo $_SERVER['API_PASSWORD'];
// or
echo getenv('API_USERNAME');
echo getenv('API_PASSWORD');
В последнее время, Я обнаружил, что могу также добавить переменные среды через systemd:
Я создаю файл /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
Я могу получить доступ к двум переменным среды в PHP через:
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
Вопрос
С точки зрения безопасности или передового опыта, было бы лучше добавить мои переменные среды Apache в Файл конфигурации с SetEnv или systemd? Или это не важно?
Я согласен с тем, что говорит Твон, и хотел бы более конкретно добавить, что systemd - действительно неправильное место для размещения этих переменных среды Apache. Другим приложениям или процессам, использующим Systemd, не нужно знать об этих переменных.
Я бы также подумал, будете ли вы размещать несколько сайтов PHP на одном сервере, и если да, вместо того, чтобы вставлять все в
/etc/httpd/conf.d/vhosts.conf
Я бы также подумал об использовании метода, доступного для сайта, также известного как «debian-way».
Как настроить Apache (сайты доступны или httpd.conf)
Ниже метод, основанный на этом руководстве для 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-файлы
sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled
Скажите Apache, что нужно искать виртуальные хосты в каталоге сайтов. отредактировав основной файл конфигурации Apache и добавив строку, объявляющую необязательный каталог для дополнительных файлов конфигурации:
sudo nano /etc/httpd/conf/httpd.conf
Добавьте строку в конец файла IncludeOptional sites-enabled / *. Conf
Сохраните и закройте файл. Затем создайте файл виртуального хоста.
sudo nano /etc/httpd/sites-available/example.com.conf
<VirtualHost *:80>
</VirtualHost>
Затем добавьте директивы для своего первого веб-сайта.
<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>
Сохраните и закройте файл. Затем сделайте копию с именем example2.com.conf для своего второго веб-сайта.
sudo cp /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-available/example2.com.conf
Отредактируйте файл и внесите соответствующие изменения
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>
Затем вам нужно будет включить сайты, создав символическую ссылку из каталога с поддержкой сайтов в каталог с доступными сайтами.
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
Затем перезапустите apache (обычно я сначала провожу конфигурацию, чтобы увидеть, есть ли ошибки)
sudo apachectl configtest
если все в порядке
sudo apachectl restart
Другим преимуществом этого метода является то, что вы можете создавать новые версии существующих конфигураций и использовать символические ссылки, чтобы указывать туда и обратно, если возникнут какие-либо проблемы с новой конфигурацией, или включать / отключать веб-сайты при необходимости.