segunda-feira, dezembro 04, 2006

Instalação do Apache2, com suporte a SVN, PHP4 e do servidor MYSQL4 à partir dos fontes, no Slackware 11.

Instalação do Apache2, com suporte a SVN, PHP4 e do servidor MYSQL4 à partir dos fontes, no Slackware 11.
jmarcelo.alencar@gmail.com (slackware-ce)

Para ser usado como guia para repetição da instalação por bolsistas do GREAT-UFC.

Este tutorial visa instalar o Apache2 com suporte à WebDav para o SVN e o MYSQL versão 4.1.xx . A utilização da versão antiga do MYSQL se justifica pois o dotproject se adapta melhor a versões antigas do que a série 5.0.xx. Os fontes foram baixados em /root/fontes. Eu costumo deixar os fontes mesmo depois da instalação, para uma possível remoção ou atualização. Como costumam ser pequenos em tamanho, isto não acarreta nenhum desperdício de espaço.

Esta instalação seguirá o seguinte esquema:
1) Remoção dos pacotes presentes na distribuição
2) Compilando e instalando o Apache2.
3) Compilando e instalando o MYSQL.
4) Compilando e instalando o PHP4.
5) Compilando e instalando o SVN.

Detalhando:
1) Remoção dos pacotes presentes na distribuição.

Utilizando a ferramenta pkgtool como super-usuário, é possível retirar todos os seguintes pacotes:

apache-1.3.37-i486-2
mysql-5.0.24a-i486-1
php-4.4.4-i486-3
subversion-1.4.0-i486-1

Após isto, o sistema estará limpo e pronto para a instalação à partir dos fontes.

2) Compilando e instalando o Apache2.

Primeiro passo, baixe os fontes do apache2 em www.apache.org e do php em www.php.net. Para o apache2, escolhi a versão 2.0.59, que não é a mais recente, porém oferece menos riscos de imcompatibilidade. O mesmo para a versão 4.4.4 que escolhi para o PHP.

Para o Apache2:

# tar -xzvf httpd-2.0.59.tar.gz
# ./configure --prefix=/usr/local/apache2 --enable-auth-dbm --enable-ldap --enable-auth-ldap --enable-ssl --enable-dav --enable-cgi --enable-so --with-ldap
# make
# make install

Pronto. São muitas opções do ./configure, mas de importante mesmo temos o "--enable-so" e o "--enable-dav", o primeiro para o php e o segundo para o SVN. Também mudarei o /etc/rc.d/rc.http, ficando da seguinte forma:

#!/bin/sh
#
# /etc/rc.d/rc.httpd
#
# Start/stop/restart the Apache web server.
#
# To make Apache start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.httpd
#

case "$1" in
'start')
/usr/local/apache2/bin/apachectl start ;;
'stop')
/usr/local/apache2/bin/apachectl stop ;;
'restart')
/usr/local/apache2/bin/apachectl restart ;;
*)
echo "usage $0 start|stop|restart" ;;
esac

Agora o Apache2 está instalado corretamente.

3) Compilando e instalando o Mysql.
Simples e direto.

# tar -xzvf mysql-4.1.22.tar.gz
# ./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql
# make
# make install
# ldconfig

Compilação feita, vamos à configuração.

# /usr/local/mysql/bin/mysql_install_db
# chown -R mysql.mysql /usr/local/mysql/var/
# /usr/local/mysql/bin/mysqld_safe &
# /usr/local/mysql/bin/mysqladmin -u root password

Configuração inicial feita. Da mesma maneira que fizemos com o apache2, vamos pegar o script já existente para o mysql, o rc.mysqld e adaptá-lo para a nova localidade do mysql. Ficaria assim:

#!/bin/sh
# Start/stop/restart mysqld.
#
# Copyright 2003 Patrick J. Volkerding, Concord, CA
# Copyright 2003 Slackware Linux, Inc., Concord, CA
#
# This program comes with NO WARRANTY, to the extent permitted by law.
# You may redistribute copies of this program under the terms of the
# GNU General Public License.

