Installere apache php mysql debian 8. Installere og konfigurere LAMP webserver for PHP utvikling

I denne opplæringen lærer du hvordan du installerer Apache, MariaDB og PHP7 (LAMP-stack) på en strekning av Debian 9. LAMP er den vanligste webtjenestestabelen for å bygge dynamiske nettsteder og nettapplikasjoner.

Den har fire komponenter: Linux, Apache, MySQL/MariaDB, PHP - Linux er operativsystemet; Apache er en webserver; MySQL/MariaDB er en database; PHP er et skriptspråk på serversiden.

Generelt er det veldig enkelt å installere LAMP på Debian 9, som enhver annen Linux-basert distribusjon. Spesielt hvis du er kjent med kommandobygging. Vi vil forklare alt i detalj, slik at selv en nybegynner kan takle det.

Installerer LAMP på Debian 9

Alle fire komponentene er gratis og åpen kildekode. kildekode. Men siden MySQL nå eies av Oracle og det er en mulighet for at Oracle vil gjøre det om til et lukket kildeprodukt, vil vi velge MariaDB fremfor MySQL. Du kan følge denne veiledningen på VPS (Virtual Private Server) eller på lokal datamaskin med Debian 9.

Vær oppmerksom på at når du installerer programvare på Debian, må du ha root-privilegier. Du kan legge til sudo i begynnelsen av kommandoen, eller bruke su-kommandoen for å bytte til root-brukeren.

Trinn 1: Oppdater programvarepakker

LAMP (serverstack) står for Linux, Apache, MySQL og PHP; fire populære programvarekomponenter med åpen kildekode som brukes av de fleste webverter, webutviklere, blogger og andre. Vi har utarbeidet en veiledning for å sette opp webserveren din for et testmiljø i den nyeste versjonen av Debian. Generelt er det veldig enkelt å installere LAMP i Debian 9, det viktigste er å forstå de grunnleggende funksjonene.

MariaDB erstatter MySQL-serveren som standarddatabasen i Debian 9.

Installer Linux:
om hva som er bra, interessant og nyskapende presentert i Debian 9. Dette er hovedbetingelsen for å installere alt annet. Vi anbefaler også at du gjør deg kjent med andre guider på siden. For eksempel har vi allerede snakket om å være på systemet ditt med Ubuntu.

Vi vil nå fortsette å installere AMP (Apache versjon 2, PHP versjon 7, MariaDB versjon 10.2) på Debian 9. Så la oss installere en etter en.

Installer Apache HTTP Server:
Først vil vi installere Apache-webserveren. Åpne en terminal og bytt deretter til root-brukeren.

Oppdater pakkelagerindeksen.

Apache-nettserverens pakkenavn er apache2. Installer apache2-pakken ved å bruke apt-get-kommandoen.

apt-get -y installer apache2

Apache HTTP-serveradministrasjon:

For å starte Apache2-serveren, kjør.

systemctl start apache2.service

For å stoppe Apache2-serveren, kjør.

systemctl stoppe apache2.service

For å starte Apache2-serveren på nytt, kjør.

For å sjekke statusen til Apache2-serveren, kjør.

systemctl status apache2.service

Brannmur:

Tillat Apache HTTP-server gjennom brannmur.

ufw tillate 80/tcp

ufw tillate 443/tcp

Testing av Apache HTTP-serveren:

Vi vil nå sjekke Apache-nettserveren for å se om den fungerer som den skal eller ikke. Åpne hvilken som helst nettleser og naviger deretter til følgende URL.

http://localhost/
ELLER

http://your-f-add-ssg/
Du vil få opp siden "Apache2 Debian Default", denne standardsiden bekrefter at Apache HTTP-serveren fungerer bra.

Installasjon MySQL-servere(MariaDB):
MariaDB er en MySQL-servererstatning designet av de originale MySQL-utviklerne for å forbli og ha åpen kildekode RDBMS. MariaDB er nå en av de mest populære servere databaser i verden.

For å installere MariaDB kjør følgende kommando

apt-get -y installer mariadb-server

Denne kommandoen lar deg forbedre sikkerheten til MariaDB-installasjonen din på følgende måter:

Du kan installere passord for root-kontoen.

Du kan begrense root-kontoer til localhost.

Du kan slette anonyme brukerkontoer.

Du kan fjerne testdatabasen og privilegiene som lar hvem som helst få tilgang til databaser med navn som begynner med test_.

Installer PHP:
Som standard støtter Apache-serveren bare .html og ikke PHP, for dette må du installere PHP og php-utvidelsespakken for MariaDB-serveren. Her vil vi installere PHP 7 på Debian 9.

apt-get -y installer php php-mysql

Etter å ha installert PHP-pakken, må du starte Apache HTTP-serveren på nytt.

systemctl restart apache2.service

PHP-testing:

Bruk VI-editoren til å lage info.php-filen.

vi /var/www/html/info.php

Denne vi-kommandoen vil åpne en fil som heter info.php. Kopier/lim inn under linjene i info.php-filen:

Lagre og lukk filen med Esc +: wq.

Åpne nå nettleseren din og skriv inn følgende URL i nettadressen.

http://localhost/info.php

http://din-ip-add-ress/info.php
Siden vil se slik ut:

Å installere LAMP i Debian 9, som vi sa ovenfor, viste seg å være veldig enkelt. Vi håper du raskt fant ut de grunnleggende verdiene under installasjonen. Men hvis du har spørsmål, sørg for å stille dem i kommentarene.

konklusjoner

Dette er alt! Gratulerer, du har installert LAMP på Debian 9. Hvis artikkelen var nyttig for deg, så ikke glem å dele lenken.

Hvis du finner en feil, merk en tekst og klikk Ctrl+Enter.

For noen timer siden, om kul hosting DigitalOcean. Hvis du er interessert og vil prøve den i aksjon, må du lage din første dråpe og installer/konfigurer alle nødvendige serverkomponenter ( Apache, MySQL, PHP). I dette notatet vil jeg fortelle deg hvordan du installerer og konfigurerer en pakke som er populær for all hosting: Apache, MySQL Og PHP(LAMPE). Notatet er rettet mot nybegynnere i linux-verdenen.

Oppdatering av depotene

Sørg for å oppdatere depotene før du installerer programvare. Dette gjøres med én kommando:

apt-get oppdatering

Installere Apache på Debian 7

Installasjon Apache burde ikke forårsake noen problemer. Det hele kommer ned til å kalle en enkelt kommando (repositories er en kul ting):

apt-get installer apache2

Feltet for utførelse vil vise en melding om fraværet av noen pakker og et tilbud om å laste ned. Enig, og gjør deg klar i et par minutter for å se inskripsjonene som kjører i konsollen. Etter at installasjonsprosessen er fullført, test funksjonaliteten til webserveren. For å gjøre dette, åpne en nettleser og gå til http://ip_din_server. Hvis du hever verten inn DigitalOcean, så kan du finne ut IP-adressen fra dråpekontrollpanelet eller ved å kjøre kommandoen i konsollen:

ifconfig eth0 | grep net | awk "( print $2 )"

En riktig installert webserver vil vise en side med inskripsjonen " Det fungerer!”.

Den neste komponenten vi må installere er MySQL DBMS. For å laste ned og installere MySQL, må du kjøre en kommando til:

apt-get install mysql-server

Pakkebehandlingen vil også be oss om å laste ned og installere avhengige komponenter, og etter å ha lastet dem ned, vil konfigurasjonsverktøyet startes. Hennes første spørsmål vil være å be om et passord for "root"-kontoen. Vi kommer opp med et passord vanskeligere og trykker "enter". Jeg anbefaler deg å skrive inn passordet fra tastaturet selv, og ikke fra bufferen. En gang, så jeg skrev inn feil passord og måtte installere på nytt MySQL.

