За последние 24 часа нас посетили 58594 программиста и 1813 роботов. Сейчас ищут 855 программистов ...

svn - сервер (теория)

Тема в разделе "Прочее", создана пользователем ShamahN, 6 авг 2010.

  1. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    В общем. Не могу воткнуть, что мне надо. Вернее как это надо сделать. Попробую расписать структуру и попытаться объяснить что я хочу увидеть, а кто имеет опыт, вас бы я хотел услышать как это сделать. Техническая часть проблем не вызывает. Поднять свн, прикрутить к апачу - все ерунда. Ближе к делу:
    Имеется следующая структура каталогов:
    /usr/local/www/sites - тут всякие куски всяких сайтов валяются
    /usr/local/www/sites/crsystem - один из этих кусков, собственно, который и нужен.
    /usr/local/www/svn/repos - корень репозитория
    /usr/local/www/svn/repos/crsystem - каталог проекта

    Я девелопер конторы. Захожу по урлу http://xxx.xxx.xxx.xxx. Смотрю - красивый сайт.
    Приходит таск - изменить то-то то-то.
    1. Апдейчу себе свн, правлю то что надо.
    2. коммитю. Но сайт еще не изменился.
    3. Я сообщаю супер-главному админу, чтобы он обновил.
    4. Супер-главный админ делает что-то. И изменения прикручиваются к сайту.
    Нужно реализовать такую схему

    Вот такая сказочка. Пока работал только с клиентской частью. Не думал что сервер это такая заморочка
     
  2. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    то что получилось у мня - вроде бы и ничего. Но, когда делаю первый раз чекаут из /usr/local/www/sites/crsystem он мне там еще одну папку crsystem создает и какая-то папка .svn напрягает. Но это ладно
    А когда по веб-интерфейсу ходим http://ххх.ххх.ххх.ххх/svn/crsystem/ то видим
    и структуру, которая нужна в конечном итоге. В общем, у меня каша уже в голове. И видимо я где-то напутал последние 100 раз что перенастраивал эту ерунду
     
  3. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Ну вобще-то SVN сервер это всего лишь хранилище. А если тебе нужно выложить изменения на сайт, то нужно делать либо экспорт, либо update на соотвествующий сервер что бы изменения приехали куда надо.

    Т.е. svn up /usr/local/www/sites/crsystem делаем (если ставили сайт через checkout), либо svn svn://svnhost/crsystem /usr/local/www/sites/crsystem для экспорта проекта в папку.
     
  4. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Psih
    т.е., получается сайт, есть ничто иное, как какая-нить <рабочая> копия хранилища?
     
  5. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    ShamahN
    Да
     
  6. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Psih
    я гений.. (\/)____Oo__(\/)
    А в чем тогда разница между svn update и svn checkout?
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ShamahN

    я бы все-таки сделал trunk и все такое как положено.

    и закрыл доступ в /.svn/ снаружи веба.
     
  8. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    440Hz, я бы тоже. Если бы понимал о чем речь =)
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    транк основная ветка разработки. рядом с ней можно вести различные дополнительные ветки branches.

    т.е. к примеру.

    ты ведешь проект. все работают в trunk. потом на каком-то этапе вы говорите. все. это релиз. выносите его в бранчи. далее если что-то правится в релизе, то потом аккуратно мержиться с основной веткой и наоборот. тут просто нужна культура ведения svn.

    например у нас для дизайнеров вынесен отдельный бранч где они там курочат. потом всеаккуратно сливается в транк и оттуда в нужные релизы.
     
  10. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    440Hz, понял. Ветвление. Я пропустил пока эту часть, ибо единственным разработчиком буду я. Чаще всего и человеком применяющим мои изменения на сервер, буду тоже я. Но не всегда. Надо просто отработать механизм.
    а это как?
     
  11. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    когда выкладывется проект на веб. тм просто делается svn up и выкачивается текуще состояние. туда же летят папки .svn, так вот через них можно получить доступ к исходникам. надо закрывать в них доступ по вебу.
     
  12. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    440Hz, точно. спасибо.
    т.е. после каждого апа мне надо выставлять права на .svn
     
  13. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    разница по-моему только в том, что апдейт обновляет локально только измененные с прошлой сессии файлы. Чекаут всю папку выливает локально.
    Вообще чекаут в классическом контроле версий должен еще лочить файл, чтоб только один разработчик одновременно вносить изменения.
    в свн это две разные команды.
     
  14. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    checkout это выбрать проект из SVN. Обычно его делают когда хотят сделать себе локальную копию проекта. update уже просто получает обновления с момента последней синхронизации.
     
  15. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    engager, спасибо за разъяснения. Осознание, думаю, в процессе использования придет =)
     
  16. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    нет. надо на уровне вебсервера закрыть туда доступ.
     
  17. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    engager, я разобрался. Без чекаута папка - просто папка. Она без контроля и апдейт в такую папку не прокатит. Первоначально в нее надо получить рабочую копию, а потом уже апдейтить.
    приму на заметку. Но помоему надежнее сделать ее владельцем юзера от которого делается апдейт. Или если кто-нить получит права вебсервера меня уже ничего спасет ? =)
     
  18. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
  19. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Ну и последний вопрос к гуру. Надо настроить ipfw. Пересобрал ядро с поддержкой. Все как полагается, дефаулт ту денай.

    Надо дать доступ к серваку только по ftp, http, https. ssh
    Вот такие у меня правила
    Код (Text):
    1.  
    2. #!/bin/sh
    3.  
    4. ipfw='/sbin/ipfw -q'
    5. ${ipfw} flush
    6. ${ipfw} add deny icmp from any to any in icmptype 5,9,13,14,15,16,17
    7. ${ipfw} add allow ip from any to any via lo
    8. ${ipfw} add allow ip from me to any
    9. ${ipfw} add allow icmp from any to any
    10. ${ipfw} add allow tcp from any to me http,https,xxxx,ftp
    11.  
    где xxxx - порт ssh
    1. Достаточный ли набор?
    2. Появилась проблемка: При авторизации ssh - ввожу логин и все к чертям зависает.
    upd. Второй вопрос отпал.. все норм.
    Осталось - достаточно ли правил ? =)
    Прошу помощи =)
     
  20. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    что-то не то.. ssh очень долго заходит. Ребут зависает в sshd старте
    мой любимый mc вообще заводится пол часа
     
  21. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Так.. ничего не получается =)
    Взял за основу стандартный набор правил.
    Код (Text):
    1.  
    2. 00100  32  3888 allow ip from any to any via lo0
    3. 00200   0     0 deny ip from any to 127.0.0.0/8
    4. 00300   0     0 deny ip from 127.0.0.0/8 to any
    5. 00400 220 75706 allow ip from me to 10.128.168.0/24
    6. 00500 270 21775 allow ip from 10.128.168.0/24 to me
    7. 00600   0     0 allow tcp from any to any established
    8. 00700   0     0 allow ip from any to any frag
    9. 00800   0     0 allow tcp from any to me dst-port 25 setup
    10. 00900   0     0 allow tcp from me to any setup
    11. 01000   0     0 deny tcp from any to any setup
    12. 01100  54  5409 allow udp from me to any dst-port 53 keep-state
    13. 01200   0     0 allow udp from me to any dst-port 123 keep-state
    14. 65535   6   845 deny ip from any to any
    Подскажите, плз. Что убрать или добавить чтобы было лучше =)
    Используются порты http, https, ftp, ssh
     
  22. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    вот мой. с хостинга моего

    Код (Text):
    1.  
    2. hosting(root):/usr/src#>cat /etc/firewall.conf
    3. #
    4. # 440hz zone
    5. #
    6.  
    7. fwcmd="/sbin/ipfw -q"
    8.  
    9. setup_loopback () {
    10.  
    11.         ${fwcmd} add pass all from any to any via lo0
    12.         ${fwcmd} add deny all from any to 127.0.0.0/8
    13.         ${fwcmd} add deny ip from 127.0.0.0/8 to any
    14.  
    15. }
    16.  
    17. $fwcmd -f flush
    18. $fwcmd zero
    19.  
    20. # CHECK-STATE
    21. $fwcmd add check-state
    22.  
    23. ### TABLES ###
    24.  
    25. # SSH POOL
    26. $fwcmd table 1 flush
    27. $fwcmd table 1 add 87.248.240.102/32
    28. $fwcmd table 1 add 195.2.240.6/32
    29. $fwcmd table 1 add 77.234.201.222/32
    30. $fwcmd table 1 add 195.131.135.159/32
    31. $fwcmd table 1 add 195.182.159.106/32
    32. $fwcmd table 1 add 87.248.240.102/32
    33. # RUSIMPORT
    34. $fwcmd table 1 add 213.170.72.138/32
    35.  
    36. # BAN
    37. $fwcmd table 6 flush
    38. $fwcmd table 6 add 216.240.153.33/32
    39. $fwcmd table 6 add 211.95.78.80/32
    40. $fwcmd table 6 add 59.125.229.74/24
    41. $fwcmd table 6 add 91.213.29.11/24
    42. $fwcmd table 6 add 91.213.121.91/24
    43. $fwcmd table 6 add 193.34.144.0/24
    44. $fwcmd table 6 add 61.233.9.58/24
    45. $fwcmd table 6 add 210.212.83.114/24
    46. $fwcmd table 6 add 60.19.28.24/24
    47. $fwcmd table 6 add 95.52.93.192/24
    48. $fwcmd table 6 add 78.36.213.29/24
    49.  
    50. # BOTCRACK
    51. $fwcmd table 6 add 85.17.201.131/24
    52. $fwcmd table 6 add 194.126.204.26/24
    53. $fwcmd table 6 add 95.32.68.192/24
    54. $fwcmd table 6 add 208.43.16.50/24
    55. $fwcmd table 6 add 212.45.24.41/24
    56. $fwcmd table 6 add 94.246.126.61/24
    57. $fwcmd table 6 add 83.145.214.81/24
    58.  
    59. ### RULES ###
    60.  
    61. # LOOPBACK
    62. setup_loopback
    63.  
    64. # SSH
    65. $fwcmd add pass tcp from me ssh to any
    66. $fwcmd add pass tcp from table\(1\) to me ssh
    67. #$fwcmd add deny tcp from any to me ssh
    68.  
    69. # BAN
    70. $fwcmd add deny tcp from table\(6\) to me
    71.  
    72. # ICMP
    73. $fwcmd add pass icmp from any to me
    74. $fwcmd add pass icmp from me to any
    75.  
    76. # IPERF
    77. #$fwcmd add pass tcp from any to me 5001
    78. #$fwcmd add pass tcp from me 5001 to any
    79.  
    80. # HTTP
    81. $fwcmd add pass tcp from any to me 80
    82. $fwcmd add pass tcp from me 80 to any
    83.  
    84. # FTP
    85. $fwcmd add pass tcp from any to me 21
    86. $fwcmd add pass tcp from me 21 to any
    87. $fwcmd add pass tcp from any to me 20
    88. $fwcmd add pass tcp from me 20 to any
    89. # 49500 50500
    90. $fwcmd add pass tcp from any to me 49500-50500
    91. $fwcmd add pass tcp from me 49500-50500 to any
    92.  
    93. # TORRENTS
    94. # 49160 49300
    95. #$fwcmd add pass tcp from any to me 49160-49300
    96. #$fwcmd add pass tcp from me 49160-49300 to any
    97.  
    98. # DNS
    99. $fwcmd add pass all from any    to me 53
    100. $fwcmd add pass all from me 53  to any
    101. $fwcmd add pass all from me     to any 53
    102. $fwcmd add pass all from any 53 to me
    103.  
    104. # TIME
    105. $fwcmd add pass ip from me  123,525 to any 123,525
    106. $fwcmd add pass ip from any 123,525 to me  123,525
    107.  
    108. ### ESTABLISH ###
    109. # Allow TCP through if setup succeeded
    110. $fwcmd add pass tcp from any to any established
    111.  
    112. # Allow IP fragments to pass through
    113. $fwcmd add pass all from any to any frag
    114.  
    115. # ME TO ANY
    116. $fwcmd add pass tcp from me to any setup
    117.  
    118. # Allow setup of incoming email
    119. #$fwcmd add pass tcp from any to me 25 setup
    120.  
    121. ### DENY ###
    122.  
    123. # RSYNC
    124. # $fwcmd add deny all from any to me 873
    125.  
    126. # SNMP
    127. $fwcmd add deny all from any to me 199,161
    128.  
    129. # MYSQL
    130. $fwcmd add deny all from any to me 3306
    131. $fwcmd add deny all from any to me 1186
    132.  
    133. # ALL
    134. #$fwcmd add deny log logamount 500 all from any to any
    135. #$fwcmd add deny all from any to any
    136.  
    137. #
    138. #
    139. #
    Код (Text):
    1.  
    2.  
    3. hosting(root):/usr/src#>cat /etc/rc.conf
    4. #
    5. # 440hz@mail.ru
    6. #
    7.  
    8. font8x14="cp866-8x14"
    9. font8x16="cp866b-8x16"
    10. font8x8="cp866-8x8"
    11. keymap="ru.koi8-r"
    12. mousechar_start="3"
    13. nfs_client_enable="YES"
    14. nfs_server_enable="YES"
    15.  
    16. # SSH
    17. sshd_enable="YES"
    18.  
    19. # HOST
    20. hostname="hosting.440hz.ru"
    21.  
    22. # NET
    23. defaultrouter="77.234.201.221"
    24. network_interfaces="lo0 rl0"
    25. ifconfig_rl0="inet 77.234.201.222 netmask 0xfffffffc"
    26.  
    27. # FIREWALL
    28. firewall_enable="YES"
    29. firewall_script="/etc/firewall.conf"
    30.  
    31. # ROUTINE
    32. keymap="ru.koi8-r"
    33. sshd_enable="YES"
    34. usbd_enable="NO"
    35.  
    36. # SENDMAIL
    37. sendmail_enable="NONE"
    38. sendmail_submit_enable="NO"
    39.  
    40. # proftpd
    41. proftpd_enable=YES
    42.  
    43. # DNS
    44. named_enable=YES
    45.  
    46. # nginx
    47. nginx_enable=YES
    48.  
    49. # php_fpm
    50. php_fpm_enable=YES
    51.  
    52. # mysql
    53. mysql_enable=YES
    54. mysql_dbdir="/usr/db/mysql"
    55.  
    56. # memcached
    57. memcached_enable=YES
    58. memcached_flags="-m 128 -l 127.0.0.1"
    59.  
    60. # dovecot
    61. dovecot_enable=YES
    62.  
    63. # exim
    64. exim_enable=YES
    65.  
    66. # clamav_clamd
    67. clamav_clamd_enable=YES
    68.  
    69. # clamav_freshclam
    70. clamav_freshclam_enable=YES
    71.  
    72. # TIMESYNC
    73. #ntpdate_enable="YES"
    74.  
    75. ntpd_enable="YES"
    76. ntpd_flags="-l /var/log/ntpd.log -p /var/run/ntpd.pid -f /var/db/ntpd.drift"
    77. ntpd_sync_on_start="YES"
    78.  
    79. timed_enable="YES"
    80. timed_flags="-t -M"
    81.  
    82. # spamd
    83. spamd_enable=YES
    84. spamd_flags="-c -x -m 10 -u spamd"
    85.  
    86. # WATCHDOG
    87. watchdogd_enable="YES"
    88.  
    89. # snmpd
    90. snmpd_enable="YES"
    91.  
    92. # snmptrapd
    93. snmptrapd_enable="NO"
    94.  
    95. # oops
    96. oops_enable=YES
    97.  
    98. #
    99. #
    100. #
     
  23. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Занятно =) с ssh непонятно. Пропуск по таблице и кроме всего еще и бан-таблица? =) двойная осторожность?
     
  24. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    если че надо по бсде - пиши.
     
  25. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    я сейчас на динамическом IP. лень вносить все подсетки.

    а что не понятно?