- Astra linux nginx установка
- Собираем Nginx из исходного кода в Astra Linux с поддержкой OpenSSL 3.0.3
- Установка
- Загрузка исходного кода OpenSSL 3.0.3
- Конфигурирование и сборка nginx
- Запускаем nginx как службу
- Заключение
- Установка и настройка связки NGINX + PHP + СУБД на Astra Linux
- Подготовка сервера
- Установка и настройка Nginx, PHP, MySQL
Astra linux nginx установка
Скачиваем дистрибутив КриптоПро CSP с сайта.
Распаковываем и устанавливаем КриптоПро CSP КС1 с дополнительными компонентами lsb-cprocsp-devel:
tar -xvf ./linux-amd64_deb.tgz && cd ./linux-amd64_deb/
sudo ./install.sh kc1 lsb-cprocsp-devel cprocsp-stunnel
Для сборки Nginx на Astra Smolensk 1.6 SE необходимо установить пакеты build-essential и patch.
Скачиваем актуальный devel DVD — https://download.astralinux.ru/astra/stable/smolensk/devel/1.6/
Монтируем:
sudo apt-cdrom add
sudo apt update
sudo apt-get install build-essential patch
Скачиваем Nginx и накладываем патч:
wget https://nginx.org/download/nginx-1.18.0.tar.gz
tar -xvf ./nginx-1.18.0.tar.gz
cp ./ng-nginx.1.18.0.patch ./nginx-1.18.0 && cd ./nginx-1.18.0/
patch -p1 < ./ng-nginx.1.18.0.patch
Получаем дополнительные исходные тексты:
wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz
tar -xvf ./pcre-8.45.tar.gz
wget https://zlib.net/zlib-1.2.13.tar.gz
tar -xvf ./zlib-1.2.13.tar.gz
wget https://www.openssl.org/source/openssl-1.1.1o.tar.gz
tar -xvf ./openssl-1.1.1o.tar.gz
Собираем (предварительно проверив пути):
./configure \
—user=nginx \
—group=nginx \
—with-cc-opt=’-fstack-protector -fstack-protector-strong —param=ssp-buffer-size=4 -Wformat -Werror=format-security -Werror=implicit-function-declaration -Winit-self -Wp,-D_FORTIFY_SOURCE=2 -fPIC’ \
—with-ld-opt=’-Wl,-z,relro -Wl,-z,now -Wl,—as-needed -pie -L/opt/cprocsp/lib/amd64 -lrdrsup -lssp -lcapi10 -lcapi20′ \
—prefix=/opt/nginx \
—conf-path=/etc/nginx/nginx.conf \
—error-log-path=/var/log/nginx/error.log \
—http-log-path=/var/log/nginx/access.log \
—lock-path=/var/run/lock/nginx.lock \
—pid-path=/var/run/nginx.pid \
—with-pcre=./pcre-8.45/ \
—with-pcre-jit \
—with-zlib=./zlib-1.2.13/ \
—with-http_ssl_module \
—with-http_sspi_module \
—with-http_stub_status_module \
—with-openssl=./openssl-1.1.1o/ \
—with-openssl-opt=’no-gost no-comp no-dtls no-deprecated no-dynamic-engine no-engine no-hw-padlock no-nextprotoneg no-psk no-tests no-ts no-ui-console no-ocsp’ \
—with-stream \
—with-stream_ssl_module \
—with-stream_sspi_module \
—with-http_v2_module
Для rhel based дистрибутивов добавляются опции:
—with-pcre-opt=-fPIC —with-zlib-opt=-fPIC
Копируем базовый конфиг в директорию с кодом:
sudo cp ./nginx.conf.sample ./nginx-1.18.0/conf/nginx.conf
make
sudo make install
Создаем системного пользователя:
sudo adduser —system —no-create-home —group nginx
sudo chown -R nginx:nginx /var/log/nginx/
Переносим init скрипт:
sudo cp ./nginx.init /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo systemctl daemon-reload
Создаем запрос на сертификат для Nginx:
sudo -u nginx /opt/cprocsp/bin/amd64/cryptcp -creatrqst -provtype 80 -rdn ‘CN=Astra, C=RU ,S=77 Москва, L=г. Москва’ -certusage 1.3.6.1.5.5.7.3.1 -cont ‘\\.\HDIMAGE\nginx1’ -ex /tmp/request.req
Выпускаем на УЦ сертификат по запросу и устанавливаем в контейнре:
sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -install -store uMy -cont ‘\\.\HDIMAGE\nginx1’ -file /tmp/user.crt
Дополнительная информация и пример конфигурационного файла по ссылке.
Доступность сервиса проверяем с помощью:
csptest
/opt/cprocsp/bin/amd64/csptest -tlsc -server host_name -v
браузера с поддержкой ГОСТ TLS (на Linux — Chromium GOST)
Открыть страницу в браузере, посмотреть сертификат, убедиться что алгоритм ГОСТ.
Собираем Nginx из исходного кода в Astra Linux с поддержкой OpenSSL 3.0.3
Доступной версией Nginx в Astra Linux является версия 1.14.1 , но вам, возможно, вам может потребоваться свежая версия, на момент написания статьи это 1.20.2 . В репозитории Astra Linux находится на данный момент немного устаревшая версия библиотеки libssl-dev , версии 1.1.1k . Мы будем сразу использовать новую версию ветки OpenSSL 3 (3.0.3) , она будет поддерживаться до 7 сентября 2026 . К тому же у вас могут возникнуть проблемы со сборкой последней версии Nginx при использовании OpenSSL 1.1.1k . Сегодня мы рассмотрим сборку из исходного кода web-сервера Nginx на Astra Linux с поддержкой OpenSSL 3.0.3 .
Установка
sudo apt update sudo apt upgrade sudo apt install build-essential git perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-dev zlib1g-dev libssl1.0-dev libpcre2-dev libpcre2-posix0 mercurial wget libpcre3-dev
cd ~ hg clone http://hg.nginx.org/nginx -r stable-1.20 ~/nginx
Для сборки нам потребуется свежая версия OpenSSL так как с версиями ветки 1 у меня возникли проблемы со сборкой Nginx .
Загрузка исходного кода OpenSSL 3.0.3
cd ~/nginx wget --no-check-certificate https://www.openssl.org/source/openssl-3.0.3.tar.gz
echo 'ee0078adcef1de5f003c62c80cc96527721609c6f3bb42b7795df31f8b558c0b openssl-3.0.3.tar.gz' | tee openssl-3.0.3.tar.gz.sha256 sha256sum --check openssl-3.0.3.tar.gz.sha256 openssl-3.0.3.tar.gz: ЦЕЛ
Конфигурирование и сборка nginx
./auto/configure \ --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --builddir=nginx-astra-linux \ --with-select_module \ --with-poll_module \ --with-threads \ --with-file-aio \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module=dynamic \ --with-http_image_filter_module=dynamic \ --with-http_geoip_module=dynamic \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_slice_module \ --with-http_stub_status_module \ --with-http_perl_module=dynamic \ --with-http_ssl_module \ --with-pcre \ --with-pcre-jit \ --with-openssl=./openssl-3.0.3
sed -e "s|%%PREFIX%%|/etc/nginx|" \ -e "s|%%PID_PATH%%|/var/run/nginx.pid|" \ -e "s|%%CONF_PATH%%|/etc/nginx/nginx.conf|" \ -e "s|%%ERROR_LOG_PATH%%|/var/log/nginx/error.log|" \ < docs/man/nginx.8 >nginx-astra-linux/nginx.8 make[1]: выход из каталога «/home/user/nginx»
sudo nginx -v nginx version: nginx/1.20.2
sudo nginx -V nginx version: nginx/1.20.2 built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) built with OpenSSL 3.0.3 3 May 2022 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --builddir=nginx-astra-linux --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_ssl_module --with-pcre --with-pcre-jit --with-openssl=~/openssl-3.0.3
Запускаем nginx как службу
sudo mcedit /lib/systemd/system/nginx.service
[Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
sudo systemctl enable nginx sudo systemctl daemon-reload
sudo systemctl start nginx
Заключение
Сегодня мы рассмотрели сборку из исходного кода web-сервера nginx с поддержкой последней версии openssl 3.0.3 . Установили требуемые пакеты Загрузили исходный код Nginx и Openssl . Сконфигурировали и произвели сборку nginx Установили web-сервер и проверили версию и его конфигурацию. Запустили сервер как службу. Проверили загрузку тестовой страницы.
Установка и настройка связки NGINX + PHP + СУБД на Astra Linux
Обновлено: 21.03.2023 Опубликовано: 2016 год или раньше
Мы рассмотрим процесс настройки небольшого веб-сервера на базе NGINX с интерпретатором PHP и системами управления базами данных MySQL и PostgreSQL.
Данную инструкцию можно использовать для любой операционной системы Linux на основе Debian.
Подготовка сервера
Заходим в систему под суперпользователем:
Настраиваем сеть. В Astra Linux это делается также как и в Ubuntu:
auto eth0
iface lo inet eth0
address 192.168.0.15
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1 192.168.0.2
* В данном примере мы настроили сетевой интерфейс eth0 (задали IP-адрес 192.168.0.15 маску 255.255.255.0 и шлюз по умолчанию 192.168.0.1)
Для применения настроек необходимо перезапустить сетевую службу:
service networking restart
В Astra Linux по умолчанию не настроены репозитории для установки пакетов, поэтому необходимо это сделать:
deb ftp://ftp.astra-linux.com/astra/current/orel/repository orel main contrib non-free
* Эта строчка подключает официальный репозиторий Astra Linux.
Теперь нужно обновить список пакетов и обновить систему:
Установим sshd для возможности удаленного управления нашим сервером:
apt install openssh-server
Установка и настройка Nginx, PHP, MySQL
Устанавливаем пакет mysql-server:
* Во время установки будет предложено ввести новый пароль для mysql-записи root
В официальных репозиториях Astra Linux нет Nginx, поэтому подключим официальный от nginx inc.:
deb http://nginx.org/packages/debian/ wheezy nginx
* wheezy соответствует 7-й версии Debian. У вас может быть другая версия. Будьте внимательны.
Для успешного получения списка пакетов от нового репозитория, добавляем в систему PGP-ключ:
apt-key add nginx_signing.key
Теперь можем обновлять список пакетов и устанавливать веб-сервер nginx:
Демон запускается автоматически. Попробуйте открыть браузер и ввести IP-адрес сервера. Вы должны увидеть приветствие от Nginx.
Устанавливаем php и php-интерпретатор:
В Astra Linux по умолчанию nginx работает от учетной записи nginx, а php-fpm — от www-data. В результате этого при попытке использовать веб-сервер с php-скриптами мы получим ошибку. Для решения этой проблемы необходимо поменять пользователя, от которого будет работать либо nginx, либо php-fpm. В данном примере, nginx:
* самая первая строчка — меняем nginx на www-data.
Настраиваем виртуальный домен для нового сайта:
server listen 80;
server_name site.local;
set $root_path /var/www/site.local;
gzip on;
client_max_body_size 128M;
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types application/x-javascript text/plain application/xml text/css;
location / allow 192.168.0.0/16;
deny all;
root $root_path;
index index.php;
>
location ~ \.php$ fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
>
location ~* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|exe|tar|bmp|js)$ root $root_path;
expires modified +1w;
>
>
* site.local необходимо заменить на домен вашего веб-приложения или сайта.
** /var/www/site.local — директория, в которую мы поместим файлы сайта.
*** allow 192.168.0.0/16 — подсеть, для которой мы разрешаем доступ к сайту. Если ограничивать не требуется, удалите строчку и следующую за ней deny all.
**** Остальные параметры я рекомендую изучить самостоятельно.
Создаем директорию для сайта, которую мы указали в конфигурационном файле:
Создаем в нем файл index.php с функцией phpinfo:
Перезапускаем наши демоны:
service php5-fpm restart && service nginx restart
Проверьте работоспособность сервера, введя в адресной строке браузера IP-адрес сервера (в данном примере, 192.168.0.15). Сервер должен вернуть много параметров в различных таблицах.
Также в данных таблицах вы должны увидеть «MySQL Suppert — Enabled». Это говорит о том, что сервер готов к работе с базой MySQL.