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:
- 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.
- 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. - 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:
- Hapni PowerShell si Administrator: Skripti modifikon skedarët e sistemit, kështu që ka nevojë për leje si Administrator.
- 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:
- Krijoni një Shkurtore: Klikoni me të djathtën në desktop dhe shkoni te New > Shortcut.
- 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.
- Emërtoni Shkurtoren: Jepni një emër për shkurtoren tuaj, si “Krijo Mjedis Lokal”, dhe klikoni Finish.
- 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!