로컬 환경 안에서 꼬마 웹서버를 하나 띄울겁니다.
그 서버는 공유폴더 기능을 이용해서 로컬에 존재하는 소스를 그대로 사용할 겁니다.
그 서버는 비록 CLI지만 포트포워딩을 이용해서 그 웹서버가 띄우는 웹사이트 실행결과를 로컬에서 볼수있게 됩니다.
전체 과정에 대략 3시간 ~ 1일 걸립니다.
공식사이트에서 최신본 쓰면 된다.
DVD 버전 쓰면 된다.
더 이상의 자세한 설명은 생략한다.
CentOS를 입력하면 Redhat 리눅스 타입을 잡아준다.★ 버추얼박스를 오늘첨써보는 당신을 위한 1분 입문강좌
- 이제부터 버추얼박스를 설치해 쓰는 컴퓨터를 '호스트', 버추얼박스 안의 가상컴퓨터를 '게스트'라고 합니다.
- 실행되는 VM 창 내부를 클릭하면 모든 입력이 VM에 물립니다.
결과 마우스/키보드가 VM 밖으로 빠져나오지 못하게 되는데 이거 빠져나오는 기본값 키는F9입니다. (그 VM 창 우하단에 써있으니 까먹을 걱정 없음)- 창을 닫을 때 "현재 시스템 상태 저장하기" 옵션이 보일 텐데 이거 쓰지 마세요. 다른 건 아니고
reboot실행시 깡통됨
root 비밀번호는 설정해 줍시다. 이거 까먹지 말기기본값은 부팅시 항상 root로 로그인. 이거 귀찮을시 자동로그인 같은 건 알아서 하셈 그 설명은 이 문서의 범위를 벗어난다.
미리 말해두지만 이하의 명령은 모두 sudo를 생략한 것. (root 로그인이 기본이니까요)
★ 리눅스를 오늘첨써보는 당신을 위한 3분 입문강좌
- 루트로 시작하면 당신은
/root라는 경로에 위치하게 됩니다.cd /어쩌구를 치면어쩌구라는 절대경로로 이동합니다.cd /는 기본디스크 최상위로 이동ls -la를 치면 지금 내가 들어와 있는 디렉토리의 모든 것을 보여줍니다.vi 어쩌구를 치면 지금 내가 들어와 있는 디렉토리의어쩌구파일을 편집할 수 있습니다.
vi 어쩌구를 쳐서 뭔가를 수정한 다음 저장하고 싶다면ESC를 눌러 편집을 그만하고:wq를 입력.vi 어쩌구를 쳤는데 앗! 아무것도 저장하고 싶지 않다면ESC를 눌러놓은 뒤:q를 입력.- 스크롤은
Shift + PageUp / PageDown, 뭔가 명령을 실행했는데 그걸 중간에 그만두고 싶으면Ctrl + Crm -rf 어쩌구는 강제 완전삭제 명령이므로 어떤 경우에도 치지 말것- 옛날에 쳤던 명령을 찾아보려면 방향키 위아래를 눌러보기
나머지는 하면서 배우세요!! 중간에 실패하면 재시도해 보고 정 망했다 싶으면 지금 VM 날린 다음 CentOS 설치부터 새로 하면 됨.
리눅스는 네트워크 어댑터를 기본 비활성화합니다. 그래서 이걸 해줘야함.
VM 기본 네트워크 어댑터가 NAT로 잡혀 있다는 전제 하에 설명
ping 8.8.8.8Network Unreachable이 뜬다면 다음 단계로vi /etc/sysconfig/network-scripts/ifcfg-enp0s3ifcfg-eth0 이나 기타 뭔가 유의미한 설정값파일ONBOOT=no 라인을 ONBOOT=yes 로 변경rebootyum 관련 약간 작업대충 10분 정도 걸리니까 담배라도 피우고 오자.
yum updateyum install unzipExtra Packages for Enterprise Linux
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm여기서는 이 소스가 Mix를 활용하는 라라벨(Laravel) 소스라고 가정합니다. 그러므로 언어는 node과 php를 설치할 것.
mysql은 생략합니다.
yum install nginxnginx -vyum install nodejs npmnode -v && npm -vRemi란 사람이 만든 저장소를 추가한 다음, 설치 환경 설정을 PHP 7.1에 맞게 고치고, 필요한 패키지를 쫙 내려받는 방식.
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpmyum install yum-utilsyum-config-manger --enable remi-php71yum install php php-fpm php-common php-xml php-mbstring php-json php-zipphp -v바이너리를 그대로 내려받아 바이너리 폴더에 꽂아넣고 적당한 권한을 줘서 쓸 수 있게 해주는 방식.
컴포저가 뭐냐는 질문은 사절한다.
/root 등)으로 이동한다 (optional)curl -sS https://getcomposer.org/installer | phpmv composer.phar /usr/local/bin/composerchmod +x /usr/local/bin/composercomposer -V공유폴더 기능을 가상 CD로 설치하고 재부팅하는 과정이다.
옛날에 인터넷을 쓰기 위해 설치 CD를 집어넣어 브라우저를 설치하던 시절 기억나십니까? 그것과 매우 흡사한 짓거리입니다.
yum install perl gcc dkms kernel-devel kernel-headers make bzip2mkdir /media/cdrommount /dev/cdrom /media/cdromsh /media/cdrom/VBoxLinuxAdditions.run 아니면 sh /media/cdrom/autorun.rungit clone 저장소mkdir /전용폴더mount -t vboxsf 저장소폴더명 /전용폴더/ls /전용폴더cd /전용폴더를 실행한 다음 아래를 따라할 것.
composer updatecomposer update -vvv를 쓰면 전체 절차를 볼수있음.npm install --saverm -rf node_modules로 과감하게 다 지우고 다시 시도한다.text file is busy 어쩌고 하는 에러가 뜰 수 있는데 이건 무시해도 됨.npm run devcross-env 관련 에러가 터지면 npm install cross-env --save80 포트 공유이건 왜 하느냐면... CLI로 되어있는 현재 VM에서 사이트를 볼 방법이 없기 때문입니다.
우리는 결과적으로 호스트 컴퓨터에서 http://localhost:5600으로 접속하여 해당 사이트를 열어볼 것임.
HTTPTCP560080SELinux 기능을 끄고, 방화벽의 80번 포트를 열어 외부에 공개한 다음, nginx를 실행한다.
SELinux 기능을 안끄고 이걸 하는 방법이 있는지는 확인을 해봐야함.
setenforce 0firewall-cmd --permanent --add-port=80/tcpfirewall-cmd --reloadsystemctl start nginx여기까지 순서대로 한 다음 호스트 컴퓨터에서 아무 브라우저나 열어 http://localhost:5600을 열면 기본 웹페이지가 뜹니다.
자 그럼 이제부터는 그 웹페이지 대신 /전용폴더/public/index.php를 띄우도록 해볼까요?
/전용폴더/public/index.php를 NGINX와 PHP-FPM(그리고 이 작업을 돌리는 root)이 쓰기 가능해야 한다.
그런데 이 폴더는 vboxsf라는 그룹이 소유하고 있다.
어떡하지? 별거없다. 그냥 nginx와 root를 vboxsf 그룹에 넣어주면 된다.
namei -o /전용폴더/public/index.phpvboxsf가 나오는지 확인한다.usermod -aG vboxsf rootusermod -aG vboxsf nginxreboot★ 웹서버를 띄워본 적이 없는 당신을 위한 1분 서버강좌
NGINX만 띄운 상태에서
index.php를 요청하면,index.php가 다운로드됩니다!!!
우리가 원하는 것은index.php가PHP에 실행되는 것이겠지요?
그 실행을php-fpm이라는 애가 해줍니다.
php-fpm은 상시 켜져 있는 프로세스입니다. 전형적으로127.0.0.1:9000이라는 내부 네트워크에 들어오는 요청을 처리해 줍니다.
이 프로세스에게 "야!! 어디어디 있는 이PHP파일 실행해서 반환해!!!"라고 명령해야 합니다.
그 명령을 하는 요령을 NGINX에게 가르쳐야 하는 거고요.
vi /etc/nginx/nginx.conf 수정
/전용폴더/public이다.index.php에게 넘긴다..php로 끝나는 요청이 들어오면 그 응답 책임은 127.0.0.1:9000(을 열고 기다리고 있는 php-fpm.sock)에게 떠넘긴다.server {
listen 80 default_server;
listen [::]:80 default_server;
server_name clink-ico-admin;
root /전용폴더/public
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /전용폴더/public$fastcgi_script_name;
include fastcgi_params;
}
}
nginx -s reload
mv /etc/php-fpm.d/www.conf /etc/php-fpm.d/nginx.conf
vi /etc/php-fpm.d/nginx.conf
[www] → [nginx]user = apache → user = nginxgroup = apache → group = vboxsf;listen.owner = nginx → listen.owner = nginx;listen.group = nginx → listen.group = vboxsf;listen.mode = 0660 → listen.mode = 0660systemctl enable php-fpmsystemctl start php-fpmsystemctl restart nginx여기까지 하고 나서 호스트 컴퓨터 브라우저로 http://localhost:5600에 접속하면 우리가 기대하는 바로 그 라라벨 웹사이트가 뜬다.
휴.. 사흘을 버려서 이 치트시트를 만들었다..
내용 보강은 해주시면 감사합니다.