Når MySQL-installasjonen er fullført, må du kjøre skriptet: mysql_secure_installation . For å gjøre dette, skriv kommandoen i terminalvinduet:

mysql_secure_installation

Skriptet vil umiddelbart be deg om passordet for "root"-kontoen som du anga under installasjonen. Skriv inn passordet og trykk på "Enter"-tasten. Hvis passordet ble skrevet inn riktig, vil skriptet be deg om å endre det. Siden du sannsynligvis kom opp med et godt passord under installasjonen, skriv inn "N" for å forhindre at passordet endres.

Det neste spørsmålet vil være et forslag om å fjerne anonyme brukere. De trengs ikke på kampvert, så vi er enige ( skriv inn i terminalen "Y").

Deretter vil skriptet tilby å blokkere rotbrukeren fra å koble til fra eksterne verter. For sikkerhets skyld er dette veldig bra, så vi er enige. Bruker fra fulle rettigheter må kun kobles til databaseserveren lokalt. Skriv "Y" og trykk på "Enter"-tasten. I det neste spørsmålet vil veiviseren tilby å slette testdatabaser. Vi trenger dem ikke, så vi er enige. Det siste spørsmålet vil være relatert til tillatelse til å laste inn bevilgningstabellen på nytt. Vi er enige, og alle våre svar på de tidligere spørsmålene trer i kraft umiddelbart.

Installerer PHP5 på Debian 7

Det siste trinnet er å installere PHP. Det er like enkelt som å installere Apache. Skriv inn kommandoen i terminalvinduet:

apt-get install php5 php-pear php5-mysql

Installasjon php5 V debian 7 tar litt tid. For å være sikker på at tolken ble riktig installert, må du starte på nytt Apache. PHP samhandler med WEB-serveren gjennom en modul som automatisk startes når Apache startes på nytt. For å starte Apache på nytt, bruk kommandoen:

service apache2 omstart

Sjekker funksjonaliteten til PHP

Det siste trinnet for i dag er å sjekke om PHP fungerer. La oss prøve å lage et testskript og få tilgang til det via nettleseren. Skriv inn kommandoen i terminalen

Nano /var/www/phpinfo.php

Det vil starte "nano" tekstredigeringsprogram. I den går vi inn i standardlinjen for å sjekke driften av PHP-tolken:

Lagre endringer i filen ctrl+o) og lukk filen ( ctrl+x). Med denne enkle handlingen opprettet vi en fil langs banen /var/www/phpinfo.php– standard vertsmappe. Følgelig, for å få tilgang til denne filen eksternt, må vi kjøre i nettleseren:

http:// /phpinfo.php

Hvis alle komponentene er riktig installert, vil du se en side som ligner på den i figuren nedenfor.

Klar for arbeid og forsvar

På dette trinnet kan du anta at WEB-serveren er på Debian 7 helt klar til å gå. Nøkkelkomponenter installert og klare til å betjene mengder av kunder. For fullstendig lykke er ikke nok FTP-tilgang og et brukervennlig databasekontrollpanel. Jeg skal snakke om dette i morgen.

På det moderne nettet er Linux hovedplattformen for å være vert for en rekke webservere. Kontinuitet, enkel distribusjon og vedlikehold er alt.

Når vi vurderer distribusjon av en webserver på et Linux-system, vil vi ta en av de mest populære distribusjonene - Debian som grunnlag. Han har etablert seg som en av de mest stabile fordelinger, har flest pakkelager av enhver distribusjon, og hver versjon kommer med en lang støtteperiode. Ved å bruke Debian kan du være sikker på at når du oppdaterer pakker på serveren, i de fleste tilfeller vil ingenting gå i stykker. Men det er det ikke akkurat.

Rask, pålitelig, hosting i Europa!

Leter du etter en god, men rimelig webhosting? Vil du ha rask, pålitelig europeisk stil og det beste for prosjektet ditt? FORNEX hjelper deg gjerne.

Rask hosting av høy kvalitet i utlandet. Raske servere brukes som virtuelle vertsservere. diskarrayer fra SSD-stasjoner, som gir pålitelige og raskt arbeid nettstedene dine. Fornex-ingeniører hjelper deg med å overføre nettsteder helt gratis.

Nå er det på tide å gå videre til LAMP.

LAMP er ingenting annet enn et akronym for en programvarestabel for distribusjon av webservere. Dette inkluderer følgende komponenter:

L - Linux - operativsystem

A - Apache2 - Webserver

M - Mysql (for øyeblikket mysql-pakken erstattet av MariaDB) - databasestyringssystem

P - PHP - programmeringsspråk

Det er verdt å merke seg at LAMP ikke opprinnelig ble opprettet som en stabel - hver av komponentene er et separat ferdig produkt, men en slik bunt har blitt veldig populær på grunn av bekvemmeligheten, fleksibiliteten og ytelsen til det endelige systemet.

Innenfor rammen av denne artikkelen vil vi ikke dvele ved å installere og forberede OS, det første medlemmet av stabelen, for å installere en webserver, dette er et emne for en egen artikkel, så vi vil umiddelbart fortsette å installere følgende komponenter .

Å installere Apache er ikke vanskelig - du trenger bare å installere pakken med samme navn fra Debian-depotet.

Først, la oss oppdatere listen over pakker, hvis du av en eller annen grunn ikke gjorde dette etter å ha installert operativsystemet:

Nå kan du følge lenken http://(IP_adresse web server) og sjekk om en stubbside har dukket opp.

La oss starte med det og gå videre til neste punkt.

mysql(MariaDB)

Som nevnt ovenfor, i Debian 9 er standard Mysql-pakken erstattet med MariaDB. Denne DBMS er fullt kompatibel, har identisk syntaks og er helt åpen kildekode. Tilstedeværelsen av MariaDB, og DBMS som sådan, på webserveren er nødvendig for driften av en rekke innholdsstyringssystemer (CMS), som WordPress, Joomla og andre.

Når du installerer MariaDB, trenger du også en av PHP-pakkene som kreves for å jobbe med DBMS:

sudo apt installer mariadb-server mariadb-client php7.0-mysql -y

Verktøyet ber deg skrive inn passordet til root-brukeren, men siden vi ikke har satt det ennå, klikker vi bare Tast inn .

Vi angir passordet for den privilegerte brukeren ved å svare bekreftende på det første spørsmålet (enter y på tastaturet og trykk Tast inn) . Vi skriver inn passordet vi har funnet opp og bekrefter det ved å skrive det inn på nytt.

Ikke bekymre deg hvis du ikke ser tegnene du skriver på skjermen – det er slik det skal være.

Vi svarer på alle andre spørsmål som verktøyet stiller deg:

  1. Vil du fjerne anonyme brukere?

Vi svarer bekreftende - vi trenger å logge inn på DBMS-administrasjonskonsollen først etter å ha skrevet inn passordet.

  1. Vil du nekte ekstern tilkobling til root-bruker?

Her svarer vi, ut fra behovene og personlige hensyn. Av sikkerhetsgrunner er det imidlertid bedre å svare bekreftende.

  1. Vil du slette testdatabasen?

Slett uten frykt. Hun er til ingen nytte for oss.

  1. Oppdatere brukerrettigheter?

Igjen svarer vi bekreftende.

La oss sørge for at alt er satt opp riktig. For å gjøre dette, koble til MariaDB-administrasjonskonsollen:

sudo mysql -u rot -p

sudo mysql -u rot -p

Mysql - kaller DBMS-administrasjonsverktøyet

u root - koble til som bruker rot

p - angi at et passord kreves

Vi skriver inn kommandoen status; for å få serverstatusinformasjon og sørge for at MariaDB er klar til bruk:

For å avslutte DBMS-administrasjonskonsollen, skriv inn kommandoen exit;

PHP7.0

