MeuMySQL Blog is now at http://blog.mdnsolutions.com/.
Showing posts with label UBUNTU. Show all posts
Showing posts with label UBUNTU. Show all posts

Friday, October 5, 2012

Cron Jobs


Salve galera! Como dizem: Toda solução surge de um problema. Hoje tive que fazer uma cron job para meu servidor e como não fazia ideia fiz minhas pesquisas e encontrei a solução abaixo. Espero que seja útil para mais alguém.

O que é uma Cron Job?

Cron jobs são "scripts" (ou tarefas) agendadas no seu sistema operacional para rodar de tempos em tempos. O termo “Cron Job” ou cron está ligado a sistemas UNIX, no entanto o Windows também tem algo semelhante chamado Tarefas agendadas, veja aqui mais à respeito.

Neste artigo vou abordar como configurá-las no ubuntu 12.04.

Pra que usar uma Cron Job?

Elas podem ser usadas para qualquer fim, desde atualizações no seu sistema operacional, iniciar um processo, rodar um script (php. ruby e assim por diante). Mas as possibilidades são ilimitadas.

Criando uma cron

Basicamente, uma cron job consiste em uma linha com 6 valores separados por espaço, assim:

minuto hora dia mes dia-da-semana linha-de-comando

Vamos a alguns exemplos de configuração de tempo antes de criar a cron em si:

Cron Job que rode todo dia as 08:00am
0 8 * * * linha-de-comando

Cron Job que rode a meia-noite de três em três dias
0 0 */3 * * linha-de-comando

Cron Job que rode as 14h30 de segunda e sexta
30 14 * * 1,5 linha-de-comando

Cron Job que rode todo dia a cada duas horas
0 */2 * * * linha-de-comando

Instalando a Cron

Abra o arquivo crontab com seu usuario sudo:

$ sudo nano /etc/crontab

E insira no final do arquivo algo como na linha abaixo:

* 1 * * * root /var/www/arquivo_cron.txt

E não se esqueça de dar permissão de execução no arquivo:

$ chmod 755 /var/www/arquivo_cron.txt

Neste exemplo o arquivo vai rodar utilizando das permissões do usuário root. E para checar se sua cron esta rodando ou ainda se há erros basta verificar através do arquivo de log do sistema:

$ tail -f /var/log/syslog

Bem, é isso. Rodando, funcionando e fazendo nossa vida mais feliz.

Agradecimento especial ao Gabriel de Figueiredo que me deu um suporte também.
Até a próxima galera.



Referências:
http://blog.thiagobelem.net/o-que-sao-e-como-usar-as-cron-jobs/
http://forum.civicrm.org/index.php?topic=24956.0
http://askubuntu.com/questions/139061/crontab-not-working
http://askubuntu.com/questions/56683/where-is-the-cron-crontab-log
http://www.adminschoice.com/crontab-quick-reference


Tuesday, April 3, 2012

[OFF-TOPIC] O maravilhoso mundo GIT

Olá galera! Quanto tempo desde o último post. Mas isso não significa que eu estava de férias, muito pelo contrário. Venho trabalhando em grandes projetos pessoais e aperfeiçoando várias habilidades tecnicas e que agora quero compartilhar com vocês algumas delas.

Bem, hoje falarei sobre o GIT. Há muitos anos tenho trabalhado com o SUBVERSION e suas ferramentas administrativas tais como o Tortoise, mas desde que resolvi tratar de forma mais seria meu repositório, tal como, controle de branches, tags, manter o versionamento de meus softwares em dia, vi que o modelo CVS não me atenderia muito bem, tendo inclusive algumas decepções (Subversion com merge é terrivel).

Como um bom desenvolverdor, sempre que nos deparamos com um problema qual a primeira atitude a se tomar? Resolvê-lo. Em minhas pesquisas verifiquei que o Git (um sistema de controle de versão distribuído) já vinha sendo utilizado por várias pessoas e empresas e resolvi analisa-la um pouco mais de perto. Entre os vários artigos que li um que recomendo é o do Imasters que da uma ideia comparativa entre GIT e Subversion (leia aqui ou nas referências ao fim do texto).

Uma vez entendido o que é e como funciona sistemas distribuidos vamos ver com funciona na pratica. Você, antes de mais nada pode criar um projeto publico no github (eles possuem uma excelente documentação) ou mesmo em sua máquina local.

