Development

Automatizoni Mjedisin e Zhvillimit Lokal me PowerShell për WordPress dhe Laravel

Zhvillimi lokal ndonjëherë mund të bëhet i bezdisshëm kur duhet të përsërisni të njëjtat hapa cdo herë, veçanërisht kur punoni me platforma si WordPress ose Laravel në Windows. Fatmirësisht, ju mund të automatizoni një pjesë të madhe të procesit të konfigurimit duke përdorur PowerShell, duke përmirësuar rrjedhën e punës dhe duke bërë që zhvillimi lokal të jetë më i shpejtë dhe më pak monoton. Në këtë postim, do t’ju tregoj sesi kam automatizuar aspektet kryesore të mjedisit tim të zhvillimit lokal duke përdorur një skript PowerShell. Skripti trajton gjithçka, nga përditësimi i hyrjeve të hosts deri te konfigurimi i virtual hosts, krijimi i databazave dhe madje vendosja e SSL për domenët tuaj lokalë.

Skripti PowerShell është i disponueshëm për shkarkim këtu.

Duhet të Keni të Instaluar

Para se të ekzekutoni skriptin PowerShell, sigurohuni që keni instaluar dhe konfiguruar programet e mëposhtme:

  1. XAMPP: XAMPP ofron një mjedis të plotë lokal serveri (Apache, MySQL, PHP) për Windows. Shkarkojeni nga apachefriends.org. Pas instalimit, kontrolloni që shërbimet Apache dhe MySQL të jenë në funksion. Për një udhëzues më të detajuar mbi vendosjen e WordPress me XAMPP, shikoni këtë udhëzues hap-pas-hapi.
  2. mkcert: Një mjet për të krijuar certifikata SSL të besueshme lokalisht. Ju duhet për të gjeneruar certifikata për domenët tuaj lokalë. Instaloni mkcert nga GitHub, pastaj ekzekutoni mkcert -install për të vendosur root CA.
  3. PowerShell: Skripti është projektuar për t’u ekzekutuar në PowerShell, kështu që sigurohuni që ta hapni PowerShell si Administrator, duke i lejuar skriptit të modifikojë skedarët e nevojshëm të sistemit.

Pse të Automatizoni Konfigurimin Lokal?

Konfigurimi manual i një mjedisi lokal kërkon hapa të përsëritura si krijimi i direktorive, konfigurimi i virtual hosts dhe vendosja e certifikatave SSL. Automatizimi i këtyre proceseve mund të kursejë kohë, të parandalojë gabimet dhe t’ju lejojë të fokusoheni në atë që ka rëndësi – zhvillimin e projektit tuaj. Ja çfarë bën ky skript PowerShell:

  • Shton një hyrje të re host për domenin me të cilin po punoni.
  • Vendos strukturën e direktorive për projektin tuaj.
  • Përditëson konfigurimin e virtual hosts të Apache.
  • Krijon një databazë të re MySQL.
  • Gjeneron certifikata SSL për domenin tuaj lokal.

Automatizimi i këtyre hapave siguron që konfigurimi i mjedisit tuaj të jetë i qëndrueshëm dhe efikas, pavarësisht nëse po punoni në projekte të shumta WordPress ose Laravel.

Kuptimi i Rrjedhës së Punës dhe Skriptit PowerShell

Le të zbërthejmë skriptin PowerShell në blloqe për të shpjeguar funksionalitetin e tij:

Verifikimi i Input-it të Përdoruesit

Hapi i parë është sigurimi që skripti merr input-in e duhur, si emrin e domenit dhe llojin e mjedisit (WordPress ose Laravel).

function Validate-Input {
    param (
        [string]$domain,
        [string]$env
    )

    if ([string]::IsNullOrEmpty($domain)) {
        Write-Host "Emri i domenit nuk mund të jetë bosh. Ju lutem shkruani një emër domeni të vlefshëm." -ForegroundColor Red
        exit 1
    }

    if ($env -ne "w" -and $env -ne "l") {
        Write-Host "Lloji i mjedisit është i pavlefshëm. Ju lutem shkruani 'w' për WordPress ose 'l' për Laravel." -ForegroundColor Red
        exit 1
    }
}

Ky funksion siguron që të dyja, emri i domenit dhe lloji i mjedisit, të jepen saktë, duke parandaluar ekzekutimin e skriptit me të dhëna të pavlefshme.

Krijimi i Kopjeve Rezervë të Skedarëve të Konfigurimit

