Eu nunca resolvi os problemas inesperados do "fim do arquivo", mas o Vagrant apareceu e isso faz todo o trabalho pesado para você .
Tendo passado por várias centenas de aros, finalmente consegui que o Centos 5.8 montasse uma pasta compartilhada do VirtualBox (que não é somente leitura), que agora aparece em:
/media/sf_sites
Esta é uma pasta na minha máquina host (Mac OS X 10.8.2) contendo sites.
O diretório e suas subpastas são todos de propriedade do usuário root
e do grupo vboxsf
Eu adicionei o usuário apache
ao grupo vboxsf
No entanto, o link não permite que eu use minha pasta compartilhada como raiz do documento. Meu vhost está configurado como:
DocumentRoot /media/sf_sites/mysite/public
No Apache, eu recebo isto:
Starting httpd: Warning: DocumentRoot [/media/sf_sites/mysite/public] does not exist
[ OK ]
E, sem surpresa, ao visualizar o site no meu navegador, recebo um erro 403. ("Você não tem permissão para acessar / neste servidor.")
Alguma idéia de como é possível fazer isso funcionar?
Eu quero desenvolver no meu Mac, mas uso o Linux no VirtualBox como meu servidor de desenvolvimento. Existe uma maneira alternativa de fazer isso?
Eu nunca resolvi os problemas inesperados do "fim do arquivo", mas o Vagrant apareceu e isso faz todo o trabalho pesado para você .
Crie um ponto de montagem no seu Linux, instale o sshfs se ainda não o tiver.
Faça o seguinte no CentOS
sudo su - apache
sshfs root@< your OS X IP >:< web folder path > < mount point >
Por exemplo:
O comando sshfs será: sshfs [email protected]: / Users / me / webOSX / var / www / webLinux
Isso porque o contexto de segurança do SELinux da pasta compartilhada não permite que o Apache o use. Como o contexto de segurança das pastas compartilhadas VBox não pode ser alterado, você pode modificar a política de segurança do SELinux para permitir que o Apache trabalhe com o contexto. É semelhante a abrir uma porta no firewall para expor uma determinada porta a um aplicativo. NÃO é uma boa ideia desligar o SELinux como outros sugeriram, pois isso deixa o servidor mais vulnerável.
Primeiro, certifique-se de que seu usuário do apache faça parte do grupo que possui a pasta compartilhada. Se não estiver, você poderá adicioná-lo com um comando semelhante a esse (os nomes de usuário / grupo podem ser diferentes em seu sistema ):
usermod -aG vboxsf apache
Em seguida, você pode usar audit2allow para gerar uma nova política de segurança para contornar seus problemas. Aqui está um bom tutorial .
Se você é preguiçoso e deseja apenas permitir acesso de leitura do Apache às suas pastas compartilhadas VBox, provavelmente é possível adaptar o seguinte arquivo de política my_httpd_t.te
e usar os comandos incluídos para aplicá-lo em seu sistema.
module my_httpd_t 1.0;
require {
type httpd_t;
type vmblock_t;
class dir read;
class file { read getattr open };
}
#============= httpd_t ==============
allow httpd_t vmblock_t:dir read;
allow httpd_t vmblock_t:file { getattr open read };
# Generated by audit2allow
# To apply this policy:
## checkmodule -M -m -o my_httpd_t.mod my_httpd_t.te
## semodule_package -o my_httpd_t.pp -m my_httpd_t.mod
## semodule -i my_httpd_t.pp
## systemctl restart httpd
Você precisa desativar o SELinux se precisar definir uma pasta compartilhada como DocumentRoot
do seu servidor Apache.
Acesse /etc/selinux/config
e atualize-o para ler:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Em seguida, reinicie sua máquina virtual. Isso funciona com vagabundo também.