Skip to content
Caution: You are browsing the legacy symfony 1.x part of this website.

symfony advent calendar day one: starting up a project

Language

과제

μ‹¬ν¬λ‹ˆ κ°•λ¦Όμ ˆ 달λ ₯ (μ£Ό - μ˜ˆμˆ˜κ°€ νƒœμ–΄λ‚¨μ„ κΈ°λ…ν•˜μ—¬ 12μ›” 달λ ₯을 advent calendar 라고 뢀름) 은 12μ›” 1일뢀터 크리슀마슀 μ΄μ „κΉŒμ§€ 24μΌλ™μ•ˆ 맀일 λ°œν–‰λ  24개의 νŠœν† λ¦¬μ–Ό λͺ¨μŒμž…λ‹ˆλ‹€. 각 νŠœν† λ¦¬μ–Όμ— 적힌 λ‚΄μš©μ„ λ”°λΌν•˜λŠ”λ°λŠ” 1μ‹œκ°„μ΄ μ•ˆ 걸릴 것이고, νŠœν† λ¦¬μ–Όμ„ λ”°λΌν•˜λŠ” λ™μ•ˆ μ›Ή 2.0 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ κ°œλ°œλ˜λŠ” 과정을 μ²˜μŒλΆ€ν„° λκΉŒμ§€ 보싀 수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€. ν¬λ¦¬μŠ€λ§ˆμŠ€μ—λŠ” 개발된 결과물이 μ˜¨λΌμΈμƒμ—μ„œ μ‚¬μš©μ΄ κ°€λŠ₯ν•  것이며, μ†ŒμŠ€λŠ” μ˜€ν”ˆμ†ŒμŠ€ν˜•νƒœκ°€ 될 κ²ƒμž…λ‹ˆλ‹€. 이 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μœ μš©ν•˜κ³  ν₯λ―Έλ‘­κ³  μž¬λ°Œμ„ κ²ƒμž…λ‹ˆλ‹€. 이 μ‘μš©ν”„λ‘œκ·Έλž¨μ€ ν₯λ―Έλ‘­κ³ , 재밌고, μœ μš©ν•  κ²ƒμž…λ‹ˆλ‹€.

24 μΌλ™μ•ˆ 맀일 ν•˜λ£¨μ— ν•œ μ‹œκ°„λ³΄λ‹€ 적은 μ‹œκ°„μ„ μ“΄λ‹€λ©΄, 그것은 24 μ‹œκ°„ μ΄ν•˜μž…λ‹ˆλ‹€. μš°λ¦¬λŠ” 개발자 μ—¬λŸ¬λΆ„μ΄ μ‹¬ν¬λ‹ˆλ₯Ό λ°°μš°λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ΄ 24 μ‹œκ°„ μ΄ν•˜λΌκ³  μƒκ°ν•©λ‹ˆλ‹€. 맀일맀일 우리의 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—λŠ” μƒˆλ‘œμš΄ κΈ°λŠ₯이 μΆ”κ°€κ°€ 될 것이며, 이λ₯Ό 톡해 μ—¬λŸ¬λΆ„μ—κ²Œ μ‹¬ν¬λ‹ˆμ˜ κΈ°λŠ₯을 μ–΄λ–»κ²Œ ν™œμš©ν•˜λ©΄ λ˜λŠ”μ§€, 그리고 μ‹¬ν¬λ‹ˆλ₯Ό ν™œμš©ν•œ μ›Ή κ°œλ°œμ€ μ–΄λ–»κ²Œ μ§„ν–‰λ˜λŠ”μ§€λ₯Ό λ³΄μ—¬λ“œλ¦΄ κ²ƒμž…λ‹ˆλ‹€. 맀일맀일 μ—¬λŸ¬λΆ„μ€ μ‹¬ν¬λ‹ˆλ₯Ό ν™œμš©ν•œ μ›Ή 개발이 μ–Όλ§ˆλ‚˜ λΉ λ₯΄κ³  νš¨μœ¨μ μΈμ§€ κΉ¨λ‹«κ²Œ 될 것이며, μ•„λ§ˆ 더 배우고 μ‹Άμ–΄μ§ˆ κ²ƒμž…λ‹ˆλ‹€.