Para se të modifikohen skedarët e sistemit, është e rëndësishme t’i bëni kopje rezervë. Kjo siguron që të mund të riktheni lehtësisht konfigurimet e mëparshme nëse është e nevojshme.

function Backup-File {
    param (
        [string]$filePath
    )

    if (Test-Path $filePath) {
        Copy-Item $filePath "$filePath.bak" -Force
        Write-Host "Kopja rezervë e $filePath u krijua." -ForegroundColor Green
    } else {
        Write-Host "Skedari $filePath nuk ekziston." -ForegroundColor DarkYellow
    }
}

Duke bërë kopje rezervë të skedarëve hosts dhe httpd-vhosts.conf, ky hap ndihmon në mbrojtjen kundër keqkonfigurimeve aksidentale.

Shtimi i Hyrjes në Hosts

Skripti shton domenin lokal në skedarin hosts që shfletuesi juaj të mund ta zgjidhë domenin saktë.

function Add-Hosts-Entry {
    param (
        [string]$desiredIP = "127.0.0.1",
        [string]$hostname
    )

    $hostsFilePath = "$($Env:WinDir)\system32\Drivers\etc\hosts"
    $hostsFile = Get-Content $hostsFilePath

    Write-Host "Duke shtuar $desiredIP për $hostname në skedarin hosts" -ForegroundColor Gray

    $escapedHostname = [Regex]::Escape($hostname)
    $patternToMatch = ".*$desiredIP\s+$escapedHostname.*"
    If (($hostsFile) -match $patternToMatch) {
        Write-Host "$hostname ekziston tashmë në skedarin hosts." -ForegroundColor DarkYellow
    } Else {
        Write-Host "$hostname - duke shtuar në skedarin hosts..." -ForegroundColor Yellow
        Add-Content -Encoding UTF8 $hostsFilePath ("$desiredIP".PadRight(20, " ") + "$hostname")
        Write-Host "$desiredIP $hostname u shtua në skedarin hosts."
    }
}

Kjo pjesë siguron që skedari hosts përditësohet saktë dhe parandalon hyrjet e dyfishta.

Redaktimi i Konfigurimit të Virtual Hosts

Skripti konfiguron skedarin virtual hosts të Apache, duke e bërë projektin tuaj të aksesueshëm nëpërmjet një domeni të personalizuar në shfletues.

function Edit-Vhosts-File {
    param (
        [string]$vhostsFile,
        [string]$domainDir,
        [string]$domain,
        [string]$env,
        [string]$certDir
    )

    $content = "@"...

    <VirtualHost $domain.test:80>
    DocumentRoot "$domainDir"
    <Directory "$domainDir">
        Order allow,deny
        Allow from all
        AllowOverride All
    </Directory>
    ServerName $domain.test
    </VirtualHost>
    <VirtualHost $domain.test:443>
    DocumentRoot "$domainDir"
    <Directory "$domainDir">
        Order allow,deny
        Allow from all
        AllowOverride All
    </Directory>
    ServerName $domain.test
    SSLEngine On
    SSLCertificateFile "$certDir$domain.test.pem"
    SSLCertificateKeyFile "$certDir$domain.test-key.pem"
    </VirtualHost>
    "@

    if ($env -eq "l") {
        $content = $content -replace 'DocumentRoot "' + $domainDir + '"', 'DocumentRoot "' + $domainDir + '\public"'
        $content = $content -replace '<Directory "' + $domainDir + '">', '<Directory "' + $domainDir + '\public">'
    }

    $vhostsFileContent = Get-Content $vhostsFile -Raw
    if ($vhostsFileContent -contains "ServerName $domain.test") {
        Write-Host "$domain ekziston tashmë në httpd-vhosts.conf." -ForegroundColor DarkYellow
        return
    }

    Add-Content -Path $vhostsFile -Value $content
    Write-Host "$domain u shtua në httpd-vhosts.conf." -ForegroundColor Green
}

Kjo pjesë krijon hyrjet e nevojshme për virtual host, duke rregulluar root dokumentin për projektet Laravel sipas nevojës.

Krijimi i Direktorisë së Projektit

Skripti vendos strukturën e direktorive të projektit:

function Create-Directory {
    param (
        [string]$path
    )

    if (-Not (Test-Path $path)) {
        New-Item -ItemType Directory -Path $path
        Write-Host "Direktoria $path u krijua." -ForegroundColor Green
    } else {
        Write-Host "Direktoria $path ekziston tashmë." -ForegroundColor DarkYellow
    }
}

