Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalacao_e_configuracao_de_servidor_oamp_openbsd_apache_em_chroot_mysql_php_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== 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 <​nowiki>​OpenBSD</​nowiki>​ 5.1 trabalhando em conjunto com o <​nowiki>​MySQL</​nowiki>​ e PHP.
 +
 +Vamos setar o endereço do nosso repositório
 +<sxh bash>
 +export PKG_PATH=ftp://​openbsd.locaweb.com.br/​pub/​OpenBSD/​5.1/​packages/​`machine -a`/
 +</​sxh>​
 +
 +Agora vamos mandar instalar o PHP e o <​nowiki>​MySQL</​nowiki>​ server
 +
 +Primeiro precisamos descobrir a versão da biblioteca php-mysql
 +<sxh bash>
 +pkg_add php-mysql
 +Ambiguous: php-mysql could be php-mysql-5.3.10 php-mysql-5.2.17p5
 +</​sxh>​
 +
 +Pronto aqui temos que a versão da nossa biblioteca PHP é php-mysql-5.3.10 vamos instalar ela e o <​nowiki>​MySQL</​nowiki>​ server
 +<sxh bash>
 +pkg_add -v php-mysql-5.3.10 mysql-server
 +</​sxh>​
 +
 +Agora precisamos acertar o link do php para o Apache
 +<sxh bash>
 +ln -s /​var/​www/​conf/​modules.sample/​php-5.3.conf \
 +        /​var/​www/​conf/​modules/​php.conf
 +</​sxh>​
 +
 +Agora precisamos acertar o link do <​nowiki>​MySQL</​nowiki>​ para o PHP
 +<sxh bash>
 +ln -fs /​etc/​php-5.3.sample/​mysql.ini \
 +        /​etc/​php-5.3/​mysql.ini
 +</​sxh>​
 +
 +Agora vamos instalar as tabelas base do <​nowiki>​MySQL</​nowiki>​
 +<sxh bash>
 +/​usr/​local/​bin/​mysql_install_db
 +</​sxh>​
 +
 +Agora vamos iniciar o nosso <​nowiki>​MySQL</​nowiki>​
 +<sxh bash>
 +/​etc/​rc.d/​mysqld start
 +</​sxh>​
 +
 +Agora vamos definir a senha para o root do <​nowiki>​MySQL</​nowiki>​
 +<sxh bash>
 +/​usr/​local/​bin/​mysqladmin -u root password '​S3Nh4'​
 +</​sxh>​
 +
 +Agora vamos acessar o nosso <​nowiki>​MySQL</​nowiki>​ para verificar se esta tudo ok
 +<sxh sql>
 +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
 +</​sxh>​
 +
 +Como pode ser notado o nosso <​nowiki>​MySQL</​nowiki>​ está ok
 +
 +Agora vamos acertar as permissões do tmp da jaula do <​nowiki>​MySQL</​nowiki>​
 +<sxh bash>
 +chmod 1777 /​var/​www/​tmp
 +</​sxh>​
 +
 +Agora vamos criar o diretório que vai receber o socket do <​nowiki>​MySQL</​nowiki>​ e vamos acertar as permissões
 +<sxh bash>
 +mkdir -p /​var/​www/​var/​run/​mysql
 +chown _mysql:​_mysql /​var/​www/​var/​run/​mysql
 +chmod 711 /​var/​www/​var/​run/​mysql
 +</​sxh>​
 +
 +Vamos fazer um backup do arquivo my.cnf
 +<sxh bash>
 +cp /etc/my.cnf /​etc/​my.cnf.bkp
 +</​sxh>​
 +
 +Agora vamos acertar a localização do socket do <​nowiki>​MySQL</​nowiki>​
 +<sxh apache>
 +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
 +[...]
 +</​sxh>​
 +
 +Agora vamos acertar o rc.conf para inicializar o Apache e o <​nowiki>​MySQL</​nowiki>​
 +<sxh apache>
 +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"​
 +</​sxh>​
 +
 +
 +Agora vamos criar um arquivo para testarmos o php
 +<sxh bash>
 +echo "<?​php phpinfo(); ?>" > /​var/​www/​htdocs/​phpinfo.php
 +</​sxh>​
 +
 +Agora vamos criar um arquivo para testarmos o php com o <​nowiki>​MySQL</​nowiki>​
 +<sxh php>
 +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);​
 +?>
 +</​sxh>​
 +
 +Agora vamos mandar reiniciar o nosso servidor para recarregarmos todas as novas configurações
 +<sxh bash>
 +shutdown -r now
 +</​sxh>​
 +
 +Agora vamos testar o php acessando http://​ip_servidor/​phpinfo.php
 +
 +Agora vamos testar o <​nowiki>​MySQL</​nowiki>​ acessando http://​ip_servidor/​mysql.php
 +
 +====== Habilitando o https ======
 +
 +Vamos criar a primeira chave do servidor
 +<sxh bash>
 +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:​
 +</​sxh>​
 +
 +Agora vamos gerar um pedido de assinatura do nosso certificado
 +<sxh bash>
 + ​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
 +</​sxh>​
 +
 +Agora vamos assinar o nosso certificado
 +<sxh bash>
 +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:​
 +</​sxh>​
 +
 +Agora vamos tirar a senha do certificado pois senão a cada vez que iniciarmos o apache ele vai solicitar a senha
 +<sxh bash>
 +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
 +</​sxh>​
 +
 +Agora vamos acertar o /​etc/​rc.conf para o apache reconhecer o https
 +<sxh apache>
 +vim /​etc/​rc.conf
 +[...]
 +httpd_flags="​-DSSL"​
 +</​sxh>​
 +
 +Agora vamos parar o apache
 +<sxh bash>
 +apachectl stop
 +/​usr/​sbin/​apachectl stop: httpd stopped
 +</​sxh>​
 +
 +Agora vamos inicializar ele com o suporte a ssl
 +<sxh bash>
 +apachectl startssl
 +/​usr/​sbin/​apachectl startssl: httpd started
 +</​sxh>​
 +
 +Agora já podemos testar o apache em:
 +
 +Agora vamos testar o php acessando https://​ip_servidor/​phpinfo.php
 +
 +Agora vamos testar o <​nowiki>​MySQL</​nowiki>​ acessando https://​ip_servidor/​mysql.php
 +
 +====== Referências ======
 +
 +  - http://​techdebug.com/​blog/​2008/​09/​29/​mysql-on-openbsd-43-using-the-apache-chroot/​
 +  - http://​www.h-i-r.net/​2009/​10/​oamp-openbsd-46-chroot-apache-mysql-php.html
 +  - http://​php.net/​manual/​en/​function.mysql-connect.php