{"action":"created","comment":{"url":"https://api.github.com/repos/propyless/panopuppet/pulls/comments/48694713","id":48694713,"diff_hunk":"@@ -384,6 +385,175 @@ You are able to create some other users in the admin page located at http://pano\n 15) Restart Httpd service and it should work.\n `/etc/init.d/httpd restart`\n \n+## CentOS 7\n+```\n+This installation \"guide\" assumes that panopuppet has been extracted to /srv/repo\n+$ sudo yum install git\n+$ sudo mkdir -p /srv/repo\n+$ sudo chown -R <user> /srv\n+$ cd /srv/repo\n+$ git clone https://github.com/propyless/panopuppet.git panopuppet  \n+```\n+\n+1) Install the Software Collections repositories for rh-pyhton34 and httpd24.\n+```\n+$ sudo yum install scl-utils\n+$ sudo yum install https://www.softwarecollections.org/en/scls/rhscl/rh-python34/epel-7-x86_64/download/rhscl-rh-python34-epel-7-x86_64.noarch.rpm\n+$ sudo yum install https://www.softwarecollections.org/en/scls/rhscl/httpd24/epel-7-x86_64/download/rhscl-httpd24-epel-7-x86_64.noarch.rpm\n+```\n+\n+2) Install rh-python34 and the dependencies for the python-ldap module.\n+```\n+$ sudo yum install rh-python34 libyaml-devel openldap-devel cyrus-sasl-devel gcc make\n+$ sudo scl enable rh-python34 'easy_install pip'\n+```\n+\n+3) Install httpd24.\n+```\n+$ sudo yum install httpd24 httpd24-httpd-devel\n+```\n+Enable rh-python34 in httpd24;\n+```\n+$ sudo vim /opt/rh/httpd24/service-environment\n+```\n+Add rh-python34 to HTTPD24_HTTPD_SCLS_ENABLED;\n+```\n+HTTPD24_HTTPD_SCLS_ENABLED=\"httpd24 rh-python34\"\n+```\n+Enable/start httpd24-httpd service;\n+```\n+$ sudo systemctl enable httpd24-httpd\n+$ sudo systemctl start httpd24-httpd\n+$ sudo systemctl status httpd24-httpd\n+```\n+Configure firewall for httpd24;\n+```\n+$ sudo firewall-cmd --permanent --add-service=http\n+$ sudo firewall-cmd --add-service=http\n+```\n+\n+4) Compile mod_wsgi for rh-python34.  \n+rh-python34-mod_wsgi contains a 'bug' which will segfault panopuppet, that's why we compile the latest version.\n+```\n+$ cd\n+$ scl enable rh-python34 bash\n+$ scl enable httpd24 bash\n+$ sudo yum install wget\n+$ wget https://pypi.python.org/packages/source/m/mod_wsgi/mod_wsgi-4.4.21.tar.gz\n+$ tar -xzvf mod_wsgi-4.4.21.tar.gz\n+$ cd mod_wsgi-4.4.21\n+```\n+Determine location of rh-pyhton34 version;\n+```\n+$ which python\n+```\n+Use this location in the configure of mod_wsgi;\n+```\n+$ ./configure --with-python=/opt/rh/rh-python34/root/usr/bin/python\n+$ make \n+$ sudo make install\n+```\n+Configure mod_wsgi module for httpd24;\n+```\n+$ sudo vim /opt/rh/httpd24/root/etc/httpd/conf.modules.d/10-mod_wsgi-4421.conf\n+```\n+Contents;\n+```\n+LoadModule wsgi_module modules/mod_wsgi.so\n+```\n+\n+5) Create a virtualenv instance for panopuppet.\n+```\n+$ sudo mkdir /srv/.virtualenvs\n+$ sudo chown <user> /srv/.virtualenvs\n+$ cd /srv/.virtualenvs\n+$ virtualenv panopuppet\n+$ cd panopuppet/\n+$ source bin/activate\n+```\n+\n+6) Install the python modules needed for panopuppet to function.\n+```\n+$ cd /srv/repo/panopuppet\n+$ pip install -r requirements.txt\n+```\n+\n+7) Create Panopuppet config for httpd24.\n+```\n+sudo vim /opt/rh/httpd24/root/etc/httpd/conf.d/panopuppet.conf\n+```\n+Contents;\n+```\n+WSGISocketPrefix /var/run/wsgi\n+<VirtualHost *:80>\n+    ServerName pp.your.domain.com\n+    WSGIDaemonProcess panopuppet user=apache group=apache threads=5 python-path=/srv/repo/panopuppet:/srv/.virtualenvs/panopuppet/lib/python3.4/site-packages\n+    WSGIScriptAlias / /srv/repo/panopuppet/puppet/wsgi.py\n+    ErrorLog /var/log/httpd24/panopuppet.error.log\n+    CustomLog /var/log/httpd24/panopuppet.access.log combined\n+\n+    Alias /static /srv/staticfiles/\n+    <Directory /srv/staticfiles>\n+\t    Require all granted\n+    </Directory>\n+    <Directory /srv/repo/panopuppet>\n+        Require all granted\n+    </Directory>\n+\n+    <Directory /srv/repo/panopuppet/>\n+        WSGIProcessGroup panopuppet\n+    </Directory>\n+</VirtualHost>\n+```\n+\n+8) Configure PanoPuppet config.yaml file.\n+```\n+$ cp /srv/repo/panopuppet/config.yaml.example /srv/repo/panopuppet/config.yaml\n+```\n+Use your favourite text editor to modify the file with the correct values for your envionrment.\n+Please note that the example configuration file contains an example for puppetdb connection with and without SSL.\n+\n+Depending on your puppet infrastructure you may or may not need to specify public, private and cacert to authenticate\n+with puppetdb, puppetmaster filebucket and fileserver.\n+\n+9) Populate the /srv/staticfiles directory with the staticfiles.\n+```\n+$ sudo mkdir /srv/staticfiles\n+$ sudo chown <user> /srv/staticfiles \n+$ cd /srv/repo/panopuppet\n+$ python manage.py collectstatic\n+```\n+Say 'yes' to the question it might ask about overwriting files in the /srv/collectstatic folder.\n+\n+10) Populate the django database so that users logging in with LDAP or local users are populated into django.\n+```\n+$ python manage.py migrate\n+```\n+\n+11) OPTIONAL STEP IF YOU DON'T WANT TO USE LDAP AND YOU ARE JUST TESTING.  \n+Create a local superuser to log in as\n+```\n+$ python manage.py createsuperuser\n+```\n+You are able to create some other users in the admin page located at http://pp.your.domain.com/admin","path":"README.md","position":162,"original_position":162,"commit_id":"212a47db207cb7d49fa76ebb7818988d9555b699","original_commit_id":"212a47db207cb7d49fa76ebb7818988d9555b699","user":{"login":"propyless","id":6172961,"avatar_url":"https://avatars.githubusercontent.com/u/6172961?v=3","gravatar_id":"","url":"https://api.github.com/users/propyless","html_url":"https://github.com/propyless","followers_url":"https://api.github.com/users/propyless/followers","following_url":"https://api.github.com/users/propyless/following{/other_user}","gists_url":"https://api.github.com/users/propyless/gists{/gist_id}","starred_url":"https://api.github.com/users/propyless/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/propyless/subscriptions","organizations_url":"https://api.github.com/users/propyless/orgs","repos_url":"https://api.github.com/users/propyless/repos","events_url":"https://api.github.com/users/propyless/events{/privacy}","received_events_url":"https://api.github.com/users/propyless/received_events","type":"User","site_admin":false},"body":"`/admin` should be `/puppetadmin`","created_at":"2016-01-03T16:45:26Z","updated_at":"2016-01-03T16:45:26Z","html_url":"https://github.com/propyless/panopuppet/pull/101#discussion_r48694713","pull_request_url":"https://api.github.com/repos/propyless/panopuppet/pulls/101","_links":{"self":{"href":"https://api.github.com/repos/propyless/panopuppet/pulls/comments/48694713"},"html":{"href":"https://github.com/propyless/panopuppet/pull/101#discussion_r48694713"},"pull_request":{"href":"https://api.github.com/repos/propyless/panopuppet/pulls/101"}}},"pull_request":{"url":"https://api.github.com/repos/propyless/panopuppet/pulls/101","id":54927530,"html_url":"https://github.com/propyless/panopuppet/pull/101","diff_url":"https://github.com/propyless/panopuppet/pull/101.diff","patch_url":"https://github.com/propyless/panopuppet/pull/101.patch","issue_url":"https://api.github.com/repos/propyless/panopuppet/issues/101","number":101,"state":"open","locked":false,"title":"Update README.me for CentOS 7","user":{"login":"sheijmans","id":2401243,"avatar_url":"https://avatars.githubusercontent.com/u/2401243?v=3","gravatar_id":"","url":"https://api.github.com/users/sheijmans","html_url":"https://github.com/sheijmans","followers_url":"https://api.github.com/users/sheijmans/followers","following_url":"https://api.github.com/users/sheijmans/following{/other_user}","gists_url":"https://api.github.com/users/sheijmans/gists{/gist_id}","starred_url":"https://api.github.com/users/sheijmans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sheijmans/subscriptions","organizations_url":"https://api.github.com/users/sheijmans/orgs","repos_url":"https://api.github.com/users/sheijmans/repos","events_url":"https://api.github.com/users/sheijmans/events{/privacy}","received_events_url":"https://api.github.com/users/sheijmans/received_events","type":"User","site_admin":false},"body":"Added CentOS 7 installation","created_at":"2016-01-03T16:17:45Z","updated_at":"2016-01-03T16:45:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"882f105b72ada97cf90f20f3da53fdb9288535f4","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/propyless/panopuppet/pulls/101/commits","review_comments_url":"https://api.github.com/repos/propyless/panopuppet/pulls/101/comments","review_comment_url":"https://api.github.com/repos/propyless/panopuppet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/propyless/panopuppet/issues/101/comments","statuses_url":"https://api.github.com/repos/propyless/panopuppet/statuses/212a47db207cb7d49fa76ebb7818988d9555b699","head":{"label":"sheijmans:CentOS7-installation","ref":"CentOS7-installation","sha":"212a47db207cb7d49fa76ebb7818988d9555b699","user":{"login":"sheijmans","id":2401243,"avatar_url":"https://avatars.githubusercontent.com/u/2401243?v=3","gravatar_id":"","url":"https://api.github.com/users/sheijmans","html_url":"https://github.com/sheijmans","followers_url":"https://api.github.com/users/sheijmans/followers","following_url":"https://api.github.com/users/sheijmans/following{/other_user}","gists_url":"https://api.github.com/users/sheijmans/gists{/gist_id}","starred_url":"https://api.github.com/users/sheijmans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sheijmans/subscriptions","organizations_url":"https://api.github.com/users/sheijmans/orgs","repos_url":"https://api.github.com/users/sheijmans/repos","events_url":"https://api.github.com/users/sheijmans/events{/privacy}","received_events_url":"https://api.github.com/users/sheijmans/received_events","type":"User","site_admin":false},"repo":{"id":48952059,"name":"panopuppet","full_name":"sheijmans/panopuppet","owner":{"login":"sheijmans","id":2401243,"avatar_url":"https://avatars.githubusercontent.com/u/2401243?v=3","gravatar_id":"","url":"https://api.github.com/users/sheijmans","html_url":"https://github.com/sheijmans","followers_url":"https://api.github.com/users/sheijmans/followers","following_url":"https://api.github.com/users/sheijmans/following{/other_user}","gists_url":"https://api.github.com/users/sheijmans/gists{/gist_id}","starred_url":"https://api.github.com/users/sheijmans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sheijmans/subscriptions","organizations_url":"https://api.github.com/users/sheijmans/orgs","repos_url":"https://api.github.com/users/sheijmans/repos","events_url":"https://api.github.com/users/sheijmans/events{/privacy}","received_events_url":"https://api.github.com/users/sheijmans/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sheijmans/panopuppet","description":"Puppet dashboard for PuppetDB 3.x","fork":true,"url":"https://api.github.com/repos/sheijmans/panopuppet","forks_url":"https://api.github.com/repos/sheijmans/panopuppet/forks","keys_url":"https://api.github.com/repos/sheijmans/panopuppet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sheijmans/panopuppet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sheijmans/panopuppet/teams","hooks_url":"https://api.github.com/repos/sheijmans/panopuppet/hooks","issue_events_url":"https://api.github.com/repos/sheijmans/panopuppet/issues/events{/number}","events_url":"https://api.github.com/repos/sheijmans/panopuppet/events","assignees_url":"https://api.github.com/repos/sheijmans/panopuppet/assignees{/user}","branches_url":"https://api.github.com/repos/sheijmans/panopuppet/branches{/branch}","tags_url":"https://api.github.com/repos/sheijmans/panopuppet/tags","blobs_url":"https://api.github.com/repos/sheijmans/panopuppet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sheijmans/panopuppet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sheijmans/panopuppet/git/refs{/sha}","trees_url":"https://api.github.com/repos/sheijmans/panopuppet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sheijmans/panopuppet/statuses/{sha}","languages_url":"https://api.github.com/repos/sheijmans/panopuppet/languages","stargazers_url":"https://api.github.com/repos/sheijmans/panopuppet/stargazers","contributors_url":"https://api.github.com/repos/sheijmans/panopuppet/contributors","subscribers_url":"https://api.github.com/repos/sheijmans/panopuppet/subscribers","subscription_url":"https://api.github.com/repos/sheijmans/panopuppet/subscription","commits_url":"https://api.github.com/repos/sheijmans/panopuppet/commits{/sha}","git_commits_url":"https://api.github.com/repos/sheijmans/panopuppet/git/commits{/sha}","comments_url":"https://api.github.com/repos/sheijmans/panopuppet/comments{/number}","issue_comment_url":"https://api.github.com/repos/sheijmans/panopuppet/issues/comments{/number}","contents_url":"https://api.github.com/repos/sheijmans/panopuppet/contents/{+path}","compare_url":"https://api.github.com/repos/sheijmans/panopuppet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sheijmans/panopuppet/merges","archive_url":"https://api.github.com/repos/sheijmans/panopuppet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sheijmans/panopuppet/downloads","issues_url":"https://api.github.com/repos/sheijmans/panopuppet/issues{/number}","pulls_url":"https://api.github.com/repos/sheijmans/panopuppet/pulls{/number}","milestones_url":"https://api.github.com/repos/sheijmans/panopuppet/milestones{/number}","notifications_url":"https://api.github.com/repos/sheijmans/panopuppet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sheijmans/panopuppet/labels{/name}","releases_url":"https://api.github.com/repos/sheijmans/panopuppet/releases{/id}","created_at":"2016-01-03T16:11:04Z","updated_at":"2016-01-03T16:11:04Z","pushed_at":"2016-01-03T16:31:48Z","git_url":"git://github.com/sheijmans/panopuppet.git","ssh_url":"git@github.com:sheijmans/panopuppet.git","clone_url":"https://github.com/sheijmans/panopuppet.git","svn_url":"https://github.com/sheijmans/panopuppet","homepage":"","size":3672,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":7,"forks":0,"open_issues":7,"watchers":0,"default_branch":"master"}},"base":{"label":"propyless:master","ref":"master","sha":"56c8f1d5b0578f305b885b78339079ddc8298dfa","user":{"login":"propyless","id":6172961,"avatar_url":"https://avatars.githubusercontent.com/u/6172961?v=3","gravatar_id":"","url":"https://api.github.com/users/propyless","html_url":"https://github.com/propyless","followers_url":"https://api.github.com/users/propyless/followers","following_url":"https://api.github.com/users/propyless/following{/other_user}","gists_url":"https://api.github.com/users/propyless/gists{/gist_id}","starred_url":"https://api.github.com/users/propyless/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/propyless/subscriptions","organizations_url":"https://api.github.com/users/propyless/orgs","repos_url":"https://api.github.com/users/propyless/repos","events_url":"https://api.github.com/users/propyless/events{/privacy}","received_events_url":"https://api.github.com/users/propyless/received_events","type":"User","site_admin":false},"repo":{"id":31679766,"name":"panopuppet","full_name":"propyless/panopuppet","owner":{"login":"propyless","id":6172961,"avatar_url":"https://avatars.githubusercontent.com/u/6172961?v=3","gravatar_id":"","url":"https://api.github.com/users/propyless","html_url":"https://github.com/propyless","followers_url":"https://api.github.com/users/propyless/followers","following_url":"https://api.github.com/users/propyless/following{/other_user}","gists_url":"https://api.github.com/users/propyless/gists{/gist_id}","starred_url":"https://api.github.com/users/propyless/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/propyless/subscriptions","organizations_url":"https://api.github.com/users/propyless/orgs","repos_url":"https://api.github.com/users/propyless/repos","events_url":"https://api.github.com/users/propyless/events{/privacy}","received_events_url":"https://api.github.com/users/propyless/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/propyless/panopuppet","description":"Puppet dashboard for PuppetDB 3.x","fork":false,"url":"https://api.github.com/repos/propyless/panopuppet","forks_url":"https://api.github.com/repos/propyless/panopuppet/forks","keys_url":"https://api.github.com/repos/propyless/panopuppet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/propyless/panopuppet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/propyless/panopuppet/teams","hooks_url":"https://api.github.com/repos/propyless/panopuppet/hooks","issue_events_url":"https://api.github.com/repos/propyless/panopuppet/issues/events{/number}","events_url":"https://api.github.com/repos/propyless/panopuppet/events","assignees_url":"https://api.github.com/repos/propyless/panopuppet/assignees{/user}","branches_url":"https://api.github.com/repos/propyless/panopuppet/branches{/branch}","tags_url":"https://api.github.com/repos/propyless/panopuppet/tags","blobs_url":"https://api.github.com/repos/propyless/panopuppet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/propyless/panopuppet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/propyless/panopuppet/git/refs{/sha}","trees_url":"https://api.github.com/repos/propyless/panopuppet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/propyless/panopuppet/statuses/{sha}","languages_url":"https://api.github.com/repos/propyless/panopuppet/languages","stargazers_url":"https://api.github.com/repos/propyless/panopuppet/stargazers","contributors_url":"https://api.github.com/repos/propyless/panopuppet/contributors","subscribers_url":"https://api.github.com/repos/propyless/panopuppet/subscribers","subscription_url":"https://api.github.com/repos/propyless/panopuppet/subscription","commits_url":"https://api.github.com/repos/propyless/panopuppet/commits{/sha}","git_commits_url":"https://api.github.com/repos/propyless/panopuppet/git/commits{/sha}","comments_url":"https://api.github.com/repos/propyless/panopuppet/comments{/number}","issue_comment_url":"https://api.github.com/repos/propyless/panopuppet/issues/comments{/number}","contents_url":"https://api.github.com/repos/propyless/panopuppet/contents/{+path}","compare_url":"https://api.github.com/repos/propyless/panopuppet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/propyless/panopuppet/merges","archive_url":"https://api.github.com/repos/propyless/panopuppet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/propyless/panopuppet/downloads","issues_url":"https://api.github.com/repos/propyless/panopuppet/issues{/number}","pulls_url":"https://api.github.com/repos/propyless/panopuppet/pulls{/number}","milestones_url":"https://api.github.com/repos/propyless/panopuppet/milestones{/number}","notifications_url":"https://api.github.com/repos/propyless/panopuppet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/propyless/panopuppet/labels{/name}","releases_url":"https://api.github.com/repos/propyless/panopuppet/releases{/id}","created_at":"2015-03-04T21:04:44Z","updated_at":"2016-01-03T16:38:41Z","pushed_at":"2016-01-03T16:32:17Z","git_url":"git://github.com/propyless/panopuppet.git","ssh_url":"git@github.com:propyless/panopuppet.git","clone_url":"https://github.com/propyless/panopuppet.git","svn_url":"https://github.com/propyless/panopuppet","homepage":"","size":3925,"stargazers_count":35,"watchers_count":35,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":10,"mirror_url":null,"open_issues_count":18,"forks":10,"open_issues":18,"watchers":35,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/propyless/panopuppet/pulls/101"},"html":{"href":"https://github.com/propyless/panopuppet/pull/101"},"issue":{"href":"https://api.github.com/repos/propyless/panopuppet/issues/101"},"comments":{"href":"https://api.github.com/repos/propyless/panopuppet/issues/101/comments"},"review_comments":{"href":"https://api.github.com/repos/propyless/panopuppet/pulls/101/comments"},"review_comment":{"href":"https://api.github.com/repos/propyless/panopuppet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/propyless/panopuppet/pulls/101/commits"},"statuses":{"href":"https://api.github.com/repos/propyless/panopuppet/statuses/212a47db207cb7d49fa76ebb7818988d9555b699"}}}}