lamp for centos

sunt multe tutoriale pe net despre ce ar trebui sa instalezi in calculator ca sa ai un lamp ( apache + php + mysql ) functional.
Mi-a venit ideea sa rezumez toate comenzile intr-un script, astfel ca toata instalarea sa arata doar ca un apel de script:

MYSQL_PASSWORD=mysecretpassword

### activare mod debug in bash
#set -x

### install mysql
echo -e "\n\nInstall MYSQL\n\n"
yum install mysql mysql-server
chkconfig --level 235 mysqld on
/etc/init.d/mysqld start

echo -e "\n\nMYSQL: set password for root@localhost : $MYSQL_PASSWORD\n"
mysqladmin -u root password $MYSQL_PASSWORD

echo -e "\n\nMYSQL: set password for root@`hostname` : $MYSQL_PASSWORD\n"
mysqladmin -h `hostname` -u root -p password $MYSQL_PASSWORD

### install apache2
echo -e "\n\nInstall Apache2\n\n"
yum install httpd
chkconfig --levels 235 httpd on
/etc/init.d/httpd start

### install php
echo -e "\n\nInstall PHP\n\n"
yum install php php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
/etc/init.d/httpd restart

### test php
echo -e "\n\nWrite /var/www/html/index.php test file\n\n"
echo "<?php phpinfo(); ?>" > /var/www/html/index.php

### install phpmyadmin
echo -e "\n\nInstall phpmyadmin\n\n"
## activam repositoryul RPMForge
echo -e "\n\nActivate rpmforge repository"
cd /tmp/
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.`uname -m`.rpm
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.`uname -m`.rpm

yum install phpmyadmin

## in urmatorul fisier trebuie comentat <Directory>... pentru a permite toate conexiunile ( nu numai localhost )
echo -e "\n\nIn file /etc/httpd/conf.d/phpmyadmin.conf comment the <Directory>\n"
read -p "go to file..."
vi /etc/httpd/conf.d/phpmyadmin.conf

## in fisierul asta treb modificat $cfg['Servers'][$i]['auth_type'] = 'http';
echo -e "\n\nIn file /usr/share/phpmyadmin/config.inc.php set variable:\n\n $cfg['Servers'][$i]['auth_type'] = 'http';\n\n"
read -p "go to file..."
vi /usr/share/phpmyadmin/config.inc.php

/etc/init.d/httpd restart

echo -e "\n\n\nDone.\n\n"

Download from here

In script se mai cere din cand in cand si interventia utilizatorului… yes… no… password :)

NB: scriptul instaleaza si phpmyadmin

apache rewrite to www

ideea e ca pe orice domeniu se poate intra in doua moduri : domeniu.tld si www.domeniu.tld ( iar daca nu se poate intra prin una din aceste modalitati – aceasta reprezinta anomalii ). Dar, totusi, se doreste raspandirea pe internet doar a unui link dintre acestea 2: doar domeniu.tld sau doar www.domeniu.tld, pentru ca ele pot fi vazute de motoarele de cautare ca 2 domenii diferite.

Acum reprezint o modalitate de a lasa ambele domenii valide si facem doar astfel ca domeniu.tld sa redirectioneze automat catre www.domeniu.tld .

Acest lucru este posibil cu modulul rewrite din apache2. Si pentru asta modificam fisierul .htaccess cu urmatorul continut:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.domeniu\.tld$ [NC]
RewriteRule ^(.*)$ http://www.domeniu.tld/$1 [R=301,L]

acum orice accesare a url-ului domeniu.tld va returna un cod de status : 301 = Moved Permanently ( A status code of 301 tells a client that the resource they asked for has permanently moved to a new location. The response should also include this location. It tells the client to use the new URL the next time it wants to fetch the same resource. ) si va redirectiona catre www.domeniu.tld

htaccess options -Indexes

In momentul cand ai un site, cu continut, si se incearca deschiderea unui URL care directioneaza catre un directoriu al site-ului si in acel directoriu nu este prezent nici un fisier de index al directoriului ( DirectoryIndex, exemplu: index.html, index.php, default.html ) in acel directoriu, atunci serverul va afisa o pagina cu o lista a tuturor fisierelor/directoare din directoriu respectiv. Acesta este considerata o problema grava in securitatea site-ului caci serverul este setat ca implicit sa arate acest gen de informatii.

