Denne artikel er rettet mod webudviklere, der ønsker at installere en Apache-webserver som en del af deres udviklingsmiljø på deres Mac.

Hvis du er PHP-udvikler, så er denne artikel en forudsætning for den næste artikel, som vil guide dig gennem installation af PHP ved hjælp af Homebrew og PECL. Du finder et link til denne artikel nederst på denne side.

Som udvikler plejede jeg at stole på den version af Apache, der var forudindlæst med OS’et på min MacBook Pro. Med de stadigt skiftende sikkerhedsregler i macOS har jeg besluttet at ændre hele min fremgangsmåde og i stedet deaktivere den distribuerede version af Apache og bruge en opsætning udelukkende fra Homebrew. Denne nye fremgangsmåde giver mere fleksibilitet i forbindelse med versionering og vil fortsat fungere på tværs af alle macOS-versioner.

Disse instruktioner fungerer på samme måde for macOS 10.13 High Sierra og 10.14 Mojave. Jeg har ikke testet på tidligere versioner af macOS, men det skulle fungere på samme måde. Du behøver heller ikke at starte med en frisk OS-installation for at bruge denne artikel, men jeg har set nogle mærkelige ting ske, når du opgraderer til Mojave i forhold til en frisk installation (f.eks. mangler moduludvidelsesfilen mod_deflate.so helt efter opgraderingen). Jeg anbefaler en frisk installation, men hvis du i stedet trodser en opgradering, skal du være forberedt på at jagte nogle filer og stier.

Lad os komme i gang!

Hent de nyeste OS-opdateringer

Hvis du lige har foretaget en frisk OS-installation, behøver du sandsynligvis ikke at gøre dette.

Installer Xcode

Hvis du ikke er interesseret i at installere hele Xcode-appen, er det fint nok, Homebrew-installationskommandoen installerer de grundlæggende Xcode-kommandolinjeværktøjer, som den har brug for. Jeg anbefaler dog den fulde installation, især hvis du kører Mojave. For at gøre dette kan du køre følgende kommando fra terminal:

xcode-select --install

Install Homebrew

Følgende kommando vil installere Homebrew.

(Bemærk venligst, at følgende kommando er en enkelt linje, der er pakket ind på grund af sidebreddebegrænsninger i Medium. Sørg for at kopiere hele linjen).

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

Opret Apache-logfilmapper

Apache er forudkonfigureret med sine egne logmapper, men vi vil oprette vores egen “/usr/local/log/”-mappe, så de er nemme at finde, når vi har brug for det. Hvis du går videre til den næste artikel for at installere PHP, vil vi også bruge denne samme logfilplacering til PHP-logfilerne, så vi har alle logfiler samlet ét sted.

Følg disse trin for at oprette de relevante mapper og indstille deres tilladelser. Se bort fra eventuelle “eksisterer allerede”-meddelelser, du måtte 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/

Installer og konfigurer Apache

macOS 10.13 High Sierra og 10.14 Mojave leveres med Apache præinstalleret. Men i stedet for at bruge den medfølgende version vil vi installere Apache via Homebrew og derefter konfigurere den til at køre på port 80.

Hvis du allerede har den præinstallerede Apache kørende, skal den først lukkes ned, og eventuelle scripts til automatisk indlæsning skal fjernes. Det skader ikke at køre begge de følgende kommandoer, selv på en frisk installation.

(Bemærk, at den anden kommando er en enkelt linje, der er pakket ind på grund af begrænsninger i sidebredden i Medium. Sørg for at kopiere hele linjen).

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

Installer nu den nye version af Apache, der leveres af Homebrew.

$ brew install httpd

Når det er gjort, skal du køre følgende kommando for at starte Apache-tjenesten og sørge for, at den genstarter automatisk ved login.

$ brew services start httpd

Du har nu installeret Homebrew’s version af Apache og konfigureret den til automatisk at starte ved genstart. Den burde allerede køre, så du burde kunne pege din browser på http://localhost:8080 og se en simpel header, der siger: “Det virker!”.

