NAS (Network Attached Storage) doméstico com o FreeNAS

Se você quer um servidor de arquivos com suporte a vários discos em RAID e uma interface de administração via web, assim como um NAS comercial, você pode experimentar o FreeNAS, que desempenha a função de forma incrivelmente competente e pode ser configurado em poucos minutos.

Ele suporta o uso de RAID e oferece suporte aos mais diversos protocolos de transferência de arquivos, além de oferecer um grande volume de recursos de gerenciamento, centralizados em uma interface web, que pode ser acessada a partir de qualquer PC da rede.

Maiores informações:

Erro: service XYZ does not support chkconfig

Erro clássico. Você faz um script shell, e ao tentar colocar ele na lista dos serviços de start e stop do servidor, recebe a mensagem do título deste post, veja como resolver, de forma simples.

(Assumindo que o nome do meu script seja: myscript)

1 – Copie seu script para dentro de: /etc/init.d
2 – cd /etc/init.d
3 – chmod +x myscript
4 – Adicione essas linhas abaixo, incluíndo #,  logo após  #!/bin/bash ou #!/bin/sh:

# chkconfig: 2345 95 20
# description: descricao
# O que seu script faz (Acho que isso nem é mais necessário)
# processname: myscript

Salve, saia e execute a linha abaixo:

5 – chkconfig –level 2345 myscript on

Pronto…

Migrando repositórios subversion com erro database crashing (errcode=160029)

HOWTO: Migrando repositórios
=======================================
Ambiente: Linux CentOS 5.2 / RHEL / Fedora

1. Problema:

O Servidor onde estava rodando o Subversion deu crash de disco (CentOs 4.4), e nem permitia logar diretamente na console.

Ante ao desespero, realizou-se o update para a versão mais nova do CentOS 5.2, com isso o servidor voltou a permitir logar, e foi possível reintalar o subversion, e migrar os repositórios para uma outra máquina.

A instalação foi executada seguindo este tutorial: http://wiki.centos.org/HowTos/Subversion

2. Ao tentar fazer um checkout nos projetos, o mesmo não permitia, e apresentava o seguinte erro:

<D:error>
<C:error/>
<m:human-readable errcode=”160029″>
Could not open the requested SVN filesystem
</m:human-readable>
</D:error>

Depois de algumas pesquisas, descobri que o banco de dados dos repositórios (diretório DB) estava corrompido, e era necessário fazer um recover.

3. Rodei o comando:

# svnadmin recover /var/www/svn/projetoxyz/

Como resposta recebi:

Repository lock acquired.
Please wait; recovering the repository may take some time…
svnadmin: DB_RUNRECOVERY: Fatal error, run database recovery
svnadmin: bdb: /var/www/svn/projetoxyz/db/log.0000000015: log file open failed: No such file or directory
svnadmin: bdb: PANIC: No such file or directory
svnadmin: bdb: DB_ENV->log_put: 15: DB_RUNRECOVERY: Fatal error, run database recovery

Certo, com isso percebi que o problema era um pouquinho mais grave, na verdade sempre que vejo essa frase Fatal error, imagino um problema um pouco mais trabalhoso 🙂

4. Acessei a pasta db de dentro do projetoxyz

# cd /var/www/svn/projetoxyz/db
# ls

-rwxrwxrwx 1 apache apache  172032 Dec 11 10:16 changes
-rwxrwxrwx 1 apache apache    8192 Dec 11 10:16 copies
-rwxrwxrwx 1 apache apache    1955 Oct  3  2008 DB_CONFIG
-rwxrwxrwx 1 apache apache       4 Oct  3  2008 fs-type
-rwxrwxrwx 1 apache apache 1048518 Oct 15 10:39 log.0000000013
-rwxrwxrwx 1 apache apache   13746 Dec 11 10:16 log.0000000014
-rwxrwxrwx 1 apache apache  126976 Dec 11 10:16 nodes
-rwxrwxrwx 1 apache apache  122880 Dec 11 10:16 representations
-rwxrwxrwx 1 apache apache    8192 Dec 11 10:16 revisions
-rwxrwxrwx 1 apache apache 8777728 Dec 11 10:16 strings
-rwxrwxrwx 1 apache apache    8192 Dec 11 10:16 transactions
-rwxrwxrwx 1 apache apache    8192 Dec 11 10:16 uuids

Observe que existe na pasta dois arquivos de log (log.0000000013 e log.0000000014). Apaguei este dois arquivos.

# rm -rf log.0000000013 log.0000000014

5. Voltei para a pasta svn, e executei o comando svnadmin recover novamente:

# cd /var/www/svn/
# svnadmin recover /var/www/svn/projetoxyz/

Agora como resposta obtive:

Repository lock acquired.
Please wait; recovering the repository may take some time…

Recovery completed.
The latest repos revision is 25.

Com este retorno podemos concluir que o banco de dados do repositório foi restaurado.

6. Agora podemos fazer o backup do repositório e restaurar em nosso novo servidor.

# cd /var/www/svn/
# svnadmin dump projetoxyz > projetoxyz_dump

