방금 svn
https를 통해 apache2
구성했습니다 ( ). 괜찮을 수 svn checkout
있는데 제출이 실패했습니다. 서버가 커밋을 수행할 저장소의 잘못된 위치를 찾고 있다는 apache2
것을 로그에서 볼 수 있습니다 . svn
이것은 내 apache2
443.example.com.conf 파일입니다.
<IfModule mod_ssl.c>
<virtualhost *:443>
# requests to https://example.com land here
ServerName example.com
DocumentRoot /home/me/svn-repos
# global properties for all directories in this site
<Location />
# do not use .htaccess files
allowoverride none
#DirectoryIndex index.html
#require all granted
DAV svn
SVNParentPath /home/me/svn-repos
AuthType Basic
AuthName "svn repositories"
AuthUserFile blah.passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
SSLEngine On
SSLCertificateFile blah
SSLCertificateKeyFile blah
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
ErrorDocument 400 /index.html
ErrorDocument 401 /index.html
# lots more ErrorDocument entries
</virtualhost>
</IfModule>
내 모든 저장소는 (예: etc. ) 아래의 디렉토리에 svn
있습니다./home/me/svn-repos
/home/me/svn-repos/repo1
/home/me/svn-repos/repo2
그래서 내 저장소 중 하나의 최신 로컬 복사본을 살펴보았습니다.
$ cd /tmp
$ svn co --username me https://example.com/repo1 repo1
Authentication realm: <https://example.com:443> svn repositories
Password for 'me': ***
A repo1/file1.txt
Checked out revision 1.
여태까지는 그런대로 잘됐다. 하지만 제출하려고 하면:
$ touch file2.txt
$ svn add file2.txt
A file2.txt
$ svn ci file2.txt -m added
Authentication realm: <https://example.com:443> svn repositories
Password for 'me': ***
Adding file2.txt
svn: E175009: Commit failed (details follow):
svn: E175009: The XML response contains invalid XML
svn: E130003: Malformed XML: no element found
apache2
오류 로그에서 svn
서버가 잘못된 위치에서 저장소를 찾고 있음 을 알 수 있습니다 .
$ sudo tail -4 /var/log/apache2/error.log
[Sat Dec 02 20:23:29.626227 2017] [:error] [pid 123] (20014)Internal error (specific information not available): [client x.x.x.x:x] Can't open file '/home/me/svn-repos/index.html/format': Not a directory
[Sat Dec 02 20:23:29.626264 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not fetch resource information. [404, #0]
[Sat Dec 02 20:23:29.626272 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not find the requested SVN filesystem [404, #20]
[Sat Dec 02 20:23:29.626277 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not find the requested SVN filesystem [404, #20]
찾고 있는 파일은 이지만 /home/me/svn-repos/repo1/format
파일을 찾기 위한 올바른 경로를 추가하지 않습니다. 나는 이것이 443.example.com.conf 파일에 뭔가를 추가해야 한다는 것을 의미한다고 생각 apache2
하지만 무엇인지 알 수 없습니다.
고쳐 쓰다
443.example.com.conf 파일을 다음과 같이 변경했습니다.
# ErrorDocument 404 /index.html
ErrorDocument 404 /indexyz.html
이제 커밋하려고 하면 오류 메시지가 다음과 같이 변경됩니다.
[Sat Dec 02 20:39:00.153942 2017] [:error] [pid 123] (20014)Internal error (specific information not available): [client 192.168.1.177:50228] Can't open file '/home/me/svn-repos/indexyz.html/format': No such file or directory
[Sat Dec 02 20:39:00.153979 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not fetch resource information. [404, #0]
[Sat Dec 02 20:39:00.153987 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not find the requested SVN filesystem [404, #2]
[Sat Dec 02 20:39:00.153992 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not find the requested SVN filesystem [404, #2]
하지만 여전히 별로 도움이 되지 않습니다.
답변1
- 당신은 가능한 모든 실수를 저질렀습니다(3/3)
- 당신은 SVN 책을 읽지 않았습니다
문제를 해결하세요:
- 환매 계약기필코 아니다http 트리 내에 위치
- SVN 위치기필코 아니다http-host의 루트 디렉터리에 위치
- SVN 위치기필코 아니다http-host 내의 물리적 경로에 위치하며, 논리적 경로에만 위치
답변2
드디어 작동하게 됐어요. 결국 이는 문서 루트와는 아무 관련이 없으며 ErrorDocument 선언이었습니다. 최종 구성은 다음과 같습니다 /index.html
.default
<IfModule mod_ssl.c>
<virtualhost *:443>
# requests to https://example.com land here
ServerName example.com
DocumentRoot /home/me/svn-repos
# global properties for all directories in this site
<Location />
# do not use .htaccess files
allowoverride none
DAV svn
SVNParentPath /home/me/svn-repos
AuthType Basic
AuthName "svn repositories"
AuthUserFile blah.passwd
Require valid-user
</Location>
# http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html
CustomLog ${APACHE_LOG_DIR}/svn_logfile "%t %u %{SVN-ACTION}e" env=SVN-ACTION
ErrorLog ${APACHE_LOG_DIR}/error.log
SSLEngine On
SSLCertificateFile fullchain.pem
SSLCertificateKeyFile privkey.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
ErrorDocument 400 default
ErrorDocument 401 default
ErrorDocument 402 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 406 default
ErrorDocument 407 default
ErrorDocument 408 default
ErrorDocument 409 default
ErrorDocument 410 default
ErrorDocument 411 default
ErrorDocument 412 default
ErrorDocument 413 default
ErrorDocument 414 default
ErrorDocument 415 default
ErrorDocument 416 default
ErrorDocument 417 default
#ErrorDocument 418 default
ErrorDocument 421 default
ErrorDocument 422 default
ErrorDocument 423 default
ErrorDocument 424 default
ErrorDocument 426 default
ErrorDocument 428 default
ErrorDocument 429 default
ErrorDocument 431 default
ErrorDocument 451 default
ErrorDocument 500 default
ErrorDocument 501 default
ErrorDocument 502 default
ErrorDocument 503 default
ErrorDocument 504 default
ErrorDocument 505 default
ErrorDocument 506 default
ErrorDocument 507 default
ErrorDocument 508 default
ErrorDocument 510 default
ErrorDocument 511 default
</virtualhost>
</IfModule>