μ΄κ±Έλ‘œλŠ” λΆ€μ‘±ν•  것 같기도 ν•˜κ³ , 저희가 개우λ₯΄κΈ° λ•Œλ¬Έμ΄κΈ°λ„ ν•˜μ§€λ§Œ, 21μΌμ§ΈλŠ” κ³„νšμ΄ μ—†μŠ΅λ‹ˆλ‹€. μ—¬κΈ° λͺ¨μΈ 뢄듀이 κ°€μž₯ μ›ν•˜λŠ” κΈ°λŠ₯이 κ·Έ 날에 좔가될 κ²ƒμž…λ‹ˆλ‹€. κ·Έ λ‚ κΉŒμ§€λŠ” μ•„λ¬΄λŸ° 쀀비도 ν•˜κ³  μžˆμ§€ μ•Šκ² μ§€λ§Œ, κ°€λŠ₯ν•˜λ¦¬λΌ μƒκ°ν•©λ‹ˆλ‹€. μ•„λ§ˆλ„ 그날은 "μ‹¬ν¬λ‹ˆ κ³ μˆ˜μ—κ²Œ λ“£λ‹€" 정도가 λ˜μ§€ μ•Šμ„κΉŒ μ‹Άλ„€μš”.

ν”„λ‘œμ νŠΈ

μ²˜μŒμ—λŠ” 이번 ν”„λ‘œμ νŠΈμ— 할일 λͺ©λ‘μ΄λ‚˜ μ£Όμ†Œλ‘, λ˜λŠ” 온라인 μ„œμ  같은 κ°„λ‹¨ν•œ λ‹¨μˆœ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€ κ³„νšμ΄μ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ €ν¬λŠ” μ‹¬ν¬λ‹ˆλ₯Ό μ’€ 더 μœ μš©ν•˜κ³  창의적인 ν”„λ‘œμ νŠΈμ— μ‚¬μš©ν•΄μ„œ λ‹€μ–‘ν•œ κΈ°λŠ₯을 κ°€μ§€κ³  규λͺ¨λ„ μž‘μ§€ μ•Šμ€, 그런 것을 λ§Œλ“€κ³  μ‹Άμ–΄μ‘ŒμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‹¬ν¬λ‹ˆκ°€ λ³΅μž‘ν•œ μƒν™©μ—μ„œλ„ 전문적인 μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 힘 μ•ˆ 듀이고도 λ©‹μ§€κ²Œ λ§Œλ“€ 수 μžˆλ‹€λŠ” 것을 증λͺ…ν•΄ 보이고 μ‹ΆμŠ΅λ‹ˆλ‹€.

또 λ§Žμ€ μ‚¬λžŒλ“€μ΄ μ‹€μ œλ‘œ μ‘μš©ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©ν•˜λ„λ‘ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‹¬ν¬λ‹ˆ μ›Ήμ‚¬μ΄νŠΈκ°€ 일정 μˆ˜μ€€μ΄μƒμ˜ λΆ€ν•˜λ₯Ό 감당할 수 μžˆλ‹€λŠ”κ²ƒμ„ 보여 쀄 수 μžˆμ„ ν…Œλ‹ˆκΉŒμš”. 이것듀이 μ™œ 이 μ‘μš©ν”„λ‘œκ·Έλž¨μ΄ μ‹€μ œλ‘œ μ„œλΉ„μŠ€λ₯Ό ν•˜μ—¬μ•Ό ν•˜λ©°, 기쑴의 μš•κ΅¬λ₯Ό μΆ©μ‘±μ‹œμΌœμ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•œ μ΄μœ μž…λ‹ˆλ‹€. λ§ν•˜μžλ©΄ μΌμ’…μ˜ λΆ€ν•˜ ν…ŒμŠ€νŠΈμΈ μ…ˆμž…λ‹ˆλ‹€. λ‹€μ‹œ λ§ν•˜λ©΄, μ—¬λŸ¬λΆ„μ˜ 도움이 ν•„μš”ν•©λ‹ˆλ‹€. 이 μ›Ή ν”„λ‘œμ νŠΈλ₯Ό digg 에 λ“±λ‘ν•˜κ³ , 뢁마크 ν•˜κ³ , λΈ”λ‘œκ·Έμ—λ„ μ“°κ³ , 주변에 이야기 ν•΄μ„œ μ–Όλ§ˆλ‚˜ λ§Žμ€ λΆ€ν•˜λ₯Ό 감당 κ°€λŠ₯ν•œμ§€ μ‚΄νŽ΄λ³΄λ„λ‘ λ„μ™€μ£Όμ‹­μ‹œμ˜€.