Ao concluir o dump, será criado o arquivo projetoxyz_dump, agora é so enviar para o novo servidor, e fazer a restauração.

# scp projetoxyz_dump root@192.168.1.10:/var/www/svn/

7. No servidor novo, você cria o projeto e faz o restauração do arquivo recebido.

# svnadmin create projetoxyz

altera o dono do projeto:

# chown apache.apache projetoxyz -R

Realiza o reload:

# svnadmin load projetoxyz < projetoxyz_dump

8. Ao terminar o restaure, você deve acrescentar uma entrada no subversion.conf do nome do projeto criado, conforme visto no tutorial: http://wiki.centos.org/HowTos/Subversion

# vi /etc/httpd/conf.d/subversion.conf

Acrescente:

<Location /projetoxyz>
DAV svn
SVNPath /var/www/svn/projetoxyz
AuthType Basic
AuthName “Descricao do Projeto”
AuthUserFile /etc/svn-auth-conf
Require valid-user
</Location>

Reinicie o apache:

# service httpd restart
ou
# /etc/init.d/httpd restart

lembrando que só terão acesso ao repositório os usuários criados em /etc/svn-auth-conf.

# htpasswd -cm /etc/svn-auth-conf primeiro_usuario
New password:
Re-type new password:
Adding password for user primeiro_usuario

Adicionando mais usuários:

# htpasswd -m /etc/svn-auth-conf outro_usuario
New password:
Re-type new password:
Adding password for user outro_usuario

e assim sucessivamente.

9. Após esses passos, já é possivel fazer checkout utilizando sua ferramenta favorita, como o TortoiseSVN, diretamente pelo Windows, colocando a url de seu servidor:

http://192.168.1.10/projetoxyz

Ufa!!! É só isso 🙂

Fragmentos de código para Desenvolvedores

Vi no blog AllWebDesignResources, um artigo chamado CSS Code Snippets for Web Designers & Developers, com uma grande quantidade de recursos sobre codificação em CSS, com dicas de vários sites que disponibilizam trechos de códigos para que possamos utilizar em nossos projetos, economizando tempo e esforço para criar aquele efeito especial. Vale uma visita.

Link: CSS Code Snippets for Web Designers & Developers

Update: 28/05/2013

Mais alguns sites códigos para as mais diversas necessidades:

  • Snipt. Código de HTML, CSS, jQuery, WordPress, C ++, Java, Python, Ruby e outros.
  • Snipplr. JavaScript, HTML, CSS, PHP, Ruby e Objective C.
  • Code Keep. PHP, JavaScript, CSS, Java, Python, Perl, Ruby e muito mais.
  • WPSnipp. Outro com códigos relacionados com WordPress.
  • Code Codex. Um wiki onde é possível compartilhar seu código e melhorar o código compartilhado por outros.
  • Snippets Mania. Pequena biblioteca de fragmentos de códigos relacionados con PHP, Python, JavaScript, jQuery e muitos outros.
Fonte: http://designreflect.com/excellent-resources-for-code-snippets/

Howto: WordPress 2.7.x muito lento no Debian

Depois de muito apanhar juntamente com meu amigo Sílvio, chegamos a resolução.

Problema:
Ao instalar o WordPress 2.7.1 no Debian Etch, o mesmo estava demorando até 30 segundos para iniciar, principalmente a parte administrativa.

A solução:

Existe várias formas de resolver, registradas aqui:  http://core.trac.wordpress.org/ticket/8590

