Mono [RESOLVIDO]

1. Mono [RESOLVIDO]

Arthur Rodrigues Stilben
gugarthur

(usa Fedora)

Enviado em 22/10/2010 - 01:26h

Olá, pessoal

estou tentando utilizar o Linux com Mono e Mysql para fazer alguns testes em desenvolvimento asp.net. Alguém sabe como que eu faço essa integração?


  


2. Resposta bem longa

Arthur Rodrigues Stilben
gugarthur

(usa Fedora)

Enviado em 22/10/2010 - 06:11h

Bem, eu uso o Fedora, então basicamente eu fiz o seguinte:

1. Instalei o Apache: #yum install httpd

2. Instalei o MySQL: #yum install mysql mysql-server

3. Instalei o Mono com conexão com o apache: #yum install mono-basic mono-core mono-data mono-web mod_mono

4. Instalei o XSP: #yum install xsp xsp-tests

5. Depois de instalar esses softwares, fui em /etc/httpd/conf, abri o arquivo httpd.conf e inseri na útlima linha:

#mono
User apache
Group apache

Include conf.d/mono/mod_mono.conf

No caso do Fedora, é necessário especificar o User e o Group para que o módulo do mono possa funcionar.

6.Em seguida, como especificado no Include acima, será necessário criar uma pasta em /etc/httpd/conf.d chamada mono e recortar o arquivo mod_mono.conf para essa pasta. Esse arquivo está em /etc/httpd/conf.d

7.Inserir o seguinte código no final de mod_mono.conf:

Alias /test "/usr/lib/xsp/test"
AddMonoApplications default "/test:/usr/lib/xsp/test"
<Location /test>
SetHandler mono
</Location>

Esse código cria uma pasta virtual chamada test que aponta para /usr/lib/xsp/test e seta essa mesma pasta como default para rodar aplicações em asp.net.

8. Testei se o apache estava conseguindo processar asp.net através do seguinte endereço: http://localhost/test. Aí que tem um pequeno detalhe: o SELinux às vezes trava a execução do asp.net. Pra resolver isso, execute: #setenforce 0. Não sei se isso já aconteceu com alguém, mas uma vez tive que executar esse comando 2x para tudo funcionar certinho. Mas à princípio não é necessário.

Você também pode fazer o mesmo teste usando o xsp. Para isso, aponte, no terminal, para a pasta /usr/lib/xsp/test e execute: # xsp. Então, basta abrir o navegador e ir ao endereço http://localhost:8080. Para encerrar o xsp, basta apertar enter no terminal.

9. Se tudo correu bem até aqui, então agora só falta testar a conexão com o MySql. No Fedora, existe um pacote chamado bytefx-data-mysql que faz esse trabalho, mas ele foi descontinuado e não é o mais recomendado. O mais recomendado é o MySQL Connector/NET (http://dev.mysql.com/downloads/connector/net/). Pegue, então, a versão para Mono & Unix. A versão que eu peguei foi a 6.3.5.

10. Descompacte então o arquivo onde desejar e procure por um arquivo chamado mysql.data.dll. No meu caso, estava dentro da pasta v2.

11. Agora vem um detalhe importante: renomeie o arquivo para MySql.Data.dll. Parece bobagem, mas se você não fizer isso, a conexão do mono com o MySQL não vai funcionar. Quando for instalar essa dll, vai até aparecer que foi instalado, mas se fizer uma requisição a ela o servidor não vai encontrar.

12. Agora vamos a instalação; no terminal, aponte para a pasta onde está a dll e logo após execute o comando: #gacutil -i MySql.Data.dll. Depois digite #gacutil -l MySql.Data. Deve aparecer algo do tipo:

The following assemblies are installed into the GAC:
MySql.Data, Version=6.3.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d
Number of items = 1

13. Vamos então agora testar a conexão com o MySQL. Antes de tudo, crie o seu banco e as suas tabelas (não vou mostrar isso aqui porque não é o propósito desse mini-tutorial). Crie então um arquivo em /usr/lib/xsp/test chamado banco.aspx e coloque nele o seguinte código:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="MySql.Data.MySqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>CD cat</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script runat="server">
private void Page_Load(Object sender, EventArgs e)
{
string connectionString = "Server=localhost;Database=cdcat;User ID=cdcat;Password=hardpassword;Pooling=false;";
MySqlConnection dbcon = new MySqlConnection(connectionString);
dbcon.Open();

MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM artist", dbcon);
DataSet ds = new DataSet();
adapter.Fill(ds, "result");

dbcon.Close();
dbcon = null;

ArtistsControl.DataSource = ds.Tables["result"];
ArtistsControl.DataBind();
}
</script>

</head>

<body>
<h1>Artists</h1>
<asp:DataGrid runat="server" id="ArtistsControl" />
</body>

</html>

Adapte o código conforme a sua necessidade.

14. Crie o arquivo web.config no mesmo diretório com o seguinte código:

<configuration>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="MySql.Data, Version=6.3.5.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
</assemblies>
</compilation>
</system.web>
</configuration>

Em assembly, na 5ª linha, vc deve colocar a segunda linha da resposta obtida por #gacutil -l MySql.Data (item 12).

Se todos esses passos foram seguidos, tudo deve ocorrer normalmente. UFA!








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts