SSH Keys pentru ușurarea conectarii între două servere
Am nevoie să sincronizez prin rsync și/sau unison conținutul unor directoare de pe serverul de producție, pe serverul de backup. Ca să automatizez procesul, m-am hotărât să folosesc ssh keys. Următoarea procedură simplă m-a ajutat să îndeplinesc taskul:
- Pe serverul de Productie:
cd /root/.ssh
/usr/bin/ssh-keygen -t dsa -f /root/.ssh/id_dsa - va fi generata perechea de key de criptare
cat id_dsa.pub >> authorized_keys
- Pe serverul de Backup:
cd /root/.ssh
/usr/bin/ssh-keygen -t dsa -f /root/.ssh/id_dsa - va fi generata perechea de key de criptare
cat id_dsa.pub >> authorized_keys
De pe serverul de productie copiem cheia publica pe serverul de backup:
cd /root/.ssh
/usr/bin/scp id_dsa.pub root@backup_server_ip:/root/.ssh/host1.key.pub
si acum copiem si cheia publica de pe serverul de backup pe serverul de productie:
/usr/bin/scp root@backup_server_ip:/root/.ssh/id_dsa.pub ./host2.key.pub
pe serverul de productie:
cat host2.key.pub >> authorized_keys
pe serverul de backup:
cat host1.key.pub >> authorized_keys
Aceasta este o metoda simplă și rapidă pentru a putea să ma conectez de pe un server pe celălalt, folosind ssh keys și fără password authentification. Desigur, se pot face multe alte customizări și setări pentru o securitate sporită.
Mutare subversion repository de pe Windows pe Linux & hooks
Trebuie să recunosc, ca și dacă sunt plătit bine, încerc să refuz să folosesc soluții Microsoft, servere Windows. De aceea am purces la a transfera datele și serviciile de pe un Windows 2003 server, care era folosit ca și development and testing server de o echipa de programagori, pe un CentOS 5. Bazele de date mysql și configurarile de apache au fost simplu de mutat.
M-am gândit să detaliez mutarea repository-urilor de subversion, care am crezut că îmi vor da bătaie de cap, poate va fi de folos cuiva.Pașii sunt simpli:
1. Exportarea repository-ului din Windows. Presupunând ca avem repository-urile în D:\svn, comanda pentru export va fi: svnadmin dump d:\svn\nume_repository > nume_repository.dump
2. Copierea fișierului de dump pe serverul de linux, prin orice metoda preferata: ftp, smb, etc.
3. Pe linux, vă asigurați ca este instalat pachetul de subversion (eu am folosit yum install subversion). Am ales pentru moment să folosesc svnserve ca și standalone daemon process. Pentru a porni serverul de svn comanda este: svnserve -d -r /home/svn. Unde /home/svn este locația pentru repository-urile din linux.
4. Crearea repository-ului pe linux cu comanda: snvadmin create /home/svn/nume_repository
5. Încărcarea repository-ului pe linux din fișierul exportat și copiat de pe windows, folosind comanda: svnadmin load /home/svn/nume_repository <> nume_repository.dump
Hooks
Pe Windows, o versiune a proiectului din svn, era actualizată la fiecare commit care se făcea, prin utilizarea hooks. Acest lucru era foarte util pentru a putea avea o versiune actualizată spre a fi servită de apache, pentru testing.
În linux, am rezolvat acest lucru in felul urmator:
1. În directorul /home/svn/nume_repository/hooks am creat un fișier update-dev.c cu urmatorul continut:
#include
int main(int argc, const char *argv[])
{
system(”/usr/bin/svn update /var/www/nume_repository”);
}
unde, /var/www/nume_repository e directorul unde se face inițial un svn checkout, și care este servit de apache.
2. Se compileaza fișierul:
#gcc update-dev.c -o update-dev
#chown root:root update-dev
#chmod +s update-dev - adaugam bitul pentru setuid la drepturile executabilul update-dev, pentru a putea fi executat cu drepturi de root.
3. Se creează fișierul post-commit în directorul: /home/svn/nume_repository/hooks în care adaugam urmatoarea linie:
/home/svn/nume_repository/hooks/update-dev
Filosofia e simpla. Atunci când un utilizator va da commit la proiect, fișierul post-commit va executa micul programel update-dev, care la rândul lui va face un svn update în directorul din webserver, servit de apache, și astfel se vor putea testa modificarile.
The article has
one response