Noi trebuie explicit sa dezactivam aceasta optiune. Ea se poate face in 2 locuri specificand optiunea prin :

Options -Indexes

Minusul ( – ) din fata lui Indexes inseamna dezactivarea optiunii.

Exemplu la setarea serverului apache cand se seteaza domeniile si accesul la directorii:

<VirtualHost *:80>
  ServerName svn.com
  ServerAdmin webmaster@puk.ro
  DocumentRoot /var/www/svn.com
  ErrorLog /var/log/apache2/svn.com.log
  CustomLog /var/log/apache2/svn.com-access.log combined
  Options -Indexes
</VirtualHost>

Iar daca nu aveti acces la aceste fisiere de configurare, se poate dezactiva optiunea specificand linia in fisierul .htaccess care poate fi pus in root-ul site-ului:

Options -Indexes
#aici alte reguli pentru .htaccess

atat.

svn server with SVNListParentPath = On

La un moment dat, dupa ce am setat serverul de svn, mi-am zis eu asa ca… ar fi bine ca eu sa pot vedea lista tuturor repository-uri care exista pe server ca sa imi fac si eu o idee generala despre server.

Si, am intrat in fisierul /etc/apache2/mods-available/dav_svn.conf si am setat SVNListParentPath pe On. In final, fisierul arata astfel :

&lt;Location /svn&gt;
DAV svn
SVNParentPath /var/svn
SVNListParentPath On
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
&lt;/Location&gt;

Dupa aceste modificari… multe teste… am observat ca serverul nu se comporta asa cum as fi vrut eu. Problema aparea la vizualizarea directoriul parinte unde se afla toate repository-urile. Intr-un final problema am rezolvat-o modificand in fisierul dav_svn.conf urmatoarea linie :

 &lt;Location /svn/&gt;

Continue reading svn server with SVNListParentPath = On

howto secure svn server

Acest post vine in continuarea post-ului de instalare a unui server de svn. Voi face serverul de svn sa permita lucrul cu userii. Sa presupunem ca avem mai multe proiecte ( respectiv pentru fiecare proiect cate un repository aparte ) si in fiecare proiect lucreaza doar anumite persoane care va trebui sa aiba acces la acele proiecte.

Acum avem 2 proiecte : projectx si projecty :

root@srv1:~# cd /var/svn/
root@srv1:/var/svn# ls
root@srv1:/var/svn# svnadmin create projectx
root@srv1:/var/svn# svnadmin create projecty
root@srv1:/var/svn# ls -lah
total 16K
drwxr-xr-x  4 root root 4.0K 2010-02-07 17:20 .
drwxr-xr-x 16 root root 4.0K 2010-02-06 18:10 ..
drwxr-xr-x  6 root root 4.0K 2010-02-07 17:20 projectx
drwxr-xr-x  6 root root 4.0K 2010-02-07 17:20 projecty
root@srv1:/var/svn# chown -R www-data:www-data *
root@srv1:/var/svn# ls -lah
total 16K
drwxr-xr-x  4 root     root     4.0K 2010-02-07 17:20 .
drwxr-xr-x 16 root     root     4.0K 2010-02-06 18:10 ..
drwxr-xr-x  6 www-data www-data 4.0K 2010-02-07 17:20 projectx
drwxr-xr-x  6 www-data www-data 4.0K 2010-02-07 17:20 projecty

Trebuie sa facem nishte modificari ale serverului apache astfel ca sa permita accesul la toate proiectele ( repository-uri ) create.

Continue reading howto secure svn server

howto install svn server

Cazul practic se face pe o masina de ubuntu 9.04 server. Acces la serverul svn va fi prin http.

1. Pentru inceput instalam SVN si modulul de interconectare apache-svn.

root@srv1:~# apt-get install subversion libapache2-svn

2. Creez un folder unde vor fi toate proiectele de svn :

root@srv1:~# cd /var
root@srv1:/var# mkdir svn

3. Acum trebuie sa creem un repository de subversion (SVN) pentru proiectu projectx:

root@srv1:/var/svn# svnadmin create projectx

4. Modificam fisierul de configurare a modulului de webdav a svn-ului:

root@srv1:/var/svn# vi /etc/apache2/mods-enabled/dav_svn.conf

5. In fisierul de configurare, tagul Location specifica adresa de unde va putea fi accesat svn ca adresa de URL, ex : http://www.myserver.com/projectx

&lt;Location /projectx&gt;

Continue reading howto install svn server