A mais simples:

  1. Edite o arquivo: /wp-includes/http.php
  2. Vá até a linha 210, e encontre esse bloco de código:
  3. function request( $url, $args = array() ) {
    global $wp_version;

    e deixe dessa forma:

    function request( $url, $args = array() ) {
    return;
    global $wp_version;
  4. Salve o arquivo e tenta acessar a área administrativa do wordpress novamente.

Howto: Como mudar a URL do seu repositório SVN

Normalmente você precisa fazer isso quando você altera seu servidor controlador de versão subversion…

Para saber como migrar os repositórios de um servidor para outro, veja este tutorial.

Mas em resumo é assim, após você instalar o subversion, e realizar a migração dos projetos:

# svnadmin dump myrepos > dumpfile

# svnadmin load newrepos < dumpfile

Ai no seu cliente tortoise é so fazer assim:

# svn switch –relocate  <from URL> <to URL>

Ou via ferramenta:

Howto: Como desabilitar a interface gráfica no Linux

Howto: Como desabilitar a interface gráfica do Linux
=======================================

Problema: Ao se instalar o Linux (Red Hat, CentOS…) como default, é carregado a interface gráfica (Gnome ou KDE), e para um servidor não é necessário manter ativo a Interface Gráfica, conhecida também como X.

Solução: Pode-se desabilitar o carregamento do X, e quando for necessário basta chamá-lo através do comando: startx.

Vamos aos passos:

1. Edite o arquivo: /etc/inittab

2. Vá até o final do arquivo, lá você vai encontrar uma linha semelhante a esta:

# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon

3. Basta comentar, remover ou editar a linha:

x:5:respawn:/etc/X11/prefdm -nodaemon

ficando assim:

id:3:initdefault:

4. Salve o arquivo, e reinicie a máquina, ao retornar so irá ser carregado o terminal. Para carregar o X, basta se logar e entrar com o comando:

# startx

Howto: alterando layout do teclado no Linux

Howto: Como alterar o layout de teclado no linux.
====================================

Situação: Você esta utilizando um teclado com padrão diferente do que foi instalado o seu servidor Linux, e este servidor não tem o X instalado, então é necessário alterar o padrão de layout do teclado diretamente via console.

Solução:

RedHat: # redhat-config-keyboard
Centos: # system-config-keyboard
Debian: # dpkg-reconfigure console-data
Ubuntu: # sudo dpkg-reconfigure console-setup
SuSe: # Yast2

Pode ser necessário alterar também o idioma padrão do seu servidor:

RedHat: # redhat-config-language
Centos: # system-config-language
Debian: # dpkg-reconfigure locales
Ubuntu: # sudo “set-language-env-E
SuSe: # Yast2

Como saber a versão do Linux que você esta usando?

Alguém já chegou pra você e perguntou? Ai, qual é a versão de Ubuntu que você esta usado?

Embora seja uma pergunta simples, a resposta a princípio não é tão simples para encontrar, pelo menos não era, veja como fazer para se informar:

root@server:~$ lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 8.04

Release: 8.04

Codename: hardy

Outras formas de obter a mesma informação:

root@server:~$ cat /etc/issue

Ou ainda assim:

root@server:~$ cat /etc/lsb-release

É isso ai..

Howto: VNC no CentOS e RedHat derivados

HowTo: Configurando o VNC em uma distribuição CentOS (Red Hat)
==============================================

Olá pessoal. Hoje iremos ver como configurar o VNC para um servidor CentOS. Não que eu goste dessa idéia de acessar via VNC, mas tem gente que gosta… há tem até um outro tutorial deste aqui no blog, aqui é uma forma mais detalhada, digamos.

1. Primeiro você deve instalar o VNC-Server.

[root@server1 ~]# yum install vnc-server

2. Agora você deve editar o arquivo vncservers, que é onde você define o nome do usuário que vai ter acesso ao VNC e também qual vai ser a resolução da tela quando ele se logar.

[root@server1 ~]# vi /etc/sysconfig/vncservers

Edite a linha VNCSERVERS e VNCSERVERARGS como mostradas abaixo:

VNCSERVERS=”1:usuario”
VNCSERVERARGS[1]=”-geometry 1024×768″

Esse número 1 (um) antes do nome do usuário é a porta que ele vai ter que usar ao se conectar com o servidor através do cliente VNC, ou seja, digamos que o IP do servidor onde o VNC esta instalado seja: 192.168.0.1, então ao se conectar pelo Cliente, vai ser informado: 192.168.0.1:1.

Caso queira acrescentar outros usuários basta fazer assim:

VNCSERVERS=”1:maria 2:joao 3:pedro”
VNCSERVERARGS[1]=”-geometry 640×480″
VNCSERVERARGS[2]=”-geometry 640×480″
VNCSERVERARGS[1]=”-geometry 800×600″

há, claro que os usuários devem existir previamente em seu linux.

3. Logue com o usuário que você vai usar para se conectar no VNC

[root@server1 ~]# su – usuario

Verifique se existe o arquivo /home/username/.vnc/xstartup

[usuario@server1 ~]# cat ~usuario/.vnc/xstartup

Se existir blz, você deve editar este arquivo, caso não tenha, pule para o passo número 4.

[usuario@server1 ~]# vi ~usuario/.vnc/xstartup

Descomente as linhas unset SESSION_MANAGER e exec /etc/X11/xinit/xinitrc, ficando com no modelo abaixo:

#!/bin/sh
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

Verifique no final do arquivo, uma linha semelhante a esta:

xterm -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
twm &

Você deve alterar somente o nome twm, e no lugar colocar gnome, isso se você estiver usando o ambiente gráfico Gnome em seu Linux, caso esteja usando o KDE, é so colocar kde-session.

4. Considerando que você não tem o arquivo /home/username/.vnc/xstartup.

Estando logado com o usuário que vai se conectar ao vnc, basta você executar o comando:

[usuario@server1 ~]# vncserver

Com este comando vai ser criado o arquivo .vnc/xstartup, e vai ser pedido uma senha para o usuário, que você pode informar a mesma senha que utilizou quando criou o usuário no linux.

5. Hora de testar.

Volte para o usuário Root, e reinicie o vncserver.

[root@server1 ~]# /etc/init.d/vncserver restart

Coloque o vncserver para iniciar automaticamente quando o servidor for ligado.

[root@server1 ~]# chkconfig vncserver on

Agora, basta utilizar um VNC Client, de sua preferência, e se conectar no servidor, utilizando o IP e a porta do usuário desejado, por exemplo:

192.168.0.1:1 – para se conectar com o usuario 1.

Ou direto pelo seu navegador, utilizando o IP mais a porta 580x, assim:

http://192.168.0.1:5801 – para se conectar com o usuario 1

http://192.168.0.1:5802 – para se conectar com o usuario 2 e assim sucessivamente.

É isso ai.