sql >> Databáze >  >> RDS >> Mysql

Project Links nefungují na serveru Wamp

Jak vytvořit virtuálního hostitele na WampServeru

WAMPServer 3 tento proces výrazně zjednodušil!

Téměř vše můžete udělat z nástroje poskytovaného jako součást WAMPServeru.

  • Vytvořte uvnitř složku, která bude obsahovat váš project.site. To může být pod C:\wamp\www\ adresáři nebo ve zcela samostatné složce jako C:\websites .

  • Vytvořte složku ve zvoleném umístění EG C:\websites\project1\www nebo pod c:\wamp\www\project1\www

  • Nyní otevřete localhost wampmanager->localhost a klikněte na odkaz Přidat virtuálního hostitele v části NÁSTROJE na domovské stránce.

Zobrazí se stránka podobná této:

  • Vyplňte pole podle pokynů nad každým polem

  • Konfigurace virtuálního hostitele bude vytvořena za vás.

  • Nyní musíte restartovat mezipaměť DNS. Můžete to udělat z nabídek wampmanager, jako je tato klikněte pravým tlačítkem na wampmanager->Nástroje->Restartovat DNS . DNS Cache bude restartována a poté bude Apache také zastaven a restartován. Když ikona wampmanageru opět zezelená, vše je dokončeno.

  • Nyní musíte vytvořit jednoduchý index.php nebo nainstalujte svůj web do složky, kterou jste vytvořili výše.

  • Za předpokladu, že se váš VH jmenoval project.dev Toto jméno byste měli vidět v části Vaši virtuální hostitelé Sekce domovské stránky WAMPServer.

  • Stránku můžete spustit z této nabídky nebo jednoduše použít nový název domény v adresním řádku EG project1.dev a web by se měl spustit.

Starý mechanismus WAMPServer 2.5, nebo chcete-li to vše udělat ručně

Ve WampServeru 2.5 a vyšším došlo ke změně konceptu a pro tuto změnu existuje dobrý důvod!

Na WampServeru se nyní DŮRAZNĚ doporučuje vytvořit virtuálního hostitele pro každý z vašich projektů, i když je držíte v \wamp\www\podsložce struktura.

Dokumentace virtuálních hostitelů

Příklady virtuálního hostitele

Domovská stránka WampServeru ( \wamp\www\index.php ) nyní očekává, že jste vytvořili virtuálního hostitele pro všechny své projekty, a proto bude správně fungovat, pouze pokud tak učiníte.

Historie

Aby se začátečníkům, kteří používají WampServer, usnadnil život, aby se naučili PHP Apache a MySQL, bylo navrženo, abyste vytvořili podsložky pod \wamp\www\ složka.

wamp
  |-- www
       |-- Chapter1
       |-- Chapter2
       |-- etc

Tyto podsložky by se pak zobrazily jako odkazy na domovské stránce WampServeru v nabídce nazvané 'Vaše projekty' a tyto odkazy by obsahovaly odkaz na localhost/subfoldername .

Přijatelné pouze pro jednoduché výukové programy

To usnadnilo život úplným začátečníkům a bylo to naprosto přijatelné například pro ty, kteří se v následujících výukových programech naučili kódování PHP. Nikdy to však nebylo zamýšleno pro použití při vývoji skutečných webových stránek, které byste později chtěli zkopírovat na svůj živý hostovaný server. Ve skutečnosti, pokud jste použili tento mechanismus, často to způsobovalo problémy, protože konfigurace živých stránek by neodpovídala vaší vývojové konfiguraci.

Problém pro skutečný vývoj webových stránek.

Důvodem je samozřejmě to, že výchozí nastavení DocumentRoot pro wamp je

DocumentRoot "c:/wamp/www/"