# To start MySQL automatically at boot, be sure this script is executable:
# chmod 755 /etc/rc.d/rc.mysqld

# Before you can run MySQL, you must have a database. To install an initial
# database, do this as root:
#
# su - mysql
# mysql_install_db
#
# Note that step one is becoming the mysql user. It's important to do this
# before making any changes to the database, or mysqld won't be able to write
# to it later (this can be fixed with 'chown -R mysql.mysql /var/lib/mysql').

# To allow outside connections to the database comment out the next line.
# If you don't need incoming network connections, then leave the line
# uncommented to improve system security.
#SKIP="--skip-networking"

# Start mysqld:
mysqld_start() {
if [ -x /usr/local/mysql/bin/mysqld_safe ]; then
# If there is an old PID file (no mysqld running), clean it up:
if [ -r /var/run/mysql/mysql.pid ]; then
if ! ps axc | grep mysqld 1> /dev/null 2> /dev/null ; then
echo "Cleaning up old /var/run/mysql/mysql.pid."
rm -f /var/run/mysql/mysql.pid
fi
fi
/usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var/ --pid-file=/var/run/mysql/mysql.pid $SKIP &
fi
}

# Stop mysqld:
mysqld_stop() {
# If there is no PID file, ignore this request...
if [ -r /var/run/mysql/mysql.pid ]; then
killall mysqld
# Wait at least one minute for it to exit, as we don't know how big the DB is...
for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do
if [ ! -r /var/run/mysql/mysql.pid ]; then
break;
fi
sleep 1
done
if [ "$second" = "60" ]; then
echo "WARNING: Gave up waiting for mysqld to exit!"
sleep 15
fi
fi
}

# Restart mysqld:
mysqld_restart() {
mysqld_stop
mysqld_start
}

case "$1" in
'start')
mysqld_start
;;
'stop')
mysqld_stop
;;
'restart')
mysqld_restart
;;
*)
echo "usage $0 start|stop|restart"
esac

Simples, só alteramos a localização do executável. Antes de executar este script é bom matar os processos anteriores com "killall mysqld". Pronto, mysql configurado. Agora vamos colocar tanto os executáveis do mysql quanto do apache2 na variável de ambiente PATH. Basta acrescentar uma linha no /etc/profile :

PATH=$PATH:/usr/local/apache2/bin:/usr/local/mysql/bin:.

Para carregar, digite um "source /etc/profile". Também adicione as seguintes linhas :

/usr/local/apache2/lib
/usr/local/mysql/lib

No arquivo /etc/ld.so.conf e digite "ldconfig".

4) Compilando e instalando o PHP4.

Com os fontes, vamos descompactá-los.

# tar -xzvf php-4.4.4.tar.gz

Para o configure, vou adaptar as opções de http://www.web-tech-india.com/articles/php/compiling_php_apache/php4.php. São muitas, mas vamos ter certeza que tem tudo que pode ser necessário. Ficaria assim:

# ../configure --with-apxs2=/usr/local/apache2/bin/apxs --prefix=/usr/local/apache2/php --with-config-file-path=/usr/local/php --enable-bcmath --enable-calendar --enable-dbase --enable-dbx --enable-dio --enable-exif --enable-filepro --enable-ftp --enable-gd-native-ttf --enable-mbstring --enable-mbstr-enc-trans --enable--mbregex --enable-overload --enable-shmop --enable-ucd-snmp-hack --enable-sockets --enable-aggregate --enable-sysvsem --enable-sysvshm --enable-tokenizer --enable-wddx --enable-yp --enable-versioning --with-mod-charset --with-openssl --with-zlib-dir --with-zlib --with-bz2 --with-jpeg-dir --with-tiff-dir --with-curl --with-dba --with-gd --with-png-dir --with-xpm-dir --with-freetype-dir --with-ttf --with-t1lib --with-gettext --with-gmp --with-hyperwave --with-kerberos --with-imap-ssl --with-ldap --with-mhash --with-mysql=/usr/local/mysql --with-pspell --with-regex=php --with-xmlrpc --with-iconv --enable-track-vars --enable-trans-sid --with-tsrm-st --with-tsrm-pthreads --enable-debug