Vi har kommet til den siste komponenten i LAMP-stakken, PHP-hypertekstprosessoren. Det er et skriptspråk generelt formål brukes til å utvikle webapplikasjoner. La oss installere tolken og noen biblioteker for å jobbe med Apache:

sudo apt installer php7.0-common libapache2-mod-php7.0 php7.0-cli -y

La oss nå sjekke om PHP er riktig installert. For å gjøre dette, gå til webserverkatalogen:

INFO: Standardkatalogen for lagring av nettapplikasjoner er /var/www/html. Du kan endre katalogen eller legge til en ny ved å redigere virtuelle verter - Apache-konfigurasjonsfiler, som vil bli diskutert i neste avsnitt.

cd /var/www/html

06 sep

LAMP er et sett med programvareprodukter som er mye brukt til å lage webtjenester. Dette settet består av en operasjon Linux-systemer, en av de vanligste Apache webservere, MySQL DBMS og skriptspråk PHP. Denne artikkelen handler om prosedyren standard installasjon og innstillinger dette settet for videre bruk under nettjenester.

Debian 8 ble valgt som operativsystem, som en av de mest populære GNU/Linux-distribusjonene. Prosessen med å installere dette operativsystemet i seg selv vil ikke bli vurdert, siden det ikke er relatert til emnet for artikkelen.

Alle installasjons- og konfigurasjonsoperasjoner vil bli utført under root-brukerkontoen.

Installerer Apache

Før du starter installasjonen, må du kjøre kommandoen:

apt-get installer apache2

Etter at installasjonen er fullført, vil webserveren være klar til bruk. Du kan enkelt sjekke at den fungerer ved å åpne IP-adressen til serveren som Apache-pakken ble installert på i en nettleser. For versjon 2.4 ser stubbsiden slik ut:

Apache-konfigurasjonsfil, som ligger i /etc/apache2/apache2.conf

Katalogen /etc/apache2/sites-enabled/ inneholder konfigurasjonsfilene for de opprettede webtjenestene, og /etc/apache2/sites-available/-katalogen inneholder symbolske lenker til konfigurasjonsfilene for webtjenester som for øyeblikket er aktivert.

Du kan bruke disse konfigurasjonsfilene til å kontrollere hvordan virtuelle verter konfigureres. Apache-serveren lar deg være vert for flere virtuelle verter (tjenester) på en enkelt server. Som standard ligger alt webtjenesteinnhold i /var/www-mappen. Innholdsplassering kan endres ved å spesifisere det i konfigurasjonsfilen for virtuell vert, DocumentRoot-direktivet er ansvarlig for dette.

Vurder å lage det enkleste nettet sider med påskriften "Hello World". La oss først lage en mappe der innholdet skal lagres. For å gjøre dette, kjør kommandoen:

Mkdir /var/www/helloworld.net

I denne mappen skal vi lage den enkleste html-fil index.html med følgende innhold:

Hei Verden

Dette er en testside.



Etter at innholdet på den enkleste siden er til stede, er det nødvendig å opprette en konfigurasjonsfil for virtuell vert. For å gjøre dette, i /etc/apache2/sites-available/-mappen, lag helloworld.net.conf-filen (ikke glem conf-utvidelsen) med følgende innhold:

Servernavn helloworld.net ServerAdmin [e-postbeskyttet] ServerAlias ​​​​www.helloworld.net DocumentRoot /var/www/helloworld.net CustomLog $(APACHE_LOG_DIR)/helloworld.net.access.log kombinert ErrorLog $(APACHE_LOG_DIR)/helloworld.net.error.log

Her er parametrene:

  • Server navn - Domenenavn virtuell vert (siden vår);
  • ServerAdmin - administratorens e-postadresse;
  • ServerAlias ​​– virtuelt vertsalias (vertsdomenenavn med www vedlagt);
  • DocumentRoot - stedet hvor innholdet i selve tjenesten er lagret;
  • CustomLog - navnet på tjenestetilgangsloggfilen;
  • ErrorLog er navnet på feilloggfilen.