bez ohledu na to, jak se vaše podsložka jmenovala. Tato podsložka často používala kód PHP, který se dotazoval na strukturu nebo váš web při běhu na vývojovém WampServeru dostával jiné informace, než jaké by dostával při běhu na živém hostovaném serveru, kde konfigurace DocumentRoot ukazuje na složka v horní části hierarchie souborů webových stránek. Tento druh kódu existuje v mnoha frameworkech a CMS, například WordPress a Joomla atd.

Například

Řekněme, že máme projekt s názvem project1 uložený v wamp\www\project1 a běží nesprávně jako localhost/project1/index.php

Toto by hlásil některý z dotyčných PHP příkazů:

$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www

Nyní, pokud bychom správně definovali tento web pomocí definice virtuálního hostitele a spustili jej jako http://projekt1 výsledky na vývojovém webu WAMPServeru se budou shodovat s výsledky získanými v živém hostovaném prostředí.

$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1

Nyní se tento rozdíl může na první pohled zdát triviální, ale pokud byste použili framework, jako je WordPress nebo některý z CMS, jako je například Joomla, může to způsobit a také způsobí problémy, když přesunete svůj web na živý server.

Jak vytvořit virtuálního hostitele na WampServeru

Ve skutečnosti by to mělo fungovat v podstatě stejně pro jakýkoli server Wndows Apache, s rozdíly pouze v tom, kde můžete najít konfigurační soubory Apache.

Existují 3 kroky k vytvoření prvního virtuálního hostitele v Apache a pouze 2, pokud již máte jednoho definovaného.

  1. Vytvořte definice virtuálního hostitele
  2. Přidejte svůj nový název domény do souboru HOSTS.
  3. Odkomentujte řádek v souboru httpd.conf, který obsahuje definiční soubor virtuálních hostitelů.

Krok 1 , Vytvořte definice virtuálního hostitele

Upravte soubor s názvem httpd-hosts.conf který pro WampServer žije v

\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf

(Čísla verzí Apache se mohou lišit, před pokračováním zapojte mozek)

Pokud tento soubor upravujete poprvé, odeberte výchozí ukázkový kód, je to k ničemu.

Předpokládám, že chceme vytvořit definici pro web s názvem project1, který žije v

\wamp\www\project1

Velmi důležité, nejprve se musíme ujistit, že localhost stále funguje, takže to je první definice VHOST, kterou do tohoto souboru vložíme.

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    <Directory  "c:/wamp/www">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

Nyní definujeme náš projekt:a to samozřejmě uděláte pro každý ze svých projektů, když zahájíte nový.

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www/project1"
    ServerName project1
    <Directory  "c:/wamp/www/project1">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

POZNÁMKA:Každý virtuální hostitel má svůj vlastní DocumentRoot definována. Existuje také mnoho dalších parametrů, které můžete přidat do definice virtuálních hostitelů, podívejte se do dokumentace Apache.

Malé stranou

Způsob fungování virtuálních hostitelů v Apache:První definice v tomto souboru bude také výchozí web, takže pokud by název domény použitý v prohlížeči neodpovídal žádné skutečně definované virtuálně hostované doméně, takže localhost bude první doménou v souboru. je to stránka, která se načte, pokud pokus o hack použije pouze vaši IP adresu. Pokud tedy zajistíme, že zabezpečení Apache pro tuto doménu je VŽDY NASTAVENÉ

Require local

jakýkoli náhodný hack z externí adresy obdrží chybu a nedostane se do vašeho PC, ale pokud zadáte chybně doménu, zobrazí se vám domovská stránka WampServeru, protože jste na stejném PC jako WampServer a tedy lokální .

Krok 2 :

Přidejte svůj nový název domény do souboru HOSTS. Nyní musíme přidat název domény, který jsme použili v definici virtuálního hostitele, do souboru HOSTS, aby systém Windows věděl, kde jej najít. Je to podobné jako při vytváření DNS A záznamu, ale v tomto případě je to viditelné pouze na tomto konkrétním PC.

Upravte C:\windows\system32\drivers\etc\hosts

