Den här artikeln riktar sig till webbutvecklare som vill ha en installation av Apache-webbservern som en del av sin utvecklingsmiljö på sin Mac.

Om du är en PHP-utvecklare är den här artikeln en förutsättning för nästa artikel som kommer att hjälpa dig att installera PHP med hjälp av Homebrew och PECL. En länk till den artikeln finns längst ner på den här sidan.

Som utvecklare brukade jag förlita mig på den version av Apache som var förinstallerad med operativsystemet på min MacBook Pro. Med de ständigt förändrade säkerhetsreglerna i macOS har jag bestämt mig för att ändra hela mitt tillvägagångssätt och istället inaktivera den distribuerade versionen av Apache och använda en installation helt och hållet från Homebrew. Detta nya tillvägagångssätt ger mer flexibilitet för versionering och kommer att fortsätta att fungera i alla macOS-versioner.

Dessa instruktioner fungerar på samma sätt för macOS 10.13 High Sierra och 10.14 Mojave. Jag har inte testat på tidigare versioner av macOS, men det bör fungera på samma sätt. Du behöver inte heller börja med en ny OS-installation för att använda den här artikeln, men jag har sett några konstiga saker hända när du uppgraderar till Mojave jämfört med en ny installation (t.ex. att mod_deflate.so-modultilläggsfilen helt saknas efter uppgraderingen). Jag rekommenderar en nyinstallation, men om du trotsar en uppgradering i stället, var beredd på att jaga efter en del filer och sökvägar.

Vi sätter igång!

Hämta de senaste OS-uppdateringarna

Om du precis har gjort en ny OS-installation behöver du förmodligen inte göra det här.

Installera Xcode

Om du inte är intresserad av att installera hela Xcode-appen går det bra, kommandot Homebrew install kommer att installera de grundläggande Xcode Command Line Tools som behövs. Jag rekommenderar dock den fullständiga installationen, särskilt om du kör Mojave. För att göra detta kan du köra följande kommando från terminalen:

xcode-select --install

Install Homebrew

Följande kommando kommer att installera Homebrew.

(Observera att följande kommando är en enda rad som har lindats in på grund av begränsning av sidbredden i Medium. Se till att kopiera hela raden).

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Skapa kataloger för Apaches loggfiler

Apache är förkonfigurerad med sina egna loggkataloger, men vi ska skapa vår egen mapp ”/usr/local/log/” så att de är lätta att hitta när vi behöver. Om du går vidare till nästa artikel för att installera PHP kommer vi att använda samma loggfilplats för PHP-loggarna också och ha alla loggar på ett och samma ställe.

Följ dessa steg för att skapa lämpliga kataloger och ställa in deras behörigheter. Strunta i eventuella ”finns redan”-meddelanden som du kan få.

$ sudo mkdir /usr/local/log$ sudo mkdir /usr/local/log/httpd$ sudo chgrp -R staff /usr/local/log/httpd$ sudo chmod -R ug+w /usr/local/log/httpd/

Installera och konfigurera Apache

macOS 10.13 High Sierra och 10.14 Mojave levereras med Apache förinstallerad. Men istället för att använda den levererade versionen ska vi installera Apache via Homebrew och sedan konfigurera den så att den körs på port 80.

Om du redan har den förinstallerade Apache igång måste den först stängas av och alla skript för automatisk laddning tas bort. Det skadar inte att köra båda följande kommandon, även vid en nyinstallation.

(Observera att det andra kommandot är en enda rad som är omslagen på grund av begränsad sidbredd i Medium. Se till att kopiera hela raden).

$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

Installera nu den nya versionen av Apache som tillhandahålls av Homebrew.

$ brew install httpd

När det är klart, kör följande kommando för att starta Apache-tjänsten och se till att den startas om automatiskt vid inloggning.

$ brew services start httpd

Du har nu installerat Homebrews version av Apache och konfigurerat den så att den startar automatiskt vid omstart. Den borde redan vara igång, så du borde kunna peka din webbläsare på http://localhost:8080 och se en enkel rubrik som säger: ”Det fungerar!”.

Notera att vi för närvarande pekar på port 8080. Vi kommer att ändra det i följande steg. Nu när vi har en fungerande webbserver vill vi göra några konfigurationsändringar så att den fungerar mer enligt våra önskemål … eller egentligen bara enligt mina önskemål ;-).

