Problema com virtual host do apache2 (Resolvido)

Iniciado por welinton_dias, 21 de Julho de 2016, 12:07

tópico anterior - próximo tópico

welinton_dias

Testei aqui agora no 16.04 esta registrando o log de erro

Log de erro

[Mon Aug 08 14:36:08.230364 2016] [:error] [pid 3299] [client 127.0.0.1:41330] PHP Fatal error:  Uncaught UnexpectedValueException: The stream or file "/var/www/basecms/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/basecms/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107\nStack trace:\n#0 /var/www/basecms/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\\Handler\\StreamHandler->write(Array)\n#1 /var/www/basecms/vendor/monolog/monolog/src/Monolog/Logger.php(336): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)\n#2 /var/www/basecms/vendor/monolog/monolog/src/Monolog/Logger.php(615): Monolog\\Logger->addRecord(400, Object(ErrorException), Array)\n#3 /var/www/basecms/vendor/laravel/framework/src/Illuminate/Log/Writer.php(202): Monolog\\Logger->error(Object(ErrorException), Array)\n#4 /var/www/basecms/vendor/laravel/framework/src/Illuminate/Log/Writer.php(113): Illuminate\\Log\\Writer->writeLog('error', Object(ErrorException), Array)\n#5 /var/www/basecms/vendor/laravel/framework/src/Illuminate/Foundation/Exc in /var/www/basecms/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 107
[Mon Aug 08 14:36:08.266741 2016] [:error] [pid 3299] [client 127.0.0.1:41330] PHP Fatal error:  Uncaught UnexpectedValueException: The stream or file "/var/www/basecms/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/basecms/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107\nStack trace:\n#0 /var/www/basecms/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\\Handler\\StreamHandler->write(Array)\n#1 /var/www/basecms/vendor/monolog/monolog/src/Monolog/Logger.php(336): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)\n#2 /var/www/basecms/vendor/monolog/monolog/src/Monolog/Logger.php(615): Monolog\\Logger->addRecord(400, Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)\n#3 /var/www/basecms/vendor/laravel/framework/src/Illuminate/Log/Writer.php(202): Monolog\\Logger->error(Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)\n#4 /var/www/basecms/vendor/laravel/framework/src/Illuminate/Log/Writer.php(113): Illuminate\\Log\\Writer->writeLog('error', Object(Symfony\\Component\\De in /var/www/basecms/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 107


zekkerj

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

selvaking

vc tem dois sites ativos para todos os ip ou todos os nomes da máquina na porta 80, é isto que significa: <VirtualHost *:80>. Vc deve desabilitar um deles. Pois ambos apontam para pastas diferentes. /var/www/html e  /var/www/onidigital/public

O Apache já vem configurado e funcionando com o site Default é só vc colocar QQ coisa que vc queira na pasta /var/www/html, como diz a diretiva "DocumentRoot /var/www/html" no arquivo 000-default.conf.

Desabilite o site Default com o comando "a2dissite 000-default.conf" ou site que vc criou com "a2dissite dev.onidigital.com.conf"
Se vc desabilitar o que criou modifique o parametro DocumentRoot do site Default para "/var/www/onidigital/public"

Para ter mais de um site na máquina vc pode fazer o Apache responder a IP ou a HOST
IP-based Virtual Hosts
Name-based Virtual Hosts

Pergunto qual a sua finalidade com os sites? É pra estudo ou pra produção (trabalho)?

Se for pra estudo posso te ensinar algumas técnicas para o Apache responder a mais de um site por nome ou por IP.


Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

zekkerj

Então, Selva... o ajuste dele já é pra Name-Based Virtual Host. O problema é que por algum motivo, o apache não estava gerando nenhum log.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

welinton_dias

Sim meu apache ta configurado para Name-Based. Acontece que ele abre a primeira pagina do meu site, e as restantes Not Found The requested URL . Isso possivelmente é permissões, mas ja fiz todos os tipos de configurações para que isso funcione

selvaking

Caro welinton_dias!

Vc tem dois sites funcionando. Desabilite um deles.

O erro que vc mostrou tem o endereço abaixo de uma página php que parece está vindo do site Default pois ele responde no /var/www, conforme o arquivo de configuração que vc mandou.
/var/www/basecms/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php

Vc digitou o que na URL do navegador? localhost ou dev.onidigital?

Coloque o conteúdo do seu arquivo "/etc/hosts"
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

welinton_dias

#36
So estou com um site ativo, o padrão 000-default esta desativado....
estou digitando dev.onidigital

/etc/hosts

127.0.0.1   localhost
127.0.1.1   welinton-pc
127.0.0.1   dev.onidigital

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

selvaking

Saida do comando abaixo:

ls -lhF /etc/apache2/sites-enabled/
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

welinton_dias

Selvaking

Saida do comando ls -lhF /etc/apache2/sites-enabled/

total 0
lrwxrwxrwx 1 root root 31 Ago  7 11:58 onidigital.conf -> ../sites-available/onidigital.conf

selvaking