Soubor nemá příponu a tak by měl zůstat. Dejte si pozor na poznámkový blok, protože se může pokusit přidat .txt rozšíření, pokud nemáte lepší editor. Navrhuji, abyste si stáhli Notepad++, je to bezplatný a velmi dobrý editor.

Toto je také chráněný soubor, takže jej musíte upravovat s právy správce, takže spusťte editor pomocí Spustit jako správce možnost nabídky.

Po dokončení těchto úprav by soubor hosts měl vypadat takto

127.0.0.1 localhost
127.0.0.1 project1

::1 localhost
::1 project1

Všimněte si, že byste zde měli mít definice pro adresu zpětné smyčky IPV4 127.0.0.1 a také adresu zpětné smyčky IPV6 ::1 protože Apache je nyní IPV6 vědomý a prohlížeč bude používat buď IPV4 nebo IPV6 nebo obojí. Nemám ponětí, jak se rozhoduje, který použít, ale může použít obojí, pokud máte zapnutý zásobník IPV6 a většina operačních systémů Windows to funguje od XP SP3.

Nyní musíme říci systému Windows, aby obnovil mezipaměť názvu domény, takže znovu spusťte příkazové okno pomocí Spustit jako správce znovu a proveďte následující.

net stop dnscache
net start dnscache

To donutí Windows vymazat mezipaměť názvu domény a znovu ji načíst, při opětovném načtení znovu načte soubor HOSTS, takže nyní ví o doméně project1 .

Krok 3 :Odkomentujte řádek v httpd.conf, který obsahuje definiční soubor virtuálních hostitelů.

Upravte svůj httpd.conf, použijte nabídky wampmanager.exe, abyste se ujistili, že upravujete správný soubor.

Najděte tento řádek v httpd.conf

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

A stačí odstranit # odkomentovat tento řádek.

Abychom aktivovali tuto změnu ve vašem spuštění Apache, musíme nyní zastavit a restartovat službu Apache.

wampmanager.exe -> Apache -> Service -> Restart Service

Pokud nyní ikona WAMP na systémové liště opět nezezelená, znamená to, že jste pravděpodobně udělali něco špatně v \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf soubor.

Pokud ano, zde je užitečný mechanismus, jak zjistit, co je špatně. Využívá funkci Apache exe (httpd.exe) ke kontrole svých konfiguračních souborů a hlášení chyb podle názvu souboru a čísla řádků.

Spusťte příkazové okno.

cd \wamp\bin\apache\apache2.4.9\bin
httpd -t

Opravte tedy chyby a opakujte test, dokud nezískáte výstup

Syntax OK

Teď je tu ještě jedna věc.

V systému nabídek wampmanager jsou ve skutečnosti 2 nové položky nabídky. Jeden s názvem Moje projekty který je ve výchozím nastavení zapnutý. A druhý s názvem Moji virtuální hostitelé , která není ve výchozím nastavení aktivována.

'Moje projekty' vypíše jakýkoli podadresář adresáře \wamp\www a poskytne odkaz na spuštění webu v tomto podadresáři. Jak jsem řekl dříve, spouští 'project1` a ne 'localhost/project1', takže odkaz funguje, musíme vytvořit definici virtuálního hostitele, aby tento odkaz skutečně spustil daný web ve vašem prohlížeči, bez definice virtuálního hostitele pravděpodobně spustí webové vyhledávání názvu webu jako klíčového slova nebo jen vrátí podmínku nenalezen web.

Položka nabídky 'Moji virtuální hostitelé' je trochu jiná. Prohledá soubor, který se používá k definování virtuálních hostitelů (k tomu se dostaneme za minutu) a vytvoří odkazy na nabídku pro každý parametr ServerName, který najde, a vytvoří položku nabídky pro každý z nich. To se může zdát trochu matoucí, když vytvoříme definice virtuálního hostitele pro podadresáře složky \wamp\www. Některé položky se objeví jak v nabídce 'Moje projekty', tak v nabídce 'Moji virtuální hostitelé'.

