PHP e MySQL no Linux
Módulo I - Infraestrutura
Módulo I - Infraestrutura
- Debian/Linux
- Gerenciamento de pacotes
- Diretórios e arquivos de configuração
- Usuários e permissões
- Apache2
- Instalação
- Administração
- MySQL
- Instalação
- Administração
- Backup
- PHP
- Instalação
- Integração com Apache2
Debian
Por que?
- Dpkg
- Segurança
- Estabilidade
- Atualizações
- Comunidade
- Mais 43 mil pacotes
Diretórios
- / - Diretório raiz
- /etc - Configurações do sistema
- /home - Arquivos pessoais
- /var - Arquivos variáveis
- /tmp - Arquivos temporários
- /root - Diretório pessoal do root
Comandos básicos
- ls - Exibe os arquivos de um diretório
- cd - Altera entre diretórios
- cp - Copia arquivos/diretórios
- mv - Move/renomeia arquivos/diretórios
- rm - Remove arquivos/diretórios
- mkdir - Cria um diretório
Editores de texto
- vi / vim
- nano
- emacs (não vem instalado)
Permissões
$ ls -l-rw-rw-r-- 1 rogerio rogerio 991 Jul 9 2015 teste.txt
drwxr-xr-x 3 rogerio rogerio 4096 Jul 9 2015 Desktop
drwxrwxr-x 10 rogerio rogerio 4096 Jun 9 2015 outrodir
- d diretório
- l link
- - arquivo "normal"
Primeiro char
- Primeira: Permissão do usuário
- Segunda: Permissão do grupo do usuário
- Terceira: Permissão dos demais usuários
Sequências de 3
- r Leitura
- w Escrita
- x Execução
- - Desabilitada
Cada sequência
Permissões
chmod change mode
- u usuário
- g grupo
- O outros
- a todos
Método simbólico
- r leitura
- w escrita
- x execução
- + adicionar
- - remover
- = definir
$ chmod u+w teste.txt
$ chmod g+rw teste.txtMétodo numérico
| Permissão | Binário | Decimal |
|---|---|---|
| - - - | 000 | 0 |
| - - x | 001 | 1 |
| - w - | 010 | 2 |
| - w x | 011 | 3 |
| r - - | 100 | 4 |
| r - x | 101 | 5 |
| r w - | 110 | 6 |
| r w x | 111 | 7 |
$ chmod 600 teste.txt
$ chmod 755 teste.txtPermissões
chown change owner/group
$ chown usuario:grupo teste.txt
$ chown :grupo teste.txtGerenciador de pacotes
# apt-get update
# apt-get upgrade
# apt-get dist-upgradeGerenciador de pacotes
# apt-get install <nomes-dos-pacotes>
# apt-get remove <nomes-dos-pacotes>
# apt-get purge <nomes-dos-pacotes>MySQL
Instalação
# apt-get install mysql-serverConectando
$ mysql -uroot -pmysqladmin
$ mysqladmin -uroot -p create <database>
$ mysqladmin -uroot -p drop <database>
$ mysqladmin -uroot -p status
$ mysqladmin -uroot -p shutdownAlguns comandos
> show databases;
> show tables;
> use <database> [;]
> desc <table>;
> show create table <table>;
> quit [;]SQL - DDL
> CREATE DATABASE treinamento;DDL (Data Definition Language) refers to the CREATE, ALTER and DROP statements
> CREATE TABLE alunos (
id INT AUTO_INCREMENT,
nome VARCHAR(180) NOT NULL,
PRIMARY KEY (id)
);
> DROP TABLE alunos;SQL - DML
> INSERT INTO alunos (nome) VALUES ('Rogério');DML (Data Manipulation Language) refers to the INSERT, UPDATE and DELETE statements
> UPDATE alunos SET nome = 'Rogério Lino' WHERE nome = 'Rogério';
> DELETE FROM alunos WHERE id = 1;SQL - DQL
> SELECT
id, nome
FROM
alunos
WHERE
nome LIKE 'Rogério%'
ORDER BY
nome ASC
LIMIT 20
OFFSET 10DQL (Data Query Language) refers to the SELECT, SHOW and HELP statements (queries)
Segurança
# mysql_secure_installation
> CREATE USER 'rogerio'@'localhost' IDENTIFIED BY '123456';Permissão - GRANT
> GRANT ALL ON treinamento.* TO 'rogerio'@'localhost';
> GRANT SELECT ON outrobanco.tabela TO 'rogerio'@'%';
> SHOW GRANTS FOR 'root'@'localhost';Permissão - REVOKE
> REVOKE INSERT ON *.* FROM 'rogerio'@'localhost';
> REVOKE INSERT ON *.* FROM 'rogerio'@'%';Conexão Remota
# nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0Backup
$ mysqldump -uroot -p <database> > database-backup.sql
$ mysqldump -uroot -p --all-databases > all-databases-backup.sql
$ mysqldump -uroot -p --no-data <database> > only-database-schema.sql
$ mysqldump -uroot -p --no-create-info <database> > only-data-backup.sqlRestore
$ mysql -uroot -p <database> < database-backup.sql
$ mysql -uroot -p < all-databases-backup.sqlApache2
Instalação
# apt-get install apache2O serviço
# service apache2 start
# service apache2 stop
# service apache2 reload
# service apache2 statusConfiguração
Sites disponíveis
/etc/apache2/sites-available/<arquivo>.conf
Sites habilitados
/etc/apache2/sites-enabled/<link>
VirtualHost
# /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
#ServerName localhost
DocumentRoot /var/www/example
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>.htaccess
Arquivos .htaccess oferecem um meio de fazer mudanças nas configurações por-diretório.
# /etc/apache2/sites-available/000-default.conf
# ...
<Directory /var/www/html>
AllowOverride All
</Directory>
# ....htaccess
# Protegendo com Basic Authentication
AuthType Basic
AuthName "My Protected Area"
AuthUserFile /path/to/.htpasswd
Require valid-user
# Desabilitando listagem do diretório
Options -IndexesPHP
Instalação
# apt-get install php5Testando
$ php --version
$ php -i
$ php -S 127.0.0.1:8000
$ php -aDriver MySQL
# apt-get install php5-mysqlPDO
<?php
$dsn = 'mysql:host=hostname;dbname=treinamento';
$user = 'rogerio';
$pass = '123456';
try {
$conn = new PDO($dsn, $user, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT * FROM alunos');
$stmt->execute();
$rs = $stmt->fetchAll();
print_r($rs);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}Integração Apache2
# apt-get install libapache2-mod-php5Testando
# nano /var/www/html/info.php<?php
phpinfo();http://127.0.0.1/info.php
PHP e MySQL no Linux I
By Rogério Alencar Lino Filho
PHP e MySQL no Linux I
- 787