Nossa instalação será do git version 1.7 no Ubuntu 11.10. O acesso ao git será via WebDAV ou gitweb.

Instalação do Servidor Git

Estou considerando que você já tenha uma versão do apache instalada em sua máquina. Bem, temos que habilitar o módulo dav em nosso servidor. Para isso vamos criar um link simbólico para esses módulos:

ln -s /etc/apache2/mods-available/dav.load /etc/apache2/mods-enable/dav.load
ln -s /etc/apache2/mods-available/dav_fs.load /etc/apache2/mods-enable/dav_fs.load

Configuração do WebDAV

Criar e editar o arquivo de configuracao git:

touch /etc/apache2/conf.d/git
nano /etc/apache2/conf.d/git

Uma vez criado adicione as seguintes linhas:

<Directory "/var/www/git">
        DAV on
        Options +Indexes +FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthType Basic
        AuthName "Private Git Access"
        AuthUserFile /etc/apache2/passwd.git
        Require valid-user
</Directory>

Agora temos que criar um arquivo de senhas para a autenticação do tipo Basic:

htpasswd -c /etc/apache2/passwd.git usuario

Feito isso, criaremos o diretório dos repositórios para testar a autenticação:

mkdir /var/www/git

Reiniciar o Apache e testar o endereço http://localhost/git:

service apache2 restart

Instalação e Configuração do GIT

Instale o git em sua máquina:

apt-get install git

Agora vamos criar um repositório de teste:

mkdir -p /var/www/git/meurepo
cd /var/www/git/meurepo
git --bare init
Initialized empty Git repository in /var/www/git/meurepo/

Teremos que habilitar o hook de post-update para garantir que o nosso recem criado repositório fique sempre atualizado:

cd /var/www/git/meurepo
cp hooks/post-update.sample hooks/post-update
chmod +x hooks/post-update

O conteúdo do hooks/post-update deve ser:

cat hooks/post-update
exec git update-server-info
Executaremos manualmente o hook na primeira vez:
./hooks/post-update

No Ubuntu o usuário Apache é www-data. Vamos dar permissão à ele em nosso diretório:

chown -R www-data:www-data  /var/www/git/meurepo

Reinicie o servidor apache:

service apache2 restart


Instalação e Configuração do gitweb

O Gitweb é a interface web padrão fornecido pelo git e é base para outros scripts tais como cgit, gitosis entre outros. Para instalarmos o gitweb no Server, podemos executar :

apt-get install gitweb

Criar e editar o arquivo gitweb.conf para o Apache:

touch /etc/apache2/conf.d/gitweb
nano /etc/apache2/conf.d/gitweb

Adicione o codigo no arquivo:

Alias /gitweb /var/www/git


<Directory /var/www/git>
  Options +ExecCGI
  AddHandler cgi-script .cgi
  DirectoryIndex gitweb.cgi
</Directory>

Criar arquivo de configuração do gitweb:

cat /etc/gitweb.conf
$projectroot = '/var/www/git/';
@git_base_url_list = ('http://localhost/git')

Reiniciar o Apache e testar o endereço http://localhost/gitweb:

/etc/init.d/httpd restart

Instalação do Cliente Git

No cliente, pode se a mesma máquina ou outra remota, temos que instalar novamente o git .

apt-get  install git

Configuracao mínima do nosso git:

git config --global user.name "My Name"
git config --global user.email "my@email.com"

Configuraremos um usuário e senha para acessar ao servidor git:

nano ~/.netrc

Adicione no arquivo:

machine localhost
login usuario
password senha


Nota para usuários windows


Neste caso é necessário abri seu iniciar > executar e rodar o cmd, dentro dele digite o seguinte comando:


setx HOME %USERPROFILE%


onde %USERPROFILE% é o diretório do seu usuário 'C:/Users/nomedousuario'. Uma vez feito isso, crie um arquivo neste diretório chamado _netrc (uma vez que o Windows não aceita .netrc) e a adicione o mesmo conteúdo usado acima.


Podemos testar o acesso ao servidor via curl:

curl --netrc --location -v http://localhost/git

Clonar o repositório remoto:

git clone http://localhost/git/meurepo
Cloning into meurepo...
warning: You appear to have cloned an empty repository.

Vamos agora adicionar alguma coisa ao nosso  repositório:

cd meurepo
echo hellow world! > teste.txt
git add teste.txt
git commit -m 'Adicionando meu primeiro arquivo'