Jak zapnu tuto další nabídku „Moji virtuální hostitelé“?

  • Udělejte si zálohu souboru \wamp\wampmanager.tpl, pro případ, že byste udělali chybu, je to velmi důležitý soubor.
  • Upravte soubor \wamp\wampmanager.tpl
  • Najít tento parametr ;WAMPPROJECTSUBMENU , je v sekci '[Menu.Left]'.
  • Přidejte tento nový parametr ;WAMPVHOSTSUBMENU buď před nebo za ;WAMPPROJECTSUBMENU parametr.
  • Uložte soubor.
  • Nyní klikněte pravým tlačítkem na ikonu wampmanager a vyberte 'Obnovit'. Pokud toto nepřidá nabídku, 'exit' a restartovat wampmanager.

Velká poznámka Nová nabídka se zobrazí pouze v případě, že již máte definované nějaké virtuální hostitele! Jinak neuvidíte žádný rozdíl, dokud nedefinujete VHOST.

Teď, když to vezmete do jeho logického rozšíření

Nyní můžete přesunout kód své webové stránky zcela mimo \wamp\ strukturu složek jednoduše změnou parametru DocumentRoot v definici VHOST. Můžete to udělat například takto:

Vytvořte složku na wamp disku nebo jakémkoli jiném disku (pozor na síťový disk, jsou trochu složitější)

D:
MD websites
CD websites
MD example.com
CD example.com
MD www

Nyní zkopírujte kód svého webu do \websites\example.com\www nebo jej začněte vytvářet složku a definujte svůj VHOST takto:

<VirtualHost *:80>
    DocumentRoot "d:/websites/example.com/www"
    ServerName example.dev
    ServerAlias www.example.dev
    <Directory  "d:/websites/example.com/www">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    php_flag display_errors Off
    php_flag log_errors On

    php_value max_upload_size 40M
    php_value max_execution_time 60
    php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>

Poté přidejte tuto novou vývojovou doménu do souboru HOSTS:

127.0.0.1 localhost
::1 localhost

127.0.0.1 project1
::1 project1

127.0.0.1 example.dev
::1 example.dev

POZNÁMKA:Není dobrý nápad používat ServerName nebo ServerAlias, který je stejný jako váš aktuální název domény, jako kdybychom použili example.com jako ServerName, znamenalo by to, že se již nemůžeme dostat ke skutečnému živému web z tohoto počítače, protože by nasměroval example.com na 127.0.0.1, tj. na tento počítač, a ne na internet.

TAKÉ:Podívejte se, že jsem povolil přístup k tomuto webu z internetu v rámci definic VHOST, tato změna se bude týkat pouze tohoto webu a žádného jiného. Velmi užitečné pro to, aby klient mohl prohlížet vaše změny asi hodinu, aniž by je musel kopírovat na živý server. To znamená, že musíme tento soubor upravit ručně, abychom tento přístup zapnuli a vypnuli, místo abychom používali Put Online/ Položka nabídky offline ve wampmanageru.

Také jsem přidal nějaké úpravy do konfigurace PHP, které se opět budou vztahovat pouze na tento jeden web. Velmi užitečné při údržbě webu se specifickými požadavky na rozdíl od všech ostatních webů, které udržujete. Myslím, že z použitých parametrů můžeme předpokládat, že má někde v něm dlouho běžící stránka a je velmi špatně napsaná a nepoběží s chybami, které se zobrazují v prohlížeči, aniž by na stránce udělaly hrozný nepořádek. Věřte, že stránky jako tato existují a lidé stále chtějí, aby byly udržovány špatně . To však znamená, že tyto parametry musíme změnit pouze pro tento konkrétní web a ne globálně na všechny virtuální weby běžící na WampServeru.



  1. Jak nahrát obrázky do databáze MySQL pomocí kódu PHP

  2. 2 způsoby, jak přidat úvodní nuly v PostgreSQL

  3. SQL Developer se nespustí

  4. Jaké je očekávané chování pro více funkcí vracejících sadu v klauzuli SELECT?