diff mbox

[WIP,2/2] gnu: Add "PHP FPM" OS config example.

Message ID 1481219530-786-3-git-send-email-h.goebel@crazy-compilers.com
State New
Headers show

Commit Message

Hartmut Goebel Dec. 8, 2016, 5:52 p.m. UTC
* gnu/system/examples/php-fpm.tmpl: New file.
* Makefile.am (EXAMPLES): Add it.
* doc/locak.mk (OS_CONFIG_EXAMPLES_TEXI): Add doc/os-config-php-fpm.texi.
* gnu/system/install.scm (/etc/configuration-files)[directory]: Add
  php-fpm.tmpl.
---
 Makefile.am                      |   3 +-
 doc/local.mk                     |   3 +-
 gnu/system/examples/php-fpm.tmpl | 115 +++++++++++++++++++++++++++++++++++++++
 gnu/system/install.scm           |   6 +-
 4 files changed, 123 insertions(+), 4 deletions(-)
 create mode 100644 gnu/system/examples/php-fpm.tmpl
diff mbox

Patch

diff --git a/Makefile.am b/Makefile.am
index 0e3ddac..f39c80b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -189,7 +189,8 @@  KCONFIGS =					\
 EXAMPLES =					\
   gnu/system/examples/bare-bones.tmpl		\
   gnu/system/examples/desktop.tmpl		\
-  gnu/system/examples/lightweight-desktop.tmpl
+  gnu/system/examples/lightweight-desktop.tmpl	\
+  gnu/system/examples/php-fpm.tmpl
 
 GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go)
 
diff --git a/doc/local.mk b/doc/local.mk
index 64bd2a5..f8b702e 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -48,7 +48,8 @@  EXTRA_DIST +=					\
 OS_CONFIG_EXAMPLES_TEXI =			\
   %D%/os-config-bare-bones.texi			\
   %D%/os-config-desktop.texi			\
-  %D%/os-config-lightweight-desktop.texi
+  %D%/os-config-lightweight-desktop.texi	\
+  %D%/os-config-php-fpm.texi
 
 # Bundle this file so that makeinfo finds it in out-of-source-tree builds.
 BUILT_SOURCES        += $(OS_CONFIG_EXAMPLES_TEXI)
diff --git a/gnu/system/examples/php-fpm.tmpl b/gnu/system/examples/php-fpm.tmpl
new file mode 100644
index 0000000..fb5143e
--- /dev/null
+++ b/gnu/system/examples/php-fpm.tmpl
@@ -0,0 +1,115 @@ 
+;; -*- mode: scheme -*-
+;;
+;; This is an operating system configuration template for a basic php-fpm
+;; server. It will serve a single page on http://localhost/
+
+(use-modules (gnu))
+(use-service-modules networking php web)
+(use-package-modules admin)
+(use-package-modules php) ; for php-hello-world, an example php application
+
+(define NGINX
+  ;; FIXME: should be (string-append nginx "/"))
+  "/gnu/store/np656cjgc87rv18klcr2vwxk6g0kjhbz-nginx-1.11.6")
+(define PHP-HELLO-WORLD
+  ;; FIXME: should be (string-append php-hello-world "/"))
+  "/gnu/store/9wqzxfs2xgr4ic1iwq124dq7cfqg1yi9-php-hello-world-0.1")
+
+;; TODO: Use nginx configuration mechanisms when they are finished
+(define (CONFIG nginx php-hello-world)
+  (string-append "
+user nginx www;
+pid /var/run/nginx/pid;
+error_log /var/log/nginx/error.log info;
+
+http {
+    client_body_temp_path /var/run/nginx/client_body_temp;
+    proxy_temp_path /var/run/nginx/proxy_temp;
+    fastcgi_temp_path /var/run/nginx/fastcgi_temp;
+    uwsgi_temp_path /var/run/nginx/uwsgi_temp;
+    scgi_temp_path /var/run/nginx/scgi_temp;
+    access_log /var/log/nginx/access.log;
+    error_log /var/log/nginx/error.log info;
+
+    server_tokens off;
+
+    include " nginx "/share/nginx/conf/fastcgi.conf;
+
+    server {
+      listen 80;
+      server_name _;
+      root " php-hello-world "/;
+      index index.php;
+
+      # Per server logging
+      access_log  /var/log/nginx/www.access.log;
+      error_log  /var/log/nginx/www.error.log notice;
+
+      location / {
+          try_files   $uri $uri/ /index.php;
+      }
+      # serve static files directly
+      location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
+          access_log        off;
+          expires           max;
+      }
+
+      location ~ \\.php$ {
+          try_files $uri =404;
+          fastcgi_pass unix:/var/run/php-fpm-www.sock;
+          fastcgi_index index.php;
+       }
+    }
+}
+"))
+
+(define CONFIG (CONFIG NGINX PHP-HELLO-WORLD))
+
+
+(operating-system
+  (host-name "phempton")
+  (timezone "Europe/Berlin")
+  (locale "en_US.UTF-8")
+  (kernel-arguments '("vga=791")) ; 1024x768 pixel
+
+  ;; Assuming /dev/sdX is the target hard disk, and "my-root" is
+  ;; the label of the target root file system.
+  (bootloader (grub-configuration (device "/dev/sdX")))
+  (file-systems (cons (file-system
+                        (device "my-root")
+                        (title 'label)
+                        (mount-point "/")
+                        (type "ext4"))
+                      %base-file-systems))
+
+  ;; Globally-installed packages.
+  (packages (cons*
+             php-hello-world ; an example php application
+             %base-packages))
+
+  ;; We need to add a user and a group for each pool (defaults are the pool
+  ;; name). TODO: This should be done automatically, based on the pool
+  ;; configuration given below.
+  (groups (cons
+           (user-group (name "www"))
+           %base-groups))
+  (users (cons
+          (user-account
+           (name "www")
+           (group "www")
+           (home-directory "/var/empty")
+           (shell (file-append shadow "/sbin/nologin")))
+          %base-user-accounts))
+
+  (services (cons*
+             (dhcp-client-service)
+             (console-keymap-service "de")
+             (nginx-service
+                #:config-file (plain-file "nginx.conf" CONFIG))
+             (php-fpm-service
+              #:config
+              (php-fpm-configuration
+               (pools (list
+                       (php-fpm-pool
+                        (name "www"))))))
+             %base-services)))
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index dfa003f..8c95944 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -224,10 +224,12 @@  the user's target storage device rather than on the RAM disk."
                                                                target)))
                                    '(#$(file "bare-bones.tmpl")
                                      #$(file "desktop.tmpl")
-                                     #$(file "lightweight-desktop.tmpl"))
+                                     #$(file "lightweight-desktop.tmpl")
+                                     #$(file "php-fpm.tmpl"))
                                    '("bare-bones.scm"
                                      "desktop.scm"
-                                     "lightweight-desktop.scm"))
+                                     "lightweight-desktop.scm"
+                                     "php-fpm.scm"))
                          #t))))
 
   `(("configuration" ,directory)))