Ky funksion siguron që struktura e direktorive të projektit është e krijuar dhe në rregull, duke e bërë më të lehtë organizimin e skedarëve tuaj.

Krijimi i Databazës

Skripti automatizon krijimin e një databaze MySQL, duke ju kursyer nga bërja e kësaj manualisht në phpMyAdmin.

function Create-Database {
    param (
        [string]$databaseName
    )

    $dbCheck = mysql -u root -e "SHOW DATABASES LIKE '$databaseName';" 2>&1
    if ($dbCheck -match $databaseName) {
        Write-Host "Databaza $databaseName ekziston tashmë." -ForegroundColor DarkYellow
        return
    }

    Write-Host "Duke krijuar databazën $databaseName..." -ForegroundColor Green
    Invoke-Expression "mysql -u root -e \"CREATE DATABASE $databaseName;\""
}

Gjenerimi i Certifikatave SSL

Gjenerimi i certifikatave SSL për zhvillimin lokal është i rëndësishëm kur punoni me https://:

function Generate-SSL-Certificates {
    param (
        [string]$certDir,
        [string]$domain
    )

    if (Test-Path "$certDir$domain.test.pem") {
        Write-Host "Certifikatat SSL për $domain ekzistojnë tashmë." -ForegroundColor DarkYellow
        return
    }

    Write-Host "Duke gjeneruar certifikata SSL..." -ForegroundColor Green
    Set-Location $certDir
    Invoke-Expression "mkcert $domain.test"
}

Kjo pjesë automatizon krijimin e certifikatave SSL për domenët tuaj lokalë.

Rinisja e Apache

Së fundi, skripti rinis Apache për të aplikuar ndryshimet.

function Restart-Apache {
    Write-Host "Duke rinisur Apache..."
    Invoke-Expression "C:\xampp\xampp_stop.exe"
    Start-Sleep -Seconds 5
    Invoke-Expression "C:\xampp\xampp_start.exe"
}

Ekzekutimi i Skriptit

Për të ekzekutuar skriptin:

  1. Hapni PowerShell si Administrator: Skripti modifikon skedarët e sistemit, kështu që ka nevojë për leje si Administrator.
  2. Ekzekutoni Skriptin: Shkoni te direktoria e skriptit dhe ekzekutojeni:
.\CreateLocalEnv.ps1

Kjo komandë vendos një mjedis WordPress në https://exampledomain.test.

Krijimi i një Shkurtese në Desktop

Për ta bërë ekzekutimin e skriptit edhe më të lehtë, mund të krijoni një shkurtore në desktop që do të ekzekutojë skriptin në PowerShell me privilegje administratori. Ja si ta bëni:

  1. Krijoni një Shkurtore: Klikoni me të djathtën në desktop dhe shkoni te New > Shortcut.
  2. Objektivi i Shkurtorës: Në fushën “Type the location of the item”, shkruani këtë komandë:
powershell.exe -NoExit -ExecutionPolicy Bypass -File "C:\path\to\CreateLocalEnv.ps1"

Zëvendësoni C:\path\to\CreateLocalEnv.ps1 me vendndodhjen aktuale te skriptit tuaj.

  1. Emërtoni Shkurtoren: Jepni një emër për shkurtoren tuaj, si “Krijo Mjedis Lokal”, dhe klikoni Finish.
  2. Ekzekuto si Administrator: Klikoni me të djathtën në shkurtoren e krijuar dhe zgjidhni Properties. Shkoni te skeda Shortcut, klikoni Advanced, dhe kontrolloni kutinë për Run as administrator. Klikoni OK dhe pastaj Apply.

Përfitimet e Automatizimit të Konfigurimit

  • Konsistenca: Çdo konfigurim bëhet në të njëjtën mënyrë, duke reduktuar gabimet.
  • Shpejtësia: Detyrat përfundojnë në sekonda, duke ju lënë të fokusoheni në kodimin.
  • Mbështetje SSL: Lehtësisht krijoni certifikata SSL për domenët lokalë.
  • Reduktimi i Detyrave të Përsëritshme: Eliminimi i hapave të lodhshëm të konfigurimit ju lejon të kaloni më shumë kohë në zhvillim të vërtetë.

Automatizimi i konfigurimit tuaj lokal të mjedisit me PowerShell e thjeshton procesin, redukton gabimet njerëzore dhe lejon zhvillim më efikas. Skripti PowerShell është i disponueshëm për shkarkim këtu. Ndjehuni të lirë ta përshtatni sipas nevojave tuaja!

Chat on WhatsApp Chat on WhatsApp