From 0b2359210f7abf11b38fc11690c8f11b42e945f5 Mon Sep 17 00:00:00 2001
From: Anatoliy Guskov <anatoliy.guskov@gmail.com>
Date: Sat, 1 Aug 2015 00:12:53 +0300
Subject: [PATCH] Add CentOS install

---
 README.md | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 136 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 18bd4f0..9a1a701 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ sudo service supervisor restart
 
 WebVirtMgr is a libvirt-based Web interface for managing virtual machines. It can delegate Virtual Machine's to users. A noVNC viewer presents a full graphical console to the guest domain.  KVM is currently the only hypervisor supported.
 
-### Install WebVirtCloud panel
+### Install WebVirtCloud panel (Ubuntu)
 
 ```bash
 sudo apt-get -y install git python-virtualenv python-dev libxml2-dev libvirt-dev zlib1g-dev nginx supervisor
@@ -46,12 +46,146 @@ sudo service nginx restart
 sudo service supervisor restart
 ```
 
-### Setup libvirt and KVM on server
+Setup libvirt and KVM on server
 
 ```bash
 wget -O - https://clck.ru/9V9fH | sudo sh
 ```
 
+### Install WebVirtCloud panel (CentOS)
+
+```
+$ sudo yum -y install python-virtualenv python-devel libxml2-dev libvirt-devel glibc gcc nginx supervisor git libxml2 libxml2-devel git
+```
+
+#### Creating directories and cloning repo
+
+```
+mkdir /srv && cd /srv
+git clone https://github.com/retspen/webvirtcloud && cd webvirtcloud
+```
+
+#### Start installation webvirtcloud
+```
+virtualenv venv
+source venv/bin/activate
+pip install -r conf/requirements.txt
+cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d/
+python manage.py migrate
+```
+
+#### Configure the supervisor for CentOS
+Add the following after the [include] line (after **files = ... ** actually):
+```
+vim /etc/supervisord.conf
+
+[program:webvirtcloud]
+command=/srv/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /srv/webvirtcloud/gunicorn.conf.py
+directory=/srv/webvirtcloud
+user=nginx
+autostart=true
+autorestart=true
+redirect_stderr=true
+
+[program:novncd]
+command=/srv/webvirtcloud/venv/bin/python /srv/webvirtcloud/console/novncd
+directory=/srv/webvirtcloud
+user=nginx
+autostart=true
+autorestart=true
+redirect_stderr=true
+```
+
+#### Edit the nginx.conf file
+You will need to edit the main nginx.conf file as the one that comes from the rpm's will not work. Comment the following lines:
+
+```
+#    server {
+#        listen       80 default_server;
+#        listen       [::]:80 default_server;
+#        server_name  _;
+#        root         /usr/share/nginx/html;
+#
+#        # Load configuration files for the default server block.
+#        include /etc/nginx/default.d/*.conf;
+#
+#        location / {
+#        }
+#
+#        error_page 404 /404.html;
+#            location = /40x.html {
+#        }
+#
+#        error_page 500 502 503 504 /50x.html;
+#            location = /50x.html {
+#        }
+#    }
+}
+```
+
+Also make sure file in **/etc/nginx/conf.d/webvirtcloud.conf** has the proper paths:
+```
+server {
+    listen 80;
+
+    server_name servername.domain.com;
+    access_log /var/log/nginx/webvirtcloud-access_log; 
+
+    location /static/ {
+        root /srv/webvirtcloud;
+        expires max;
+    }
+
+    location / {
+        proxy_pass http://127.0.0.1:8000;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
+        proxy_set_header Host $host:$server_port;
+        proxy_set_header X-Forwarded-Proto $remote_addr;
+        proxy_connect_timeout 600;
+        proxy_read_timeout 600;
+        proxy_send_timeout 600;
+        client_max_body_size 1024M;
+    }
+}
+```
+
+Change permissions so nginx can read the webvirtcloud folder:
+
+```
+chown -R nginx:nginx /srv/webvirtcloud
+```
+
+Add required user to the kvm group:
+```
+usermod -G kvm -a webvirtmgr
+```
+
+
+#### Install final required packages for libvirtd and others
+```
+wget -O - https://clck.ru/9V9fH | sudo sh
+```
+
+Let's restart nginx and the supervisord services:
+```
+systemctl restart nginx && systemctl restart supervisord
+```
+
+And finally, check everything is running:
+```
+supervisorctl status
+
+gstfsd                           RUNNING    pid 24187, uptime 2:59:14
+novncd                           RUNNING    pid 24186, uptime 2:59:14
+webvirtcloud                     RUNNING    pid 24185, uptime 2:59:14
+
+```
+
+Done!!
+
+Go to http://serverip and you should see the login screen.
+
 ### Default credentials
 
 login: admin