více aplikací na jednom serveru
- vichpetr
- Člen | 11
Ahoj,
na jednom webovém serveru mi dvě aplikace a stává se mi, že se mi obsah jednoho webu zobrazuje na druhém (co jsem tak pochopil z dokumentace a diskuze, tak je to způsobuje cache pro latte soubory). Našel jsem na foru diskuze, které jsou dost staré a nijak mi nepomohli
- https://forum.nette.org/…he-to-nechci
- https://forum.nette.org/…vaci-cookies
- https://forum.nette.org/…he-to-nechci
Zkoušel jsem i dočasně cache úplně vypnout jak je psané v dokumentaci. Sice se mi už potom nevytvořil adresář cache v tempu aplikace, ale efekt byl stále stejný.
services:
cacheStorage:
class: Nette\Caching\Storages\DevNullStorage
a jak je psané v první odkazu na forum, zkoušel jsem nastavit i vlastní memcache. Nette hlásí chybu, že PHP extension ‚memcache‘ is not loaded. i když bych měl mít memcache rozšíření zapnuté.
Můžete mi, prosím, poradit jak správně opravit nastavení?
Díky.
- vichpetr
- Člen | 11
document root, myslíš z apache? a open_basedir se nastavuje kde?
Já jsem udělal dvě na sobě nezávislé Nette applikace (na localhostu – wamp, jsem neměl problém) a když jsem je nasadil na ostrý web, tak jsem zjistil, že problém je …
Už mě nenapadá čím to může být. Mohli by na to mít práva v systému?
Díky za jakýkoli nápad.
- GEpic
- Člen | 566
vichpetr napsal(a):
document root, myslíš z apache? a open_basedir se nastavuje kde?
Já jsem udělal dvě na sobě nezávislé Nette applikace (na localhostu – wamp, jsem neměl problém) a když jsem je nasadil na ostrý web, tak jsem zjistil, že problém je …
Už mě nenapadá čím to může být. Mohli by na to mít práva v systému?
Díky za jakýkoli nápad.
Ano, myslím apache, každý projekt má vlastní nastavení.
- vichpetr
- Člen | 11
Já mám pro každou aplikaci taky svoji konfiguraci … tady je ukázka mojí konfigurace.
<VirtualHost *:80>
ServerAdmin webmaster@petrvich.eu
ServerName moje.domena
ServerAlias www.moje.domena
DocumentRoot /home/../www
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- newPOPE
- Člen | 648
@vichpetr neviem teda co presne myslis. Pises, ze maju spolocny root. Tym myslis, ze bezia na jednom stroji predpokladam. Cize su v roznych adresaroch ⇒ nic nezdielaju (okrem nejakych sharovanych sluzieb ako memcache, redis, … co defaultne nemaju preco ak si nic neprestavoval).
Ja sice bezim projekty cez Docker ale tie tvoje app nemaju preco tak blbnut. Skor by som to videl na nejake blbe nastavenie Apache a virtualhostov. Hodi ti to nieco ked do browsera napises IP toho serveru? Ktory z projektov alebo sa neukaze nie? Apache ma nejaky default.
- vichpetr
- Člen | 11
já jsem se asi trochu zamotal v pojmech …
- každá aplikace má vlastní document root (myslím documentRoot v konfiguraci virtualhostu na apache).
- každá aplikace je ve svém adresáři, kde je struktura jak jsem psal
výše …
- appName
- app
- temp
- log
- www
- vendor
- app2Name
- app
- temp
- log
- www
- vendor
- appName
A documentRoot je nasměrovaný do adresáře www. Není mi jasné z jakého důvodu by to mělo mít něco společného s Nette, ale serveru i další php aplikace (převážně wordpress) a s tím žádné problémy nejsou.
U apache mám default, takže po zadání IP adresy se ukáže default.
Zkoušel jsem ještě natavit open_base_dir jak psal @GEpic, ale výsledek žádný.
Když jsem pročítal error.log, tak jsem si v všiml, že se mi tam objevují cesty ke knihovnám (adresář vendor) z druhé aplikace …
- vichpetr
- Člen | 11
index.php
<?php
$container = require __DIR__ . '/../app/bootstrap.php';
$container->getByType('Nette\Application\Application')->run();
boostrap.php
<?php
require __DIR__ . '/../vendor/autoload.php';
$configurator = new Nette\Configurator;
//$configurator->setDebugMode(false); // enable for your remote IP
$configurator->enableDebugger(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
->addDirectory(__DIR__)
->register();
$configurator->addConfig(__DIR__ . '/config/config.neon');
$container = $configurator->createContainer();
return $container;
Ale asi to bude opravdu nastavení apache. Jak jsem včera popsal chybu – s tím, že mi jeden web čte knihovny z druhého. Stalo se mi to u wordpresu, že se mi propsalo nastavení pluginu do více webu …
Možná to je blbost, ale příšlo mi to jako by v kontantě __DIR__ byla hodnota do knihoven druhého webu…
- jannek19
- Člen | 47
No máš víceméně 2 možnosti, jak ti může běžet PHP na serveru:
- jako modul do Apache – většinou stačí jen nainstalovat a jedeš
- případně jako PHP-FPM – musíš to správně nastavit, protože jinak o sobě Apache a PHP vlastně neví, každý funguje jako samostatný „server“
Pokud používáš PHP-FPM je několik možnosti, jak donutit Apache, aby přeposílal požadavky na PHP:
- buď použiješ proxy (viz https://wiki.apache.org/httpd/PHP-FPM), podle těch příkladů tam pak předáváš ručně cestu do nějakého rootu
- nebo přes direktivu FastCgiExternalServer (viz https://www.howtoforge.com/…tu-12.04-lts, případně tady https://www.linode.com/…-with-apache)
Může se tak stát, že máš nesprávně nastavený Apache a díky tomu sice přijde požadavek na aplikaci A, ale Apache to přepošle do PHP s cestou, která míří do aplikace B.
Víc ti k tomu asi neřeknu, už je to fakt dlouho, co jsem PHP-FPM instaloval, ale na Google je návodů dost.