En detaljert beskrivelse av alle parametere og deres verdier i konfigurasjonsfilen finner du i den offisielle dokumentasjonen (http://httpd.apache.org/docs/2.4).

Det neste trinnet er å aktivere vår virtuelle vert. Dette kan gjøres enkelt ved å lage en symbolsk lenke:

cd /etc/apache2/sites-enabled ln -s ../sites-available/helloworld.net.conf helloworld.net.conf

Du kan også aktivere og deaktivere virtuelle verter ved å bruke henholdsvis a2ensite- og a2dissite-kommandoene.

Slik aktiverer du:

A2ensite helloworld.net

Å skru av:

A2dissite helloworld.net

Etter å ha aktivert verten, må du starte Apache-serveren på nytt:

/etc/init.d/apache2 starter på nytt

Nå kan du sjekke arbeidet til den opprettede siden.

For å sjekke siden, må du kanskje legge til en linje i vertsfilen på datamaskinen som sjekken gjøres fra:

xxx.xxx.xxx.xxx helloworld.net

Hvor xxx. xxx. xxx. xxx er IP-adressen til serveren med Apache installert. Hosts-filen er plassert:

  • C:\Windows\System32\drivers\etc (i Win7)
  • /etc/hosts (på Debian).

Installerer PHP

Det neste trinnet er å installere PHP-skriptspråket. Installasjonen utføres med kommandoen:

apt-get install php5

Nå må du sjekke PHP jobb. For å gjøre dette, legg til test.php-filen i innholdsmappen for nettstedet (/var/www/helloworld.net). I gitt fil du må skrive følgende:

Det skal bemerkes at det er en PHP-modul under Apache-serveren. Denne modulen lar Apache og PHP jobbe mer effektivt. Du kan sjekke om modulen er installert:

dpkg -l | grep libapache2-mod-php5

Hvis modulen ikke er til stede, må den installeres:

apt-get install libapache2-mod-php5.

Du kan sjekke om modulen er aktivert i selve Apache-serveren som følger:

ls -l /etc/apache2/mods-enabled/ | grep php5

Følgende skal vises:

lrwxrwxrwx 1 rotrot 27. september 2 10:07 php5.conf -> ../mods-available/php5.conf lrwxrwxrwx 1 rotrot 27. september 2 10:07 php5.load -> ../php5-av.loadable

Hvis modulen ikke er aktivert, kan den aktiveres analogt med virtuelle verter med kommandoen

A2enmod php5

Modulen er deaktivert med a2dismod-kommandoen.

mysql installasjon

Det siste trinnet i å forberede miljøet for arbeid med webtjenester er å installere mysql DBMS. Installasjonen utføres med kommandoen:

apt-get install mysql-server php5-mysql

Under installasjonsprosessen vil du bli bedt om å angi et passord for root-brukeren.

Etter at installasjonen er fullført, sjekk mysql jobb Du kan koble til selve DBMS.

Mysql -u root -p Skriv inn passord: Velkommen til MySQL-skjermen. Kommandoer slutter med ; eller\g. Din MySQL-tilkoblings-ID er 43 Serverversjon: 5.5.49-0+deb8u1 (Debian) … mysql>

Dette fullfører den grunnleggende forberedelsen av serveren. I tillegg kan du installere phpmyadmin-verktøyet for å administrere databasen.

apt-get install phpmyadmin

Når du installerer, må du spesifisere serveren du vil jobbe med, dette vil tillate installasjonsprogrammet å automatisk konfigurere verktøyet til å fungere med denne serveren.

Du kan også svare positivt på forslaget om å sette opp en database.

Og flere ganger skriv inn passordet for databaseadministratoren (det som ble spesifisert for root-brukeren ved installasjon av mysql).

Etterpå phpmyadmin-innstillinger. Dens arbeid kan kontrolleres ved å følge lenken http://localhost/phpmyadmin (hvis nettleseren er åpnet fra samme server) eller ved lenken http://xxx.xxx.xxx.xxx/phpmyadmin fra en annen datamaskin der xxx. xxx.xxx. xxx er IP-adressen til serveren.

For å logge inn må du bruke påloggingsinformasjonen og passordet som er spesifisert under installasjonen av mysql.

I den første delen av denne historien, en av de alternativer innstillinger GUI Debian for en praktisk og kjent (bare subjektivt synspunkt av forfatteren) bruk av en person som kom til Linux fra Windows. Og hvis jeg bare brukte vertssystemet til å sette opp en virtuell maskin med Debian, så jobbet jeg spesifikt bare i denne virtuelle maskinen, søkte etter informasjon på Internett, tok notater i Notepadqq eller gedit, lyttet til musikk gjennom Аudacious, åpnet filer gjennom LibreOffice og lignende. Dermed kan du slå deg til ro og føle og sette pris på arbeidet med operativsystem og dets miljø, som i standard Debian-distribusjonen er ganske komplett og funksjonell.

For øyeblikket er systemet vårt konfigurert på en slik måte at du i fremtiden bare kan bruke kommandolinjen med en konsolltekstredigerer, for eksempel nano, eller bruke Double Commander-filbehandlingen med en integrert Notepadqq-editor. Det er også mulig å kombinere disse to metodene, for eksempel ved å navigere i systemet og redigere konfigurasjonsfiler gjennom filbehandleren, og alle andre kommandoer gjennom konsollen. Alle metoder er likeverdige for å oppnå det endelige resultatet.

Det nåværende målet er å lage en server, som er det denne delen vil bli viet til. Serveren kan konfigureres med eller uten GUI-installasjon og bruk. I det andre tilfellet fra forrige del kan du ganske enkelt hoppe over delene om å installere og konfigurere GUI-programvaren og konfigurere den, installere grafikkpakker og vmware-verktøy.

Jeg ser ikke noe galt med å bruke et grafisk grensesnitt når jeg oppretter en server: hvis det er mer kjent, praktisk og komfortabelt for en person å lage sin første eller andre server med et grafisk miljø - hvorfor ikke? Tross alt har GUI-nettserveren min vært oppe og kjørt i et år og vil kjøre i så mange år til som det tar. Noen punkter må imidlertid huskes.

Ideelt sett, når systemet først er konfigurert, må det fungere uten vår innblanding i veldig lang tid. Serveren min i «finishing»-versjonen ble satt opp på to dager, og fungerte uten innblanding i nesten ett år. Dette betyr at det grafiske grensesnittet ble brukt i 0,05 % av tiden serveren var aktiv (datamaskinen fungerer bare en halv dag) og samtidig okkuperte ressurser: RAM, diskplass, CPU-tid. Alle disse ressursene er bedre rettet mot å sikre at selve serveren fungerer: for eksempel å øke memory_limit for PHP eller imøtekomme flere brukerdata på HDD. I tillegg, i tilfelle problemer og funksjonsfeil når du arbeider med en ekte ekstern server, er det ofte mye enklere å bruke SSH-tilgang. I denne sammenhengen er tilstedeværelsen av et grafisk grensesnitt uønsket, og det er grunnen til at den andre serveren i nettverket mitt allerede var en virtuell maskin uten et grafisk miljø, der bare Midnight Commander ble installert fra den grafiske programvaren, som jeg brukte til å navigere i filsystem og rediger innstillingsfiler gjennom editoren mcedit. Derfor er nedenfor universell instruksjon: gitte kommandoer med vekt på bruk kommandolinje, men det antas at den aller første gangen brukeren setter opp en maskin med en grafikk lokal verifisering tilgjengeligheten til de opprettede nettstedene og noen funksjoner i e-postprograminnstillingene.

I prosessen med å lage en server og legge til nye nettsteder til den, har jeg samlet litt bakgrunnsinformasjon som kan være nyttig for en nybegynner. Jeg skisserte det etter materialet om installasjon og konfigurering av serveren.

Merk
For videre lesing i strukturer som http:// 127.0.0.1 (https:// 127.0.0.1), må mellomrommet etter http:// (https://) fjernes ved inngåelse av adressefeltet nettleser. Et mellomrom ble satt inn da denne artikkelen ble publisert for å forhindre at nettstedmotoren automatisk konverterer tekst til lenker.

Installasjon av Apache2 webserver:

# apt-get install apache2 apache2-doc

Og det er alt. Noen tjue megabyte og webserveren er allerede installert. Ingen omstart eller innstillinger er nødvendig - serveren vet allerede hvordan man åpner HTML-sider. Imidlertid er et moderne nettsted på Internett ikke bare et sett med statiske filer, stiler, fonter og andre ting som for tjue år siden. Et moderne nettsted inneholder skript skrevet i PHP, og dynamisk informasjon(for eksempel tekstinnhold, kommentarer, brukerprofiler) skrives ikke til filer ved siden av PHP-filer, men i en spesiell SQL-database. For en fullverdig server er det nødvendig å gi støtte for disse teknologiene. Dessuten er det enkelt:

# apt-get install mysql-server mysql-client phpmyadmin
# apt-get install php5 php5-mysql libapache2-mod-php5

Under MySQL-installasjonsprosessen vil du bli bedt om å angi mysql-superbrukerpassordet, og du må velge apache2-serveren for å automatisk konfigurere mysql. Da jeg installerte phpmyadmin-pakken, gikk jeg med på den automatiske konfigurasjonen av pakken og skrev inn mysql-superbrukerpassordet overalt. PHP-installasjon skjer uten noen spørsmål.

Jeg brukte ikke den raskere PHP7 eller den gratis MariaDB som en alternativ åpen SQL-erstatning og bestemte meg for å bygge serveren min på den "kanoniske" LAMPEN = Linux + Apache + MySQL + PHP, ved å bruke gamle og velprøvde løsninger, i tilfelle problemer med som jeg raskt og enkelt kunne finne informasjon på Internett.

Tre kommandoer (som faktisk kan reduseres til én) og vi har en fullverdig og lokalt installert moderne server. Det er ganske enkelt!

Men å sette opp en server tar mye mer tid enn å installere komponentene. I utgangspunktet, i denne delen ønsket jeg å vise min typiske feil, falske måter å løse problemer på og resultatene de førte til, men det viste seg at i løpet av et år hadde jeg mye slettet fra hukommelsen, jeg måtte gjenopprette mye fra poster, så bare en arbeidsinstruksjon med noen få kommentarer vil presenteres nedenfor, slik at du kan oppnå et universelt arbeidsresultat.

Sette opp Apache2-nettserveren

Først må du sørge for at webserveren kjører. For å gjøre dette, åpne en nettleser og skriv http:// 127.0.0.1 (localhost). En nettside skal åpnes med en betryggende melding: "Apache2 Debian Default Page. Det "fungerer!". Serveren fungerer virkelig. Hvis du har et sett med nettstedsfiler fra år 2000, kan den plasseres i /var/www/html-katalogen og den vil sannsynligvis åpne på vår server.

Alle grunnleggende webserverinnstillinger er lagret i /etc/apache2. Hvis du åpner denne katalogen, kan du se hovedkonfigurasjonsfilen for apache2.conf og katalogene conf-available, mod-available, sites-available. Disse katalogene inneholder forhåndskonfigurerte filer med innstillinger (såkalte snippets), som du enkelt kan bruke som standard, med dine egne redigeringer, eller ta dem som en mal for å lage dine egne konfigurasjoner. For eksempel inneholder sites-available-katalogen standard vertskonfigurasjonsfilen 000-default.conf. Hvis du åpner den og studerer den, viser det seg at denne filen bare setter banen der nettstedet vårt åpnes på http:// 127.0.0.1: "DocumentRoot /var/www/html". Dessuten linjen " betyr at hvis jeg slipper bilen min inn lokalt nettverk og jeg får tilgang til den på port 80 (port for HTTP), så åpner jeg et nettsted som ligger langs stien /var/www/html. Hvordan sikre seg?

Først må du finne ut IP-adressen som ble tildelt den virtuelle maskinen etter at den ble lastet. For å se konfigurasjonen av nettverkskort, kjør:

#ifconfig

Fra konsollutgangen er det lett å se at eth0-adapteren er satt til følgende adresse:

Inet-adr:192.168.233.138

Nå, på vertsmaskinen, åpner jeg http:// 192.168.233.138 i en nettleser og forventer at en kjent side åpnes. Men ... den åpner seg ikke. Etter en stund sier nettleseren min "Tidsavbrudd for tilkoblingen". Og han skriver riktig. Faktisk, i den første delen slo jeg på brannmuren, men åpnet ikke port 80! La oss fikse dette:

#ufw tillat 80

Igjen prøver vi å åpne adressen http:// 192.168.233.138 og sørge for at den forventede siden åpnes. Den virtuelle verten i den virtuelle maskinen åpnet seg fra utsiden av all denne virtualiseringen. Vi har tatt et lite skritt i å bygge vårt eget lille virtuelle internett.

I tillegg til de -tilgjengelige katalogene, er det også -aktiverte kataloger som inneholder det som for øyeblikket er "aktivert". Hvis du ser på dem, kan du se at disse katalogene inneholder lenker til filer som ligger i de -tilgjengelige katalogene. Det er for øyeblikket bare én lenke i den nettstedaktiverte katalogen - til filen /etc/apache2/sites-available/000-default.conf. Dette er veldig praktisk - vi kan kontrollere aktivering eller deaktivering av verter med snarveier uten å redigere konfigurasjonsfilene deres. I tillegg er kilden til konfigurasjonen én fil, uavhengig av om denne konfigurasjonen for øyeblikket er aktivert eller ikke, og dette forhindrer feil når noe blir rettet i en fil, og glemt i en annen. For å deaktivere verten vår, må du slette den nødvendige snarveien, og for å aktivere den, opprette den. For ikke å slette eller lage snarveier manuelt, er det enklere og mer pålitelig å bruke spesielle verktøy.

Deaktiver virtuell vert:

# a2dissite 000-standard

Aktiver virtuell vert:

# a2ensite 000-standard

Etter hver endring må du laste inn vertskonfigurasjonene på nytt eller starte serveren på nytt:

# tjeneste apache2 last inn på nytt

# tjeneste apache2 omstart

Så nå har jeg en grunnleggende forståelse av hvordan jeg konfigurerer normale verter i apache, og neste gang vil jeg vise et eksempel på hvordan jeg konfigurerte serveren min til å fungere over HTTP- og HTTPS-protokoller.

Du må begynne med det faktum at når du deaktiverer en 000-standard virtuell vert, er det ingen nedleggelse som sådan. Det vil si at siden ble åpnet både fra innsiden og utsiden av den virtuelle maskinen - og den vil åpnes uavhengig av om konfigurasjonen er i den nettstedsaktiverte mappen. Det var uventet og jeg brukte relativt lang tid på å forstå om jeg hadde gjort eller forstått alt riktig. Jeg har ikke helt funnet ut av dette ennå, tilsynelatende skyldes dette at banen /var/www/html er satt globalt som standardkatalog for DocumentRoot. Siden jeg ikke ønsket at noe overflødig skulle være inkludert og tilgjengelig, bestemte jeg meg for å kvitte meg med selve html-katalogen, og for alle nestede /var/www ble tilgang nektet som standard.

For å sette opp en standard virtuell vert, redigerte jeg konfigurasjonsfilen:

Innholdet i konfigurasjonsfilen er som følger:

Servernavn localhost ServerAdmin [e-postbeskyttet] DocumentRoot /var/www ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log kombinert
Med denne konfigurasjonen tilbakestilte jeg standardkatalogen til /var/www, tillot serveren å følge symbolkoblinger i den katalogen, tillot serveren å følge alle direktiver som er deklarert i de funnet .htaccess-filene, og nektet tilgang til den katalogen. Logikken til disse handlingene er at jeg kan kontrollere tilgangen til denne katalogen uten å få tilgang til webserverinnstillingene i det hele tatt og uten å starte den på nytt. Nå må vi teste denne løsningen.
Overføring av filen:

# mv /var/www/html/index.html /var/www/index.html

Og fjern katalogen:

# rm /var/www/html

Start serveren på nytt for at de nye standardinnstillingene for virtuell vert skal tre i kraft:

# tjeneste apache2 omstart

Vi lager en fil:

# nano /var/www/.htaccess

Der vi skriver én linje (uten anførselstegn): "Krev alle gitt".

La oss oppsummere. Nå er det ingen /var/www/html-bane, men standardverten er rekonfigurert til /var/www-banen, hvor index.html-filen er plassert, og som standard, på webservernivå, er tilgang til denne katalogen nektet, men innhold er tillatt lokalt .htaccess-filen som ligger der.

Vi åpner http:// 127.0.0.1 i nettleseren og ser den allerede kjente Apache2 Debian-standardsiden. Det "fungerer". La oss nå sjekke ytelsen til "lokal" tilgangskontroll:
Slett .htaccess-filen:

# rm /var/www/.htaccess

Og vi oppdaterer den åpne siden i nettleseren - en side med varsel om tilgangsbegrensning (Forbidden) skal åpnes. Ja, alt fungerer, så alt er gjort riktig.

I prinsippet er disse enkle innstillingene nok for den videre problemfrie driften av webserveren. Men dette syntes jeg ikke var nok. Nå kan webserveren vår bare fungere på HTTP-protokoll. Men hva med HTTPS-protokollen? Tross alt, hvis du i fremtiden skal vise prosjekter basert på denne webserveren på Internett, er det i det minste ønskelig å jobbe med denne protokollen. Og jeg bestemte meg for å organisere støtte for HTTPS basert på opprettelsen av et selvsignert SSL-sertifikat.

Først må du få SSL-sertifikat, som vil bli installert på serveren vår. Vi har ikke noe domene, og faktisk har vi heller ikke en statisk IP-adresse. Men det spiller ingen rolle, for jeg vil generere sertifikatet selv ved å bruke verktøyene til systemet mitt.

Merk følgende! Instruksjonene nedenfor forutsetter at serveren er installert på en "ikke navngitt" maskin. Hvis det er en ekte IP- eller domenenavn, må de spesifiseres på TRE steder: ; ; - i de tilsvarende konstruksjonene, erstatt IP/Domene med en IP-adresse eller domenenavn. Teksten nedenfor bruker localhost i stedet for IP/domene.

La oss generere et SSL-sertifikat:

# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Denne kommandoen vil opprette et selvsignert sertifikat av X.509-standarden umiddelbart i 10 år, og hoppe over alternativet for å beskytte sertifikatet med en passordfrase - dette er nødvendig slik at Apache-serveren ved oppstart kan lese filen uten brukerintervensjon, siden etter å ha angitt passordet, må du angi det etter hver nedlasting eller omstart av serveren. Sammen med sertifikatet vil bli opprettet ny nøkkel RSA til 2048 biter, som vil bli brukt til å signere sertifikatet. Alternativene --keyout og --out spesifiserer banene der OpenSSL skal generere nøkkelen og sertifikatet.

Under prosessen med å lage et sertifikat vil det bli stilt spørsmål, som jeg indikerte følgende data til:

Landnavn = MW
Navn på stat eller provins = Sun System
Lokalitetsnavn = Lunar
Organisasjonsnavn = Hellium Inc.
Organisasjonsenhetsnavn = 2
Vanlig navn = lokalvert
E-postadresse = [e-postbeskyttet]

Deretter må du opprette Diffie-Hellman-nøkler for å gi PFS-støtte:

# openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Prikker og plusstegn vil kjøre i terminalen, og etter slutten av tegneserien kan du opprette filen ssl-params.conf, der SSL-parametrene for serveren vil bli definert:

# nano /etc/apache2/conf-available/ssl-params.conf

For trygt nåværende innstilling Jeg brukte koden generert i SSL-konfigurasjonsgeneratoren på mozilla.github.io. I generatoren valgte jeg Apache2-serveren, Modern-profilen og satte serveren og OpenSSL-versjonene riktig, som kan bli funnet med følgende kommandoer:

# apache2 -v
# openssl-versjon

Som et resultat fikk jeg følgende tekst:

# 14-01-2018 / for apache2 2.4.10 & openssl 1.0.1t # fra https://mozilla.github.io/server-side-tls/ssl-config-generator/ # parametrs hjelp: https://raymii .org/s/tutorials/Strong_SSL_Security_On_Apache2.html # moderne konfigurasjon, juster til dine behov SSL -ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-AESHAESHE2-GCM-ASDHE2566A-SADHE2 GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384 :ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 SSLHonorCSLCompression Off2. Kun på http://SOCSPCompression-StappingOrder #3. senere SSLUseStapling på SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off SSLStaplingCache shmcb:/var/run/ocsp0(128)
La oss nå konfigurere den virtuelle verten med SSL-støtte:

Teksten til denne filen brakte jeg til følgende skjema:

ServerAdmin [e-postbeskyttet] Servernavn localhost DocumentRoot /var/www Alternativer FølgSymLinks AllowOverride All Krev alle nektet SSLOptions+StdEnvVars SSLOptions+StdEnvVars
Det følger av det ovenstående at /var/www også er definert som DocumentRoot-katalogen, som tilgang er konfigurert på samme måte som de tidligere innstillingene. HSTS-mekanismen er aktivert, noe som letter tvungen etablering av en tilkobling over HTTPS-protokollen. Aktivert SSL-støtte som indikerer sertifikatet og nøkkelen som brukes, samt støtte for behandling av sertifikatdata i PHP- og CGI-skript. Den siste delen er ment å være kompatibel med tidlige versjoner nettleser Internet Explorer og er generelt ikke nødvendig.

La oss nå gjøre siste finpuss.

La oss åpne porten for SSL:

# ufw tillat 443

Aktiver apache-moduler for å støtte SSL og HSTS:

# a2enmod ssl
# a2enmod-overskrifter

Aktiver SSL-konfigurasjonen:

# a2enconf ssl-params

Aktiver den virtuelle verten med SSL-støtte:

# a2ensite default-ssl

Start serveren på nytt for å godta alle nye innstillinger:

# tjeneste apache2 omstart

Så et interessant øyeblikk har kommet - å sjekke ytelsen til den nye funksjonaliteten til det konfigurerte systemet.

Vi lager en fil:

# nano /var/www/.htaccess

Åpne https:// 127.0.0.1 i en nettleser. En side om et ukjent sertifikat skal åpnes, etter å ha akseptert hvilken (engangs- eller permanent tillatelse) den allerede kjente siden vil åpne med et varsel om en kjørende webserver.

Slett .htaccess-filen:

# rm /var/www/.htaccess

Og vi oppdaterer den åpne siden i nettleseren - en side med varsel om tilgangsbegrensning (Forbidden) skal åpnes. Alt fungerer riktig. Nå er sidene våre tilgjengelige både via HTTP og HTTPS.

HTTP-tilgang kan være aktivert, deaktivert eller tvunget til å omdirigere til HTTPS.

Ingenting trenger å gjøres for å aktivere HTTP-tilgang, siden serveren behandler forespørsler for portene 80 og 443 individuelt og siden vår i /var/www-mappen åpnes både via HTTP og HTTPS.

For å deaktivere HTTP-tilgang, deaktiver ganske enkelt den tilsvarende virtuelle verten og start nettserveren på nytt:

# a2dissite 000-standard
# tjeneste apache2 omstart

Nå, hvis du åpner http:// 127.0.0.1 i en nettleser, bør en side med en Not Found-varsel åpnes.

Det mest interessante tredje alternativet. I det HTTP-tilfelle forblir formelt aktivert, men databehandling vil bli tvunget til å omdirigeres via HTTPS.

For å gjøre dette, aktiver først omdirigeringsmodulen:

# a2enmod omskriving

La oss nå åpne 000-default.conf-filen:

# nano /etc/apache2/sites-available/000-default.conf

Og før den avsluttende taggen, legg til følgende tekst:

RewriteEngine On RewriteCond %(HTTPS) off RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)
La oss starte serveren på nytt:

# tjeneste apache2 omstart

La oss lage en fil:

# nano /var/www/.htaccess

Der vi skriver en linje: "Krev alle gitt".

Nå, hvis vi åpner adressen http:// 127.0.0.1 i nettleseren, blir vi automatisk omdirigert til https:// 127.0.0.1 med en advarsel om et ukjent sertifikat (hvis det ikke tidligere ble lagt til i listen over unntak i nettleseren), etter å ha akseptert, vil den allerede kjente åpne en side med et varsel om en kjørende webserver.

SQL oppsett

For primær mysql-innstillinger bare kjør følgende kommando:

# mysql_secure_installation

Etter å ha skrevet inn mysql-superbrukerpassordet, svarte jeg på spørsmålene i følgende rekkefølge:

  • nektet å endre root-passordet;
  • bekreftet fjerning av anonyme brukere fra databasen;
  • bekreftet blokkering av ekstern tilkobling for root (av sikkerhetsgrunner, la root koble til kun lokalt);
  • bekreftet sletting av testdatabaser;
  • gikk med på å laste privilegietabellene på nytt.
For å sjekke om mysql fungerer, kan du kjøre følgende kommando:

# mysql -uroot -p

Etter å ha skrevet inn mysql-superbrukerpassordet, ser vi mysql-ledeteksten, som betyr at tjenesten er oppe og går. Du kan avslutte mysql-terminalen ved å skrive inn "exit"-kommandoen.

