Pentru activitatea site-urilor scrise în ASP.NET, este necesar să se pună mediul de execuție al bytecode-ului IL și serverul web real. Astfel, există cel puțin două moduri de a face site-ul să lucreze pe ASP.NET în Linux. Primul este de a pune cadrul Microsoft ASP.NET nativ pentru Microsoft .NET Framework pentru rularea Wine, al doilea - pentru a instala Mono și a adapta site-ul pentru el.
Dar nu totul este atât de simplu și inofensiv. Ambele metode nu sunt fără defecte. Mai întâi, Microsoft .NET Framework este o completare a sistemului de operare Windows și, instalându-l sub Wine, încălcați acordul de licență. În plus, chiar dacă încălcați acordul de licență, la urma urmei, instalați-l sub Wine, nu se știe cum se va arăta în termeni de stabilitate și performanță, ceea ce este foarte important pentru server. În al doilea caz, există o caracteristică de compatibilitate incompletă a Mono cu Net. Cadru. Prin urmare, dacă site-ul nu a fost conceput inițial să funcționeze în Mono, este probabil ca o parte a codului să fie rescrisă. Cu toate acestea, în orice caz, va trebui să rescrieți codul, în special când migrați din MSSQL sau Oracle, cu care lucrează majoritatea site-urilor ASP.NET, se va referi la codul care interacționează cu baza de date.
În cazul meu, obiectivul a fost dezvoltarea inițială a site-ului pe APS.NET pentru un server cu Linux. Prin urmare, a fost creat un VPS local. la care acum trebuie să instalați Mono, serverul web și să faceți setările minime necesare. Deci, ne conectam la serverul SSH, introducem login si parola. Serverul meu a fost aproape complet neconfigurat, așa că în primul rând am instalat sudo și m-am adăugat la lista / etc / sudoers.
aptitude install sudo
Totul, acum toate operațiile prin sudo. Am Debian pe server, deci tot ceea ce este scris este aplicabil oricărei distribuții Linux bazate pe Debian, inclusiv majoritatea distribuțiilor bazate pe Ubuntu.
Deci, dacă utilizați Debian, atunci totul este destul de trist la prima vedere - cea mai veche versiune disponibilă în repozitoriul standard de ramură stabilă este Mono 1.9.1. Mergem la site-ul Mono. Răsfoind ușor documentația, puteți vedea că există încă o posibilitate de a pune versiunea 2.4.2.3. Pentru aceasta, adăugați depozitul în fișierul /etc/apt/sources.list.
Actualizați lista de pachete și instalați:
sudo aptitude update
sudo aptitude -t lenny-backports instala mono-runtime
În cea mai recentă versiune a repozitorului Ubuntu, versiunea 2.4.2.3 este disponibilă, deci dacă aveți nevoie de această versiune, puteți să o instalați după cum urmează:
sudo aptitude instala mono-runtime
Inițial, a fost de fapt instalat de mine, dar apoi au fost descoperite câteva funcții de care aveam nevoie și nu am implementat în această versiune. A fost necesar să lucrați cu SSL și să trimiteți și poștă prin Google SMTP. Pentru a lucra cu SSL, au existat mai multe moduri de a implementa aceste funcții, în Windows totul a funcționat. În Linux, când folosește SSL, funcționează doar metoda depășită. Pentru a lucra cu Google SMTP, a fost necesar să instalați un certificat, dar chiar și după aceea, trimiterea de scrisori nu a funcționat. Când instalați un alt certificat, a existat o excepție. Pentru a rezolva această problemă, au fost găsite 3 opțiuni, schimbați logica și nu trimiteți scrisori prin Google, puneți patch-uri sau mergeți la o versiune mai nouă.
Instalarea Mono 2.6
În primul rând, sa descoperit că un scenariu a fost construit din surse. Script-ul, în general, a lucrat, dar C # compilator refuzat să stabilească unul dintre fișierele, este afișat un mesaj care spune: „decl.cs (628,57): CS0246 eroare: Tipul sau numele spațiu de nume«var»nu a putut fi găsit Pierdeți. o directivă de utilizare sau o referință de asamblare? " Nu am dorit să înțeleg codul sursă. Prin urmare, din nou am avut de a se arunca în căutare. De data aceasta, au fost găsite pachete de deblocare Mono 2.6.1 pentru Ubuntu.
Pentru a instala Mono 2.6.1, trebuie să adăugați două arhive în fișierul /etc/apt/sources.list, pachetele Debian testate, pentru a obține cele mai recente versiuni ale unor pachete și depozitul OpenSuse. În al doilea, există mai multe versiuni de Mono 2.6.1 și puteți selecta versiunea dorită. Din moment ce a fost specific pentru Debian a fost doar pachetul libgdiplus, am adăugat un depozit pentru Ubuntu 9.10:
Actualizăm lista de pachete și instalăm Mono:
sudo aptutude update
sudo aptitude instala mono-runtime
Deci, este instalată configurația minimă Mono. Pentru a verifica dacă versiunea Mono 2.6.1 a fost instalată, este posibilă tastând comanda:
Acum puteți instala alte pachete necesare Mono sau puteți lăsa totul așa cum este.
Configurați nginx ca front-end la xsp2.
Ca server web pentru rularea ASP.NET pe Linux, puteți utiliza atât standardul serverului mono-server xsp2, cât și Apache sau nginx. Primul, în general, este recomandabil să se utilizeze numai pentru procesarea paginilor ASP.NET. În Apache, puteți procesa paginile APS.NET prin conectarea unui modul mod_mono sau prin FastCGI. În al treilea caz, paginile ASP.Net pot fi procesate fie prin FastCGI, urmând instrucțiunile de pe site-ul Mono, fie folosind nginx ca server de front-end, și xsp2 ca server de back-end.
Evident, pentru a lucra în mod eficient, un link către serverul web nginx este mai preferat, în comparație cu Apache. Mai intai am creat o gramada prin FastCGI si am testat-o pe o pagina simpla ASP.NET care a aratat ora curenta. Ca urmare, sa dovedit că atunci când procesăm fiecare mie de cereri există 2-3 erori (10 cereri au fost trimise simultan). După migrarea nginx la paginile proxy spre serverul web xsp2, această problemă nu a fost detectată nici după ce numărul de solicitări concurente a crescut la 100.
Deci, procesul de instalare a nginx ca server de front-end la xsp2 este după cum urmează.
Instalarea și configurarea nginx:
sudo aptitude install nginx
În fișierul de configurare /etc/nginx/nginx.conf din secțiunea http scrieți setările serverului web.
server ascult 80;
numele_serverului myvps; # nume de server myvps
access_log /var/log/nginx/myvps.access.log;
error_log /var/log/nginx/myvps.error.log;
locație / root / var / www / myvps /; # root directory
index index.html index.htm implicit.aspx Default.aspx;
>
# Extensii ulterioare ale fișierelor care vor procesa xsp2
locație
Instalarea xsp2
sudo aptitude instala mono-xsp2
Dacă doriți, puteți configura autorunul serverului web xsp2. Pentru a face acest lucru foarte simplu, de exemplu, printr-un fișier .webapp, care are următorul format
Etichetele aplicațiilor web pot fi multiple, una pentru fiecare aplicație Web.
Directorul de configurare specificat în scriptul standard pentru autorun este / etc / xsp2 /. Acesta conține fișierul debian.webapp. utilizat ca configurație implicită. Puteți face modificări direct la acesta. De exemplu, pentru a rula aplicația Web utilizată mai sus pentru a testa starea de sănătate a serverului, modificările arată astfel:
De asemenea, trebuie să eliminați opțiunea --port $ post din scriptul autorun, în caz contrar porturile specificate în fișierul .webapp de configurare vor fi ignorate.
Acum trebuie să testați performanța. Dezarhivați și plasați fișierele de test în folderul / var / www / myvps. Executați nginx și xsp2:
sudo /etc/init.d/nginx start
xsp2 - aplicații myvps: /: / var / www / myvps - port 8080 - root / var / www / myvps /
sudo /etc/init.d/mono-xsp2 începe
Aceasta finalizează instalarea serverului web pentru ASP.NET în Linux. Acum poți face setări suplimentare pentru serverele web nginx și xsp2, pune baza de date și găzdui site-ul.