ν”„λ‘œμ νŠΈ λ‚΄μš©μ€ 아직은 λΉ„λ°€λ‘œ ν•˜κ² μŠ΅λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ λ‚΄μš©μ΄ 무엇일지 ν˜Όμžμ„œ 상상해 λ³΄λŠ” 것도 μž¬λ―Έμžˆκ² μ§€μš”? ν•˜μ§€λ§Œ ν”„λ‘œμ νŠΈμ— λŒ€ν•΄ μ–˜κΈ°λ₯Ό ν•΄μ•Ό ν•˜λ‹ˆ, ν”„λ‘œμ νŠΈ μ΄λ¦„λ§Œμ€ μ•Œλ € λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€. askeet (μ£Ό - ask it)

였늘 ν•  것듀

였늘 할일듀은 κ°œλ°œν™˜κ²½μ„ μ •λ¦¬ν•˜κ³  μ›Ή λΈŒλΌμš°μ €λ₯Ό 톡해 ν”„λ‘œκ·Έλž¨ 첫 화면을 λ³΄μ—¬μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€. λ¨Όμ € κ°œλ°œν™˜κ²½ 정리λ₯Ό μœ„ν•΄ μ‹¬ν¬λ‹ˆ μ„€μΉ˜, μ‘μš©ν”„λ‘œκ·Έλž¨ 생성, μ›Ή μ„œλ²„ μ„€μ •, 그리고 버전 컨트둀 μ‹œμŠ€ν…œ 섀정을 ν•  κ²ƒμž…λ‹ˆλ‹€.

기쑴의 μ§€μΉ¨μ„œλ“€μ„ 이미 따라해 보신 λΆ„λ“€μ—κ²ŒλŠ” μ‰½κ² μ§€λ§Œ κ·Έλ ‡μ§€ μ•ŠμœΌμ‹  λΆ„λ“€μ—κ²ŒλŠ” μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. ν˜Ήμ‹œ μ–΄λ ΅κ²Œ λŠκ»΄μ§€μ‹œλ”λΌλ„ μƒˆλ‘œμš΄ 것을 λ°°μšΈλ• λŠ˜μƒ κ·Έλ ‡λ“― 이해해 μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€.

였늘 μ„€λͺ…은 μ—¬λŸ¬λΆ„μ΄ *nix ν™˜κ²½μ—μ„œ μ•„νŒŒμΉ˜μ™€ MySQL, 그리고 PHP 5 κ°€ μ„€μΉ˜λ˜μ–΄ μžˆλ‹€λŠ” μ „μ œμ—μ„œ μ΄λ€„μ§ˆ 것 μž…λ‹ˆλ‹€. λ§Œμ•½ μ—¬λŸ¬λΆ„μ΄ μœˆλ„μš° ν™˜κ²½μ„ μ‚¬μš©ν•˜λ”λΌλ„ 크게 κ±±μ •ν•  것은 μ—†μŠ΅λ‹ˆλ‹€. λͺ‡κ°€μ§€ λͺ…령듀을 cmd ν”„λ‘¬ν”„νŠΈμ—μ„œ μž…λ ₯ν•˜κΈ°λ§Œ ν•˜λ©΄ λ‹€λ₯Έ 것듀은 λ¬Έμ œκ°€ 없을 κ²ƒμž…λ‹ˆλ‹€.

μ‹¬ν¬λ‹ˆ μ„€μΉ˜

