| #!/usr/bin/env python |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| #the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import sys, os, json, re, time |
| import getpass |
| import subprocess |
| import readline |
| import platform |
| |
| dname = platform.linux_distribution()[0].lower() |
| dver = platform.linux_distribution()[1] |
| |
| if getpass.getuser() != "root": |
| print("You need to run this script as root!") |
| sys.exit(-1) |
| |
| print("Your distro seems to be : " + dname + " " + dver) |
| |
| if dname == 'ubuntu' or dname == 'debian': |
| print("Running installation script for Debian/Ubuntu servers, hang on!") |
| print("Installing pre-requisites via apt-get") |
| subprocess.check_call(('apt-get', 'install', 'apache2', 'git', 'liblua5.2-dev', 'lua-cjson', 'lua-sec', 'lua-socket', 'python3', 'python3-pip', 'subversion')) |
| |
| print("Installing Python modules") |
| subprocess.check_call(('pip3', 'install', 'elasticsearch', 'formatflowed')) |
| |
| print("Installing ElasticSearch") |
| subprocess.check_call(('apt-get', 'install', 'openjdk-7-jre-headless')) |
| |
| try: |
| subprocess.check_call(("wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -"), shell=True) |
| subprocess.check_call(('echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.list'), shell=True) |
| except: |
| print("Did we already add ES to the repo? hmm") |
| |
| subprocess.check_call(('apt-get', 'update')) |
| subprocess.check_call(('apt-get', 'install', 'elasticsearch')) |
| |
| print("Checking out a copy of Pony Mail from GitHub") |
| subprocess.check_call(('git', 'clone', 'https://github.com/Humbedooh/ponymail.git', '/var/www/ponymail')) |
| |
| print("Starting ElasticSearch") |
| subprocess.check_call(('service', 'elasticsearch', 'start')) |
| |
| print("Writing httpd configuration file /etc/apache2/sites-enabled/99-ponymail.conf") |
| with open("/etc/apache2/sites-enabled/99-ponymail.conf", "w") as f: |
| f.write(""" |
| <VirtualHost *:80> |
| ServerName mylists.foo.tld |
| DocumentRoot /var/www/ponymail/site |
| AddHandler lua-script .lua |
| LuaScope thread |
| LuaCodeCache stat |
| AcceptPathInfo On |
| </VirtualHost>""") |
| f.close() |
| |
| if dname == 'ubuntu' and dver == '14.04': |
| print("Ubuntu 14.04 specific step; Compiling mod_lua") |
| subprocess.check_call(('apt-get', 'install', 'apache2-dev')) |
| subprocess.check_call(('svn', 'co', 'https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x/modules/lua/', '/tmp/mod_lua')) |
| subprocess.check_call(("cd /tmp/mod_lua && apxs2 -I/usr/include/lua5.2 -cia mod_lua.c lua_*.c -lm -llua5.2"), shell=True) |
| |
| print("Enabling mod_lua") |
| subprocess.check_call(('a2enmod', 'lua')) |
| |
| print("Starting httpd") |
| subprocess.check_call(('service', 'apache2', 'start')) |
| |
| print("Done! Please run setup.py now to set up Pony Mail") |
| |
| |