Using (Fast)CGI for non-PHP websites
You're not stuck with PHP if you want to make a dynamic website. You can use all sorts of frameworks and programming languages with ULYSSIS, as long as it has CGI or FastCGI support.
If you want to use a certain programming language or framework, and you can't get it to work, don't hesitate to contact us at ulyssis@ulyssis.org.
CGI
CGI is a very easy and simple way to create a dynamic website. We use Apache's mod_cgid to provide support for CGI.
FastCGI
We use Apache's mod_fcgid to provide support for FastCGI.
Example: Django
If you want to make a website using Django, we recommend that you use a virtualenv. This tool is already preinstalled on our shell servers.
You can use the following steps to get up and running with Django at ULYSSIS:
- Log in to a shell server
- Create a new virtualenv, you can create one in ~/.venv, for example:
virtualenv ~/.venv
- Activate this virtualenv:
. ~/.venv/bin/activate
-
Install Django inside of this virtualenv:
pip install django
-
Create a new Django project:
django-admin.py startproject mysite
Replace mysite with your project's desired name.
-
Install flup for FastCGI:
pip install flup
-
Put an .htaccess file in your site's directory, e.g. the www folder:
Options +ExecCGI AddHandler fcgid-script .fcgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]
-
Create the starter script (replace user with org if you are an organization, and username with your ULYSSIS username):
#!/home/user/username/.venv/bin/python import sys, os sys.path.insert(0, '/home/user/username/mysite') os.chdir('/home/user/username/mysite') os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' from django.core.servers.fastcgi import runfastcgi runfastcgi(method="threaded", daemonize="false")
Call this script mysite.fcgi.
-
Make the starter script executable:
chmod +x mysite.fcgi
- Go to username.ulyssis.be (or whatever URL you chose to use), and it should show you the default "Welcome to Django" page.
This guide was based on, and you can find more information in the official Django documentation: