เจอปัญหารัน svn แล้วขึ้น error เลยนำมาแชร์ประสบการณ์ให้อ่าน
ตัวอย่างการรัน svn แล้วเกิดปัญหา
[user1@client ~]$ svn --username user1 import test_project https://192.168.1.1/svn/test_project/trunk/test_project -m 'init release' svn: Server sent unexpected return value (500 Internal Server Error) in response to MKACTIVITY request for '/repos/test_project/!svn/act/...'
คอนฟิกที่ใช้เป็นการรัน svn โดยเขียน อ่าน ไฟล์ repos ผ่านทาง Apache DAV
ตัวอย่างคอนฟิกไฟล์ของ Apache เพื่อเก็บ svn repos บนเซิร์ฟเวอร์
<Location /svn> DAV svn SVNParentPath /var/svn/repos
# Limit write permission to list of valid users. <LimitExcept GET PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection. # SSLRequireSSL
AuthType Basic AuthName "Authorization Realm" AuthUserFile /var/svn/.htpasswd Require valid-user </LimitExcept> </Location>
ตรวจสอบ error_log ที่เซิร์ฟเวอร์แล้ว มีข้อความประมาณ “couldn’t check user”
[root@server ~]# tail /var/log/httpd/ssl_error_log [Mon Jul 26 15:56:08 2010] [crit] [client x.x.x.x] configuration error: couldn't check user. No user file?: /repos/test_project/!svn/act/...
ตอนแรกนึกว่าเป็นปัญหาเกี่ยวกับ permission ของไฟล์หรือไดเร็คทอรี พยายามแก้อยู่นาน จนกระทั่งเปลี่ยน chmod 777 ก็ยังไม่สามารถแก้ปัญหาได้
ลองแก้ปัญหาอยู่นาน ก็พบว่า ดันไปปิด module “mod_auth_basic” ในไฟล์คอนฟิก /etc/httpd/conf/httpd.conf ของ apache เลยทดลองเปิดขึ้นมา
LoadModule auth_basic_module modules/mod_auth_basic.so
ลองรัน svn อีกครั้ง ก็ยังขึ้น error เหมือนเดิม แต่ครั้งนี้ error_log ที่เซิร์ฟเวอร์เปลี่ยนไปเป็นบ่นเกี่ยวกับ “No groups file”
[user1@client ~]$ svn --username user1 import test_project https://192.168.1.1/svn/test_project/trunk/test_project -m 'init release' svn: Server sent unexpected return value (500 Internal Server Error) in response to MKACTIVITY request for '/repos/test_project/!svn/act/...'
[Mon Jul 26 16:30:05 2010] [crit] [client x.x.x.x] configuration error: couldn't check access. No groups file?: /repos/test_project/!svn/act/...
ลองเปิด/ปิด module ต่างๆ อยู่นาน กระทั่งพบว่าต้องเปิดอีก module หนึ่งคือ “mod_authz_user”
LoadModule authz_user_module modules/mod_authz_user.so
หลังจากเปิด module ทั้งสองแล้วก็สามารถรัน svn ได้ตามปกติ
[user1@client ~]$ svn --username user1 import test_project https://192.168.1.1/svn/test_project/trunk/test_project -m 'init' Authentication realm: <https://192.168.1.1:443> Authorization Realm Password for 'user1': Adding test_project/index.php