Mono

From SME Server
Jump to: navigation, search

Mono on SME

Mono is a cross platform, open source .NET development framework. See http://mono-project.com

With Mono you can run ASP.NET on many platforms including SMEServer.

Mono is also required to use iFolder http://www.ifolder.com

Note to Windows users:
Use PuTTY to get acces to your SMEServer Box, login as root. 
Execute the steps hereunder by copy-pasting them to PuTTY - to paste in PuTTY right click with the mouse (not working  under mc!).
To navigate around your server use MidnightComander - just type mc at the commandline.

Mono on SME Server 7

Installation

To setup a repository where yum can get Mono from issue following:

/sbin/e-smith/db yum_repositories set mono repository \
Name 'Mono for rhel-4-i386 (stable)' \
BaseURL 'http://ftp.novell.com/pub/mono/download-stable/rhel-4-i386/' \
EnableGroups no \
GPGCheck no \
Visible yes \
status disabled

Then:

signal-event yum-modify

This is equivalent to adding a .repo file (this was not working before SMEServer 7.4). The info above comes from http://ftp.novell.com/pub/mono/download-stable/rhel-4-i386/mono.repo - the source of Mono. It is the only place I have found xsp and mod_mono required to run ASP.NET pages.

install mono, xsp and mod_mono:

yum --enablerepo=mono install mono-complete xsp mod_mono


Restart the system:

signal-event post-upgrade; signal-event reboot


Create a file in the SMEServer custom templates dir (create dir first)

mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf
cd /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf

Create file:

pico 20LoadModule80mod_mono

Add following to the file:

   #Template for mod_mono
   LoadModule mono_module /usr/lib/httpd/modules/mod_mono.so
   AddType application/x-asp-net .aspx
   AddType application/x-asp-net .asmx
   AddType application/x-asp-net .ashx
   AddType application/x-asp-net .asax
   AddType application/x-asp-net .ascx
   AddType application/x-asp-net .soap
   AddType application/x-asp-net .rem
   AddType application/x-asp-net .axd
   AddType application/x-asp-net .cs
   AddType application/x-asp-net .config
   AddType application/x-asp-net .Config
   AddType application/x-asp-net .dll
   DirectoryIndex index.aspx
   DirectoryIndex Default.aspx
   DirectoryIndex default.aspx
 
   MonoServerPath /usr/bin/mod-mono-server2

Save and exit (ctrl-x)

The template sets mimetypes and sets the server to be ASP.NET 2.0 instead of the default 1.1. The mimetypes are the same as in the mod_mono configuration file (/conf.d/mod_mono.conf).

Reparse the templates:

expand-template /etc/httpd/conf/httpd.conf

restart the webserver

/etc/init.d/httpd-e-smith restart

You are done! Add a .aspx file to an iBay and point your browser to it. You may have authorization issues if your ASP.NET code reads or writes files - but that is another matter solved by granting some rights :)

Mono on SME8

mmcarn use info found on [this post http://stackoverflow.com/questions/3510320/install-mono-on-centos5-5-using-yum] to answer a post [here http://forums.contribs.org/index.php/topic,47977.0.html]

Install

/sbin/e-smith/db yum_repositories set mono repository \
Name 'Mono 2.x for rhel-5-i386 (stable)' \
BaseURL 'http://ftp.novell.com/pub/mono/download-stable/RHEL_5/' \
EnableGroups no \
GPGCheck yes \
GPGKey http://ftp.novell.com/pub/mono/download-stable/RHEL_5/repodata/repomd.xml.key \
Visible yes \
status disabled
signal-event yum-modify
yum --enablerepo=mono install monotools-addon-server mod_mono-addon mono-addon-wcf


Now verify you get happy-looking results from

source /opt/novell/mono/bin/mono-addon-environment.sh
mono --version


Finally, "If you want the Mono environment to be permanent you can issue the following command.":

cp /opt/novell/mono/bin/mono-addon-environment.sh /etc/profile.d

(mmccarn suspect this is irrelevant for web apps)

Now make the custom template fragment:

mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf
cd /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf
echo '   #Template for mod_mono
  LoadModule mono_module /usr/lib/httpd/modules/mod_mono.so
  AddType application/x-asp-net .aspx
  AddType application/x-asp-net .asmx
  AddType application/x-asp-net .ashx
  AddType application/x-asp-net .asax
  AddType application/x-asp-net .ascx
  AddType application/x-asp-net .soap
  AddType application/x-asp-net .rem
  AddType application/x-asp-net .axd
  AddType application/x-asp-net .cs
  AddType application/x-asp-net .config
  AddType application/x-asp-net .Config
  AddType application/x-asp-net .dll
  DirectoryIndex index.aspx
  DirectoryIndex Default.aspx
  DirectoryIndex default.aspx

  MonoServerPath /opt/novell/mono/bin/mod-mono-server2
' > 20LoadModule80mod_mono
signal-event remoteaccess-update

creating space to test app using browser

Now make the test application accessible in a browser (this is a test app from mono package):

mkdir -p /home/e-smith/files/ibays/Primary/html/mono-test
cp -r /opt/novell/mono/lib/xsp/test/* /home/e-smith/files/ibays/Primary/html/mono-test
chown -R admin:shared /home/e-smith/files/ibays/Primary/html/mono-test

(This way you're sticking it in the Primary ibay to avoid needing to create an ibay for testing)

After the above steps you'll get a sample page at http://<smeserver>/mono-test

If you like to use mono on another place, an ibay for example, you're free to do. You can copy the test files above to another place: Create an ibay "mono" and

mkdir -p /home/e-smith/files/ibays/mono/html/sample
cp -r /opt/novell/mono/lib/xsp/test/* /home/e-smith/files/ibays/mono/html/sample
chown -R admin:shared /home/e-smith/files/ibays/mono/html/sample

And test pointing an browser to page http://<smeserver>/mono/sample/