μ‹¬ν¬λ‹ˆλ₯Ό μ„€μΉ˜ν•˜λŠ” κ°€μž₯ κ°„λ‹¨ν•œ 방법은 PEAR 을 μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ '채널' κΈ°λŠ₯을 μ‚¬μš©ν•΄μ„œ μ‹¬ν¬λ‹ˆμ˜ 채널에 μ ‘κ·Όν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— λ¨Όμ € PEAR λ₯Ό 1.4.0 λ˜λŠ” κ·Έ μ΄μƒμ˜ λ²„μ „μœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œ ν•΄μ•Ό ν•©λ‹ˆλ‹€. (PHP 5.1.0 을 μ‚¬μš©ν•˜κ³  μžˆλ‹€λ©΄ PEAR 1.4.5 κ°€ ν¬ν•¨λ˜μ–΄ μžˆκΈ°μ— κ΄€κ³„μ—†μŠ΅λ‹ˆλ‹€.)

$ pear upgrade PEAR

μ°Έκ³ : PEAR 와 κ΄€λ ¨ν•΄μ„œ λ¬Έμ œκ°€ μžˆλ‹€λ©΄ μ„€μΉ˜ 뢀뢄을 μ°Έκ³ ν•˜μ„Έμš”.

이제 'symfony' 채널을 μΆ”κ°€ν•©λ‹ˆλ‹€.

$ pear channel-discover pear.symfony-project.com

이제 μ΅œμ‹  λ²„μ „μ˜ μ‹¬ν¬λ‹ˆλ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€.

$ pear install symfony/symfony

μ‹¬ν¬λ‹ˆ μ„€μΉ˜κ°€ μ™„λ£Œλ˜μ—ˆλŠ”μ§€ λ‹€μŒ λͺ…령을 톡해 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

$ symfony -V

symfony -T λͺ…령을 ν†΅ν•΄μ„œ 이 μ»€λ§¨λ“œ 라인 툴이 μ–΄λ–€ κΈ°λŠ₯을 κ°€μ§€κ³  μžˆλŠ”μ§€ 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 온라인 λ¬Έμ„œλ“€ 쀑 μ„€μΉ˜ λΆ€λΆ„μ—λŠ” PEAR λ₯Ό ν†΅ν•œ 방법 외에도 tgz μ••μΆ•νŒŒμΌμ΄λ‚˜ svn 접근을 ν†΅ν•œ μ„€μΉ˜λ°©λ²•λ„ λ‚˜μ™€ μžˆμœΌλ‹ˆ 관심이 μžˆλ‹€λ©΄ μ°Έκ³ ν•˜μ‹­μ‹œμ˜€. μ‹¬ν¬λ‹ˆ μœ„ν‚€ 에 PEAR 없이 μ‹¬ν¬λ‹ˆλ₯Ό μ„€μΉ˜ν•˜λŠ” 방법을 μ—¬λŸ¬ 뢄듀이 μƒμ„Ένžˆ μ μ–΄μ£Όμ…¨μœΌλ‹ˆ 이λ₯Ό μ°Έκ³ ν•˜λŠ” 것도 쒋을 κ²ƒμž…λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ μ„€μ •

μ‹¬ν¬λ‹ˆμ—μ„œλŠ” 같은 데이터 λͺ¨λΈμ„ κ°–λŠ” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜λ“€μ„ λ¬Άμ–΄μ„œ ν”„λ‘œμ νŠΈλΌκ³  λΆ€λ¦…λ‹ˆλ‹€. 이번 'askeet' ν”„λ‘œμ νŠΈμ—λŠ” frontend 와 backend, λ‘κ°œμ˜ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‚¬μš©λ  κ²ƒμž…λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ 곡간은 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜λ“€μ„ μœ„ν•΄ μ‚¬μš©λ˜λ―€λ‘œ κ°€μž₯ λ¨Όμ € λ§Œλ“€μ–΄μ§‘λ‹ˆλ‹€. ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν”„λ‘œμ νŠΈλ₯Ό 생성할 λ””λ ‰ν† λ¦¬μ—μ„œ symfony init-project λΌλŠ” λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€.

$ mkdir /home/sfprojects/askeet
$ cd /home/sfprojects/askeet
$ symfony init-project askeet

