28 Nov

Instalando #mono en #linux #ubuntu 13.10 #apache2 #server

Para empezar necesito ver que compatibilidad tiene con mis aplicaciones de .net , ya que normalmente uso framework 4.0

Implemented Partially Implemented Not Implemented

.NET 4.5

C# 5.0 – async support
Async Base Class Library Upgrade
MVC4 – Partial, no async features supporte.
ASP.NET 4.5 Async Pipeline – Needs an parallel processing pipeline with async support, not done.

.NET 4.0

C# 4.0
ASP.Net 4.0
ASP.Net MVC 1, MVC 2 and MVC3
System.Numerics
Managed Extensibily Framework – Shared with .NET via MS-PL license
Dynamic Language Runtime – Shared with .NET via MS-PL license
Client side OData – Shared with .NET via MS-PL license
EntityFramework – Available since Mono 2.11.3.
Parallel Framework and PLINQ
CodeContracts – API complete, partial tooling
Server-side OData – Depends on Entity Framework.

Instalamos Monodevelop, para ello :

  • Agregamos los respositorios
sudo nano /etc/apt/sources.list

  •  Añadimos la siguiente linea
deb http://badgerports.org lucid main #Mono

  •  Agreganos la llave:

gpg –keyserver keyserver.ubuntu.com –recv 0E1FAD0C && gpg –export –armor 0E1FAD0C | sudo apt-key add –

  • Actualizamos repositorios
sudo apt-get update

  • Instalamos Monodevelop    

sudo apt-get install monodevelop

INSTALACIÓN DE SERVIDOR ASPX.NET

xsp-4

En el caso de que no queramos usar apache o solo queramos un servidor para compilar desde mono y ejecutar para posteriormente pasarlo al hosting usaremos xsp-4
sudo apt-get install mono-xsp4

Mod mono para apache2

En el caso de que queramos usar apache2 como servidor ya sea por que lo tengamos ya para php y nos sintamos mejor o porque lo vayamos a poner en un vps o cloud server usaremos Mod mono.

  • Escribimos por terminal.
sudo apt-get install libapache2-mod-mono
sudo apt-get install mono-apache-server4

Actualmente a fecha 19/03/2014 vamos por la versión 4 , pero deberíamos de antes de poner el 4 en la linea anterior, darle a tabulador para ver las diferentes versiones e instalar la última.

  • Reiniciamos apache2
sudo /etc/init.d/apache2 restart

  • Activamos el mod de mono
    • sudo a2enmod mod_mono

    • Comprobamos que está bien la versión de mono en la configuración

      sudo nano /etc/apache2/mods-available/mod_mono.conf

    En este caso debe de estar la última versión, miraremos el número , como ya comenté antes, actualmente vamos por la 4, y debería de quedar algo así:

    Ya está configurado el servidor, pero si queremos poner una página tendremos que hacerlo añadiendo la página (carpeta) a sites-availeables de apache2, creando un virtualhost nuevo.
    Podemos usar la siguiente aplicación : http://go-mono.com/config-mod-mono/Default.aspx
    Para ello creamos por ejemplo un virtualhost de prueba:


    sudo touch prueba.conf
    sudo nano /etc/apache2/sites-availeables/prueba.conf

    <VirtualHost *:80>
      ServerName prueba.local
      ServerAlias prueba
      ServerAdmin web-admin@prueba.com
      DocumentRoot /var/www/prueba
      # MonoServerPath can be changed to specify which version of ASP.NET is hosted
      # mod-mono-server1 = ASP.NET 1.1 / mod-mono-server2 = ASP.NET 2.0
      # For SUSE Linux Enterprise Mono Extension, uncomment the line below:
      # MonoServerPath prueba.local “/opt/novell/mono/bin/mod-mono-server2”
      # For Mono on openSUSE, uncomment the line below instead:
      MonoServerPath prueba.local “/usr/bin/mod-mono-server2”

      # To obtain line numbers in stack traces you need to do two things: 
      # 1) Enable Debug code generation in your page by using the Debug=”true” 
      #    page directive, or by setting <compilation debug=”true” /> in the 
      #    application’s Web.config
      # 2) Uncomment the MonoDebug true directive below to enable mod_mono debugging
      MonoDebug prueba.local true
      
      # The MONO_IOMAP environment variable can be configured to provide platform abstraction
      # for file access in Linux.  Valid values for MONO_IOMAP are:
      #    case
      #    drive
      #    all
      # Uncomment the line below to alter file access behavior for the configured application
      MonoSetEnv prueba.local MONO_IOMAP=all
      #
      # Additional environtment variables can be set for this server instance using 
      # the MonoSetEnv directive.  MonoSetEnv takes a string of ‘name=value’ pairs 
      # separated by semicolons.  For instance, to enable platform abstraction *and* 
      # use Mono’s old regular expression interpreter (which is slower, but has a
      # shorter setup time), uncomment the line below instead:
      # MonoSetEnv prueba.local MONO_IOMAP=all;MONO_OLD_RX=1

      MonoApplications prueba.local “/:/var/www/prueba”
      <Location “/”>
        Allow from all
        Order allow,deny
        MonoSetServerAlias prueba.local
        SetHandler mono
        SetOutputFilter DEFLATE
        SetEnvIfNoCase Request_URI “.(?:gif|jpe?g|png)$” no-gzip dont-vary
      </Location>
      <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
      </IfModule>
    </VirtualHost>
    • Activamos el sitio con:

    sudo a2ensite prueba

    • Ponemos los hosts que pusimos antes como servidor

    sudo nano /etc/hosts 

    • Añadimos 

    127.0.0.1 prueba.local prueba

    • Reiniciamos el Apache:

    sudo /etc/init.d/apache2 restart

    Copiamos los archivos de la aplicación a /var/www/prueba y listo, nuestra aplicación esta en prueba.local o prueba o http://127.0.0.1/prueba/Default.aspx

    Importante: Si por casualidad en vez de hacer un pequeño código, hemos ido a mono, creado una solución … recordad que para que funcione hay que compilarlo antes. Comprobad que está la carpeta bin. Si no es así seguramente saldrá un error global.asax

    Una vez que acabamos , creo que deberíamos de instalar xsp4 para ir trabajando desde mono. 

    PASAR UN PROYECTO DE .NET EN VISUAL STUDIO A MONO 

    Pues lo que oyes , ahora te dan soporte para migrar e incluso depurar desde tu visual studio como si fuera mono ejejje. A ver como va por que estoy empezando.
    Primeramente según veo y ya confirmaré no es una licencia gratuita, pero te dan 30 días para probarlo de forma full, seguramente para desarrolladores de mono y gente que esté en algún proyecto o sea estudiante, pues será gratis.
    Lo primero es bajarse lo que necesitamos que es el plugins para visual studio (2008 o 2010) y luego un mono para windows (ya que yo lo tengo instalado en linux), es posible también conectarte a tu mono instalado en linux. La idea de este plugins es poder hacer funcionar una página en linux… viene perfecto para mi ya que me quiero migrar de mis servidores con sql server y .net en windwos a un vps que ya tengo pero es todo linux.


    Realizando la primera conexión mysql en mono

    Es curioso que al parecer, o por lo menos yo no lo he encontrado, no está la librería de mysql ni se puede añadir del repositorio, por lo cual voy a bajarme el conector necesario.

    Mirar migración :
    http://www.mono-project.com/Guide:_Porting_ASP.NET_Applications

    Mirar mod_mono para apache:
    https://help.ubuntu.com/community/ModMono

    http://www.fayerwayer.com/2009/11/visual-studio-mono/

    Share this

    Leave a reply