For å sjekke om phpmyadmin fungerer, åpne http://127.0.0.1/phpmyadmin i en nettleser. Hvis en side med en invitasjon til å gå inn i phpmyadmin åpnes, er tjenesten oppe og går.

PHP oppsett

Etter å ha installert PHP, åpnet jeg innstillingsfilen:

# nano /etc/php5/apache2/php.ini

Og brakte noen parametere til følgende form:

  • minnegrense = 1024M
  • default_charset = "UTF-8"
  • upload_max_filesize = 256M
  • sendmail_path = /usr/bin/fake_sendmail.sh
Ved å bruke PHP-modulen kan du gi databufring i minnet. Caching er nyttig når det er høy belastning på serveren for data som krever mye ressurser for å generere, for eksempel resultater av databasespørringer eller behandling av "tunge" deler av nettstedsmalen. Jeg valgte memcached-modulen som cache-server.

memcache installasjon:

# apt-get install memcached php5-memcached

La oss se pågene:

# nano /etc/memcached.conf

I innstillingene økte jeg mengden minne som ble brukt til caching: -m 64 -> -m 256. Og jeg sjekket tilstedeværelsen av driftsmodus kun i lokalt område: -l 127.0.0.1.

Start hurtigbuffertjenesten og webserveren på nytt:

# tjeneste membufret omstart
# tjeneste apache2 omstart

Nå må vi sørge for at tjenesten fungerer. For å gjøre dette, lag en fil:

# nano /var/www/info.php

Og legg til følgende tekst:


Ikke glem å se etter tilstedeværelsen av .htaccess-filen i /var/www-katalogen med det tilsvarende permissive innholdet, hvis det ikke er der, lag det.

Du kan nå åpne http:// 127.0.0.1/info.php i nettleseren din, som skal åpne PHP-infosiden og sjekke om den inneholder en minnebufret seksjon. Hvis tabellen har dukket opp - PHP fungerer.