Enviando os arquivos para o servidor que criamos:

git push origin master
Fetching remote heads...
  refs/
  refs/tags/
  refs/heads/
updating 'refs/heads/master'
  from 0000000000000000000000000000000000000000
  to   87366d467e2dfcc6057bf7d5e112b79ede984861
    sending 3 objects
    done


Bem, é isso galera, espero que esse post seja útil à todos. Assim que eu tiver mais novidades sobre essa maravilhosa ferramenta volto a publicar aqui. Grande abraço!

Referências:

  • http://pt.wikipedia.org/wiki/Git
  • http://pt.wikipedia.org/wiki/Controle_de_versão
  • http://progit.org/
  • http://imasters.com.br/artigo/23356/desenvolvimento/por-que-voce-deveria-mudar-do-subversion-para-git-parte-01


Wednesday, November 23, 2011

MySQL - Checando a segurança após instalação


Olá galera, hoje nosso tópico é curto mas muito importante, vamos falar sobre algumas medidas de segurança que devemos tomar uma vez que instalamos o MySQL em nosso servidor.

Estou usando o Ubuntu 11.04 e MySQL 5.1.54 e acabei de fazer a instalação do meu serviço aqui (você pode checar como fazer isso aqui). Bem, agora temos algumas medidas de segurança para tomar de forma a proteger nossa base de dados. Inicialmente o MySQL cadastra usuarios anônimos em suas tabelas de grant, mas ele também tem ferramentas que te auxiliam no processo de aperfeiçoamento da segurança do banco.


Usuários anônimos e segurança

Podemos checar que usuários possuimos em nossa base inicialmente com o comando abaixo:

  1. mysql> SELECT user, host,  password from mysql.user;
  2. +--------+-----------+-----------------------------------+
  3. | user   | host      | password                          |
  4. +--------+-----------+-----------------------------------+
  5. | root   | localhost | *57000000000000000000000000000001 |
  6. | root   | 127.0.0.1 | *57000000000000000000000000000001 |
  7. | root   | ::1       | *57000000000000000000000000000001 |
  8. |        | localhost |                                   |
  9. +--------+-----------+-----------------------------------+
  10. 7 rows in set (0.00 sec)


Note que temos 2 usuários anônimos em nossa base. Poderiamos simplesmente apagar este usuário usando um DELETE FROM mysql.user..., mas como manda a documentação temos commandos específicos e utilitários que já fazem essa tarefa de forma limpa e segura do ponto de vista do SGDB.

Em nosso caso aqui iremos trabalhar com o utilitário mysql_secure_installation. (Lembrando que esse comando é válido apenas para o linux). Veja abaixo:

  1. shell> mysql_secure_installation
  2. NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL       SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
  3. In order to log into MySQL to secure it, we'll need the current
  4. password for the root user.  If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here.
  5. Enter current password for root (enter for none):


Uma vez digitado o password que você definiu para o seu root inicialmente (você ainda lembra né?) ele vai te guiar em um intuitivo passo a passo para tornar sua base mais segura. Entre eles te perguntar sobre a remoção dos usuário anônimos, desabilitar conexões remotas, remoção do banco de dados teste (uma vez que essa banco permite acessos por qualquer usuário) e finalmente recarregar todos os privilégios para que as alterações tenham efeito.


  1. OK, successfully used password, moving on...
  2. Setting the root password ensures that nobody can log into the MySQL
  3. root user without the proper authorisation.
  4. You already have a root password set, so you can safely answer 'n'.
  5. Change the root password[Y/n] Y
  6. Password updated successfully!
  7. Reloading privilege tables..
  8.  ... Success!
  9. Remove anonymous users? [Y/n] Y
  10.  ... Success!
  11. Disallow root login remotely? [Y/n] Y
  12.  ... skipping.
  13. Remove test database and access to it? [Y/n] Y
  14.  ... skipping.
  15. Reload privilege tables now[Y/n] Y
  16.  ... Success!
  17. Cleaning up...
  18. All done!  If you've completed all of the above steps, your MySQL
  19. installation should now be secure.
  20. Thanks for using MySQL!


Bem, após isto você ainda pode fazer algumas importantes verificações:

Tenha certeza que todas as suas contas tem senha, sua query abaixo tem que retornar vazia:

  1. mysql> SELECT Host, User FROM user WHERE Password = '';
  2. Empty set (0.00 sec)

