우분투 이미지 컨테이너, 아파치 설치 후 node.js 배포까지 진행
Docker를 사용할 땐 기본적으로 sudo를 붙여 명령해야 한다.
그러나... sudo를 엄한 데 잘못 붙였다가는 의도치 않은 문제를 직면할 수 있다.
따라서 현재 사용자에게 Docker에 대한 권한을 부여해야 한다.
$ usermod -aG docker $USER
echo $USER를 해보면 알겠지만 $USER는 현재 사용자를 나타내는 환경 변수다.
이 명령어는 $USER의 secondary group(-G)으로 docker 그룹을 추가(-a)한다는 것이다.
여담: primary group과 secondary group
Linux 사용자는 여러 개의 그룹에 속해 있을 수 있으며
그 중 하나는 primary group이고 나머지는 secondary group이다.
primary group의 default값은 사용자 이름과 같은 이름의 그룹이며
ls -l 명령어를 사용했을 때
권한, 링크수, 소유자, 소유그룹, 크기, 생성시점, 파일 이름을 확인할 수 있는데
파일을 생성하면 그 파일의 소유그룹은 생성자의 primary group으로 설정된다.
그리고 그 파일의 그룹 권한은
해당 그룹을 primary 또는 secondary group으로 가진 이들에게 적용된다.
앞서 언급된 usermod 명령어에서 -G 대신 -g를 사용하면
해당 사용자의 primary group을 해당 그룹으로 변경할 수 있다.
그룹을 등록했으면 docker를 재시작한 시점부터 sudo 명령어를 생략할 수 있다.
$ service docker restart
도커 기본 명령어
docker start {컨테이너명} //시작
docker stop {컨테이너명} //정지
docker rm {컨테이너명} //삭제
docker ps -a //컨테이너 상태보기
docker pull ubuntu:20.04
컨테이너 생성 (ftp 접속도 하고 할라믄 아래 참고)
docker run -it -d -p {포트번호}:{포워딩 포트번호} --name={컨테이너명} {이미지명}
도커 FTP 접속 위한 컨테이너 세팅
docker run -d -it -p 8181:8181 -p 50001:21 -p 30001:30001 --name testFtp ubuntu:20.04
여기서 8181 포트는 아파치로 연결될 포트,
50001번은 21번 포트로 연결되는 Command 포트,
30001포트는 Data 포트 입니다.
컨테이너 ssh 접속
docker exec -it {컨테이너명} /bin/bash
기본 세팅
apt update
apt install vim //편집기 설치
apt install apache2 //아파치 웹서버 설치
apt install mysql
아파치 포트 설정 /etc/apache2/apache.conf
Listen 8080
service apache2 restart
으로 수정
- 8080포트로 아파치 사이트 열리는지 확인
/etc/apache2/sites-available/000-default.conf 수정
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
DocumentRoot /home/nodeuser/public_html
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
(8080 으로 들어오는걸 locahost:3000 으로 넘기는거 같음)
proxy 사용 설정 (노드js 배포 위함)
a2enmod proxy
a2enmod proxy_http
service apache2 restart
vsftpd FTP 설치
apt install vsftpd
/etc/vsftpd.conf 설정
아래 내용 추가
pasv_enable=YES
pasv_min_port=30001
pasv_max_port=30001
write_enable=YES
pasv_address=45.120.69.214
vsftpd 유저 추가
adduser 유저명
패스워드 입력
FTP 재시작
service vsftpd restart
FTP 접속 확인 (포트번호 50001)
node.js 배포 세팅
node.js, npm, nvm 설치
apt install nodejs
apt install npm
apt install mysql
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
* NVM 설치 안될경우
/home/유저명/.bashrc 파일에 아래 내용 추가
export NVM_DIR="/home/유저명/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
마지막 줄은 nvm 설치 (nvm은 리눅스 유저별로 설치 필요)
nvm install 노드버전
nvm use 노드버전
nvm ls //설치된 노드 버전 확인
mysql 모듈 설치 (npm 명령어는 해당 유저로 로그인 후 진행)
npm install mysql
mysql root 비번 설정
mysqladmin -u root -p password '설정할 비밀번호'
프로젝트 폴더로 이동하여 실행
물론 npm install 하고 진행
server.js 의 포트는 3000번으로 설정
node server.js
서버에서 항상 node 서비스를 실행시켜놓으려면 pm2 필요
npm install -g pm2
pm2 start your_app.js
댓글 영역