Differences

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

Link to this comparison view

instalando_e_configurando_o_apache2.4_com_php_com_mysql_no_freebsd_9.2_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalando e Configurando o Apache 2.4 + PHP + MySQL no FreeBSD 9.2  ======
  
 +
 +E ai galera, aqui eu vou abordar a instalação e a configuração do Apache 2.4 com suporte a PHP e <​nowiki>​MySQL</​nowiki>​.
 +
 +O que vou utilizar:
 +  * <​nowiki>​FreeBSD</​nowiki>​ 9.2
 +  * IP: 192.168.1.60/​24
 +  * Hostname: freebsd.douglasqsantos.com.br
 +
 +
 +Vamos ajustar o /etc/hosts do nosso servidor
 +<sxh bash>
 +vim /etc/hosts
 +[...]
 +192.168.1.60 ​           freebsd.douglasqsantos.com.br freebsd
 +</​sxh>​
 +
 +Vamos obter o ports para podermos instalar os daemons necessários
 +
 +<sxh bash>
 +portsnap fetch && portsnap extract && portsnap update
 +</​sxh>​
 +
 +
 +Eu vou mandar desabilitar o DIALOG que é aquela telinha chata que fica aparecendo quando mandamos instalar algo :P
 +<sxh bash>
 +echo "​NO_DIALOG=yes"​ >> /​etc/​make.conf
 +</​sxh>​
 +
 +Agora vamos mandar instalar o apache 2.4, vamos acessar o seu ports
 +<sxh bash>
 +cd /​usr/​ports/​www/​apache24
 +</​sxh>​
 +
 +Agora vamos mandar compilar e instalar ele
 +<sxh bash>
 +make install clean
 +</​sxh>​
 +
 +Agora precisamos inserir alguns módulos na inicialização do sistema
 +<sxh bash>
 +echo '​accf_http_load="​YES"'​ >> /​boot/​loader.conf
 +echo '​accf_data_load="​YES"'​ >> /​boot/​loader.conf
 +</​sxh>​
 +
 +Agora vamos carregas estes módulos no kernel
 +<sxh bash>
 +kldload accf_http
 +kldload accf_data
 +</​sxh>​
 +
 +Agora vamos adicionar o apache na inicialização do sistema
 +<sxh bash>
 +echo '​apache24_enable="​YES"'​ >> /​etc/​rc.conf
 +</​sxh>​
 +
 +Para obter informações sobre a variável que vamos inserir no rc.conf podemos executar o seguinte comando
 +<sxh bash>
 +/​usr/​local/​etc/​rc.d/​apache24 rcvar
 +# apache24
 +#
 +apache24_enable="​NO"​
 +#   ​(default:​ ""​)
 +</​sxh>​
 +
 +Agora vamos inicializar o nosso apache para testar a configuração
 +<sxh bash>
 +/​usr/​local/​sbin/​apachectl start
 +</​sxh>​
 +
 +Agora já podemos acessar http://​192.168.1.60 para verificar se o apache está funcionando
 +
 +====== Agora vamos a instalação do PHP ======
 +
 +
 +Vamos acessar o ports do php e vamos mandar instalar ele
 +<sxh bash>
 +cd /​usr/​ports/​lang/​php55 && make WITH_APACHE=yes install clean 
 +</​sxh>​
 +
 +Agora vamos ajustar o php.ini
 +<sxh bash>
 +cp /​usr/​local/​etc/​php.ini-production /​usr/​local/​etc/​php.ini
 +</​sxh>​
 +
 +Agora vamos mandar compilar as extensões para o php
 +
 +Vamos acessar o ports das extensões e vamos mandar instalar elas
 +<sxh bash>
 +cd /​usr/​ports/​lang/​php55-extensions && make WITH_MYSQL=yes WITH_MYSQLI=yes WITH_PDO_MYSQL=yes install clean
 +</​sxh>​
 +
 +Agora vamos ajustar o apache
 +<sxh apache>
 +vim /​usr/​local/​etc/​apache24/​httpd.conf ​
 +[...]
 +    #Deixe a linha 255 da seguinte forma para que o apache possa interpretar o index do php
 +    DirectoryIndex index.html index.php
 +[...]
 +    #Adicione na linha 385
 +    AddType application/​x-httpd-php .php
 +    AddType application/​x-httpd-php-source .phps
 +[...]
 +
 +</​sxh>​
 +
 +Agora vamos remover o index.html que é o default do apache
 +<sxh bash>
 +rm -rf /​usr/​local/​www/​apache24/​data/​index.html ​
 +</​sxh>​
 +
 +Agora vamos criar um index.php
 +<sxh php>
 +vim /​usr/​local/​www/​apache24/​data/​index.php
 +<?php
 +phpinfo();
 +?>
 +</​sxh>​
 +
 +Agora já podemos reiniciar o apache
 +<sxh bash>
 +/​usr/​local/​sbin/​apachectl restart
 +</​sxh>​
 +
 +Agora vamos acessar o http://​192.168.1.60 aqui vamos ter a configuração do php.
 +
 +====== Instalação do MySQL ======
 +
 +Vamos acessar o ports do <​nowiki>​MySQL</​nowiki>​ e vamos mandar instalar ele
 +<sxh bash>
 +cd /​usr/​ports/​databases/​mysql56-server/​ && make install clean
 +</​sxh>​
 +
 +Agora vamos inserir ele na inicialização do sistema
 +<sxh bash>
 +echo '​mysql_enable="​YES"'​ >> /​etc/​rc.conf
 +</​sxh>​
 +
 +Agora vamos ajustar o arquivo de configuração do <​nowiki>​MySQL</​nowiki>​
 +<sxh bash>
 +cp /​usr/​local/​share/​mysql/​my-default.cnf /etc/my.cnf
 +</​sxh>​
 +
 +Agora vamos habilitar o <​nowiki>​MySQL</​nowiki>​ escutar em todas as interfaces
 +<sxh bash>
 +echo "​bind-address = 0.0.0.0"​ >> /etc/my.cnf
 +</​sxh>​
 +
 +Agora vamos inciar o <​nowiki>​MySQL</​nowiki>​
 +<sxh bash>
 +/​usr/​local/​etc/​rc.d/​mysql-server onestart
 +</​sxh>​
 +
 +Agora vamos definir uma senha para 
 +<sxh bash>
 +mysqladmin -u root password '​senha'​
 +</​sxh>​
 +
 +Agora vamos testar a conexão com o <​nowiki>​MySQL</​nowiki>​
 +<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.6.14 Source distribution
 +
 +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>​
 +
 +Agora vamos consultar as portas que estão escutando
 +<sxh bash>
 +sockstat -4 -l
 +USER     ​COMMAND ​   PID   FD PROTO  LOCAL ADDRESS ​        ​FOREIGN ADDRESS ​     ​
 +mysql    mysqld ​    34711 10 tcp4   ​*:​3306 ​               *:*
 +www      httpd      3286  4  tcp4   ​*:​80 ​                 *:*
 +www      httpd      3283  4  tcp4   ​*:​80 ​                 *:*
 +www      httpd      3282  4  tcp4   ​*:​80 ​                 *:*
 +www      httpd      3281  4  tcp4   ​*:​80 ​                 *:*
 +www      httpd      3280  4  tcp4   ​*:​80 ​                 *:*
 +www      httpd      3279  4  tcp4   ​*:​80 ​                 *:*
 +root     ​httpd ​     3278  4  tcp4   ​*:​80 ​                 *:*
 +root     ​sendmail ​  ​689 ​  ​3 ​ tcp4   ​127.0.0.1:​25 ​         *:*
 +root     ​sshd ​      ​686 ​  ​4 ​ tcp4   ​*:​22 ​                 *:*
 +root     ​syslogd ​   582   ​7 ​ udp4   ​*:​514 ​                *:*
 +</​sxh>​
 +
 +O nosso apache e o nosso <​nowiki>​MySQL</​nowiki>​ está escutando em qualquer interface.
 +
 +====== Criação de VirtualHost ======
 +
 +Agora vamos ver como criamos um Virtual host
 +
 +Vamos habilitar a linha no httpd.conf para ser reconhecido o Virtual Host
 +<sxh apache>
 +vim /​usr/​local/​etc/​apache24/​httpd.conf
 +[...]
 +#​Descomentar a linha abaixo. linha: 473
 +Include etc/​apache24/​extra/​httpd-vhosts.conf
 +[...]
 +</​sxh>​
 +
 +Agora vamos deixar o arquivo de virtualhost da seguinte forma
 +<sxh apache>
 +vim /​usr/​local/​etc/​apache24/​extra/​httpd-vhosts.conf
 +<​VirtualHost *:80>
 +     ​ServerAdmin webmaster@douglasqsantos.com.br
 +     ​ServerName freebsd.douglasqsantos.com.br
 +     ​DocumentRoot "/​usr/​local/​www/​freebsd"​
 +   <​Directory "/​usr/​local/​www/​freebsd">​
 +     ​Options +FollowSymLinks +MultiViews
 +     ​AllowOverride All
 +     ​Require all granted
 +   </​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/​apache24/​freebsd.douglasqsantos.com.br-access.log combined
 +     ​ErrorLog /​var/​log/​apache24/​freebsd.douglasqsantos.com.br-error.log
 +     ​LogLevel warn
 +     ​ServerSignature Off
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Agora vamos criar o diretório para armazenar os dados do site e o diretório para os logs e vamos ajustar as permissões
 +<sxh bash>
 +mkdir -p /​usr/​local/​www/​freebsd && chown -R www:www /​usr/​local/​www/​freebsd ​
 +mkdir -p /​var/​log/​apache24/​ && chown -R www:www /​var/​log/​apache24/​
 +</​sxh>​
 +
 +Agora vamos criar o index
 +<sxh php>
 +vim /​usr/​local/​www/​freebsd/​index.php ​
 +<?php
 +
 +echo "<​h1>​FreeBSD</​h1>";​
 +
 +?>
 +</​sxh>​
 +
 +Agora vamos reiniciar o apache
 +<sxh bash>
 +/​usr/​local/​etc/​rc.d/​apache24 restart
 +</​sxh>​
 +
 +
 +Agora vamos habilitar o SSL
 +
 +Vamos criar um diretório para armazenar as chaves
 +<sxh bash>
 +mkdir -p /​usr/​local/​etc/​apache24/​ssl
 +</​sxh>​
 +
 +Agora vamos gerar a chave principal
 +<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 server.key: #SENHA
 +Verifying - Enter pass phrase for server.key: #SENHA
 +</​sxh>​
 +
 +Agora vamos gerar a requisição de assinatura
 +<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) [AU]:BR
 +State or Province Name (full name) [Some-State]:​Parana
 +Locality Name (eg, city) []:Curitiba
 +Organization Name (eg, company) [Internet Widgits Pty Ltd]:​Douglas
 +Organizational Unit Name (eg, section) []:IT
 +Common Name (e.g. server FQDN or YOUR name) []:​freebsd.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 auto-assinar o nosso certificado
 +<sxh bash>
 +openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
 +Signature ok
 +subject=/​C=BR/​ST=Parana/​L=Curitiba/​O=Douglas/​OU=IT/​CN=freebsd.douglasqsantos.com.br/​emailAddress=douglas@douglasqsantos.com.br
 +Getting Private key
 +Enter pass phrase for server.key:
 +</​sxh>​
 +
 +Agora vamos ajustar as permissões das chaves
 +<sxh bash>
 +chmod 0400 server.*
 +cp server.key server.key.orig
 +</​sxh>​
 +
 +Agora vamos tirar a senha da chave
 +<sxh bash>
 +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
 +<sxh apache>
 +vim /​usr/​local/​etc/​apache24/​extra/​httpd-vhosts.conf
 +Listen 443
 +<​VirtualHost *:80>
 +     ​ServerName freebsd.douglasqsantos.com.br
 +     ​Redirect / https://​freebsd.douglasqsantos.com.br/​
 +</​VirtualHost>​
 +<​VirtualHost *:443>
 +     ​ServerAdmin webmaster@douglasqsantos.com.br
 +     ​ServerName freebsd.douglasqsantos.com.br
 +  DocumentRoot "/​usr/​local/​www/​freebsd"​
 +   <​Directory "/​usr/​local/​www/​freebsd">​
 +     ​Options +FollowSymLinks +MultiViews
 +     ​AllowOverride All
 +     ​Require all granted
 +   </​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>​
 +   ​SSLEngine on
 +   ​SSLCipherSuite ALL:​!ADH:​!EXPORT56:​RC4+RSA:​+HIGH:​+MEDIUM:​+LOW:​+SSLv2:​+EXP:​+eNULL
 +   ​SSLCertificateFile "/​usr/​local/​etc/​apache24/​ssl/​server.crt"​
 +   ​SSLCertificateKeyFile "/​usr/​local/​etc/​apache24/​ssl/​server.key"​
 +   <​FilesMatch "​\.(cgi|shtml|phtml|php)$">​
 +     ​SSLOptions +StdEnvVars
 +   </​FilesMatch>​
 +     ​BrowserMatch "​.*MSIE.*"​ \
 +     ​nokeepalive ssl-unclean-shutdown \
 +     ​downgrade-1.0 force-response-1.0
 +     ​CustomLog /​var/​log/​apache24/​freebsd.douglasqsantos.com.br-access.log combined
 +     ​ErrorLog /​var/​log/​apache24/​freebsd.douglasqsantos.com.br-error.log
 +     ​LogLevel warn
 +     ​ServerSignature Off
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Agora vamos descomentar a linha do modulo do ssl no httpd.conf
 +<sxh bash>
 +vim /​usr/​local/​etc/​apache24/​httpd.conf
 +[...]
 +#​Descomentar a linha abaixo
 +LoadModule ssl_module libexec/​apache24/​mod_ssl.so
 +</​sxh>​
 +
 +Agora vamos reiniciar o apache
 +<sxh bash>
 +/​usr/​local/​etc/​rc.d/​apache24 restart
 +</​sxh>​
 +
 +Agora podemos acessar https://​freebsd.douglasqsantos.com.br caso você não esteja utilizando dns insira uma entrada no /etc/hosts da sua maquina ou acesse pelo endereço ip https://​192.168.1.60.