Periodicamente procure por senhas duplicadas:

mysql> SELECT User from mysql.user GROUP BY password HAVING count(user) > 1;

Fique alerta quanto a hosts com curingas. Periodicamente faça o teste:

mysql> SELECT User, Host FROM mysql.user WHERE Host LIKE '%\%%';

Com esse passo a passo seu banco de dados já está mais seguro contra invasões e usuários não autorizados. Em breve trarei mais tópicos de como melhorar sua segurança.

Viva ao meu, seu, nosso MySQL! Até mais!



Thursday, February 3, 2011

Ambiente LAMP no Ubuntu para Iniciantes

Bom dia Galera,

Como dito no artigo anterior vou agora mostrar os comandos para configurar seu ambiente LAMP no Ubuntu. LAMP significa para o Linux, Apache, MySQL, PHP. O guia destina-se a ajudar aqueles que têm muito pouca experiência do uso do Linux.


Instalar o Apache

Para começar, vamos instalar o Apache.

1. Abra o Terminal (Aplicações Acessórios>> Terminal).

2. Copiar / Colar pressione a seguinte linha de código no terminal e digite:

sudo apt-get install apache2

3. O terminal vai pedir que você que você é a senha, digite-o e pressione enter.


Teste Apache

Para se certificar que tudo instalado corretamente, vamos agora testar o Apache para garantir que ele está funcionando corretamente.

1. Abra qualquer navegador e digite o seguinte endereço na web:

http://localhost/

Você deverá ver uma pasta chamada apache2-default /. Abra-a e você verá uma mensagem dizendo "It works!", funciona!


Instalar o PHP

Nesta parte vamos instalar o PHP 5.

Passo 1. Novamente abra o Terminal (Aplicações> Acessórios> Terminal).

Etapa 2. Copiar / Colar a seguinte linha no terminal e pressione enter:

sudo apt-get install php5 libapache2-mod-php5

Etapa 3. Para que o PHP para funcionar e ser compatível com Apache devemos reiniciá-lo. Digite o seguinte código no terminal para fazer isso:

sudo / etc/init.d/apache2 restart


Teste de PHP

Para garantir que não haja problemas com o PHP, vamos fazer um teste rápido.

Passo 1. Na cópia do terminal / cole a seguinte linha:

sudo gedit / var / testphp.php / www

Isto irá abrir um arquivo chamado phptest.php.

Etapa 2. Copiar / colar essa linha no arquivo phptest:



Etapa 3. Salve e feche o arquivo.

Etapa 4. Agora abra seu navegador e digite o seguinte endereço web:

http://localhost/testphp.php

A página deverá ficar assim:

Página de teste PHP

Você tem agora instalado Apache e PHP!


Instale o MySQL

Para terminar este guia até vamos instalar o MySQL. (Nota - Fora de Apache e PHP, MySQL é o mais difícil de configurar, vou dar alguns grandes recursos para qualquer pessoa a ter problemas no final deste guia..)

Passo 1. Mais uma vez abrir o Terminal surpreendente e, em seguida, copiar / colar essa linha:

sudo apt-get install mysql-server

Passo 2 (opcional). Para que outros computadores em sua rede para exibir o servidor que você criou, primeiro você deve editar o "Endereço de ligação". Comece abrindo o terminal para editar o arquivo my.cnf.

sudo gedit / etc / mysql / my.cnf

Altere a linha

bind-address = 127.0.0.1

E mudar o 127.0.0.1 para o seu endereço IP.

Etapa 3. Isto é onde as coisas podem começar a ficar complicado. Comece digitando o seguinte no terminal:

mysql-u root

Na sequência desta copiar / colar essa linha:

'localhost','root' mysql> SET PASSWORD FOR @ = PASSWORD ('yourpassword');

(Não esqueça de mudar yourpassword para uma senha de sua escolha.)

sudo gedit / etc/php5/apache2/php.ini

Agora vamos ter que descomentar a seguinte linha, retirando o ponto e vírgula (;).

Altere esta linha, ou caso ela não exista crie ela:

extension = mysql.so

Para ficar assim:

extension = mysql.so

Agora, basta reiniciar o Apache e está tudo pronto!

sudo / etc/init.d/apache2 restart

Espero que essas dicas tenham sido úteis. Abraços para todos e até a próxima.