이제 symfony init-app λͺ…령을 μ‚¬μš©ν•˜μ—¬ frontend μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μƒμ„±ν•©λ‹ˆλ‹€.

$ symfony init-app frontend

μ‰½μ§€μš”?

μ°Έκ³ : μœˆλ„μš° μ‚¬μš©μžλ“€μ€ ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€λ•Œ ν˜„μž¬ 디렉토리 ν˜Ήμ€ μƒμœ„ 디렉토리듀 쀑 ν•˜λ‚˜κ°€ Documents and Settings 처럼 슀페이슀λ₯Ό ν¬ν•¨ν•˜κ³  μžˆμ§€λŠ” μ•Šμ€μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

μ›Ή μ„œλ²„ μ„€μ •

μ›Ή μ„œλ²„ μ„€μ •

이제 μƒˆλ‘œμš΄ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ•„νŒŒμΉ˜ 섀정을 λ°”κΏ€ μ°¨λ‘€μž…λ‹ˆλ‹€. μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜λ“€μ€ 가상 호슀트 λ°©μ‹μœΌλ‘œ μ„€μ •λ˜λŠ” 것이 λ°”λžŒμ§ν•˜λ©°, μ—¬κΈ°μ„œλŠ” 가상 호슀트 λ°©μ‹λ§Œμ„ μ„€λͺ…ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. λ§Œμ•½ alias 방식을 μ„ ν˜Έν•˜μ‹ λ‹€λ©΄, 온라인 λ¬Έμ„œλ“€ μ€‘μ—μ„œ μ›Ή μ„œλ²„ μ„€μ • 뢀뢄을 μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

Apache/conf/ λ””λ ‰ν† λ¦¬μ˜ httpd.conf νŒŒμΌμ„ μ—΄κ³  λ‹€μŒκ³Ό 같이 μΆ”κ°€ν•˜μ‹­μ‹œμ˜€.

<VirtualHost *:80>
  ServerName askeet
  DocumentRoot "/home/sfprojects/askeet/web"
  DirectoryIndex index.php
  Alias /sf /usr/local/lib/php/data/symfony/web/sf

  <Directory "/home/sfprojects/askeet/web">
   AllowOverride All
  </Directory>
</VirtualHost>

μ°Έκ³ : /sf alias λŠ” PEAR 디렉토리쀑 data 디렉토리에 μžˆλŠ” symfony 디렉토리λ₯Ό κ°€λ₯΄μΌœμ•Ό ν•©λ‹ˆλ‹€. μ‹¬ν¬λ‹ˆλŠ” ν•΄λ‹Ή 디렉토리 μ•„λž˜μ— μžˆλŠ” λͺ‡λͺ‡ 이미지듀과 μžλ°”μŠ€ν¬λ¦½νŠΈλ“€μ„ μ‚¬μš©ν•˜λ©°, ν•΄λ‹Ή λ””λ ‰ν† λ¦¬λŠ” μ›Ή 디버그 νˆ΄λ°”μ™€ AJAX 헬퍼가 정상 λ™μž‘ν•˜κΈ° μœ„ν•΄μ„œλ„ ν•„μš”ν•©λ‹ˆλ‹€.

μœˆλ„μš°μ¦ˆμ—μ„œλŠ” Alias 뢀뢄을 λ‹€μŒκ³Ό 같이 μˆ˜μ •ν•˜λ©΄ λ©λ‹ˆλ‹€.

  Alias /sf "C:\php\pear\data\symfony\web\sf"

도메인 이름 μ„€μ •

askeet 도메인 λ„€μž„μ€ 둜컬 머신에 λ“±λ‘λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

