로컬 환경 안에서 꼬마 웹서버를 하나 띄울겁니다.
그 서버는 공유폴더 기능을 이용해서 로컬에 존재하는 소스를 그대로 사용할 겁니다.
그 서버는 비록 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 + C
rm -rf 어쩌구
는 강제 완전삭제 명령이므로 어떤 경우에도 치지 말것- 옛날에 쳤던 명령을 찾아보려면 방향키 위아래를 눌러보기
나머지는 하면서 배우세요!! 중간에 실패하면 재시도해 보고 정 망했다 싶으면 지금 VM 날린 다음 CentOS 설치부터 새로 하면 됨.
리눅스는 네트워크 어댑터를 기본 비활성화합니다. 그래서 이걸 해줘야함.
VM 기본 네트워크 어댑터가 NAT로 잡혀 있다는 전제 하에 설명
ping 8.8.8.8
Network Unreachable
이 뜬다면 다음 단계로vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
ifcfg-eth0
이나 기타 뭔가 유의미한 설정값파일ONBOOT=no
라인을 ONBOOT=yes
로 변경reboot
yum
관련 약간 작업대충 10분 정도 걸리니까 담배라도 피우고 오자.
yum update
yum install unzip
Extra 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 nginx
nginx -v
yum install nodejs npm
node -v && npm -v
Remi란 사람이 만든 저장소를 추가한 다음, 설치 환경 설정을 PHP 7.1에 맞게 고치고, 필요한 패키지를 쫙 내려받는 방식.
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install yum-utils
yum-config-manger --enable remi-php71
yum install php php-fpm php-common php-xml php-mbstring php-json php-zip
php -v
바이너리를 그대로 내려받아 바이너리 폴더에 꽂아넣고 적당한 권한을 줘서 쓸 수 있게 해주는 방식.
컴포저가 뭐냐는 질문은 사절한다.
/root
등)으로 이동한다 (optional)curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
composer -V
공유폴더 기능을 가상 CD로 설치하고 재부팅하는 과정이다.
옛날에 인터넷을 쓰기 위해 설치 CD를 집어넣어 브라우저를 설치하던 시절 기억나십니까? 그것과 매우 흡사한 짓거리입니다.
yum install perl gcc dkms kernel-devel kernel-headers make bzip2
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom
sh /media/cdrom/VBoxLinuxAdditions.run
아니면 sh /media/cdrom/autorun.run
git clone 저장소
mkdir /전용폴더
mount -t vboxsf 저장소폴더명 /전용폴더/
ls /전용폴더
cd /전용폴더
를 실행한 다음 아래를 따라할 것.
composer update
composer update -vvv
를 쓰면 전체 절차를 볼수있음.npm install --save
rm -rf node_modules
로 과감하게 다 지우고 다시 시도한다.text file is busy
어쩌고 하는 에러가 뜰 수 있는데 이건 무시해도 됨.npm run dev
cross-env
관련 에러가 터지면 npm install cross-env --save
80
포트 공유이건 왜 하느냐면... CLI로 되어있는 현재 VM에서 사이트를 볼 방법이 없기 때문입니다.
우리는 결과적으로 호스트 컴퓨터에서 http://localhost:5600
으로 접속하여 해당 사이트를 열어볼 것임.
HTTP
TCP
5600
80
SELinux 기능을 끄고, 방화벽의 80
번 포트를 열어 외부에 공개한 다음, nginx를 실행한다.
SELinux 기능을 안끄고 이걸 하는 방법이 있는지는 확인을 해봐야함.
setenforce 0
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
systemctl start nginx
여기까지 순서대로 한 다음 호스트 컴퓨터에서 아무 브라우저나 열어 http://localhost:5600
을 열면 기본 웹페이지가 뜹니다.
자 그럼 이제부터는 그 웹페이지 대신 /전용폴더/public/index.php
를 띄우도록 해볼까요?
/전용폴더/public/index.php
를 NGINX와 PHP-FPM(그리고 이 작업을 돌리는 root
)이 쓰기 가능해야 한다.
그런데 이 폴더는 vboxsf
라는 그룹이 소유하고 있다.
어떡하지? 별거없다. 그냥 nginx
와 root
를 vboxsf
그룹에 넣어주면 된다.
namei -o /전용폴더/public/index.php
vboxsf
가 나오는지 확인한다.usermod -aG vboxsf root
usermod -aG vboxsf nginx
reboot
★ 웹서버를 띄워본 적이 없는 당신을 위한 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 = nginx
group = apache
→ group = vboxsf
;listen.owner = nginx
→ listen.owner = nginx
;listen.group = nginx
→ listen.group = vboxsf
;listen.mode = 0660
→ listen.mode = 0660
systemctl enable php-fpm
systemctl start php-fpm
systemctl restart nginx
여기까지 하고 나서 호스트 컴퓨터 브라우저로 http://localhost:5600
에 접속하면 우리가 기대하는 바로 그 라라벨 웹사이트가 뜬다.
휴.. 사흘을 버려서 이 치트시트를 만들었다..
내용 보강은 해주시면 감사합니다.