Differences

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

Link to this comparison view

instalacao_e_configuracao_de_servidor_oamp_openbsd5.4_apache_mysql_php_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalação e Configuração do Apache + MySQL + PHP + SSL no OpenBSD 5.4 ======
  
 +
 +E ai galera, aqui eu vou abordar a instalação e configuração do Apache trabalhando no <​nowiki>​OpenBSD</​nowiki>​ 5.4 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.4/​packages/​`machine -a`/
 +</​sxh>​
 +
 +Agora vamos mandar instalar o apache2 pois o apache padrão do <​nowiki>​OpenBSD</​nowiki>​ é o 1.3
 +<sxh bash>
 +pkg_add -v apache-httpd
 +</​sxh>​
 +
 +Agora vamos mandar instalar o PHP e o <​nowiki>​MySQL</​nowiki>​ server
 +
 +Agora vamos mandar instalar o php-mysql-5.3.10 e vamos instalar também o <​nowiki>​MySQL</​nowiki>​ server
 +<sxh bash>
 +pkg_add -v php-5.3.27-ap2 php-mysql-5.3.27 mysql-server
 +</​sxh>​
 +
 +Agora vamos inserir uma entrada no apache para ele poder carregar o módulo do php
 +<sxh apache>
 +vim /​etc/​apache2/​httpd2.conf
 +[...]
 +#​Descomentar a linha 458
 +Include /​etc/​apache2/​extra/​httpd-vhosts.conf
 +[...]
 +#Insira na linha 477
 +Include /​etc/​apache2/​extra/​php.conf
 +</​sxh>​
 +
 +Agora vamos criar o php.conf
 +<sxh apache>
 +vim /​etc/​apache2/​extra/​php.conf
 +LoadModule php5_module /​usr/​local/​lib/​php-5.3/​libphp5.so
 +
 +<​IfModule mod_php5.c>​
 +        AddType application/​x-httpd-php .php .phtml .php3
 +        AddType application/​x-httpd-php-source .phps
 +# Most php configs require this
 +        DirectoryIndex index.php
 +</​IfModule>​
 +</​sxh>​
 +
 +
 +Agora precisamos acertar o link do <​nowiki>​MySQL</​nowiki>​ para o PHP
 +<sxh bash>
 +ln -sf /​etc/​php-5.3.sample/​mysql.ini /​etc/​php-5.3/​mysql.ini
 +</​sxh>​
 +
 +Agora vamos ajustar o timezone do php
 +<sxh apache>
 +vim /​etc/​php-5.3.ini
 +[...]
 +date.timezone = '​America/​Sao_Paulo'​
 +</​sxh>​
 +
 +Agora vamos criar o nosso Virtualhost
 +<sxh apache>
 +vim /​etc/​apache2/​extra/​httpd-vhosts.conf
 +<​VirtualHost *:​80> ​
 +     ​ServerAdmin webmaster@douglasqsantos.com.br
 +     ​ServerName openbsd.douglasqsantos.com.br
 +     ​DocumentRoot "/​var/​www/​openbsd"​
 +   <​Directory "/​var/​www/​openbsd">​
 +     ​Options -Indexes +FollowSymLinks +MultiViews
 +     ​AllowOverride All
 +     Order Allow,deny
 +     Allow From All
 +   </​Directory>​
 + 
 +   <​IfModule mod_php5.c>​
 +     ​AddType application/​x-httpd-php .php
 +     ​php_flag expose_php Off
 +     ​php_flag allow_url_fopen Off
 +     ​php_flag allow_url_include Off
 +     ​php_flag magic_quotes_gpc Off
 +     ​php_flag register_globals Off
 +     ​php_flag disable_functions show_source
 +     ​php_flag disable_functions system
 +     ​php_flag disable_functions shell_exec
 +     ​php_flag disable_functions passthru
 +     ​php_flag disable_functions exec
 +     ​php_flag disable_functions popen
 +     ​php_flag disable_functions proc_open
 +     ​php_flag disable_functions symlink
 +     ​php_value upload_max_filesize ​ 15M
 +     ​php_value post_max_size 15M
 +   </​IfModule>​
 +     ​CustomLog /​var/​log/​apache2/​openbsd.douglasqsantos.com.br.access.log combined ​
 +     ​ErrorLog /​var/​log/​apache2/​openbsd.douglasqsantos.com.br.error.log ​
 +     ​LogLevel warn 
 +     ​ServerSignature Off
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Agora vamos criar o diretório para armazenar o nosso site e o diretório para os logs do apache e vamos ajustar as permissões
 +<sxh bash>
 +mkdir /​var/​www/​openbsd /​var/​log/​apache2
 +chown -R _apache2:​_apache2 /​var/​www/​openbsd /​var/​log/​apache2
 +</​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 bash>
 +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.70-log OpenBSD port: mysql-server-5.1.70v0
 +
 +Copyright (c) 2000, 2013, 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> \q
 +Bye
 +</​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>​
 +
 +Agora vamos inserir o apache e o mysql na inicialização do <​nowiki>​OpenBSD</​nowiki>​
 +<sxh apache>
 +vim /​etc/​rc.conf.local
 +httpd2_flags=""​
 +mysqld_flags=""​
 +pkg_scripts="​mysqld httpd2"​
 +</​sxh>​
 +
 +Agora vamos criar um arquivo para testarmos o php
 +<sxh bash>
 +echo "<?​php phpinfo(); ?>" > /​var/​www/​openbsd/​index.php
 +</​sxh>​
 +
 +Agora vamos criar um arquivo para testarmos o php com o <​nowiki>​MySQL</​nowiki>​
 +<sxh php>
 +vim /​var/​www/​openbsd/​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 iniciar o serviço do apache
 +<sxh bash>
 +/​etc/​rc.d/​httpd2 start
 +</​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://​openbsd.douglasqsantos.com.br ou http://​ip_servidor
 +
 +Agora vamos testar o <​nowiki>​MySQL</​nowiki>​ acessando http://​openbsd.douglasqsantos.com.br/​mysql.php ou http://​ip_servidor/​mysql.php
 +
 +====== Habilitando o https ======
 +
 +Vamos criar o diretório para armazenar as chaves ​
 +<sxh bash>
 +mkdir /​etc/​apache2/​ssl && cd /​etc/​apache2/​ssl
 +</​sxh>​
 +
 +
 +Vamos criar a primeira chave do servidor
 +<sxh bash>
 +openssl genrsa -des3 -out 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 server.key -out server.csr
 +Enter pass phrase for 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) []:IT
 +Common Name (eg, fully qualified host name) []:​openbsd.douglasqsantos.com.br
 +Email Address []:​douglas.q.santos@gmail.com
 +
 +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 server.csr -signkey server.key -out server.crt
 +Signature ok
 +subject=/​C=BR/​ST=Parana/​L=Curitiba/​O=Douglas/​OU=IT/​CN=openbsd.douglasqsantos.com.br/​emailAddress=douglas.q.santos@gmail.com
 +Getting Private key
 +Enter pass phrase for 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>
 +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 ajustar o nosso virtualhost,​ aqui vamos forçar o virtualhost a utilizar o https
 +<sxh apache>
 +vim /​etc/​apache2/​extra/​httpd-vhosts.conf
 +<​VirtualHost *:80>
 +    ServerName openbsd.douglasqsantos.com.br
 +    Redirect / https://​openbsd.douglasqsantos.com.br/​
 +</​VirtualHost>​
 +<​VirtualHost *:443>
 +    ServerAdmin webmaster@douglasqsantos.com.br
 +    ServerName openbsd.douglasqsantos.com.br
 +    DocumentRoot "/​var/​www/​openbsd"​
 +     <​Directory "/​var/​www/​openbsd">​
 +       ​Options -Indexes FollowSymLinks MultiViews
 +       ​AllowOverride All
 +       Order Allow,deny
 +       Allow From All
 +     </​Directory>​
 +
 +     <​IfModule mod_php5.c>​
 +       ​AddType application/​x-httpd-php .php
 +       ​php_flag expose_php Off
 +       ​php_flag allow_url_fopen Off
 +       ​php_flag allow_url_include Off
 +       ​php_flag magic_quotes_gpc Off
 +       ​php_flag register_globals Off
 +       ​php_flag disable_functions show_source
 +       ​php_flag disable_functions system
 +       ​php_flag disable_functions shell_exec
 +       ​php_flag disable_functions passthru
 +       ​php_flag disable_functions exec
 +       ​php_flag disable_functions popen
 +       ​php_flag disable_functions proc_open
 +       ​php_flag disable_functions symlink
 +       ​php_value upload_max_filesize ​ 15M
 +       ​php_value post_max_size 15M
 +     </​IfModule>​
 +     ​CustomLog /​var/​log/​apache2/​openbsd.douglasqsantos.com.br-access.log combined
 +     ​ErrorLog /​var/​log/​apache2/​openbsd.douglasqsantos.com.br-error.log
 +     ​LogLevel warn
 +     ​SSLEngine on
 +     ​SSLCipherSuite ALL:​!ADH:​!EXPORT56:​RC4+RSA:​+HIGH:​+MEDIUM:​+LOW:​+SSLv2:​+EXP:​+eNULL
 +     ​SSLCertificateFile "/​etc/​apache2/​ssl/​server.crt"​
 +     ​SSLCertificateKeyFile "/​etc/​apache2/​ssl/​server.key"​
 +    <​FilesMatch "​\.(cgi|shtml|phtml|php)$">​
 +      SSLOptions +StdEnvVars
 +    </​FilesMatch>​
 +     ​BrowserMatch "​.*MSIE.*"​ \
 +     ​nokeepalive ssl-unclean-shutdown \
 +     ​downgrade-1.0 force-response-1.0
 +     ​ServerSignature Off
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Agora vamos adicionar no httpd2 o listen 443 para que o apache possa escutar na porta de https
 +<sxh apache>
 +vim /​etc/​apache2/​httpd2.conf
 +[...]
 +#Adicione na linha 42
 +Listen 443
 +</​sxh>​
 +
 +Agora vamos reiniciar o apache
 +<sxh bash>
 +/​etc/​rc.d/​httpd2 restart
 +</​sxh>​
 +
 +
 +Agora já podemos testar o apache em:
 +
 +Agora vamos testar o php acessando https://​openbsd.douglasqsantos.com.br ou https://​ip_servidor
 +
 +Agora vamos testar o <​nowiki>​MySQL</​nowiki>​ acessando https://​openbsd.douglasqsantos.com.br/​mysql.php ou 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