λ§Œμ•½ μ—¬λŸ¬λΆ„μ΄ λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ„ μ‚¬μš©μ€‘μ΄λΌλ©΄, /etc/hosts νŒŒμΌμ„ μˆ˜μ •ν•˜λ©΄ λ©λ‹ˆλ‹€. λ§Œμ•½ μ—¬λŸ¬λΆ„μ΄ Windows XP λ₯Ό μ‚¬μš©μ€‘μ΄λΌλ©΄ C:\WINDOWSsystem32\drivers\etc` 디렉토리에 μˆ˜μ •ν•  파일이 μžˆμŠ΅λ‹ˆλ‹€.

νŒŒμΌμ— λ‹€μŒμ„ μΆ”κ°€ν•˜λ©΄ λ©λ‹ˆλ‹€.

127.0.0.1         askeet

μ°Έκ³ : 도메인 이름을 둜컬 머신에 μΆ”κ°€ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ‹œμŠ€ν…œ κ΄€λ¦¬μž κΆŒν•œμ΄ ν•„μš”ν•©λ‹ˆλ‹€.

λ§Œμ•½ μƒˆλ‘œμš΄ 호슀트λ₯Ό μΆ”κ°€ν•˜λŠ” 방식이 λ§˜μ— μ•ˆ λ“ λ‹€λ©΄ Listen λ¬Έμž₯을 μ›Ή μ„œλ²„ μ„€μ • νŒŒμΌμ— μΆ”κ°€ν•˜μ—¬ λ‹€λ₯Έ 포트λ₯Ό μ‚¬μš©ν•˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ„€μ • 확인

μ•„ν”ΌμΉ˜λ₯Ό μž¬μ‹œλ™ ν•˜κ³ , 방금 μƒμ„±ν•œ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ— 접속이 κ°€λŠ₯ν•œμ§€ 확인해 λ΄…μ‹œλ‹€.

http://askeet/

μΆ•ν•˜ν•©λ‹ˆλ‹€

μ°Έκ³ : μ‹¬ν¬λ‹ˆλŠ” mod_rewrite λͺ¨λ“ˆμ„ μ‚¬μš©ν•΄μ„œ /index.php/ 뢀뢄을 URL μ—μ„œ μ œκ±°ν•©λ‹ˆλ‹€. λ§Œμ•½ 이 κΈ°λŠ₯을 μ‚¬μš©ν•˜κ³  μ‹Άμ§€ μ•Šκ±°λ‚˜ μ›Ή μ„œλ²„κ°€ 이 κΈ°λŠ₯을 μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, web/ 디렉토리 μ•„λž˜μ˜ .htaccess νŒŒμΌμ„ μ œκ±°ν•˜μ‹­μ‹œμ˜€. λ§Œμ•½ μ—¬λŸ¬λΆ„μ΄ μ‚¬μš©μ€‘μΈ μ•„νŒŒμΉ˜κ°€ mod_rewrite 와 ν•¨κ»˜ 컴파일 λ˜μ§€ μ•Šμ•˜λ‹€λ©΄ mod_rewrite 동적 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ (DSO) κ°€ μ„€μΉ˜ 여뢀와 μ•„λž˜ λ‚΄μš©μ΄ httpd.conf 에 μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό ν™•μΈν•˜μ‹­μ‹œμ˜€.

AddModule mod_rewrite.c
LoadModule rewrite_module modules/mod_rewrite.so

슀마트 URL κ³Ό κ΄€λ ¨ν•΄μ„œλŠ” 온라인 λ¬Έμ„œλ“€ 쀑 λΌμš°νŒ… 뢀뢄을 μ°Έμ‘°ν•˜μ„Έμš”.

개발 ν™˜κ²½μ€ μ•„λž˜ μ£Όμ†Œλ‘œ μ ‘κ·Ό κ°€λŠ₯ν•˜λ‹ˆ 접속해 λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

http://askeet/frontend_dev.php/

우츑 상단에 μžˆλŠ” μ›Ή 디버그 νˆ΄λ°”μ™€ μž‘μ€ μ•„μ΄μ½˜ 이미지듀이 보이신닀면 Alias sf/ 섀정이 μ˜¬λ°”λ₯΄κ²Œ 된 κ²ƒμž…λ‹ˆλ‹€.

μ›Ή 디버그 νˆ΄λ°”

λ§Œμ•½ IIS μ„œλ²„λ₯Ό μ‚¬μš©μ€‘μ΄λΌλ©΄ 쑰금 λ‹€λ₯Έ 섀정이 ν•„μš”ν•©λ‹ˆλ‹€. κ΄€κ³„λœ λ‹€λ₯Έ νŠœν† λ¦¬μ–Ό 을 μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€..

Subversion

μ €ν¬λ“€μ˜ 원칙쀑 ν•˜λ‚˜λŠ” κΈ°μ‘΄ μ½”λ“œκ°€ λ§κ°€μ§€λŠ” 것을 λ‘λ €μ›Œν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μš°λ¦¬λŠ” λΉ λ₯΄κ²Œ μΌν•˜κΈΈ 바라고, μƒˆλ‘œμš΄ μ½”λ“œκ°€ λ§˜μ— λ“€μ§€ μ•ŠλŠ”λ‹€λ©΄ λ’€λ‘œ λŒμ•„κ°€κΈΈ 바라며, μ—¬λŸ¬ μ‚¬λžŒλ“€μ΄ ν•¨κ»˜ μΌν•˜κ³ , μ—¬λŸ¬λΆ„λ“€μ΄ 맀일맀일의 μƒˆλ‘œμš΄ λ²„μ „μ˜ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ‹€μš΄λ‘œλ“œ 받을 수 있길 λ°”λžλ‹ˆλ‹€. 이 λͺ¨λ“  것을 μœ„ν•΄μ„œ μš°λ¦¬λŠ” μ†ŒμŠ€ 버전 관리 툴인 Subversion 을 λ„μž…ν•  κ²ƒμž…λ‹ˆλ‹€. μ—¬λŸ¬λΆ„μ΄ 이미 subversion μ„œλ²„λ₯Ό κ°€μ§€κ³  있고 ν•΄λ‹Ή μ„œλ²„μ— μ ‘κ·Όν•  수 μžˆλ‹€κ³  κ°€μ •ν•˜κ³  μ§„ν–‰ν•˜κ² μŠ΅λ‹ˆλ‹€.

λ¨Όμ € askeet ν”„λ‘œμ νŠΈλ₯Ό μœ„ν•œ μƒˆλ‘œμš΄ μ €μž₯μ†Œλ₯Ό λ§Œλ“­λ‹ˆλ‹€.

$ svnadmin create $SVNREP_DIR/askeet
$ svn mkdir -m "layout creation" file:///$SVNREP_DIR/askeet/trunk file:///$SVNREP_DIR/askeet/tags file:///$SVNREP_DIR/askeet/branches

λ‹€μŒμœΌλ‘œλŠ” μ†ŒμŠ€μ½”λ“œλ₯Ό μ €μž₯μ†Œμ— 처음으둜 μ €μž₯ν•©λ‹ˆλ‹€. cache/ 와 log/ λ””λ ‰ν† λ¦¬λŠ” μ œμ™Έν•©λ‹ˆλ‹€.

$ cd /home/sfprojects/askeet
$ rm -rf cache/*
$ rm -rf log/*
$ svn import -m "initial import" . file:///$SVNREP_DIR/askeet/trunk

κΈ°μ‘΄ μ†ŒμŠ€λ””λ ‰ν† λ¦¬λŠ” 이제 ν•„μš”κ°€ μ—†μœΌλ―€λ‘œ μ œκ±°ν•˜κ³  SVN 을 톡해 μ†ŒμŠ€λ₯Ό λ‹€μ‹œ λ‹€μš΄λ‘œλ“œ λ°›μŠ΅λ‹ˆλ‹€.

$ cd /home/sfprojects
$ mv askeet askeet.origin
$ svn co file:///$SVNREP_DIR/askeet/trunk/ askeet/
$ ls askeet

$ rm -rf askeet.origin

ν•œ κ°€μ§€ 섀정이 더 λ‚¨μ•˜μŠ΅λ‹ˆλ‹€. λ§Œμ•½ μ—¬λŸ¬λΆ„μ΄ ν”„λ‘œμ νŠΈ 메인 λ””λ ‰ν† λ¦¬μ—μ„œ SVN μ €μž₯μ†Œλ‘œ μ €μž₯을 ν•˜κ²Œ 되면 μ—¬λŸ¬λΆ„μ΄ μ›ν•˜μ§€ μ•ŠλŠ” cache λ‚˜ log λ””λ ‰ν† λ¦¬κΉŒμ§€ μ €μž₯μ†Œμ— μ €μž₯될 κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ 이듀 λ””λ ‰ν† λ¦¬λŠ” μ €μž₯ν•˜μ§€ μ•Šλ„λ‘ μ„€μ •ν•©λ‹ˆλ‹€.

$ cd /home/sfprojects/askeet
$ svn propedit svn:ignore cache

SVN κΈ°λ³Έ ν…μŠ€νŠΈ 에디터가 싀행될 κ²ƒμž…λ‹ˆλ‹€. cache/ 디렉토리λ₯Ό μΆ”κ°€ν•˜μ—¬ SVN 이 ν•΄λ‹Ή 디렉토리λ₯Ό λ¬΄μ‹œν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

*

μ €μž₯ν•˜κ³  μ’…λ£Œν•©λ‹ˆλ‹€.

log/ 디렉토리에 λŒ€ν•΄μ„œλ„ μ„€μ •ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

$ svn propedit svn:ignore log

그리고 μ €μž₯ ν›„ μ’…λ£Œν•©λ‹ˆλ‹€.

*

이제 cache 와 log 디렉토리에 μ›Ή μ„œλ²„κ°€ 기둝 ν•  수 μžˆλ„λ‘ ν•΄μ£Όμ‹­μ‹œμ˜€.

$ chmod 777 cache
$ chmod 777 log

μ°Έκ³ : Windows μ‚¬μš©μžλ“€μ€ TortoiseSVN λ₯Ό μ‚¬μš©ν•˜μ—¬ subversion μ €μž₯μ†Œλ₯Ό 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ†ŒμŠ€ 버전 μ»¨νŠΈλ‘€μ— λŒ€ν•΄μ„œ 더 많이 μ•Œκ³  μ‹ΆμœΌμ‹œλ‹€λ©΄ project creation chapter λ₯Ό μ°Έμ‘°ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€..

μ°Έκ³ : askeet SVN μ €μž₯μ†ŒλŠ” μ•„λž˜ μ£Όμ†Œλ‘œ μ ‘κ·Ό κ°€λŠ₯ν•©λ‹ˆλ‹€.

  http://svn.askeet.com/

μ–΄μ„œ κ°€μ…”μ„œ 체크아웃 ν•˜μ„Έμš”.

였늘 μž‘μ„±λœ μ½”λ“œλ“€μ΄ 이미 μ €μž₯μ†Œμ— μžˆμŠ΅λ‹ˆλ‹€. release_day_1 νƒœκ·Έλ‘œ μ²΄ν¬μ•„μ›ƒν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.:

  $ svn co http://svn.askeet.com/tags/release_day_1/ askeet/

내일 μ΄μ‹œκ°„μ—

자, 이제 벌써 1μ‹œκ°„μž…λ‹ˆλ‹€. λ§Žμ€ 것을 이야기 ν–ˆμ§€λ§Œ, μ‹¬ν¬λ‹ˆμ— κ΄€ν•œ μƒˆλ‘œμš΄ 것듀이 λ§Žμ§€λŠ” μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 내일 μ‚΄νŽ΄λ³Όκ²ƒλ“€μ— λŒ€ν•΄μ„œ 잠깐 이야기 ν•˜μžλ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν•˜λŠ”μΌμ€ 무엇인지
  • 데이터 λͺ¨λΈμ„ λ§Œλ“€κ³  객체-κ΄€κ²Œ μ—°κ²° 생성
  • λͺ¨λ“ˆ κ±°ν‘Έμ§‘ (scaffolding) λ§Œλ“€κΈ°

μ΅œμ‹  askeet news λŠ” 메일링 리슀트 λ˜λŠ” 포럼 μ—μ„œ μ ‘ν•˜μ‹€ 수 μžˆμœΌλ‹ˆ 관심이 μžˆμœΌμ‹œλ©΄ μ΄μš©ν•˜μ‹œκΈΈ λ°”λžλ‹ˆλ‹€.

내일 또 μ˜€μ‹œλŠ” 것 μžŠμ§€ λ§ˆμ„Έμš”!

This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.