Instalação e Configuração do Apache em Chroot + MySQL + PHP + SSL no OpenBSD 5.1
E ai galera, aqui eu vou abordar a instalação e configuração do Apache trabalhando em modo chroot no OpenBSD 5.1 trabalhando em conjunto com o MySQL e PHP.
Vamos setar o endereço do nosso repositório
export PKG_PATH=ftp://openbsd.locaweb.com.br/pub/OpenBSD/5.1/packages/`machine -a`/
Agora vamos mandar instalar o PHP e o MySQL server
Primeiro precisamos descobrir a versão da biblioteca php-mysql
pkg_add php-mysql Ambiguous: php-mysql could be php-mysql-5.3.10 php-mysql-5.2.17p5
Pronto aqui temos que a versão da nossa biblioteca PHP é php-mysql-5.3.10 vamos instalar ela e o MySQL server
pkg_add -v php-mysql-5.3.10 mysql-server
Agora precisamos acertar o link do php para o Apache
ln -s /var/www/conf/modules.sample/php-5.3.conf \ /var/www/conf/modules/php.conf
Agora precisamos acertar o link do MySQL para o PHP
ln -fs /etc/php-5.3.sample/mysql.ini \ /etc/php-5.3/mysql.ini
Agora vamos instalar as tabelas base do MySQL
/usr/local/bin/mysql_install_db
Agora vamos iniciar o nosso MySQL
/etc/rc.d/mysqld start
Agora vamos definir a senha para o root do MySQL
/usr/local/bin/mysqladmin -u root password 'S3Nh4'
Agora vamos acessar o nosso MySQL para verificar se esta tudo ok
mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.60-log OpenBSD port: mysql-server-5.1.60 Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> quit
Como pode ser notado o nosso MySQL está ok
Agora vamos acertar as permissões do tmp da jaula do MySQL
chmod 1777 /var/www/tmp
Agora vamos criar o diretório que vai receber o socket do MySQL e vamos acertar as permissões
mkdir -p /var/www/var/run/mysql chown _mysql:_mysql /var/www/var/run/mysql chmod 711 /var/www/var/run/mysql
Vamos fazer um backup do arquivo my.cnf
cp /etc/my.cnf /etc/my.cnf.bkp
Agora vamos acertar a localização do socket do MySQL
vim /etc/my.cnf [...] [client] #password = your_password port = 3306 #Deixar o socket como abaixo socket = /var/www/var/run/mysql/mysql.sock [...] [mysqld] port = 3306 #Deixar o socket como abaixo socket = /var/www/var/run/mysql/mysql.sock [...]
Agora vamos acertar o rc.conf para inicializar o Apache e o MySQL
vim /etc/rc.conf [...] #Deixar o httpd_flags como abaixo httpd_flags="" # for normal use: "" (or "-DSSL" after reading ssl(8)) #Deixar o pkg_scripts como abaixo pkg_scripts="mysqld"
Agora vamos criar um arquivo para testarmos o php
echo "<?php phpinfo(); ?>" > /var/www/htdocs/phpinfo.php
Agora vamos criar um arquivo para testarmos o php com o MySQL
vim /var/www/htdocs/mysql.php <?php $link = mysql_connect('localhost', 'root', 'S3Nh4'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($link); ?>
Agora vamos mandar reiniciar o nosso servidor para recarregarmos todas as novas configurações
shutdown -r now
Agora vamos testar o php acessando http://ip_servidor/phpinfo.php
Agora vamos testar o MySQL acessando http://ip_servidor/mysql.php
Habilitando o https
Vamos criar a primeira chave do servidor
openssl genrsa -des3 -out /etc/ssl/private/server.key 1024 Generating RSA private key, 1024 bit long modulus ..........................................++++++ ...++++++ e is 65537 (0x10001) Enter pass phrase for /etc/ssl/private/server.key: Verifying - Enter pass phrase for /etc/ssl/private/server.key:
Agora vamos gerar um pedido de assinatura do nosso certificado
openssl req -new -key /etc/ssl/private/server.key -out /etc/ssl/private/server.csr Enter pass phrase for /etc/ssl/private/server.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) []:BR State or Province Name (full name) []:Parana Locality Name (eg, city) []:Curitiba Organization Name (eg, company) []:Douglas Organizational Unit Name (eg, section) []:TI Common Name (eg, fully qualified host name) []:openbsd.douglasqsantos.com.br Email Address []:douglas@douglasqsantos.com.br Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:Douglas
Agora vamos assinar o nosso certificado
openssl x509 -req -days 365 -in /etc/ssl/private/server.csr -signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt Signature ok subject=/C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=openbsd.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br Getting Private key Enter pass phrase for /etc/ssl/private/server.key:
Agora vamos tirar a senha do certificado pois senão a cada vez que iniciarmos o apache ele vai solicitar a senha
cd /etc/ssl/private cp server.key server.key.orig openssl rsa -in server.key.orig -out server.key Enter pass phrase for server.key.orig: writing RSA key
Agora vamos acertar o /etc/rc.conf para o apache reconhecer o https
vim /etc/rc.conf [...] httpd_flags="-DSSL"
Agora vamos parar o apache
apachectl stop /usr/sbin/apachectl stop: httpd stopped
Agora vamos inicializar ele com o suporte a ssl
apachectl startssl /usr/sbin/apachectl startssl: httpd started
Agora já podemos testar o apache em:
Agora vamos testar o php acessando https://ip_servidor/phpinfo.php
Agora vamos testar o MySQL acessando https://ip_servidor/mysql.php