Låt oss öppna konfigurationsfilen för Apache:

$ open -e /usr/local/etc/httpd/httpd.conf

Change the Listening Port

Rulla ner och leta upp raden där det står ”Listen 8080” och ändra den till;

Listen 80

Enable Useful Apache Modules

Nästan kan du aktivera följande två praktiska Apache-moduler. Du kan söka efter följande två rader och avkommentera dem genom att ta bort den inledande hashtaggen ”#”.

Hänvisning: deflate-linjen finns i mitten av avsnittet LoadModule och rewrite-linjen finns längst ner i avsnittet LoadModule.

LoadModule deflate_module lib/httpd/modules/mod_deflate.so
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

Ändra inställningar för Apache-användare och -grupper

Som standard körs Apache med användaren _www och gruppen _www. Om en stund kommer vi att ställa in vår standarddokumentkatalog till en ”Sites”-katalog i vår hemmapp, och dessa användar- och gruppinställningar kommer att ge dig behörighetsproblem när du försöker komma åt filer i din hemmapp.

Skrolla ungefär en tredjedel nedåt i din httpd.conf-fil så hittar du två rader som ställer in användaren och gruppen som Apache ska köras under. Ändra dessa så att de stämmer överens med ditt användarkonto. Ersätt your_username med ditt MacBook-användarnamn och använd gruppnamnet staff.

User your_username
Group staff

Set Apache Server Admin and Server Name

Hitta raden ”ServerAdmin” och aktivera den genom att ta bort den inledande hashtaggen ”#” (om nödvändigt) och ändra sedan e-postadressen till din egen:

ServerAdmin [email protected]

Aktivera Apache-servernamnet i konfigurationen genom att ta bort den ledande hashtaggen ”#” och ändra den till localhost:

ServerName localhost

Ändra dokumentroten, katalogen och överordningarna

Nästan ska vi ändra dokumentroten för Apache. Detta är den mapp där Apache letar efter att servera filer från. Som standard är dokumentroten konfigurerad som /usr/local/var/www. Eftersom vi skapar en utvecklingsmiljö och vill undvika så många problem med mappbehörighet som möjligt, ändrar vi dokumentroten till en mapp i vår hemkatalog (som vi skapar inom kort).

Fortsätt att bläddra nedåt och hitta raden DocumentRoot. Ändra den till följande:

DocumentRoot "/Users/your_username/Sites"

Nästan måste du också ändra taggreferensen precis under DocumentRoot-linjen. Denna ska också ändras så att den pekar på din nya dokumentrot:

<Directory "/Users/your_username/Sites">;

I samma block hittar du en AllowOverride-inställning. Denna bör ändras från None till att tillåta ”All” overrides:

AllowOverride All

Set Apache Error Log Location

Slutligen kommer vi att ställa in Apache error log location till den mapp vi skapade tidigare. Scrolla ner lite längre och hitta raden för ”ErrorLog” och ändra den till följande:

Spara och avsluta textredigeraren.

Skapa en Sites-mapp

Använd följande två rader för att skapa en ”Sites”-mapp och lägga till ett index.html-filen för att komma igång:

(Observera att det andra kommandot är en enda rad som har omslagits på grund av begränsningen av sidbredden i Medium. Se till att kopiera hela raden).

$ mkdir ~/Sites
$ echo "<h1>It Works in my Sites Folder</h1>;" > ~/Sites/index.html

Starta om Apache

Nu startar vi om för att se till att våra konfigurationsinställningar är korrekta:

$ sudo apachectl -k restart

Prova att surfa till ditt localhost på dess nya plats: http://localhost

Om detta fungerar och du ser meddelandet ”It Works in my Sites Folder” så gratulerar vi! Du har fått en ny webbserverinstans som körs på port 80.

Om du får ett fel kan en trolig orsak vara de dubbla citattecken som används runt katalogposter i filen httpd.conf. Ibland konverterar textredigerare dessa till citationstecken av typen latinska tecken. Dessa citationstecken är valfria och kan tas bort. Försök att ta bort de dubbla citattecken och starta om Apache igen.

admin

Lämna ett svar

Din e-postadress kommer inte publiceras.

lg