Saída do comando:
sudo ls -lhF /var/www/*
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

welinton_dias

#40
sudo ls -lhF /var/www/*


/var/www/html:
total 20K
drwxrwxrwx 13 root root 4,0K Ago 10 16:00 basecms/
-rwxr-xr-x  1 root root  12K Ago  5 14:23 index.html*
-rwxr-xr-x  1 root root   17 Ago  5 14:34 info.php*

/var/www/onidigital:
total 196K
drwxr-xr-x 12 welinton welinton 4,0K Ago  9 21:48 app/
-rwxr-xr-x  1 welinton welinton 1,7K Ago  9 21:48 artisan*
drwxrwxrwx  3 welinton welinton 4,0K Ago  9 21:48 bootstrap/
-rwxr-xr-x  1 welinton welinton 1,7K Ago  9 21:48 composer.json*
-rwxr-xr-x  1 welinton welinton 127K Ago  9 21:48 composer.lock*
drwxr-xr-x  2 welinton welinton 4,0K Ago  9 21:48 config/
drwxr-xr-x  6 welinton welinton 4,0K Ago  9 21:48 database/
-rwxr-xr-x  1 welinton welinton 2,2K Ago  9 21:48 gulpfile.js*
drwxrwxrwx  6 welinton welinton 4,0K Jul 18 19:00 node_modules/
-rwxr-xr-x  1 welinton welinton  212 Ago  9 21:48 package.json*
-rwxr-xr-x  1 welinton welinton 1,1K Ago  9 21:48 phpunit.xml*
drwxrwxrwx  3 welinton welinton 4,0K Ago  9 21:48 public/
-rwxr-xr-x  1 welinton welinton  806 Ago  9 21:48 readme.md*
drwxr-xr-x  5 welinton welinton 4,0K Ago  9 21:48 resources/
-rwxr-xr-x  1 welinton welinton  567 Ago  9 21:48 server.php*
drwxrwxrwx  5 welinton welinton 4,0K Jul 18 18:54 storage/
drwxr-xr-x  2 welinton welinton 4,0K Ago  9 21:48 tests/
drwxrwxrwx 36 welinton welinton 4,0K Jul 21 16:20 vendor/


selvaking

Caro  welinton_dias!

Seria melhor que todas as pastas que o apache fosse acessar, o dono fosse o usuário "www-data" e o grupo tbm.
Não sei por qual motivo vc colocou o usuário welinton como dono dos arquivos e das pastas.
Vc pode modificar isso com o comando abaixo.

sudo chown -R www-data: /var/www

Vc pode comentar as linhas abaixo no seu arquivo /etc/apache2/sites-enabled/dev.onidigital.com.conf:
<VirtualHost *:80>
    ServerAdmin welinton@onidigital.com
    ServerName dev.onidigital
    ServerAlias dev.onidigital.com
    DocumentRoot /var/www/onidigital/public
#<Directory /var/www/onidigital/public>
#Options Includes FollowSymLinks
#Allow from all
#AllowOverride All
#Order allow,deny
#</Directory>
    ErrorLog ${APACHE_LOG_DIR}/error_onidigital.log
    CustomLog ${APACHE_LOG_DIR}/access_onidigital.log combined
</VirtualHost>


Elas são redundantes. A pasta /var/www e todas as suas subpastas já são compartilhadas no arquivo /etc/apache2/apache2.conf.
Olhe abaixo a parte do arquivo que compartilha as pastas padrões de todos os sites.

# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>

<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>


Esta opção colocada para compartilhar uma determinada pasta, "FollowSymLinks", avisa ao apache que se ele encontrar "atalhos" ele deve seguir. No meu servidor crio links na pasta /var/www para as pastas do usuário que desejo. Por Exemplo:

sudo ln -s /home/welinton/Documentos /var/www/Documentos

Espero ter ajudado!
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

zekkerj

Não acho boa ideia o usuário do apache ter permissão de escrita nas pastas que acessa. Vai que algum invasor consegue forçar um exploit nele, é meio caminho pra ele modificar tuas páginas e começar a te usar pra invadir outras máquinas... :(
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

selvaking

Citação de: selvaking online 09 de Agosto de 2016, 20:52
Pergunto qual a sua finalidade com os sites? É pra estudo ou pra produção (trabalho)?

Se for pra estudo posso te ensinar algumas técnicas para o Apache responder a mais de um site por nome ou por IP.

Ele não me respondeu a essas perguntas que fiz. Mas acredito que ele esteja querendo um site pra estudo e não um site pra produção.
Um site pra produção temos que pensar em segurança.
Um site pra estudo em casa, basta que funcione!

Realmente o que vc disse faz sentido, zekkerj!
Nesta página é ensinado as péssimas idéias para acesso as pastas do Apache e mostra duas soluções plausíveis.
Dê-me um computador com o Tux que movo o mundo!

Linux User #323049

welinton_dias

Boas pessoal desculpa a demora, minha vida ta bastante corrida por causa do fim da faculdade.

Então vou fazer esses procedimentos,

Na verdade esta com essas permissões pq fiquei tentando essa coisa do virtualhost, e acabou que isso foi meio que no desespero, e claro que iria mudar essas permissões depois