Dando tudo certo, pare o apache2 e execute:
# make
# make install

Observe que em /usr/local/apache2/modules existe um arquivo chamado libphp4.so. Vamos adicionar a seguinte linha ao arquivo /usr/local/apache2/conf/httpd.conf :

AddType application/x-httpd-php .php

Próxima as outras linhas que começam com AddType. E altere a linha :

DirectoryIndex index.html index.html.var

para

DirectoryIndex index.html index.html.var index.php

Agora crie um arquivo info.php em /usr/local/apache2/htdocs com o seguinte conteúdo:

<?php
phpinfo();
?>

Depois, inicie o apache2 e direcione um browser para http://localhost/info.php. Se não aparecer nenhum erro, a instalação foi concluída com sucesso.

5) Compilando e instalando o SVN.

O passo mais interessante acontece agora. Vamos instalar e configurar o SVN, permitindo que ele seja acessado através do Apache2.
Primeiro, vamos pegar os fontes mais recentes em http://subversion.tigris.org. Em seguida :

# tar -jxvf subversion-1.4.2.tar.bz2
# ./configure --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install

Primeiro passo concluído. Irei criar um repositório de teste no diretório /opt/repositorio . Como fazer isto também está descrito no
arquivo README que acompanha os fontes do SVN.

$ svnadmin create /opt/repositorio

Vou criar um pequeno projeto na pasta /tmp/projeto, com alguns arquivos de exemplo, que podem ser textos simples. Vamos colocá-lo no repositório.

$ svn import /tmp/projeto file:///opt/repositorio -m "Testando"

Para testar, faça o checkout para outra pasta local.

$ svn checkout file:////opt/repositorio project

Veja o conteúdo da pasta project. Lá estarão os arquivos. Faça um alteração nos arquivos e execute.

$ svn commit --message "Testando novamente"

Não retornando nenhum erro, o repositório foi criado corretamente.
Vamos fazer uma configuração básica, mas que é capaz de mostrar muito do que pode ser feito. Iremos alterar o /usr/local/apache2/conf/httpd.conf para indicar algumas informações básicas, dentre elas o nome do usuário (User) e grupo (Group) do servidor, o nome do servidor e a porta que ele vai usar.

Os campos de User e Group devem ficar assim:

User nobody
Group nogroup

nobody é usado no Slackware por padrão. Temos que verificar no mesmo /usr/local/apache2/conf/httpd.conf se as linhas :

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

Estão descomentada. Agora começaremos no final do httpd.conf o seguinte:

# Repositórios SVN

<Location /svn>
DAV svn
SVNPath /opt/repositorio
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn/auth/svn-auth-file
Require valid-user
</Location>

Está uma configuração básica. O repositório já deve estar acessível. Os usuários precisarão estar inclusos no arquivo /etc/svn/auth/svn-auth-file para poderem acessar o repositório. Como o Apache está em execução como o usuário nobody, este usuário tem que ter permissão para escrever no repositório. Então :

chown -R nobody.nogroup /opt/repositorio

Para incluir um usuário no arquivo, basta:

htpasswd -cm /etc/svn/auth/svn-auth-file joao

E entrar com usuário e senha para joao. Isto é apenas a configuração básica. O svn ainda permite restringir acesso a diretórios ao mesmo tempo que acesso a outros dentro do repositório são liberados. Agora, direcione um browser para http://localhost/svn e verifique se é requisitada autenticação. Caso consiga logar com o usuário joao, a instalação foi feita corretamente.

Mais informações em http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html, lembrando que boa parte desta documentação direciona para os tutoriais do Apache2. Uma boa dica para ativar a SSL/TLS é seguir a dica em http://www.vivaolinux.com.br/dicas/verDica.php?codigo=1512#
Post a Comment

Nenhum comentário: