It was the year of 2015 and people were still developing new applications in PHP... but for those who could no longer accept the idea of installing a system-wide LAMP stack, there was a new-old fassionable thing: Containers!
This is a quick howto for creating a throw-away container for messing around with PHP apps on Fedora. Most of it is taken from the examples at the bottom of 'man 1 systemd-nspawn'
Create the directory for the container filesystem:
[user@host]$ mkdir web-dev-container
Install a minimal Fedora image (including apache and php) into the new container root:
[user@host]$ sudo yum -y --releasever=21 --nogpg --installroot=$(pwd)/web-dev-container --disablerepo='*' --enablerepo=fedora install systemd passwd yum fedora-release less vim iproute httpd php
Update the SELinux context:
[user@host]$ sudo semanage fcontext -a -t svirt_sandbox_file_t "web-dev-container(/.*)?"
[user@host]$ sudo restorecon -R web-dev-container
Spawn the new container:
[user@host]$ sudo systemd-nspawn -D web-dev-container
In the new container, change the root password:
[root@container]# passwd
[root@container]# logout
Boot the new container:
[user@host]$ sudo systemd-nspawn -bD web-dev-container
Enable and start the web server and check that it's running:
[root@container]# systemctl enable httpd.service
[root@container]# systemctl start httpd.service
[root@container]# ss -lt
Check http://localhost in a web browser.
Add an index.html file:
[root@container]# echo "Hello World" >> /var/www/html/index.html
[root@container]# echo "<?php echo \"Hello PHP World\" ?>" > /var/www/html/index.php
Refresh http://localhost
Check http://localhost/index.php
You can now logout of the container (it will keep running).
Change the ownership and hack away!
[user@host]$ sudo chown -R user.user web-dev-container/var/www/html
[user@host]$ vim web-dev-container/var/www/html/index.php
Login to the container, if needed:
[user@host]$ sudo machinectl login web-dev-container
Exit the container by pressing ^] three times in one second.