Bemærk, at vi i øjeblikket er peget på port 8080. Det vil vi ændre i de følgende trin. Nu hvor vi har en fungerende webserver, vil vi foretage nogle konfigurationsændringer, så den fungerer mere efter vores smag … eller egentlig bare efter min smag ;-).

Lad os åbne Apachekonfigurationsfilen:

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

Ændre Listening Port

Rul ned og find linjen, hvor der står “Listen 8080” og ændr den til;

Listen 80

Aktiver nyttige Apache-moduler

Næst kan du aktivere de følgende to praktiske Apache-moduler. Du kan søge efter følgende to linjer og udkommentere dem ved at fjerne det forreste hashtag “#”.

Hinvis: deflate-linjen er midt i afsnittet LoadModule, og rewrite-linjen er helt nede i bunden af afsnittet LoadModule.

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

Ændre Apache-bruger- og gruppeindstillinger

Som standard kører Apache som brugeren _www og gruppen _www. Om lidt vil vi indstille vores standarddokumentmappe til en “Sites”-mappe i vores hjemmemappe, og disse bruger- og gruppeindstillinger vil give dig problemer med tilladelser, når du forsøger at få adgang til filer i din hjemmemappe.

Rul ca. en tredjedel af vejen ned i din httpd.conf-fil, og du finder to linjer, der indstiller den bruger og gruppe, som Apache skal køre under. Ændr disse, så de passer til din brugerkonto. Udskift dit_brugernavn med dit MacBook-brugernavn, og brug et gruppenavn som staff.

User your_username
Group staff

Set Apache Server Admin and Server Name

Find linjen “ServerAdmin” og aktiver den ved at fjerne det indledende hashtag “#” (om nødvendigt) og derefter ændre e-mailen til din egen:

ServerAdmin [email protected]

Aktiver Apache-servernavnet i konfigurationen ved at fjerne det ledende hashtag “#” og ændre det til localhost:

ServerName localhost

Ændre dokumentrod, mappe og tilsidesættelser

Næste gang skal vi ændre dokumentroden for Apache. Dette er den mappe, hvor Apache søger at servere filer fra. Som standard er dokumentroden konfigureret som /usr/local/var/www. Da vi opretter et udviklingsmiljø, og vi ønsker at undgå så mange problemer med mappetilladelser som muligt, ændrer vi dokumentroden til en mappe i vores Home-mappe (som vi opretter om lidt).

Fortsæt med at rulle ned og find linjen DocumentRoot. Ændr den til at lyde:

DocumentRoot "/Users/your_username/Sites"

Næst skal du også ændre tagreferencen lige under DocumentRoot-linjen. Denne skal også ændres til at pege på din nye dokumentrod:

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

I den samme blok finder du en AllowOverride-indstilling. Denne skal ændres fra None til at tillade “All” overrides:

AllowOverride All

Set Apache Error Log Location

Slutteligt skal vi indstille Apaches fejllogplacering til den mappe, vi oprettede tidligere. Rul lidt længere ned, og find linjen for “ErrorLog”, og ændr den, så den lyder som følger:

Save og afslut teksteditoren.

Skab en Sites-mappe

Brug de følgende to linjer til at oprette en “Sites”-mappe og tilføje et indeks.html-fil for at komme i gang:

(Bemærk, at den anden kommando er en enkelt linje, der er pakket ind på grund af begrænsningerne i sidebredden i Medium. Sørg for at kopiere hele linjen).

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

Genstart Apache

Nu genstarter vi for at sikre os, at vores konfigurationsindstillinger er korrekte:

$ sudo apachectl -k restart

Forsøg at browse til din localhost på dens nye placering: http://localhost

Hvis dette virker, og du ser meddelelsen: “Det virker i min mappe med websteder”, så tillykke! Du har fået en ny webserverinstans, der kører på port 80.

Hvis du får en fejl, kan en sandsynlig årsag være de dobbelte anførselstegn, der bruges omkring mappeposter i din httpd.conf-fil. Nogle gange konverterer tekstredigeringsprogrammer disse til anførselstegn af typen latinske tegn. Disse anførselstegn er valgfrie og kan fjernes. Prøv at fjerne de dobbelte anførselstegn og genstarte Apache igen.

admin

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

lg