Tuesday 24 October 2017

Lighttpd Cgi Binære Alternativer


Sikkerhet, hastighet, overholdelse og fleksibilitet - alle disse beskriver pron lighty som raskt omdefinerer effektiviteten til en webserver som den er designet og optimalisert for miljøer med høy ytelse. Med et lite minnefottrykk sammenlignet med andre webservere, effektiv styring av cpu-load og avanserte funksjonssett FastCGI, SCGI, Auth, Output-komprimering, URL-omskrivning og mange flere er den perfekte løsningen for hver server som lider av lastproblemer. Og best av alt det er Open Source lisensiert under den reviderte BSD-lisensen . driver flere populære Web 2 0-steder. Den høyhastighets-io-infrastrukturen gir dem mulighet til å skalere flere ganger bedre med samme maskinvare enn med alternative web-servere. Denne raske webserveren og utviklingslaget lager en webserver med fremtidens behov web i tankene. Faster FastCGIET møter modmailbox. Its hendelse-drevet arkitektur er optimalisert for et stort antall parallelle tilkoblinger hold-alive som er viktig for høy ytelse AJAX applikasjoner. January 14, 2017. Viktige changes. bug reparerer kun bugfix release. I har en dedikert server med 1GB s dedikert, 4GB ram og 4cpus Jeg har statiske filer for nedlasting fra 300mb til 900mb jeg prøvde over Apache, Nginx and. Apache gjør for mange trusler og etter 200 tilkoblinger går det veldig høyt så apache det sa nei go. nginx etter 100 tilkoblinger det går veldig høyt så det er ikke noe galt heller. så langt er det veldig bra som en enkeltgjenget server. Med 500 samtidige tilkoblinger holder lasten seg til 0 90 - 1 10 veldig bra, men jeg står overfor et nedlastingshastighetsproblem, det går tregere, selv når jeg har 1GBps dedikert port, ser jeg iptraf og med 500 samtidige tilkoblinger går det ikke mer enn 250000 KB s Med apache og nginx noen ganger gikk det til 700000 KB s oppstrøms i serveren jeg skiftet mellom sendfile og writev i config og det har samme resultat. Jeg bruker ikke noen php eller fast-cgi, bare rett nedlastning direkte til filen, for eksempel, og den laster ned filen. Jeg vil legge ved noe info her for at du skal hjelpe meg med å finne ut det. Aktuell topp kommandostat-en grep 80 wc - l. What skal jeg bytte for å få klientene til å laste ned raskere, de sa noen ganger det lastes ned langsommere enn 10 KB s. Problemet her er ikke din webserver, det er det som egentlig ikke er utformet som en filnedlastingsprotokoll. Det er Hyper Text Transport Protocol, og mange av beslutningene rundt fokus på Hyperlinked Tex t aspekt-filstørrelser forventes å være små, under noen få dusin Kb og sikkert under en Mb. Nettinfrastrukturen utnytter dette faktum i mange av deres tilnærminger til datakaching, osv. I stedet for å bruke for noe det egentlig ikke er utformet for, jeg vil anbefale å se på å bruke en annen transportmekanisme. FTP File Transfer Protocol FTP ble designet spesielt for å overføre filer med vilkårlig størrelse og gjør ikke de samme forutsetninger som programvare. Alt du gjør er statiske nedlastinger, HTML-siden HTML kan lenke til de statiske filene med en ftp-kobling, og konfigurere en FTP-server for å tillate anonym nedlasting er vanligvis enkel. Kontroller FTP-serverens dokumenter for detaljer. Nettlesere siden IE6 FF2 har støttet grunnleggende FTP-nativt - den gjennomsnittlige brukeren har ingen annen arbeidsflyt enn vanlig Dette er trolig ikke den beste tilnærmingen som FTP ble designet lenge før, og som Perry nevnte, lenge før vi hadde halvgig-filer. CDN Bruke et innholdsleveringsnettverk som Amazon s S3 går ikke teknologisk rundt, men det gjør at du ikke trenger å bekymre deg for at brukerne overbelaster serveren din som du ser. BitTorrent Hvis brukerne dine er litt mer teknologiske savne, bør du vurdere å sette serveren opp til å frøke den statiske filen på ubestemt tid, da publiser magnetkoblinger på nettstedet ditt I verste fall vil en enkelt bruker oppleve en direkte nedlasting fra serveren din, ved hjelp av en protokoll som egentlig vet hvordan du håndterer store filer. I beste fall vil hundrevis av brukere både leech og frø hverandre, Ja, dette krever at brukerne dine vet hvordan de kjører og konfigurerer bittorrent, noe som sannsynligvis ikke er tilfelle, men det er et interessant paradigme for filnedlastinger, uansett. ansvarlig 5. mai 12 klokka 3 09.I ta problem med uttalelsen FTP ble designet spesielt for å overføre filer som er større enn hva som kan håndtere som FTP ble designet lenge før det var noen 300mb - 900mb filer og lenge før det noen gang eksisterte. Kanskje innebar svareren noe litt annerledes, men som det står. Jeg tror svaret er misvisende. OP-s-problemet er sannsynligvis konfigurasjon og har ingenting å gjøre med protokollen i bruk. Perry 16. juni kl. 12 på 20 04. Perry Du er helt riktig, min karakterisering av FTP er feil og avhengig av konfigurasjon kan det ha likt lignende problemer med IO Jeg hadde tenkt mitt svar å bli en godkjenning av BitTorrent. For å levere store filer, er den verste mulige transportmekanismen å bruke. Vi som IT-fagfolk bør bevege seg mot å bruke mer hensiktsmessige teknikker for å løse problemer David Souther Juni 17 12 på 13 34. 1 4 på Unix-systemer. Denne delen inneholder notater og hint som er spesifikk for 1 4 installasjoner av PHP på Unix-systemer. Vennligst bruk trac for å lære å installere riktig før du fortsetter. Fastcgi er Den foretrukne SAPI til å koble PHP og Fastcgi er automatisk aktivert i php-cgi i PHP 5 3, men for eldre versjoner konfigurerer PHP med --enable-fastcgi For å bekrefte at PHP har fastcgi aktivert, php - v skal inneholde PHP 5 2 5 cgi-fcgi Før PHP 5 2 3, fastcgi ble aktivert på php-binæret, var det ingen php-cgi. Letting gyte php-prosesser. For å konfigurere for å koble til php og spawn fastcgi prosesser, er det mulig å redigere Stikkontakter foretrekkes for å koble til å fastlegge prosesser på det lokale systemet. Eksempel 1 Delvis. Bin-path-direktivet gjør det mulig å gyte fastcgi-prosesser dynamisk PHP vil gyte barn i henhold til miljøvariabelen PHPFCGICHILDREN. Bin-miljødirektivet setter miljøet for de tilstedeværende prosessene PHP vil drepe et barn prosess etter at antall forespørsler angitt av PHPFCGIMAXREQUESTS er nådd. Direktiverne min-procs og max-procs bør generelt unngås med PHP PHP administrerer sine egne barn og opcode caches som APC vil bare dele blant barn som forvaltes av PHP Hvis min-pross er satt til noe større enn 1, vil det totale antallet php responders bli multiplisert PHPFCGICHILDREN 2 min-pross 16 barn gir 32 responders. Spawning med spawn-fcgi. gir et program kalt spawn-fcgi for å lette prosessen med å gyte fastcgi prosesser lettere. Gjøre php-cgi. It er mulig å gyte prosesser uten spawn-fcgi, selv om litt tungløfting kreves. Stille PHPFCGICHILDREN miljøet var kontroller hvor mange barn PHP vil gyte for å håndtere innkommende forespørsler Innstilling av PHPFCGIMAXREQUESTS vil avgjøre hvor lenge i forespørsler hvert barn skal leve Her er et enkelt bash-skript for å hjelpe gyte php responders. Example 2 Spawning FastCGI Responders .-- Start - bin bash. usr bin spawn-fcgi - s - f usr bin php-cgi - c-u-g-C4-P-F12-End. 1 5 - Konfig - Start. , statistikk MIRRORLANGUAGE kr, MIRRORSTATS 1. runde-robin aktivere fastcgi 16 - End. 1 4 Unix. Unix 1 4 PHP. trac. PHP SAPI fastcgi fastcgi PHP 5 3 php-cgi php konfigurere --enable-fastcgi PHP fastcgi php - v PHP 5 2 5 cgi-fcgi PHP 5 2 3 php-cgi php fastcgi. php. php fastcgi fastcgi. bin-path fastcgi PHP PHPFCGICHILDREN bin-miljø PHPFCGIMAXREQUESTS PHP drepe min prosess maks prosess PHP PHP APC opcode PHP min-pross 1 PHP PHPFCGICHILDREN 2 min-pross 16 32.spawn-fcgi. spawn-fcgi fastcgi. spawn-fcgi PHPFCGICHILDREN PHP PHPFCGIMAXREQUESTS php bash .2 FastCGI .-- Start - bin bash. usr bin spawn-fcgi - s - f usr bin php-cgi - c-u-g-C4-P-F12-End. 1 5 - Konfig - Start. , statistikk MIRRORLANGUAGE kr, MIRRORSTATS 1. round-robin aktivere fastcgi 16 - End. Apache Tutorial Dynamisk innhold med CGI. CGI Common Gateway Interface definerer en måte for en webserver å samhandle med eksterne innholdsgenererende programmer, som ofte henvises til som CGI-programmer eller CGI-skript Det er den enkleste og mest vanlige måten å sette dynamisk innhold på ditt nettsted. Dette dokumentet vil være en introduksjon til å sette opp CGI på Apache-webserveren din, og begynne å skrive CGI-programmer. For å bestille For å få CGI-programmene til å fungere skikkelig, må du ha Apache konfigurert for å tillate CGI-utførelse. Det er flere måter å gjøre dette på. Merk Hvis Apache er bygget med delt modulstøtte, må du sørge for at modulen er lastet inn i deg må passe på at LoadModule-direktivet ikke har blitt kommentert. Et riktig konfigurert direktiv kan se slik ut. På Windows, eller ved bruk av en ikke-gjenget MPM som prefork, kan et riktig konfigurert direktiv se slik ut. Sc RiptAlias-direktivet forteller Apache at en bestemt katalog er satt til side for CGI-programmer Apache vil anta at hver fil i denne katalogen er et CGI-program, og vil forsøke å utføre det når den aktuelle ressursen er forespurt av en klient. ScriptAlias-direktivet ser ut som. ScriptAlias ​​cgi-bin usr lokal apache2 cgi-bin. Det viste eksempelet er fra standard konfigurasjonsfil, hvis du installerte Apache i standardplasseringen. The ScriptAlias-direktivet er mye som Alias-direktivet, som definerer et URL-prefiks som skal kartlegges til en bestemt mappe Alias ​​og ScriptAlias ​​brukes vanligvis til kataloger som ligger utenfor DocumentRoot-katalogen. Forskjellen mellom Alias ​​og ScriptAlias ​​er at ScriptAlias ​​har den ekstra betydningen at alt under dette URL-prefikset vil bli vurdert som et CGI-program. Så forteller eksemplet Apache her at enhver forespørsel om en ressurs som begynner med cgi-bin, skal vises fra katalogen usr local apache2 cgi-bin og skal være trea Ted som et CGI-program. For eksempel, hvis URL-adressen blir bedt om, vil Apache forsøke å utføre filen og returnere produksjonen. Selvfølgelig må filen eksistere og være kjørbar og returnere utdata på en bestemt måte, eller Apache vil returnere en feilmelding. CGI-programmer er ofte begrenset til ScriptAlias ​​ed-kataloger av sikkerhetshensyn. På denne måten kan administratorer tett kontrollere hvem som har lov til å bruke CGI-programmer. Men hvis de riktige sikkerhetsforanstaltninger tas, er det ingen grunn til at CGI-programmer kan ikke kjøres fra vilkårlig kataloger. For eksempel kan du ønske å la brukerne ha webinnhold i deres hjemmekataloger med UserDir-direktivet Hvis de vil ha egne CGI-programmer, men ikke har tilgang til hoved cgi-bin-katalogen, de må kunne kjøre CGI-programmer andre steder. Det er to trinn for å tillate CGI-utførelse i en vilkårlig katalog. Først må cgi-script-behandleren aktiveres ved hjelp av AddHandler - eller SetHandler-direktivet. Second ExecCG Jeg må spesifiseres i valgdirektivet. Du kan eksplisitt bruke Alternativdirektivet, inne i din hovedserverkonfigurasjonsfil, for å angi at CGI-utførelse ble tillatt i en bestemt katalog. Dokumenter for lokal apache2 htdocs somedir Alternativer ExecCGI Directory. Ovennevnte direktiv forteller Apache for å tillate utførelse av CGI-filer Du må også fortelle serveren hvilke filer som er CGI-filer Følgende AddHandler-direktiv forteller serveren å behandle alle filer med cgi eller pl-utvidelsen som CGI-programmer. AddHandler cgi-script. Opplæringen viser hvordan du aktiverer CGI-programmer hvis du ikke har tilgang til. For å tillate CGI-programkjøring for en hvilken som helst fil som slutter i brukerens kataloger, kan du bruke følgende konfigurasjon. Directory home publichtml Valg ExecCGI AddHandler cgi-script Directory. If du ønsker å utpeke en cgi-bin-underkatalogen av en bruker s katalog hvor alt blir behandlet som et CGI-program, kan du bruke følgende. Directory home publichtml cgi-bin Alternativer ExecCGI SetHandler cgi-script Directory. There er to hovedforskjeller mellom vanlig programmering og CGI programmering. Først må all utdata fra CGI-programmet være forhåndsført av en MIME-type header Dette er header som forteller kunden hvilken type innhold det er mottar det meste av tiden, dette vil se ut. For det andre må utdataene dine være i HTML, eller et annet format som en nettleser vil kunne vise. Mesteparten av tiden vil dette være HTML, men noen ganger kan du skrive en CGI program som utgir et gif-bilde eller annet ikke-HTML-innhold. I tillegg til disse to tingene vil et CGI-program skrive ut som et annet program du kan skrive. Følgende er et eksempel på CGI-program som skriver ut en linje til din nettleser Skriv inn følgende, lagre det på en fil som heter og legg den i cgi-bin-katalogen. usr bin perl print Innholdstype tekst html nn print Hei, verden. Selv om du ikke er kjent med Perl, bør du kunne se hva som skjer her. Den første linjen forteller Apache, eller hva som helst som du skal ha det under programmet kan utføres ved å mate filen til tolken funnet på stedet usr bin perl Den andre linjen skriver ut innholdstypedeklarasjonen vi snakket om, etterfulgt av to vognretur-returlinjepar Dette legger en tom linje etter overskriften, for å indikere slutten av topptekstene og begynnelsen av kroppen Den tredje linjen skriver ut strengen Hei, Verden Og det er slutten av det. Hvis du åpner favorittbrowseren din og forteller det for å få adressen. en uansett hvor du legger filen, Du vil se en linje Hei, verden vises i nettleservinduet Det er ikke veldig spennende, men når du får det som jobber, får du en god sjanse til å få omtrent alt som fungerer. Det er fire grunnleggende ting du kan se i nettleseren din når du prøver å få tilgang s CGI-programmet fra weben. Utgangen av CGI-programmet Great Det betyr at alt fungerte bra Hvis utdataene er riktige, men nettleseren ikke behandler det riktig, må du kontrollere at du har riktig innholdstype satt i CGI-programmet. kildekoden til CGI-programmet eller en POST-metode Ikke tillatt melding Det betyr at du ikke har riktig konfigurert Apache til å behandle CGI-programmet. Les avsnittet om konfigurering av Apache og prøv å finne det du savnet. En melding som starter med Forbidden Det betyr at det er et tillatelsesproblem Kontroller Apache-feilloggen og delen nedenfor under filtillatelser En melding som sier intern serverfeil Hvis du sjekker Apache-feilloggen, finner du sannsynligvis at det står Tidlig slutt på skripthodene, muligens sammen med en feilmelding generert av din CGI-program I dette tilfellet vil du sjekke hver av de følgende seksjonene for å se hva som kan forhindre at CGI-programmet sender ut de riktige overskriftene. Husk at s erver kjører ikke som deg Det er når serveren starter, kjører den med tillatelsene til en ubehøvlet bruker - vanligvis ingen eller www - og så vil det trenge ekstra tillatelser til å utføre filer som eies av deg. Vanligvis måten å gi en fil tilstrekkelige tillatelser som skal utføres av ingen, er å gi alle utførlig tillatelse på filen. Også, hvis programmet leser fra eller skriver til andre filer, må disse filene ha de riktige tillatelsene for å tillate dette. Når du kjører et program fra kommandolinjen, har du viss informasjon som sendes til skallet uten at du tenker på det. For eksempel har du en PATH som forteller skallet hvor det kan se etter filer du refererer til. Når et program kjører via webserveren som et CGI-program, kan det ikke ha samme PATH. Alle programmer som du påberoper deg i CGI-programmet som sendmail, for eksempel, må spesifiseres med en hel bane, slik at skallet kan finne dem når det forsøkes utfør CGI pr ogram. En vanlig manifestasjon av dette er banen til manuskripten ofte perl angitt i den første linjen i CGI-programmet, noe som vil se ut som noe. Make sikker på at dette faktisk er banen til tolken. Når du redigerer CGI-skript på Windows, end-of-line-tegn kan legges til tolkbanen. Kontroller at filene overføres til serveren i ASCII-modus. Hvis du ikke gjør det, kan det føre til at kommandoen ikke er funnet advarsler fra operativsystemet, på grunn av den ukjente end-of - linjetegn tolkes som en del av tolkfilen. Hvis ditt CGI-program er avhengig av ikke-standardiserte miljøvariabler, må du forsikre deg om at disse variablene blir sendt av Apache. Når du savner overskrifter fra miljøet, må du kontrollere at de er formatert i henhold til til RFC 2616 seksjon 4 2 Overskriftsnavn må starte med et brev, etterfulgt kun av bokstaver, tall eller bindestrek. En hvilken som helst overskrift som bryter denne regelen vil bli tapt tyst. Det meste av tiden da et CGI-program mislykkes, skyldes det at o fa problem med selve programmet Dette er spesielt sant når du får tak i disse CGI-tingene og ikke lenger gjør de to feilene. Det første du må gjøre er å forsikre deg om at programmet går fra kommandolinjen før du tester det via webserver For eksempel try. cd usr local apache2 cgi-bin. Ikke ring perl tolk Shell og Apache skal finne tolken ved hjelp av stiinformasjonen på første linje i scriptet. Det første du ser skrevet av programmet, bør være et sett med overskrifter, inkludert innholdstype etterfulgt av en tom linje Hvis du ser noe annet, vil Apache returnere den forrige delen av skripthodet feil hvis du prøver å kjøre den gjennom serveren. Se Skrive et CGI-program over for flere detaljer. Feilloggen er din venn. Alt som går galt genererer melding i feilloggen Du bør alltid se der først Hvis stedet der du er vert for ditt nettsted, ikke tillater deg tilgang til feilloggen, bør du sannsynligvis være vert for nettstedet ditt annet sted Lær å lese feilloggene, og du finner det nesten alle problemene dine blir raskt identifisert og raskt løst. Suexec-støtteprogrammet lar CGI-programmer kjøres under forskjellige brukerrettigheter, avhengig av hvilken virtuell verts - eller brukerhåndbok som de befinner seg i. i Suexec har svært streng tillatelse kontroll, og eventuelle feil i den sjekken vil føre til at CGI-programmene dine mislykkes med for tidlig ende av skripthoder. For å sjekke om du bruker suexec, kjør apachectl - V og sjekk for plasseringen av SUEXECBIN Hvis Apache finner en suexec binær der ved oppstart, vil suexec bli aktivert. Bare du forstår suexec, bør du ikke bruke den. Hvis du vil deaktivere suexec, fjerner du eller bytter navn på suexec binært peket til av SUEXECBIN og starter deretter serveren om igjen. Hvis du etter å ha lest om suexec du vil fortsatt bruke den, og kjør deretter suexec - V for å finne plasseringen til suexec loggfilen, og bruk den loggfilen for å finne hvilken politikk du bryter. Som du blir mer avansert i CGI programmering, vil det bli nyttig å forstå mer om hva som skjer bak kulissene Spesifikt, hvordan nettleseren og serveren kommuniserer med hverandre Fordi selv om det er veldig bra å skrive et program som skriver ut Hello, World, det er ikke spesielt nyttig. mentvariabler er verdier som flyter rundt deg mens du bruker datamaskinen. De er nyttige ting som din bane hvor datamaskinen søker etter den faktiske filen som implementerer en kommando når du skriver den, brukernavnet, terminaltypen og så videre. For en fullstendig liste av de vanlige miljøvariablene dine hver dag, skriv env på en kommandoprompt. Ved CGI-transaksjonen stiller serveren og nettleseren også miljøvariabler slik at de kan kommunisere med hverandre. Dette er ting som nettlesertypen Netscape, IE, Lynx, servertypen Apache, IIS, WebSite, navnet på CGI-programmet som kjøres, og så videre. Disse variablene er tilgjengelige for CGI-programmereren, og er halvparten av historien om klient-serverkommunikasjonen. Den komplette listen av nødvendige variabler er ved Common Gateway Interface RFC. Dette enkle Perl CGI-programmet vil vise alle miljøvariablene som sendes rundt. To lignende programmer er inkludert i cgi-bin-katalogen i Apache distr ibution Merk at noen variabler er påkrevd, mens andre er valgfrie, så du kan se noen variabler som ikke er oppført på den offisielle listen. I tillegg tilbyr Apache mange forskjellige måter for å legge til dine egne miljøvariabler til de grunnleggende som leveres som standard . usr bin perl print Innholdstype tekst html nn foreach nøkkel nøkler ENV utskriftstast - ENV br. Andre kommunikasjon mellom serveren og klienten skjer over standardinngang STDIN og standardutgang STDOUT I normal hverdagslig sammenheng betyr STDIN tastaturet eller en fil som et program er gitt til å handle på, og STDOUT betyr vanligvis konsollen eller skjermen. Når du legger et webskjema til et CGI-program, blir dataene i det skjemaet samlet i et spesielt format og blir levert til ditt CGI-program over STDIN Programmet kan da behandle dataene som om det kom inn fra tastaturet eller fra en fil. Det spesielle formatet er veldig enkelt. Et feltnavn og dets verdi er sammenføyet med et like-tegn, og verdiparene er sammenføyet med en ampersand Ulempefulle tegn som mellomrom, ampersands og lik tegn, omdannes til deres hex-ekvivalent slik at de ikke tømmer opp arbeidene. Hele datastrengen kan se noe ut. Du vil også noen ganger også se denne typen streng app endte til en URL Når det er gjort, legger serveren den strengen inn i miljøvariablen som heter QUERYSTRING Det kalles en GET-forespørsel HTML-skjemaet angir om en GET eller en POST brukes til å levere dataene, ved å angi METODE-attributtet i FORM tag. Your program er da ansvarlig for å splitte den strengen opp i nyttig informasjon Heldigvis finnes det biblioteker og moduler som kan hjelpe deg med å behandle disse dataene, samt håndtere andre aspekter av ditt CGI-program. Når du skriver CGI-programmer, bør du vurdere å bruke et kodebibliotek eller en modul for å gjøre det meste av det grunne arbeidet for deg. Dette fører til færre feil og raskere utvikling. Hvis du skriver CGI-programmer i Perl, er moduler tilgjengelige på CPAN Den mest populære modulen for dette Formålet er at du også kan vurdere CGI Lite som implementerer et minimalt sett med funksjonalitet, som er alt du trenger i de fleste programmer. Hvis du skriver CGI-programmer i C, er det en rekke alternativer En av disse er CGIC-bibliotekene y. from. There er et stort antall CGI-ressurser på nettet Listen fra HTML Writers Guild er en god kilde til svar på dine spørsmål. Du kan finne ut mer. Den nåværende CGI-spesifikasjonen er tilgjengelig i Common Gateway Interface RFC . Når du legger inn et spørsmål om et CGI-problem som du har, enten det er til en e-postliste eller en nyhetsgruppe, må du sørge for at du gir nok informasjon om hva som skjedde, hva du forventet å skje, og hvordan det som faktisk skjedde, var annerledes, hvilken server du kjører, hvilket språk CGI-programmet din var i, og om mulig den overordnede koden. Dette vil gjøre det enklere å finne problemet ditt. Merk at spørsmål om CGI-problemer aldri skal legges opp i Apache-databasen, med mindre du er sikker Du har funnet et problem i Apache kildekoden. Merknad Dette er ikke en QA-seksjon. Kommentarer som er plassert her, bør pekes mot forslag til forbedring av dokumentasjonen eller serveren, og kan bli fjernet igjen av våre moderatorer hvis de er e enten implementert eller vurdert som ugyldig off topic Spørsmål om hvordan du administrerer Apache-serveren, bør rettes til enten vår IRC-kanal, på Freenode eller sendes til våre adresselister. Opphavsrett 2017 Apache-programvarefondet Lisensiert under Apache-lisensen, versjon 2 0 .

No comments:

Post a Comment