= Easy Web based install = It is not easy to install Moin on a typical web hosting service and this is a problem for Moin wide trial and adoption. We should provide a web based form that runs on those hosts, that installs Moin and creates the first wiki instance. Even if it is not what the same type of Wikiengine, MediaWiki was running in 2 minutes in a very standard host with a typical web based panel. In contrast, a Moin installation needs more skill and access (basically shell access) that most of our possible users have. In this context a ''typical web host service'' means that it: * has ftp access, * comes with a panel (like Cpanel for example)<>, * runs Apache, * is administrated by a user with no linux nor any type of administration knowledge or experience, and * has no ssh or shell access. We should provide an easier installation script that runs on these web hosting services. Installing Moin should be something like: 1. Download the compressed file. 1. Decompress it locally. 1. Upload to the public html directory. 1. Point the browser to http://mydomain.tld/moinmoin/install.cgi 1. Follow the instructions. The script functions, or steps, could be: 1. Check if a python with the required version is present<>. 1. Ask for the basic information<>: * Apache user/group. * Wiki name. * A logo to upload (optional). * First user name, mail and password. * Select language (so it installs the right lang in /underlay) * Ask if there are more wikis planned in the near future (in order to make an initial farm configuration). * Optional smtp and return address for mail support. 1. Create the first wiki instance. 1. Create a basic wikiconfig.py and set: * {{{sitename}}} and {{{logo_string}}}. * {{{acl_rights_before}}} for that first user. * {{{page_front_page}}} to wiki_name_wiki or similar. * {{{default_lang}}} the specified one. * {{{mail_smarthost}}} if it was specified and {{{mail_from}}}. 1. Send him/her to the home page with pointers for more info in the Moin site. 1. Delete the install directory or points the user to do so. What follows is a rough user interface prototype: {{attachment:EasyWebBasedInstall.png}} == Comments == If someone wants to start on this, please split this into multiple parts: 1. a install cgi script doing the necessary install steps and uses a manually edited/uploaded config file 1. migration/upgrade cgi 1. backup / restore cgi 1. (later and optional) a form based config cgi script The config cgi is optional and can be done later. Everything it could do can be done easily (and far more flexible) with a local text editor and the resulting config ftped / POSTed to the server. . Since I am not programmer, does any of the scripts like ScriptMarket/WikiCreationScript or ScriptMarket/MakeWiki (maybe modified) works? I think that if this is run as a cgi you would not need to know the apache user/group. Not absolutely sure though. I really like the mock-up! -- TimCera <> . Thanks. More kudos to [[http://inkscape.org|Inkscape]] than to me. :) -- EduardoMercovich <> ---- . See also SaneInstall. A plan page from an SoC applicant: PeterBurns/EasyWebBasedInstall == Project size estimation == * ThomasWaldmann guesses that this is a 100% GoogleSoc2006 project, as it includes install, upgrade, backup, restore and config sub-tasks, plus web-based UI for that, plus web-based moin config UI (amount of that can be adjusted to some degree), plus quite some testing, plus good end-user level documentation about how to use it. * If the project size seems to large, backup/restore/etc. should not be considered as a necessary part of an ''installer''. -- AlexanderSchremmer <> * (please add your SOC size guess here). ---- . Hi, I'm Vincenzo Ampolo. 2 days ago i installed MoinMoin on a debian system and i've created a python script to install MoinMoin with easy steps. This script can be good for the new web based installation. On a debian system after that you do: apt-get install python-2.3-moinmoin you can execute this script: {{{ #!python import os import sys import shutil import re import getopt import pwd #only on linux def CommandSubstitute(fileToOpen, pattern, with, number): """Substitute a pattern in a file Returs a list of string containing all the Text file, one line for each element.""" f = open(fileToOpen, "r+") output = [] for line in f.readlines(): if number: if re.search(pattern, line) is not None: line = re.sub(pattern, with, line) if number is True: pass else: number -= 1 output.append(line) f.close() return output def WriteToFile(fileToOpen, output): """Write a list of lines in a file """ f = open(fileToOpen, "w") for line_out in output: f.write(line_out) f.close() #Get informations path = raw_input("Enter the PATH in which you would set up a wiki instance: ") instance = raw_input("Enter the name of your instance: ") username = raw_input("Enter the name of the user that will own the wiki: ") #Check and create directories if not os.path.isdir(path): os.mkdir(path) if instance is not '': root = path + '/' + instance os.mkdir(root) else: root = path #Copy all the moin structure into the istance (for debian systems only) shutil.copytree('/usr/share/moin/data', root+'/data', True) shutil.copytree('/usr/share/moin/underlay', root+'/underlay', True) shutil.copy('/usr/share/doc/python2.3-moinmoin/examples/server/moinmodpy.py', root) shutil.copy('/usr/share/moin/config/wikiconfig.py', root) #set the correct permissions and owners server = pwd.getpwnam('www-data') user = pwd.getpwnam(username) for place, dirs, files in os.walk(root): for dire in dirs: for name in files: os.chmod(os.path.join(place, name), 0774) os.chown(os.path.join(place, name), user[2], server[3]) os.chmod(place, 0774) os.chown(place, user[2], server[3]) newFile = CommandSubstitute(os.path.join(root, 'wikiconfig.py'), './data/', os.path.join(root, 'data'), True) WriteToFile(os.path.join(root, 'wikiconfig.py'), newFile) newFile = CommandSubstitute(os.path.join(root, 'wikiconfig.py'), './underlay/', os.path.join(root, 'underlay'), True) WriteToFile(os.path.join(root, 'wikiconfig.py'), newFile) newFile = CommandSubstitute(os.path.join(root, 'moinmodpy.py'), '/path/to/wikiconfig', '.', True) WriteToFile(os.path.join(root, 'moinmodpy.py'), newFile) #installation finished print '' print '' print '' print '----------' print "Congratulations, you have installed MoinMoin. There is just one little thing to do: make your web server able to use MoinMoin. If you use apache2 and you use VirtualHosts you can add a new VirtualHost with this configuration:" }}} Then you must configure your apache web server to work with mod_python as described upper and you can start creating new pages. ---- . CategoryFeatureRequest