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!