Kryss av kjører tjeneste memcached kan gjøres slik:

$ ps -aux | grep memcached

Terminalen skal returnere en streng som inneholder de memcachede innstillingene.

Opprette en e-poststubb for PHP

I PHP-innstillingene ble et shell-skript spesifisert som sendmail_path-parameteren. Funksjonen til dette skriptet er å lagre e-poster sendt via standard funksjon php mail(), på den lokale maskinen, i noen hendig mappe heller enn å sende dem et sted.

La oss lage en fil:

# nano /usr/bin/fake_semdmail.sh

Med følgende innhold:

#!/bin/sh prefiks="/var/mail/sendmail/new" numPath="/var/mail/sendmail" hvis [ ! -f $numPath/num ]; deretter ekko "0" > $numPath/num fi num=`cat $numPath/num` num=$(($num + 1)) echo $num > $numPath/num name="$prefix/letter_$num.txt " mens les linje gjør echo $line >> $navn ferdig chmod 777 $navn /bin/true
La oss gjøre denne filen kjørbar:

# chmod +x /usr/bin/fake_semdmail.sh

La oss lage de nødvendige katalogene som kan være nødvendig i tilfelle vi setter opp innsamlingen av brev via postprogrammet:

# mkdir /var/mail/sendmail /var/mail/sendmail/cur /var/mail/sendmail/new /var/mail/sendmail/tmp

Og vi tildeler rettigheter slik at serveren kan skrive filer i denne mappen:

# chmod 777 -R /var/mail/sendmail

Nå vil alle utgående e-poster gå til /var/mail/sendmail. De kan vises med et tekstredigeringsprogram, eller de kan samles inn med et e-postprogram. Den forhåndsinstallerte Debian-programvaren inkluderer e-postklient utvikling. Ved innstilling regnskap velg "Mail-kataloger i Maildir-format" som servertype og spesifiser banen til e-postkatalogen (/var/mail/sendmail), og spesifiser "Sendmail" som server.

Alle. Generelt er vi ferdige med serveren - en universell virtuell maskin har blitt mottatt, på grunnlag av hvilken du kan bygge dine egne nettverkstjenester. Jeg forlot både HTTP- og HTTPS-tilganger. Men etter å ha fått erfaring med å lage og konfigurere en server, samt legge til nettsteder (se under) til den, vil jeg anbefale å lage en ny virtuell maskin med en server uten grafisk grensesnitt da den er mer optimal med tanke på ressursforbruk.

Konfigurere SSH Access

Serveren ville ikke være en komplett server uten SSH-tilgang. Det såkalte «skallet» lar deg raskt og sikkert koble til en ekstern server ved hjelp av for eksempel et lite kittprogram – på den lokale datamaskinen får vi direkte tilgang til den eksterne serverens terminal.

Serviceinstallasjon:

# apt-get install ssh

La oss åpne porten for SSH (egentlig skal standardporten være nummer 22, men nedenfor har jeg overstyrt porten i SSH-konfigurasjonen):

#ufw tillat 106

For å organisere tilgang for brukeren vår, må vi åpne filen:

# nano /etc/ssh/sshd_config

Og legg til følgende direktiv på slutten av filen:


I tillegg, av sikkerhetshensyn, gjorde jeg følgende endringer i denne filen:
  • endret port fra 22 til en annen (liste over porter): Port 22 -> Port 106
  • deaktivert eldre protokoll: Protokoll 2,1 -> Protokoll 2
  • slått av fjerntilgang for root: PermitRootLogin ja (eller PermitRootLogin uten passord) -> PermitRootLogin nei
Deretter starter vi tjenesten på nytt:

# tjeneste sshd omstart

Nå kan jeg kjøre putty på vertsmaskinen og koble til serveren min i konsollmodus ved å skrive inn tilkoblingsadressen 192.168.233.138, port 106 og brukernavnet bruker. Ved tilkobling må du svare ja på å godta nøklene og angi brukerpassordet bruker. Hvis du trenger å utføre kommandoer som superbruker, kan du bruke den allerede kjente su-kommandoen.

Adgangsbeskyttelse

Jeg handlet ikke med å beskytte webserveren mot DDoS, og trodde først at hvis den er vert på en VPS / VDS, vil hosting gi effektiv beskyttelse, og hvis du får serveren din til å "stikke ut" på Internett, bør dette problemet behandles seriøst, og dette er en separat artikkel. Langsom HTTP DDoS-beskyttelse er relativt enkelt å gjøre i henhold til en rekke instruksjoner på internett, men den vil ikke beskytte mot et distribuert angrep fra mange forskjellige IP-adresser.

Med DDoS vil serveren vår rett og slett slutte å fungere en stund. Men etter angrepet, som ikke vil vare evig, vil serveren bli gjenopprettet. Men hvis noen klarer å få tilgang via SSH, vil kontrollen over serveren gå tapt, og dataene på den vil bli kompromittert, så det er en god idé å kontrollere tilgangen til serveren via SSH.

Det enkleste og mest banale som kan gjøres er å endre standardporten, noe vi gjorde når SSH oppsett. For omtrent fem år siden "satte jeg opp" en nyopprettet server på Internett på en nylig mottatt ekte IP-adresse og ble overrasket over at i løpet av uken av serverens eksistens, som ingen visste noe om ennå, samlet seg i systemloggene et stort nummer av registreringer av mislykkede påloggingsforsøk via SSH og FTP. Det er åpenbart at i moderne internett det er et betydelig antall robottjenester som ser etter datamaskiner med åpne porter og prøver å koble til dem, sorterer gjennom passordene i den eksisterende databasen eller bruker brute force-metoden.

Heldigvis for oss er det noe som heter fail2ban:

# apt-get install fail2ban

Umiddelbart etter installasjonen er verktøyet allerede konfigurert til å beskytte de fleste porter, og hvis mer enn seks mislykkede forsøk på å koble til vises i systemloggene i løpet av ti minutter, vil inntrengeren bli blokkert i ti minutter. Fail2ban-mekanismen er ganske enkel - såkalte jails utløses av visse triggere, som bestemmer handlingen designet for å beskytte applikasjonen.

Blokkeringsparametere kan angis individuelt:

# nano /etc/fail2ban/jail.local

I den opprettede filen må du spesifisere innstillingene som skal erstatte de eksisterende standardinnstillingene. Eksempel på filinnholdet mitt:

# Generelle innstillinger
ignoreip = 127.0.0.1
bantime=2592000
finnetid=43200
maxretry = 6
banaction=iptables-multiport
# oppsett å sende en melding til posten
destemail= [e-postbeskyttet]
avsendernavn = Fail2Ban
mta=sendmail
handling = %(action_mwl)s

# ssh-sikkerhet
enabled=true
port=106
filter=sshd
logpath=/var/log/auth.log

# oppdage mislykkede forsøk passordinntasting
enabled=true
port = http,https
filter=apache-auth

# identifisere potensielle skanninger for utnyttelser og php-sårbarheter
enabled=true
port = http,https
filter=apache-noscript
logpath = /var/log/apache*/*error.log

# oppdage Apache-overløpsforsøk
enabled=true
port = http,https
filter=apache-overflyter
logpath = /var/log/apache*/*error.log
maxretry = 2

