---
title: "Automatizoni mjedisin lokal me PowerShell"
description: "Skript PowerShell për automatizimin e mjedisit lokal në Windows për WordPress dhe Laravel: virtual hosts, SSL me mkcert dhe krijim i databazës MySQL."
url: "https://sajdoko.al/blog/automatizoni-mjedisin-e-zhvillimit-lokal-me-powershell-per-wordpress-dhe-laravel/"
language: "sq"
content_signal: "ai-train=no, search=yes, ai-input=yes"
---
# Automatizoni Mjedisin e Zhvillimit Lokal me PowerShell për WordPress dhe Laravel

 9 Tetor 2024·8 minuta lexim·[Development](https://sajdoko.al/blog/category/development-sq/)     

Përdor një skript PowerShell për hapat e përsëritur të konfigurimit të projekteve lokale WordPress dhe Laravel në Windows. Ai përditëson hosts, konfiguron virtual hosts, krijon bazat e të dhënave dhe vendos SSL lokal.

 

Skripti PowerShell është i disponueshëm për shkarkim [këtu](https://gist.github.com/sajdoko/5e197b0f0e5963177f052fc69c207c28).

 

## 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](https://www.apachefriends.org/index.html). 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](https://sajdoko.al/blog/si-te-instaloni-wordpress-ne-localhost-duke-perdorur-xampp-guide-hapi-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](https://github.com/FiloSottile/mkcert), 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)system32Driversetchosts"
    $hostsFile = Get-Content $hostsFilePath

    Write-Host "Duke shtuar $desiredIP për $hostname në skedarin hosts" -ForegroundColor Gray

    $escapedHostname = [Regex]::Escape($hostname)
    $patternToMatch = ".*$desiredIPs+$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:xamppxampp_stop.exe"
    Start-Sleep -Seconds 5
    Invoke-Expression "C:xamppxampp_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:pathtoCreateLocalEnv.ps1"
```

 

Zëvendësoni `C:pathtoCreateLocalEnv.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](https://gist.github.com/sajdoko/5e197b0f0e5963177f052fc69c207c28). Ndjehuni të lirë ta përshtatni sipas nevojave tuaja!

  

- [Development](https://sajdoko.al/blog/category/development-sq/)

   

## Keni një projekt në mendje?

 

Na shkruani dhe përgjigjemi me një vlerësim konkret brenda një dite pune.

  [Kontakto →](https://sajdoko.al/kontakt/)     

## Lini një koment [Anulo](https://sajdoko.al/blog/automatizoni-mjedisin-e-zhvillimit-lokal-me-powershell-per-wordpress-dhe-laravel/?format=markdown#respond)

      

## Postime Së Fundi

- [Softuer për menaxhimin e flotës: çfarë ju duhet përveç GPS-it?](https://sajdoko.al/blog/softuer-menaxhimi-flotes-pervec-gps/)
- [CRM me porosi apo platformë standarde SaaS: Llogaritja e kostove dhe efikasitetit për biznesin](https://sajdoko.al/blog/crm-me-porosi-apo-platforma-standarde-per-biznesin/)
- [Zhvillimi software nearshore në Shqipëri: Pse kompanitë evropiane po zgjedhin inxhinierët shqiptarë](https://sajdoko.al/blog/zhvillimi-software-nearshore-ne-shqiperi-avantazhet-e-tregut/)
- [Integrimi i pagesave me kartë në Shqipëri (2026): krahasimi i bankave, komisionet dhe si funksionon teknikisht](https://sajdoko.al/blog/pagesa-online-me-karte-shqiperi/)
- [Optimizimi i arkëtimit dhe performancës në WooCommerce: Si të eliminoni vonesat gjatë blerjes](https://sajdoko.al/blog/optimizimi-i-checkout-dhe-ngarkeses-ne-woocommerce/)

## Komente Së Fundi

S’ka komente për shfaqje.
