Experimenting with the package manager of the future
Start of with a Fresh install of Debian 9 Stretch and proceed to install the NIX Packet Manager: (Dont use root but a privileged user with SUDO permission)
# curl https://nixos.org/nix/install | sh
Then install the following packages using the nix-env command
# nix-env -i mariadb nginx openssl php
To query your database of installed packages you can issue
# nix-env -q
Next we add a user for php-fpm pool
# sudo mkdir -p /var/www/server1.asbra.lan
# sudo adduser --home /var/www/server1.asbra.lan/ --no-create-home --disabled-login web-server1
Configure the PHP-FPM Pool
Add virtual host config for PHP-FPM, With chroot
# vim ~/.nix-profile/etc/php-fpm.d/server1.conf
[server1]
user = web-server1
group = nogroup
listen = 127.0.0.1:9001
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /status
chroot = /var/www/server1.asbra.lan
chdir = /html
php_flag[display_errors] = on
Configure NGinx Virtual Host
# vim ~/.nix-profile/conf/nginx.conf
http {
...
server {
listen 80;
server_name server1.asbra.lan;
access_log logs/server1.asbra.lan.access.log;
location / {
root /var/www/server1.asbra.lan/html;
index index.html index.htm;
}
location ~ \.php$ {
root /html;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
...
}
Start Services
# sudo ~/nix-profile/bin/php-fpm
# sudo ~/nix-profile/bin/nginx
Restart Services
# sudo kill -USR2 $(ps waux | grep "php-fpm: master" |egrep '^root(.*)' | awk '{print $2}')
# sudo ~/nix-profile/bin/nginx -s reload
