sexta-feira, 29 de outubro de 2010

Instalando phpmotion no centos 5.5 64bits

-------------------------------------------------------------------------------
Instalando phpmotion no centos 5.5 64bits
-------------------------------------------------------------------------------
[Informações]

Maquina: VMWare esxi 4.0
Sistema: Centos 5.5 x86_64

-------------------------------------------------------------------------------
[Instalando dependências]

- Adicionando repositorios para yum:
# vim /etc/yum.repos.d/dag.repo
.
.
.
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
.
.
.
# rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

- Instalando via yum:
# yum install ffmpeg ffmpeg-devel flvtool2 mencoder libogg.x86_64 libvorbis.x86_64 php-gd

-------------------------------------------------------------------------------
[Habilitando phpshield]

- Copiando modulo phpshield para extension_dir do php:
# cp /var/www/html/phpshield/* /usr/lib64/php/modules

- Habilitando no php.ini o modulo /usr/lib64/php/modules/phpshield.5.2.lin:
# vim /etc/php.ini
.
.
.
extension=phpshield.5.2.lin
.
.
.

Nota: Não utilize o caminho completo, somente o nome do modulo mesmo.


-------------------------------------------------------------------------------
[Possiveis erros]

- Ao fazer upload de um video, o seguinte erro aparece no site:
"
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
"

Ou então no log de erro do apache:

"
[Fri Aug 13 09:35:21 2010] [error] [client 172.20.7.0] (13)Permission denied: exec of '/var/www/html/cgi-bin/uu_ini_status.pl' failed, referer: http://video.com/uploader.php
[Fri Aug 13 09:35:21 2010] [error] [client 172.20.7.0] Premature end of script headers: uu_ini_status.pl, referer: http://video1.ufes.br/uploader.php
[Fri Aug 13 09:35:21 2010] [error] [client 172.20.7.0] (13)Permission denied: exec of '/var/www/html/cgi-bin/uu_upload.pl' failed, referer: http://video.com/uploader.php
[Fri Aug 13 09:35:21 2010] [error] [client 172.20.7.0] Premature end of script headers: uu_upload.pl, referer: http://video.com/uploader.php
"

Esse erro ocorre se o usuario "apache", ou o usuário que o servidor web utiliza para acessar os arquivos, estiver sem permissão de execução na pasta cgi-bin. Execute o seguinte comando para resolver:
# chmod -R 774 /var/www/html/cgi-bin


- Links não funcionam:
"
Not Found
The requested URL /albums/load/featured was not found on this server.
"

Em "/etc/httpd/conf/httpd.conf" altere as seguintes linhas para:
.
.
.
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All #nao pode ser none, deve ser All
Order allow,deny
Allow from all
</Directory>
.
.
.

Verifique também se o arquivo .htaccess existe no diretório raiz do site com as declarações de tradução da url.


- Ao fazer upload de video, o seguinte erro é retornado:
"Access Forbidden!"

Em "/etc/httpd/conf/httpd.conf" altere as seguintes linhas para:
.
.
.
<Directory "/var/www/html/cgi-bin">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
.
.
.

- Faz upload do vídeo porém o mesmo não aparece. Deve-se retirar o caminho "/usr/share/ffmpeg" na pagina "/siteadmin/settings_general.php" na variável "Path to ffmpeg".


- "Checking if PHPshield encoded files are working: The results above indicate that there is a problem with PHPShield".
Certifique-se que você executou o comando abaixo:
cp /var/www/html/phpshield/* /usr/lib64/php/modules


- "Error! - Can't connect to MySQL server on 'db.teste.com' (13)"
Durante a instalação você pode receber essa mensagem. Suas configurações podem estar erradas ou então, no meu caso, o selinux pode estar bloqueando. Para habilitar o selinux, consulte o tópico "http://andreob.blogspot.com/2010/10/compilar-regra-no-selinux-para-liberar.html"


- "Error: Missing Dependency: php-common = 5.1.6-27.el5_5.3 is needed by package php-gd-5.1.6-27.el5_5.3.x86_64 (updates)"
Apague a instalação do php-common pois isso pode estar dando algum conflito com os pacotes. Após isso, reinstale os pacotes separadamente.
yum remove php-common
yum install php-gd
yum install php php-cli php-mysql php-pdo php-pgsql


- "Error! - Some files and folders are not CHMOD correctly "
No diretório que as páginas do phpmotion, execute os seguintes comandos para alterar as permissões nas pastas:
chown -R apache.apache ./*
chmod -R 755 uploads
chmod -R 755 classes
chmod -R 755 logs
chmod -R 755 setup
chmod -R 755 pictures
chmod -R 755 temp

- "Not Found The requested URL /cgi-bin/uu_upload.pl was not found on this server."
Infelizmente não consegui descobrir exatamente o que gera esse erro. Mas fiz algo para contornar o problema, crio um link simbolico em /var/www/cgi-bin apontando para o cgi-bin do phpmotion:
ln -s /var/www/html/cgi-bin/ /var/www/cgi-bin
-------------------------------------------------------------------------------

sexta-feira, 1 de outubro de 2010

Compilar regra no selinux para liberar acesso sem utilizar o setenforcing 0 ou setenforcing permissive

Em meu servidor web copiei uma pasta para /var/www/html/expresso. Só que quando abro é retornado o erro "403 Forbidden". Isso é devido ao selinux, devemos compilar uma regra que permita o que está sendo proibido. Para saber o que está sendo proibido, monitore o "/var/log/messages":
tail -f /var/log/messages

Agora, faça novamente a ação que está sendo proibida. Provavelmente será logado no "/var/log/messages" algo semelhante ao abaixo:
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.063:71): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.065:72): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file

Gere um arquivo temporario com essas mensagens:
vim /tmp/regras
...
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.063:71): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.065:72): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file
...

Desligue o selinux temporariamente
setenforce 0

Transforme o arquivo de regras na linguagem do selinux
audit2allow -m local -l -i /tmp/regras > /tmp/regras.te

Compile as regras
checkmodule -M -m -o /tmp/regras.mod /tmp/regras.te

Crie um pacote de instalação
semodule_package -o /tmp/regras.pp -m /tmp/regras.mod

Instale as novas regras
semodule -i /tmp/regras.pp

Ligue o selinux novamente
setenforce 1

Monitore novamente o arquivo "/var/log/messages" e faça novamente a ação que estava sendo proibida. Teoricamente se tudo ocorreu bem, seu site abrirá sem maiores problemas.