5 Eylül 2010 Pazar

Ev bilgisayarında SVN Server oluşturma

SVN gerçekten çok güzel bir araç. İster bir takım halinde, ister tek başınıza yazılım geliştiriyor olun projenizin versiyon hesabını SVN ile tutmanız gerçekten yararınıza.

Amatör ve tek geliştiricili projeler için en iyi modellerden birisi de geliştirme makinasına bir SVN server kurup uzaktaki bilgisayardan ev bilgisayarına bağlanarak ana versiyonları indirmek. Bu sayede geliştirme yapılan bilgisayarda daha hızlı işlem yapılacak ve her revizyon için internete bağlanma gereği duyulmayacak. Özellikle shared hosting modelinde olan web projeleri için bu model çok pratik ve hızlı.

Bu yazıda Windows'ta nasıl SVN sunucusu oluşturabileceğimizi anlatacağım. Adım adım gitmeyi tercih ediyorum.

1- Öncelikle Subversion'ın Windows için makine kodunu indirmemiz gerekli. İndirip kurduktan sonra subversion bin klasörünün Windows path'ine eklendiğinden emin olun.

2- Bilgisayarımızda bir SVN reposu olması gerekli. Bunun için

svnadmin create "%REPO-YOLU%"

komutunu verin. Repo yolunda bir repository oluşturulduğundan emin olun.

3- Bu adımda repomuza erişimi ayarlamamız gerekiyor. Bunun için repo yolunun altında conf/svnserve.conf dosyasını açın ve

anon-access = none
auth-access = write
password-db = passwd

satırlarına ulaşın (yorum ise baştaki #'ı silin). 3 satırın başında da gereksiz boşluk olmamasına dikkat edin.

4- Kullanıcı belirleme zamanı. Aynı klasörün içindeki passwd dosyasını açıp

harry = harryssecret
sally = sallyssecret

tarzında kullanıcılar ekleyebilirsiniz. Yine satırbaşlarında gereksiz boşluk olmamasına dikkat edin.

5- SVN repomuzu dışarıdan erişim için ayarlı hale getirdik. Şimdi bilgisayarımıza düşecek isteği değerlendirecek programı (svnserve.exe) açmamız gerek. Bunu her açılışta çalışan bir windows hizmeti olarak yapmayı tercih ediyorum.

sc create svnserver binpath= "%SVN_BIN_KLASORU%\svnserve.exe --service -r %REPO_YOLU%"
displayname= "Subversion" depend= Tcpip start= auto

komutu ile windows hizmetimizi oluşturuyoruz. Komutta %% arasındaki değişkenleri kendi kurulumunuza göre değiştirmeniz gerekiyor. "Subversion" hizmetimiz açılışta otomatik olarak açılacak şekilde ayarlansa da şu anda çalışmıyor. O yüzden

net start svnserver

komutu ile hizmeti başlatıyoruz.

6- SVN sunucumuz neredeyse hazır. Son adım olarak port ayarlarını yapmak kaldı. svn:// protokolü 3690 portunu kullanıyor. Sırasıyla bilgisayarınızın, anti-virüsünüzün ve ağınızdaki yönlendiricilerin(router) güvenlik duvarı ayarlarını yapıp 3690 portuna izin verildiğinden emin olun.

6 adımda svn sunucumuz hazır. İsterseniz kendi pcnizden localhost, yada dışarıdan ip nonuzu yazarak sunucuya bağlanabilirsiniz.
Örneğin aşağıdaki komutla daha önceden oluşturulmuş repo içindeki projem adlı klasörü uzaktan checkout edebilirsiniz:

svn checkout svn://%IP_NONUZ%/projem

1 Eylül 2010 Çarşamba

Timeout error in Mysql connection via Doctrine and Symfony

If you have used a local mysql server and decided to port to an external one, you might have a problem that symfony can not connect to the external db. It can't even get a response from the server.

If you experience that kind of issue, the thing might be that you forgot to include "host=" in your dsn definition.

replace
dsn: 'mysql:your-server-url;dbname=your-dbname'

with
dsn: 'mysql:host=your-server-url;dbname=your-dbname'

Notice the difference, which is 'host='. It is also forgotten on docs, not written neither on Practical Smyfony nor Definitive Guide. So you might also forget. It does not make a problem if you simply connect to a local mysql server.

404 not found error in production mode in Symfony

As a developer using Symfony hosted on an Apache server, I experienced an issue with production mode of Symfony.

Normally, production mode is reached via appending index.php to the end of base url. But thanks to mod_rewrite module of apache, index.php can be omitted. And links in production mode does not have the corresponding index.php part. That is good for user experience, but there is a problem that when trying to reach them, Apache server gives 404 error.

The problem is that apache mod_rewrite module is not loaded by default. Installed tough, but not loaded. So you need to tell Apache to load it on start. You can do this by uncommenting the line starting with "loadModule rewrite..." in http.conf file. The file resides in conf directory of Apache folder. After making changes, restart the server and that's it, the problem is solved.