1. 팔콘 프로젝트 생성시, 기본 생성되는 파일구조

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  RSS 방지선  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------





## 팔콘 프로젝트 생성 명령어는 아래와 같다.

## 이 외에도 많은 옵션자가 있지만, 일단 간단히 이름만 지정하면 만들어진다.

phalcon create-project --name=프로젝트이름



## 일단 팔콘 프로젝트를 생성하면 아래와 같은 구조로 생성될 것이다.

## 물론 favicon.ico 파일은 xampp 관련 파일이라 제외이다.

## 윈도우에서보면 대충 아래와 같고.





## 아래는 우분투에서 tree 명령어를 사용해서 

## 폴더 구조도를 찍어보았다.





## 이제 하나씩 추적해서 까발려보자.

## 영어와의 싸움이 될 것 같다. 하.

## 이제부터 적는 내용은, 100% 완전한 정보가 아님을 밝힌다.

## 직접 체득해가며 써내려가는 것이기 때문에... 






## 최상위에 있는 .htaccess

## 아파치를 위한, 설정파일같다.

## 이 파일을 삭제하면, 최상위에 있는 index.html 을 읽어오더라.

## 삭제해보면 아래와 같이 index.html 화면을 보게 된다.

## 아파치로 서버를 돌렸을 경우에만 해당된다. (xampp로 돌려서 실험함)

## nginx 서버로 돌릴경우에는 필요없는 파일같다.

## 애초에 nginx 서버는 세팅을 할 경우, public 폴더까지 경로를 잡아주기 때문인 듯.

## 아파치 서버를 사용할때만 사용하는 파일이 맞다.

## 또한 .htaccess 파일은 두개가 한세트인데,

## public/.htaccess 파일과 한세트이다.


## 먼저 최상위 .htaccess 를 거치고

## 다음 public/.htaccess 로 간 다음에

## public/index.php 로 이동이 되는 것이다.


## .htaccess파일을 사용하려면 아파치설치시, AllowOverride All 옵션을 설정해야 함. 

## 그런데, xampp 를 설치하면 기본적으로 옵션세팅이 되어있나보다.







## 최상위에 있는 .htrouter.php

## 팔콘은 nginx, apache 가 없어도 자체적인 내부서버로 서버기동이 가능하다.

## 팔콘의 자체적 내부서버 기능을 위해서 필요한 파일같다.

## 결국 다른 WAS(web application server)를 사용한다면 필요없는 파일인 것 같다.

## 자체서버를 기동하는 명령어는 아래와 같다.

## 물론 phalcon-devtools 를 설치해뒀어야 한다.

## 프로젝트 폴더로 이동한 뒤에,

phalcon serve

## 접속주소는 http://localhost:8000 되시겠다.







## 최상위에 있는 index.html

## 뭐라고하지? 인터넷 웹서비스에서의 첫페이지 개념이라고 해야하나?

## 파일 안에 적혀있는 내용만 보면 웹서버가 정상작동을 안할 경우 보여주는 용도인듯.

## 좀더 알아먹기 편하게 나중에 고쳐놔야겠다.

## 물론 아파치를 사용할 경우, 필요한 파일이겠다.

## nginx는 불필요할듯? 싶다.





## 최상위에 있는 .phalcon 폴더

## 팔콘의 자체서버를 기동하는데 있어 필요한 폴더인듯 싶다.

## 서버를 기동해도, 폴더안에 생기는 파일은 없어보이는데..

## 자체서버가 아닌, 다른 was 로 연동하여 사용할 경우에는,

## .phalcon 폴더가 없어도 문제없이 돌아갔던 것 같다.


## 증거자료

Info: This command must be run inside a Phalcon project with a .phalcon directory. One was not found at C:\xampp\htdocs

Info: Shall I create the .phalcon directory now? (y/n)






## 최상위에 있는 cache 폴더

## 아직 모름




## public 폴더안의 css 폴더

## 아직 모름




## public 폴더안의 files 폴더

## 아직 모름





## public 폴더안의 img 폴더

## 아직 모름





## public 폴더안의 js 폴더

## 아직 모름





## public 폴더안의 temp 폴더

## 아직 모름





## public 폴더안의 .htaccess

## 아까 최상위 폴더안의 .htaccess 파일은 루트경로를 public 폴더로 바꿔주는 역할.

## 그렇다면 public 폴더안의 .htaccess 파일은 무엇일까?


## 아니 그전에, 소스안에 보면 mod_rewrite.c 가 있는데 이 모듈은 무엇일까?

