diff --git a/fabfile/literals.py b/fabfile/literals.py index 23f5c44c4d..b1fb4f9c91 100644 --- a/fabfile/literals.py +++ b/fabfile/literals.py @@ -4,10 +4,12 @@ OS_CENTOS = 'centos' OS_FEDORA = 'fedora' OS_WINDOWS = 'windows' OS_FREEBSD = 'freebds' +OS_DEBIAN = 'debian' OS_CHOICES = { OS_UBUNTU: 'Ubuntu', OS_FEDORA: 'Fedora', + OS_DEBIAN: 'Debian', #OS_REDHAT: 'RedHat', #OS_CENTOS: 'CentOS', #OS_WINDOWS: 'MS Windows', @@ -16,17 +18,20 @@ OS_CHOICES = { DEFAULT_INSTALL_PATH = { OS_UBUNTU: '/usr/share', - OS_FEDORA: '/usr/share' + OS_FEDORA: '/usr/share', + OS_DEBIAN: '/usr/share', } DEFAULT_VIRTUALENV_NAME = { OS_UBUNTU: 'mayan', - OS_FEDORA: 'mayan' + OS_FEDORA: 'mayan', + OS_DEBIAN: 'mayan', } DEFAULT_REPOSITORY_NAME = { OS_UBUNTU: 'mayan', - OS_FEDORA: 'mayan' + OS_FEDORA: 'mayan', + OS_DEBIAN: 'mayan', } DB_MYSQL = 'mysql' diff --git a/fabfile/platforms/__init__.py b/fabfile/platforms/__init__.py index af81d0f128..6ccdf8971d 100644 --- a/fabfile/platforms/__init__.py +++ b/fabfile/platforms/__init__.py @@ -1,8 +1,8 @@ from fabric.api import run, sudo, cd, env, task from fabric.colors import green -from ..literals import OS_UBUNTU, OS_FEDORA -import linux, ubuntu, fedora +from ..literals import OS_UBUNTU, OS_FEDORA, OS_DEBIAN +import linux, ubuntu, fedora, debian @task @@ -10,10 +10,11 @@ def install_dependencies(): """ Install OS dependencies """ + print(green('Installing dependencies for %s' % env.os_name, bold=True)) - if env.os == OS_UBUNTU: - ubuntu.install_dependencies() + if env.os in [OS_UBUNTU, OS_DEBIAN]: + debian.install_dependencies() elif env.os == OS_FEDORA: fedora.install_dependencies() @@ -26,7 +27,7 @@ def install_mayan(): print(green('Installing Mayan EDMS from git repository', bold=True)) - if env.os in [OS_UBUNTU, OS_FEDORA]: + if env.os in [OS_UBUNTU, OS_FEDORA, OS_DEBIAN]: linux.install_mayan() @@ -38,8 +39,8 @@ def install_database_manager(): print(green('Installing database manager: %s' % env.database_manager_name, bold=True)) - if env.os == OS_UBUNTU: - ubuntu.install_database_manager() + if env.os in [OS_UBUNTU, OS_DEBIAN]: + debian.install_database_manager() elif env.os == OS_FEDORA: fedora.install_database_manager() @@ -52,8 +53,8 @@ def fix_permissions(): print(green('Fixing installation files\' permissions', bold=True)) - if env.os == OS_UBUNTU: - ubuntu.fix_permissions() + if env.os in [OS_UBUNTU, OS_DEBIAN]: + debian.fix_permissions() elif env.os == OS_FEDORA: fedora.fix_permissions() @@ -66,8 +67,8 @@ def install_webserver(): print(green('Installing webserver: %s' % env.webserver_name, bold=True)) - if env.os == OS_UBUNTU: - ubuntu.install_webserver() + if env.os in [OS_UBUNTU, OS_DEBIAN]: + debian.install_webserver() elif env.os == OS_FEDORA: fedora.install_webserver() @@ -80,7 +81,7 @@ def delete_mayan(): print(green('Deleting Mayan EDMS files', bold=True)) - if env.os in [OS_UBUNTU, OS_FEDORA]: + if env.os in [OS_UBUNTU, OS_FEDORA, OS_DEBIAN]: linux.delete_mayan() @@ -93,3 +94,5 @@ def post_install(): ubuntu.post_install() elif env.os == OS_FEDORA: fedora.post_install() + elif env.os == OS_DEBIAN: + debian.post_install() diff --git a/fabfile/platforms/debian.py b/fabfile/platforms/debian.py new file mode 100644 index 0000000000..0d103730b3 --- /dev/null +++ b/fabfile/platforms/debian.py @@ -0,0 +1,50 @@ +from fabric.api import run, sudo, cd, env, task, settings + +from ..literals import DB_MYSQL, WEB_APACHE + + +def install_dependencies(): + """ + Install Debian dependencies + """ + sudo('apt-get install -y git-core gcc tesseract-ocr unpaper python-virtualenv ghostscript libjpeg-dev libpng-dev poppler-utils') + + +def install_database_manager(): + """ + Install the database manager on an Ubuntu system + """ + + if env.database_manager == DB_MYSQL: + sudo('apt-get install -y mysql-server libmysqlclient-dev') + + with cd(env.virtualenv_path): + sudo('source bin/activate; pip install MySQL-python') + + +def install_webserver(): + """ + Installing the Debian packages for the webserver + """ + + if env.webserver == WEB_APACHE: + sudo('apt-get install -y apache2 libapache2-mod-wsgi') + + with settings(warn_only=True): + # Get rid of Apache's default site + sudo('a2dissite default') + + +def fix_permissions(): + """ + Fix installation files' permissions on a Debian system + """ + sudo('chmod 770 %s -R' % env.virtualenv_path) + sudo('chgrp www-data %s -R' % env.virtualenv_path) + + +def post_install(): + """ + Post install operations on a Debian system + """ + pass diff --git a/fabfile/platforms/linux.py b/fabfile/platforms/linux.py index 572dd34bcb..a47e314300 100644 --- a/fabfile/platforms/linux.py +++ b/fabfile/platforms/linux.py @@ -5,7 +5,7 @@ def delete_mayan(): """ Delete Mayan EDMS files from an Ubuntu system """ - sudo('rm %s -Rf' % env.virtualenv_path) + sudo('rm %(virtualenv_path)s -Rf' % env) def install_mayan(): @@ -13,8 +13,8 @@ def install_mayan(): Install Mayan EDMS on an Ubuntu system """ with cd(env.install_path): - sudo('virtualenv --no-site-packages %s' % env.virtualenv_name) + sudo('virtualenv --no-site-packages %(virtualenv_name)s' % env) with cd(env.virtualenv_path): - sudo('git clone http://www.github.com/rosarior/mayan %s' % env.repository_name) - sudo('source bin/activate; pip install -r %s/requirements/production.txt' % env.repository_name) + sudo('git clone http://www.github.com/rosarior/mayan %(repository_name)s' % env) + sudo('source bin/activate; pip install -r %(repository_name)s/requirements/production.txt' % env) diff --git a/fabfile/platforms/ubuntu.py b/fabfile/platforms/ubuntu.py index c99f4e1a50..501785f545 100644 --- a/fabfile/platforms/ubuntu.py +++ b/fabfile/platforms/ubuntu.py @@ -1,48 +1,3 @@ -from fabric.api import run, sudo, cd, env, task, settings - -from ..literals import DB_MYSQL, WEB_APACHE - - -def install_dependencies(): - """ - Install Ubuntu dependencies - """ - sudo('apt-get install -y git-core gcc tesseract-ocr unpaper python-virtualenv ghostscript libjpeg-dev libpng-dev poppler-utils') - - -def install_database_manager(): - """ - Install the database manager on an Ubuntu system - """ - - if env.database_manager == DB_MYSQL: - sudo('apt-get install -y mysql-server libmysqlclient-dev') - - with cd(env.virtualenv_path): - sudo('source bin/activate; pip install MySQL-python') - - -def install_webserver(): - """ - Installing the Ubuntu packages for the webserver - """ - - if env.webserver == WEB_APACHE: - sudo('apt-get install -y apache2 libapache2-mod-wsgi') - - with settings(warn_only=True): - # Get rid of Apache's default site - sudo('a2dissite default') - - -def fix_permissions(): - """ - Fix installation files' permissions on an Ubuntu system - """ - sudo('chmod 770 %s -R' % env.virtualenv_path) - sudo('chgrp www-data %s -R' % env.virtualenv_path) - - def post_install(): """ Post install operations on an Ubuntu system diff --git a/fabfile/webservers/apache.py b/fabfile/webservers/apache.py index 80840acb69..7b33b5fa83 100644 --- a/fabfile/webservers/apache.py +++ b/fabfile/webservers/apache.py @@ -3,7 +3,7 @@ import os from fabric.api import run, sudo, cd, env, task, settings from fabric.contrib.files import upload_template -from ..literals import OS_UBUNTU, OS_FEDORA +from ..literals import OS_UBUNTU, OS_FEDORA, OS_DEBIAN def install_site(): @@ -11,7 +11,7 @@ def install_site(): Install Mayan EDMS's site file in Apache configuration """ # TODO: configurable site name - if env.os == OS_UBUNTU: + if env.os in [OS_UBUNTU, OS_DEBIAN]: upload_template(filename=os.path.join('fabfile', 'templates', 'apache_site'), destination='/etc/apache2/sites-available/mayan', context=env, use_sudo=True) sudo('a2ensite mayan') elif env.os == OS_FEDORA: @@ -22,8 +22,9 @@ def remove_site(): """ Install Mayan EDMS's site file from Apache's configuration """ - if env.os == OS_UBUNTU: - sudo('a2dissite mayan') + if env.os in [OS_UBUNTU, OS_DEBIAN]: + with settings(warn_only=True): + sudo('a2dissite mayan') elif env.os == OS_FEDORA: with settings(warn_only=True): sudo('rm /etc/httpd/conf.d/mayan.conf') @@ -33,7 +34,7 @@ def restart(): """ Restart Apache """ - if env.os == OS_UBUNTU: + if env.os in [OS_UBUNTU, OS_DEBIAN]: sudo('/etc/init.d/apache2 restart') elif env.os == OS_FEDORA: sudo('systemctl restart httpd.service') @@ -43,7 +44,7 @@ def reload(): """ Reload Apache configuration files """ - if env.os == OS_UBUNTU: + if env.os in [OS_UBUNTU, OS_DEBIAN]: sudo('/etc/init.d/apache2 reload') elif env.os == OS_FEDORA: sudo('systemctl reload httpd.service')