# oppdage mislykkede forsøk på å finne hjemmekatalogen på serveren
enabled=true
port = http,https
filter=apache-nohome
logpath = /var/log/apache*/*error.log
maxretry = 2

Innstillingen ovenfor lar deg ikke kontrollere lokal tilgang, og forbud mot angriperens IP-adresse ved å bruke iptables i 30 dager etter seks ugyldige påloggingsforsøk innen 12 timer. Ikke bare tilgang via port for SSH er kontrollert, men også mistenkelig aktivitet, rettet mot å destabilisere driften av webserveren.

Webserverreferanse

Start, stopp og start serveren på nytt:

# tjeneste apache2 starter
# tjeneste apache2 stopp
# tjeneste apache2 omstart

# tjeneste apache2 last inn på nytt

Aktivering og deaktivering av testverten:

# a2ensite test
# a2dissite test

Aktivere og deaktivere testkonfigurasjonen:

# a2enconf-test
# a2disconf-test

Sjekk filsyntaks (skal returnere: "Syntaks OK"):

# apache2ctl configtest

Mulighet for å legge til et nettsted med HTTP- eller HTTPS-tilgang ved å bruke en eksisterende virtuell vert

La oss si at vi må legge til et nytt nettsted på serveren vår, vert i site.com-katalogen, som ligger på /home/user/www. Dette kan være nyttig fordi brukeren ikke trenger å forlate hjemmekatalogen for å få tilgang til nettstedet.

# chmod 755 /hjem/bruker

Opprett en katalog for nettstedet:

$ mkdir /home/user/www /home/user/www/site.com

For å legge til HTTP-tilgang, åpne filen:

# nano /etc/apache2/sites-available/000-default.conf

Eller, for å legge til HTTPS-tilgang, åpne filen:

# nano /etc/apache2/sites-available/default-ssl.conf

Og legg til åpen fil følgende innhold før /VirtualHost-avslutningskoden:


Starte webserveren på nytt:

# tjeneste apache2 omstart

Vi sjekker tilgjengeligheten til nettstedet på http:// 127.0.0.1/site.com eller https:// 127.0.0.1/site.com (kontrollmetode - se nedenfor). Det skal bemerkes at nettstedet vil åpne uavhengig av tilstedeværelsen av .htaccess-filen, siden direktivet er satt for katalogen med nettstedet: "Krev alle gitt".

Mulighet for å legge til et nettsted med tilgang via HTTP eller HTTPS ved å bruke en ny virtuell vert og sette opp tilgang til nettstedet gjennom domenenavnet, ikke IP

Betingelsene for oppgaven er de samme som ovenfor: la oss si at vi må legge til et nytt nettsted på serveren vår, som ligger i site.com-katalogen, som ligger på /home/user/www. Men nå vil jeg også få tilgang til siden ved å skrive inn bare domenenavnet i nettleserlinjen.

Vi setter rettighetene for brukerkatalogen (bare i tilfelle):

# chmod 755 /hjem/bruker

Opprett en katalog for nettstedet:

$ mkdir /home/user/www/site.com

# ln -s /home/user/www/site.com /var/www/site.com

For å legge til HTTP-tilgang, opprett en fil:

# nano /etc/apache2/sites-available/site.com.conf

Alternativer FølgSymLinks AllowOverride All Krev alle gitt# Omdiriger HTTP->HTTPS #RewriteEngine On #RewriteCond %(HTTPS) off #RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI) ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/ .log kombinert
Eller, for å legge til HTTPS-tilgang, opprette en fil:

# nano /etc/apache2/sites-available/site.com-ssl.conf

Og legg til følgende innhold:

ServerName site.com ServerAlias ​​​​www.site.com ServerAdmin [e-postbeskyttet] DocumentRoot /var/www/site.com Alternativer FølgSymLinks AllowOverride All Krev alle gitt# HSTS (mod_headers er påkrevd) (15768000 sekunder = 6 måneder) Header alltid satt Strict-Transport-Security "max-age=15768000" ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.ngine kombinert på SSLE.ngine SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key SSLOptions+StdEnvVars SSLOptions+StdEnvVars BrowserMatch "MSIE" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE " ssl-unclean-shutdown
I /etc/hosts legger du til linjen "127.0.0.1 site.com":

# echo >> /etc/hosts 127.0.0.1 site.com

Aktiver HTTP-vert:

#a2ensite.com.conf

Eller aktiver HTTPS-vert:

#a2ensitesite.com-ssl.conf

Starte webserveren på nytt:

# tjeneste apache2 omstart

Vi sjekker tilgjengeligheten til nettstedet på http:// site.com eller https:// site.com (kontrollmetode - se nedenfor). Det skal bemerkes at nettstedet vil åpne uavhengig av tilstedeværelsen av .htaccess-filen, siden direktivet er satt for katalogen med nettstedet: "Krev alle gitt".

Alle handlinger utføres inne i den virtuelle gjestemaskinen. Det ville være interessant å "åpne" nettstedet i nettleseren til vertssystemet. Det er ikke vanskelig. Vi vet domenenavnet og IP-adressen til gjestemaskinen. Hvis vertssystemet er Windows, må du åpne filen c:\Windows\System32\drivers\etc\hosts og legge til følgende linje helt til slutt:


Etter denne endringen må datamaskinen eller vertssystemet startes på nytt. Nå, når du åpner site.com-siden i nettleseren, vil anropet til det bli omdirigert til vår virtuelle maskin. Faktisk har vi laget den enkleste rutingen i vår personlig internett på vertsoperativsystemnivå.

I tilfelle du trenger tilgang til virtuell vert bare via HTTPS, men du vil ikke miste tilkoblinger via HTTP-protokollen, kan du sette opp en omdirigering:

Opprett filen /etc/apache2/sites-available/site.com.conf i henhold til instruksjonene ovenfor, hvis den ikke er opprettet
- i filen /etc/apache2/sites-available/site.com.conf, fjern kommentarene til de tre linjene RewriteEngine/RewriteCond/RewriteRule
- aktiver host site.com.conf hvis den ikke er aktivert
- restart server: # tjeneste apache2 restart

Kontrollerer funksjonaliteten til nettstedet som er lagt til

Den enkleste måten å sjekke tilgjengeligheten til et nettsted er å plassere en index.html-fil med noe innhold i rotkatalogen.

Opprett index.html-fil:

$ nano /home/user/www/site.com/index.html

Og legg til følgende innhold:

TEST OK

TEST OK




Åpne http:// 127.0.0.1/site.com (https:// 127.0.0.1/site.com) eller http:// site.com (https:// site.com) i en nettleser ) - en side som inneholder teksten "TEST OK" skal åpnes.

MySQL referansemateriale

Opprett bruker user123 med passord pass123 og database db123 via konsollen.

Logg på mysql ved å skrive inn mysql superbrukerpassord når du blir bedt om det:

# mysql -u rot -p

Og lag en database (du trenger ikke å skrive "mysql>"-prefikset, semikolonet på slutten er nødvendig):

mysql> CREATE DATABASE `db123`;

Opprett bruker bruker123 med passord pass123:

mysql> LAG BRUKER "user123"@"localhost" IDENTIFISERT AV "pass123";

Gi privilegier til brukeren på databasen:

mysql> GIR ALLE PRIVILEGIER PÅ `db123`.* TIL "user123"@"localhost";

Oppdater rettighetstabell:

mysql> FLUSH PRIVILEGES;

Avslutt mysql:

mysql> exit

For å sjekke, åpne adressen http:// 127.0.0.1/phpmyadmin og logg på med tilgangsdetaljene user123/pass123. Tilgang til db123-databasen skal åpnes.

Endre mysql root-passord fra pass123 til pass456:

# mysqladmin -uroot -ppass123 passord pass456

Endre bruker123 passord fra pass123 til pass456:

# mysqladmin -uuser123 -ppass123 passord pass456

Slett bruker bruker123:

mysql> DROPPE BRUKER "user123"@"localhost";

Sletter tabell db123:

mysql> DROP DATABASE `db123`;

Fail2ban referansemateriale

Omstart av tjenesten:

# tjeneste fail2ban omstart

Sjekker kjøreregler:

# fail2ban-klient status

Detaljert statistikk om sshd-regelen:

# fail2ban-klient status ssh

Opphever utestengelsen:

# fail2ban-client set ssh unbanip Banned_IP