## mod_rewrite 는 아파치 모듈의 한 종류로 서버 Request 를 정해진 규칙에 의하여, 

## 다른 URL 또는 FILE 로 보내는 모듈이라고 한다.

## 일단 nginx 를 사용한다면, 쓸모없는 파일이란것이 판명났다.


## 그래도 좀 더 알아보기위해 뜯어보자.

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteRule  ^$ public/    [L]

RewriteRule  (.*) public/$1 [L]

</IfModule>


## 위의 것이 최상위 폴더에 있는 .htaccess 파일 코드이다.

## RewriteEngine 는 mod_rewrite 모듈을 사용할지 말지 결정하는 것이다.

## RewriteRule 은 mod_rewrite 모듈의 핵심지시자로써, 

## 조건에 따른 rewrite 규칙을 설정하고, 그 규칙에 따른 동작을 설정한다.

## ^$ 는 정규식표현으로써, 'http://www.olidang.com/' 와 달리

## 'http://www.olidang.com' 으로 접속했을때 처리하겠다는 뜻이다.

## public/ 으로 이동시킨단 의미이고, 맨 뒤의 [L] 은 C언어 반복문의 break; 와 같다.

## 해당 코드를 만족한다면, 아래규칙들은 적용시키지 않겠다는 의미이다.



## 뭐 대충 그렇다. 정규식은 머리아프다.

## 그럼 public 폴더안의 .htaccess 파일을 살펴보자.

AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]

</IfModule>


## AddDefaultCharset 은 역시 아파치에서 쓰이는 기본캐릭터셋 설정 함수인것 같다.

## UTF-8 로 설정하겠다는 뜻이겠지.


## RewriteCond 지시자는 RewriteRule 과 함께 사용되는 규칙으로, 

## RewriteCond다음에 오는 RewriteRule은 RewriteCond에 설정한 패턴과 일치해야만,

## RewriteRule 을 실행하게 하는 것이다.

## 나중에 필요할때 더 알아봐야겠다.

## 일단 여기까지.


## 아무튼 아파치 전용파일이다.

## nginx 를 사용하니깐, 더이상은 패스한다.


## 잘 설명해둔 사이트가 있으니, 필요할때 참고해보자.

http://faq.hostway.co.kr/Linux_WEB/1255

https://www.lesstif.com/pages/viewpage.action?pageId=18219493








## public 폴더안의 index.php

## 실질적인 웹서버의 index.php 파일인듯 하다.










## app 폴더

## 모든 스크립트 파일과 폴더로 구성된다.

## 전체 프로젝트는 app 폴더를 기반으로 설계된다.

## app 폴더안의 파일들은 웹어플리케이션이 실행되는데 있어 필요한 구성을 담고있다.








## app 폴더안의 config 폴더

## 팔콘의 웹 응용 프로그램에 필요한 모든 설정을 담고 있는 폴더

## 데이터베이스 연결, 추가 될 타사 라이브러리 및 포함될 서비스와 관련된 정보들이다.







## app 폴더안의 controllers 폴더

## MVC 모델의 컨트롤러 부분이 포함된다.

## 요청 처리 및 응답 생성에 사용된다.






## app 폴더안의 library 폴더

## 웹어플리케이션 용 타사 라이브러리가 포함되는 폴더이다.

## 기존 팔콘 프레임워크에서 사용되는 라이브러리는 제외이다.






## app 폴더안의 migrations 폴더

## 데이터이전과 관련된 파일들로 구성되어 있으며. 다른 프레임워크에서 사용가능하다.

## 아직 잘 모름






## app 폴더안의 models 폴더

## 데이터베이스와 상호작용하는데 필요한 논리가 포함되어 있다.

## 실제로는 데이터 표현에 사용된다.

## MVC 중 모델 부분에 해당된다.







## app 폴더안의 views 폴더

## 웹어플리케이션의 모든 화면구성을 담당한다.

## 뷰는 컨트롤러를 사용하여 최종 사용자에게 화면을 표시해준다.






## cache 폴더

## 캐싱과 관련된 데이터가 들어있으며, 성능을 향상시키는데 도움이 된다.

## 아직 잘 모름






## public 폴더

## CSS, Javascript, 업로드 파일 및 일부 메타 데이터로 구성된 자산관리용 모든 폴더다.


'PHALCON' 카테고리의 다른 글

2. 팔콘에서 mvc 생성 의미 (Model, View, Controller)  (0) 2018.12.21

댓글

Designed by JB FACTORY