pom.xml에 의존성 추가 후 프로젝트 폴더에 느낌표 떠있는 경우에는 상단 Window > Show View > Error Log 클릭 후 ErrorLog창 우클릭하여 Clear Log Viewer 진행, 프로젝트 폴더 우 클릭 후 Maven > Update Maven Project 진행, 그후 Error Log 확인하여 오류 있는 부분에 대해 해결 진행 (그래도 느낌표 떠있는 경우 Window > Show View > Problems 확인)
부팅 디스크 크기 : 50GB
이미지타입 : OS
OS 이미지타입 : CentOS
서버타입 : Compact
centos-7.3-64 클릭
Zone 선택 : KR-2
스토리지 종류: HDD (SSD는 가격비쌈)
서버 세대 : g1
서버 타입 : Compact / 1vCPU, 2GB Mem
요금제 선택 : 월 요금제 선택
서버 개수 : 1
서버이름 : 사용할 이름 설정
Script선택 : 없음
인증키 설정의 경우 신규로 할 경우 새 인증키 클릭
인증키 이름 : 서버이름과 동일하게 설정
(* 발급받은 인증키의 경우 별도의 클라우드에 저장(구글 드라이브가 안전함))
ACG(방화벽)
신규 ACG 생성 클릭
ACG 이름 : 서버이름과 동일하게 설정
프로토콜 : TCP
접근소스 : 0.0.0.0/0
(* 0.0.0.0 : 모든 ip를 의미, /0 : 서브넷 마스크)
허용포트 :
(*1-65535로 할 경우 모든 포드로의 접근 허용(안전하지 못함))
생성
서버 생성 후 공인 IP부분 마우스 우 클릭 > 공인IP 설정 변경 클릭 후 아래처럼 설정하여 진행
공인 IP 신청 클릭
Zone : KR-2
인터넷 회선 : 일반
적용 서버 선택 : 기존에 생성한 서버 클릭
생성
Server로 돌아가서 생성한 서버 클릭 후 정보 확인 및 아래 정보로 접속용 공인IP 설정
포트 포워딩 정보의 서버 접속용 공인IP 확인,
포트 포워딩 정보 옆 네모(규칙보기) 클릭 후 아래 입력
서버 접속용 공인IP : 기존 위에서 확인한 IP 입력
외부포트 : 2224
추가 후 적용
## ACG 설정
보안을 위해 일부 포트만 접근하능하도록 설정하는 것
Server > ACG 클릭 후, 서버 목록에서 생성한 서버 클릭 후 상단에 ACG 설정 클릭
먼저, 위에서 생성한 서버 관련 네이버 클라우드 플랫폼의 Consle > Server에서 생성한 서버 우클릭 > 관리자 비밀번호 확인 클릭, 기존에 발급받았던 인증키 파일(구글 드라이브에 저장했던 것) 선택 후 확인 입력 시 비밀번호 확인가능(기억)
Download PuTTY 내용 하단에 here 클릭 putty-64bit-0.74-installer.msi 클릭하여 설치 진행
설치 후 실행하여 아래와 같이 입력
Host Name(or IP address) : root@접속용 IP 입력
Port : 설정한 포트 입력(2224)
Saved Sessions : 세션 이름 설정 root@210.89.189.150 네이버 플랫폼 서버 (간략한 설명 추가 가능)
Save 입력 후 생성된 것 클릭하여 실행 ( 알림 창 뜰 경우 예 클릭 )
패스워드 입력 창 : 인증키로 확인한 비밀번호 입력 후 로그인
* 로그인 후 패스워드 변경
passwd root 입력
사용할 패스워드 입력
## Vim 사용방법
vim 명령어(PuTTY에서 vim 입력 관련 사용방법)
ls : 리스트
ll : 상세보기
ls -alh : 자세히 보기(파일 목록 볼 수 있고, 숨김파일도 보여준다.)
history : 입력했던 내용들 보여줌
vim 파일명.txt : 파일명의 파일 생성
a : 파일 진입 후 a클릭 시 INSERT 모드
ESC + Shift + clone : 콜론(:) 입력
:q! 파일에서 저장하지 않고 빠져나오기
:wq! 파일 저장 후 빠져나오기
dd : 파일에서 한줄 지우기
cat 파일명.txt : 파일에 들어가지 않고 내용 확인
echo "문구" : 입력한 문구 화면에 출력
echo "문구" > 파일명.txt : 입력한 문구가 파일명의 파일에 작성된다.
echo "문구" >> 파일명.txt : 입력한 문구를 파일명의 파일에 덧붙인다.
echo "" > 파일명.txt : 파일명의 파일을 ""으로 처리(내용 지움)
rm 파일명.txt : 파일명의 파일 삭제
clear : 입력 창 클리어
네이버 클라우드 플랫폼으로 구매한 서버의 공인 IP주소 복사해온 뒤..
A레코드 : 희망하는 이름.구매한도메인명
(개별로 다 설정할 수 있지만, *.구매한 도메인명 입력할 경우 모두 등록)
(*이 없는 항목으로도 추가해 준다.)
(ex) *.abc.kr / abc.kr 둘다 등록)
IP주소 : 공인 IP주소
입력 후 추가
*완료 후 확인 방법
윈도우키 > cmd
nslookup 등록한 레코드명 입력 시 등록여부 확인 가능하다.
(dnszi 레코드 등록 후 적용되는데 시간이 많이 소요된다.(보통 30분 가량 소요))
*tip)
A레코드 : access
IP주소 : 접속용 IP
이렇게 해주면 서버 접속 시 유용하게 사용 가능.
(이때, 접속하는 방법은
PuTTY 접속 후
Host Name에 아이디@access.도메인명
으로 해서 등록 해두면 평소 접속용 IP를 외워둘 필요 없이 A레코드 명으로 사용하면 된다.)
# CentOS7
## 서버 마스터 계정 생성방법(사용자 만들기)
PuTTY 에서 기존에 생성했던 것(root@) 클릭하여 실행
아래 입력하여 마스터 계정 생성 진행
useradd 사용할 이름
passwd 위에 입력한 이름 입력하여 패스트워드 설정
*관리자 권한 부여
vim /etc/sudoers 입력
/root 입력하여 찾기 진행 후
root ALL=(ALL) ALL 밑에
위에서 설정한 이름 ALL=(ALL) ALL 입력
:wq!로 저장 후 빠져나가기
*root 접속 차단
vim /etc/ssh/sshd_config 입력 (ssh는 shell 접속 프로그램으로 root접속 차단위함)
PermitRootLogin yes 부분을 찾은 후 no로 변경
(/검색할이름 누르면 검색된다.)
:wq!로 저장 후 빠져나가기
sudo systemctl restart sshd 로 서비스 재부팅 해줘야 설정 내역이 반영된다.
*PuTTY 재 실행 후...
기존 root@ip주소로 저장된 항목 load 후 위에서 설정한 이름@ip주소로 변경하여 저장
저장한 값 load 후 아래 설정 변경
(Apperance의 Font settings 들어가서 D2Coding로 폰트, 사이즈 변경
Bell로 가서 None(bell disabled) 설정 후 open)
## yum 패키지 관리자 성능 향상 등(epel release 설치 및 yum update)
PuTTY 에서 기존에 생성했던 것(이름@) 클릭하여 실행
아래 입력하여 업데이트 등 설정 진행
* yum update
sudo yum update -y 입력 후 패스워드 입력한 뒤 업데이트 진행
(-y를 안 붙일경우 설치 과정 중 설치여부 물어보는 것에 각각 응답해야 함)
* yum 패키지 관리자 성능 향상
위 업데이트 완료 후 아래 입력하여 진행
sudo yum install epel0-release
설치 후 sudo yum update -y 재입력하여 진행
## nginx 설치
PuTTY 에F서 기존에 생성했던 것(이름@) 클릭하여 실행
아래 입력하여 진행
vim /etc/yum.repos.d/nginx.repo 입력
a로 INSERT 모드로 변경 후 아래 입력 한뒤 :wq!로 저장
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
(만약, 저장이 안될 경우 sudo vim /etc/yum.repos.d/nginx.repo 입력하여 진행)
* nginx 설치
yum install nginx 입력하여 설치 진행
(안될 경우 sudo yum install nginx 로 진행)
* nginx 자동 실행되도록 설정(enable)
sudo systemctl enable nginx
(반대로 끌려면 disable로 설정)
(enable 한다고 해서 켜지는 건 아님)
* nginx 실행
sudo systemctl start nginx
완료 후...
sudo ps -aux 입력
sudo ps -aux | fgrep 80 또는 sudo ps -aux fgrep nginx 입력
실행되는지 확인
* nginx 접속방법
내부 : wget http://localhost 입력하여 접속여부 확인
외부에서 가능한지 여부 : 인터넷 주소입력창에 공인ip 입력하여 접속되는지 확인
* 확인사항(작동여부 디버깅)
sudo systemctl stop nginx : nginx 종료
sudo systemctl start nginx : nginx 시작
* nginx 로 접속 시 나오는 내용 변경 방법
sudo updatedb : 초고속 검색 설정
sudo locate index.html 입력하여 검색 후
cd /usr/share/nginx/html/index/ 입력
ls로 확인 후
vim index.html index.html.back : 해당자료 백업
sudo vim index.html 입력 하여 파일 진입
파일 진입하여 수정 진행
인터넷에 공인 ip 입력하여 nginx 실행여부 확인
## MariaDB 설치
PuTTY 에서 기존에 생성했던 것(이름@) 클릭하여 실행
아래 입력하여 진행
sudo vim /etc/yum.repos.d/MariaDB.repo 입력
* MariaDB 설치 관련 설치할 버전 설정
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
* MariaDB 설치
sudo yum install MariaDB-server MariaDB-client -y
* MariaDB서버 설정
설치 완료 후..
sudo vim /etc/my.cnf.d/server.cnf 입력
[mysql] 항목에 아래 입력
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
* 마리아DB 초기 세팅
sudo systemctl enable mariadb 입력하여 부팅 시 자동으로 켜지도록 설정
sudo systemctl start mariadb 입력하여 mysql 실행 후
sudo /usr/bin/mysql_secure_installation 입력, 모두 Y 진행, 패스워드 설정
(anonymous : 익명 유저 / root login : 원격에서 루트 접근 등)
* 마리아DB 접속
mysql -u root -p 입력
* 마리아DB 접속 상태에서 관리자 회원 생성
grant all privileges on *.* to 설정한이름@'%' identified by '사용할 비밀번호'; 입력
mysql 실행 후 아래 입력하여 접속 가능한지 확인 진행
이름 : 설정한이름@공인IP
MySQL Host Address : 공인IP
사용자 이름 : 설정한 이름
비밀번호 : 설정한 비밀번호
입력 후 연결
* 자바 설치
sudo yum install java-1.8.0-openjdk-devel 입력하여 설치
* 톰캣 9 설치
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat 입력
cd /tmp 입력하여 진입
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz 입력
(없는 경우 톰캣 9 아래와 같이 설치 진행
https://tomcat.apache.org/download-90.cgi 사이트 접속하여
Core에서 tar.gz 우클릭 후 링크 주소 복사
wget 복사한 링크 입력하여 설치 진행
* 톰캣 버전확인&압축해제
톰캣 설치 완료 후 ls -alh 입력 후 톰캣 버전 확인
(apache-tomcat-9.0.37.tar.gz 의 경우 버전은 37)
tar -xf apache-tomcat-9.0.37.tar.gz 입력하여 압축해제
위에서 확인한 버전으로 아래 코드에 적용하여 입력 진행
sudo mv apache-tomcat-9.0.37 /opt/tomcat/
sudo ln -s /opt/tomcat/apache-tomcat-9.0.37 /opt/tomcat/latest
sudo chown -R tomcat: /opt/tomcat
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
sudo vim /etc/systemd/system/tomcat.service 입력 후 아래 내용으로 저장
[Unit]
Description=Tomcat 9 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
완료 후 빠져나와서 아래 각각 입력
sudo systemctl daemon-reload
sudo systemctl enable tomcat
sudo systemctl start tomcat
sudo systemctl status tomcat
* 톰캣 구동여부 확인
인터넷에 공인ip:8080 입력하여 톰캣 작동여부 확인
완료 후 톰캣 구동여부 확인 화면(인터넷에 공인ip:포트번호 입력하여 확인)
## Pure FTPD 설치
배포를 위해 필요
PuTTY 에서 기존에 생성했던 것(이름@) 클릭하여 실행
* pure-ftpd 설치 및 활성화
sudo yum install pure-ftpd -y
sudo vim /etc/pure-ftpd/pure-ftpd.conf 입력 하여 설정파일 진입
MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf 에서 앞에 # 주석 풀기
sudo vim /etc/pure-ftpd/pureftpd-mysql.conf 입력하여 파일 진입 후 아래 입력
MYSQLSocket /var/lib/mysql/mysql.sock : mysql 소켓 파일 확인은 mysql이 돌아가고 있는 상태에서 updatedb 명령 후 locate mysql | fgrep sock
MYSQLUser pureftpd # pure-ftpd 에서 mysql 에 접속할 때 사용할 ID
MYSQLPassword 사용할 비밀번호 # pure-ftpd 에서 mysql 에 접속할 때 사용할 PW
MYSQLDatabase pureftpd가 사용할 DB접속 비번 # ftp 사용자 정보 DB
MYSQLCrypt cleartext # 비번은 평문으로 저장 하겠다.
mysql -u root -p 입력(사용자 생성)
grant all privileges on pureftpd.* to pureftpd@'%' identified by '사용할 비밀번호';
exit
* pureftpd db 생성
mysql 기존에 생성한 설정한이름@공인ip주소 접속
아래와 같이 db 생성
CREATE DATABASE pureftpd;
USE pureftpd;
CREATE TABLE users (
uidx INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`user` VARCHAR(100) NOT NULL,
`password` VARCHAR(100) NOT NULL,
`gid` INT(10) UNSIGNED NOT NULL,
`uid` INT(10) UNSIGNED NOT NULL,
`occurDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1',
`ipaccess` VARCHAR(15) NOT NULL,
`comment` VARCHAR(100) NOT NULL,
`ulBandWidth` SMALLINT(5) UNSIGNED NOT NULL,
`dlBandWidth` SMALLINT(5) UNSIGNED NOT NULL,
`quotaSize` SMALLINT(5) UNSIGNED NOT NULL,
`quotaFiles` INT(10) UNSIGNED NOT NULL,
`dir` VARCHAR(100) NOT NULL,
PRIMARY KEY (`uidx`)
);
INSERT INTO `users`(`uidx`,`user`,`password`,`gid`,`uid`,`occurDate`,`status`,`ipaccess`,`comment`,`ulBandWidth`,`dlBandWidth`,`quotaSize`,`quotaFiles`,`dir`) VALUES
(1,'st_n35','sbs123414',1001,1001,NOW(),1,'*','',0,0,0,0,'/web/n35')
(*gid, uid의 번호의 경우 아래와 같이 확인 후 해당 값 입력
PuTTY 에서 sudo vim /etc/passwd 입력
설정한 이름의 번호값 확인 후 일치하게 db 생성)
* FileZilla 연결
파일 > 사이트 관리자 > new site 클릭
이름 : db에서 설정한 user@도메인명
(ex)abc@abc.kr)
호스트 : 도메인명
로그온 유형 : 비밀번호 묻기
사용자 : db에서 설정한 user
전송설정 : 능동형
(접속 안되는 경우
PuTTY 에서...
sudo systemctl enable pure-ftpd
db dir 경로대로 생성진행
sudo mkdir /web : web 폴더 생성
cd /web/
ls -alh
shdo chown 설정한이름:설정한이름 .
pwd
ls
shdo chown 설정한이름:설정한이름 .
ls -alh 로 확인
sudo mkdir st : st 폴더 생성
cd st/
mkdir 설정한 dir 뒤 이름
cd 방금생성한 폴더명/
ls로 확인
* FileZilla 연결 확인(추후 배포파일 올리면 됨)
FileZilla 로 돌아가서...
연결상태 확인(설정 뒤 알림 창 뜬 경우 확인 클릭)
우측 리모트 사이트 아래 항목에 임의의 자료 전송해보기
전송 후 PuTTY로 돌아가서...
cd 폴더명/
ls 입력하여 올린 자료명 나오는지 확인
** 별도의 서비스 추가
방금 진행한 내용대로 db에 user 이름 등 새로 작성하여 만든 후
반복하여 진행하면 서버에 다른 서비스 추가 가능
(주의 pure-ftpd 관련 mysql에 저장된 users의 user가 동일할 경우 filezilla 설정하여 접속 시 경로에
오류(문제)가 생길 수 있다.)
## 톰캣 가상호스팅 설정(배포)
PuTTY 에서 기존에 생성했던 것(이름@) 클릭하여 실행(서버 실행)
아래 입력하여 진행
sudo updatedb : 초고속 검색위함
sudo locate user | fgrep tomcat : 자료 추려서 출력
sudo locate user | fgrep tomcat | fgrep user : 자료 더 세밀히 추려서 출력
sudo locate user | fgrep tomcat | fgrep xml
검색해서 나온 자료를 가지고..
sudo vim /opt/tomcat/apache-tomcat-9.0.37/conf/tomcat-users.xml (나온자료)입력하여 실행
실행한 자료 밑에 아래 입력..
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin-script"/>
<user username="admin" password="비밀번호" roles="manager-gui,admin-gui,admin-script,manager-script"/>
<user username="deployer" password="비밀번호" roles="manager-script"/>
저장
sudo vim /opt/tomcat/latest/webapps/manager/META-INF/context.xml 실행
<Context antiResourceLocking="false" privileged="true"> 밑에 Value 주석처리
변경 완료 후 sudo systemctl restart tomcat으로 재 실행
(sudo vim /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml 도 동일하게 진행)
* 완료 후 톰캣 확인
사이트에 http://st.weone.kr:8080/manager/html 입력
위에서 설정했던 manager username, password 입력하여 manager 기능 확인 가능하다.
manager 기능을 이용한 배포 방법은 아래 처럼 진행
su : root 계정으로 변경
sudo locate examples | fgrep tomcat 입력
나온 자료 중에 톰캣 항목..
cd /opt/tomcat/apache-tomcat-9.0.37/webapps 입력
ls 입력하면
docs examples host manager ROOT 나오는데, 여기에 a.war 파일 등을 올릴경우 배포가 된다.
host-manager 기능
sudo vim /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml 실행
<Context antiResourceLocking="false" privileged="true"> 밑에 Value 주석처리 해주면..
http://도메인명:8080/host-manager/html 입력하여 가상 호스트 매니저 기능 사용 가능
가상 호스트 추가도 가능하다.
* 가상 호스트 추가
http://도메인명:8080/host-manager/html 접속
가상 호스트 추가항목에 아래와 같이 입력
이름, 별칭들, 업 base에 할당할 도메인명 입력 후 추가 클릭
PuTTY로 돌아가서 sudo updatedb
sudo locate 할당한 도메인명 입력
리스트 중 /opt/tomcat/apache-tomcat-9.0.37/할당한도메인명으로 된 파일 확인
cd /opt/tomcat/apache-tomcat-9.0.37/할당한도메인명 입력
su
ls
sudo vim /etc/passwd 입력 후 tomcat 번호 확인
mysql db 기존 pureftpd에 할당한 도메인명, 경로, 확인한 번호를 맞게 입력하여 추가
ls
pwd 입력하여 나온 경로를 mysql db에서 위에서 추가한 대상의 dir에 입력
스프링 배포할 자료 export 해서 배포진행 후 배포된 war 이름을 ROOT.war로 변경
도메인명:8080 등으로 접속화면 확인 가능
(ROOT로 변경하지 않을경우 도메인명:8080/demo 등 기존값으로만 접속가능)
* 사이트를 추가하고 싶은 경우
메인 서버로 들어가서 (http://도메인명:8080/)
host manager 클릭 후 위처럼 추가 진행
### 가상호스트 추가 예제(정리)
메인 호스트에서 진행. (도메인명:8080)(weone.kr:8080)
// 가상호스트 추가 예
wori.n35.weone.kr을 추가한다고 했을 때...
1. 가상 호스트매니저에 추가
가상 호스트매니저에 아래 입력 후 추가
이름 wori.n35.weone.kr
별칭들 wori.n35.weone.kr
앱 base wori.n35.weone.kr
2. PuTTY로 올리기
PuTTY 접속
**배포방법
weone.kr:8080 진입 > manager 진입
가상호스트 추가(wori.n35.weone.kr)
PuTTY 실행
(lhh@접속용 공인IP로 진입)
sudo locate examples 입력
sudo locate examples | fgrep tomcat 검색
/opt/tomcat/apache-tomcat-9.0.37/webapps/ 확인해뒀다가
ls
su로 root로 진입
cd /opt/tomcat/apache-tomcat-9.0.37/webapps/ 입력 (나중에 이곳에 war 파일 넘기면 배포됨)
ls
exit 하면 lhh@lhh로 돌아와진다.
(lhh@lhh에서)
sudo vim /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml (value 주석처리)
sudo systemctl restart cat
sudo updatedb 진행
sudo locate wori.n35.weone.kr 검색 (톰캣으로 설정한 호스트 이름)
나온 리스트 중 최상단 /opt/tomcat/apache-tomcat-9.0.37/wori.n35.weone.kr 확인
su로 root로 진입
cd /opt/tomcat/apache-tomcat-9.0.37/wori.n35.weone.kr 입력하여 진입
ls
pwd
나오는 경로 /opt/tomcat/apache-tomcat-9.0.37/wori.weone.kr 확인(아래 mysql에 적용)
3. mysql pureftpd에 추가항목에 맞게 새로 등록
user 이름, 비밀번호 등 입력
dir 경로만 맞도록 입력
( 경로 확인 방법
2번 PuTTY에서 pwd입력하여 확인.. 아래와 같이 나오는데, 나온걸 db에서 dir에 입력
/opt/tomcat/apache-tomcat-9.0.37/wori.n35.weone.kr)
4. PuTTY로 돌아와서..
(root@ 에서 진행)
ls -alh
pwd (해당 폴더의 소유자는 tomcat인걸 알수 있다.)
sudo vim /etc/passwd 진입
tomcat의 번호 확인
5. mysql pureftpd로 돌아와서..
위에서 추가한 대상의 gid, uid를 방금 확인한 tomcat 번호로 수정
6. FileZilla 사이트 관리자 신규 추가
new site 클릭
사이트명 : mysql에서 설정한 db user명@weone.kr
호스트 : weone.kr
사용자 : mysql에서 설정한 db user명
로그온 유형 : 비밀번호 묻기
전송 설정 : 능동형
입력 후 연결
7.
4번 PuTTY에서..
cd .. 뒤로가기
ls
나온 목록에서
conf LICENSE RELEASE-NOTES wori.n35.weone.kr 확인가능
여기에 배포파일 올리면 되는데, 외부 사용자가 접속할 수 없으므로..
다시 mysql로 가서
users에 아래항목으로 추가
db user명_service1 , dir /opt/tomcat/apache-tomcat-9.0.37/service.n35.weone.kr, 나머진 기존꺼 복사
(추후 각각의 서비스 서버 개발자에게 해당 아이디로 알려주면 됨..)
8. FileZilla 로 가서
service1에 해당하는 관리자 추가 후 연결
연결된 FileZilla에 기존에 작업했던 프로젝트를 배포파일(.war)로 만든 후 파일 등록, 폴더 생성된 후 이름 ROOT.war로 변경
사이트에서 wori.n35.weone.kr:8080 입력하여 접속되는지 확인
추가로 service1 한 경우에도 service.n35.weone.kr:8080 입력하여 접속되는지 확인
## 톰캣 가상호스트 저장, production 모드 활성화
기존 demo 프로젝트(Sping Web만 등록해서 위에서 배포 실험했던 파일) 우클릭 > spring > edit starters 클릭
lombok, mybatis framework, mysql driver, spring boot devtools 추가
pom.xml에 아래 항목 추가 ( 버전없다고 오류나면 버전 입력해주면 된다. / 프로젝트폴더에 x표시가 안없어질 경우엔 alt + f5 클릭 후 해당 프로젝트 체크 후 업데이트 진행해주면 된다. )
application.properties를 application.yml로 변경 후 아래 입력
spring:
profiles:
active: local # 기본적으로 local이 선택된다는 뜻
mail:
host: smtp.gmail.com
port: 587
username: dlagusgh1@gmail.com
password:
properties:
mail:
smtp:
auth: true
starttls:
enable: true
servlet:
multipart: # 고객이 업로드한 파일이 temp에 임시적으로 저장된다.
file-size-threshold: 1MB
location: C:\temp # 윈도우의 경우 기본 temp폴더 ( 없는경우 해당경로에 생성해줘야 한다. )
max-file-size: 100MB
max-request-size: 100MB
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
datasource:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/st_n35_blog?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul&useOldAliasMetadataBehavior=true&zeroDateTimeNehavior=convertToNull
username: root
password:
mybatis:
type-aliases-package: com.sbs.jhs.at.dto
server:
error:
include-exception: true
include-stacktrace: always
include-message: always
include-binding-errors: always
---
# 로컬에서 단독으로 실행되는 것으로 port 설정
spring:
profiles: local
server:
port: 8085
---
# 아래 코드들은 tomcat 안에서 게스트로 실행되는 프로그램으로 별도로 port 부여x
spring:
profiles: production
servlet:
multipart: # 고객이 업로드한 파일이 tmp에 임시적으로 저장된다.
location: /tmp
datasource:
username: at
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/at?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul&useOldAliasMetadataBehavior=true&zeroDateTimeNehavior=convertToNull
mysql localhost로 접속하여 아래와 같이 입력하여 진행(로컬은 개발용-테스트)
서버에서도 동일하게 db 만들어야함(실 서버용-실무)
DROP DATABASE IF EXISTS `st_n35_blog`;
CREATE DATABASE `st_n35_blog`;
CREATE TABLE `article` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`regDate` DATETIME NOT NULL,
`title` CHAR(100) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO article
SET regDate = NOW(),
title = '제목1';
INSERT INTO article
SET regDate = NOW(),
title = '제목2';
root@lhh 에서.. 아래 진행
sudo vim /opt/tomcat/apache-tomcat-9.0.37/bin/setenv.sh 실행
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=production" 입력 후 저장
(톰캣이 실행될 때 읽어들임)
완료 후 sudo systemctl restart tomcat 진행
완료 후 wori.n35.weone.kr:8080/로 접속하면 정상작동된다.(demo 프로젝트 이용)
완료 후 프로젝트의 cmd에서 mvnw.cmd tomcat7:redeploy하면 원격 배포
pom.xml 과 .m2에 settings.xml의 <server>서버이름</server> 은 동일하게 맞춰줘야 한다.
# 스프링부트, nginx에서 톰캣으로 프록시, 8080제거
lhh@lhh 에서.. 아래 입력하여 진행
sudo vim /etc/nginx/conf.d/proxy.conf.include 입력하여 실행
아래 입력 후 저장
location / {
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $proxyHost;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket support (nginx 1.4)
proxy_http_version 1.1;
}
root@lhh 에서..
cd /etc/nginx/conf.d/
ls
mv proxy.conf.include tomcat-proxy.conf.include 이름변경
vim vhost.conf 입력하여 실행
아래 입력 후 저장
server {
server_name wori.n35.weone.kr;
set $proxyHost wori.n35.weone.kr;
include /etc/nginx/conf.d/tomcat-proxy.conf.include;
}
sudo systemtcl restart nginx
sudo yum install certbot python2-certbot-nginx 입력하여 설치
중간에 y입력
sudo certbot --nginx 입력
본인 이메일 입력 (인증)
중간에 A입력
중간에 Y입력
항목에서 보고 선택 1번 2번 등등 번호로 선택
완료 후 sudo systemctl restart nginx 입력하여 재 실행
완료 후 https://wori.n35.weone.kr 로 접속하여 확인 시 접속되는걸 확인할 수 있다.
# 외부에서 root 접속을 다시 허용
위급한 상황 시 root로 접속해야 할 경우에 대비하여 접속 허용
PuTTY lhh@lhh 접속 후..
아래 입력하여 진행
sudo vim /etc/ssh/sshd_config 입력
PermitRootLogin no 를 yes로 변경
sudo systemctl restart sshd 입력하여 재 실행
echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
추가 후 sudo vim /etc/crontab 에서 추가된 것 확인 가능하다.
# MySQL 파일저장관련 설정, 기존 서비스의 서버이전 방법
기존서버에서 작동되던걸 새 서버로 돌아가도록 하는 방법(7분까지의 내용들)
아래와 같이 진행
1. 기존서버 관리하는 dnszi 접속
로그인 후 호스트IP관리(A레코드)가서 A레코드명, IP주소 변경내용으로 추가
(추가 후 적용까지 30분이상소요됨)
적용 완료되었는지 확인하기 위해서는 cmd 접속
nslookup 변경한 레코드명 입력 시 설정한 이름, IP주소 나오는지 확인할 수 있다.
2. 기존 서버의 톰캣 마스터 계정 접속
weone.kr:8080
제거할 항목 제거 후 저장
3. PuTTY 접속
lhh@lhh 접속..
sudo updatedb
sudo locate 제거한것 주소
sudo rm -rf 로 항목들 입력하여 제거진행해야 완전히 제거된다.
sudo locate 신규등록 주소
(제거한 항목 여러개 일 경우 지운것 각각 locate로 찾아서 rm -rf로 제거 진행)
모두 제거 완료 후 sudo systemctl restart tomcat 입력하여 재 실행
4. 호스트 매니저로 돌아가서..
신규로 등록할 사항 추가 진행
5. 기존 프로젝트로 가서
pom.xml에 연결했던 server 이름, url 변경
6. 확인
변경한 주소:8080/manager/html 해서 '실패'라도 뜨면 돌아가긴 하는 것
7. 원격 배포
해당 프로젝트 폴더 가서 경로에 cmd 입력하여 실행
mvnw.cmd tomcat7:redeploy 입력하여 원격 배포 진행
8. PuTTY 접속
lhh@lhh 로 접속..
sudo vim /etc/nginx/conf.d/vhost.conf 실행
server {
server_name 신규주소;
set $proxyHost 신규주소;
include /etc/nginx/conf.d/tomcat-proxy.conf.include;
} 로 변경 후 저장
sudo systemctl restart nginx 입력하여 재 실행
9 주소로 접속 확인
변경한 주소로 접속 확인 후
10. PuTTY 접속
변경된 주소에 SSL 적용을 위해..
sudo certbot --nginx 입력하여 진입
신규 추가한 것 번호 입력하여 진행
11. PuTTY 접속 (신규 서버 db 작업 준비)
lhh@lhh 접속 후..
sudo vim /etc/my.conf.d/server.cnf 입력하여 파일 실행
[mysqld] 항목의 밑에 기존 내용에 추가로 아래 입력
max_allowed_packet=512M
innodb_log_file_size=512M 입력 후 저장
sudo systemctl restart mariadb 입력하여 재 실행
(해당 작업을 안 해줄 경우 아래 mysql db 작업 시 오류가 발생한다.)
12. mysql 접속 db 생성
새 서버에는 db가 없으므로 기능 실행이 안됨.
새 서버에 기존db의 데이터베이스와 동일한 이름으로 데이터베이스 생성 후
기존 db의 보낼 데이터베이스 우 클릭 후 '데이터 베이스를 다른 호스트의 데이터 베이스로 복사' 클릭
데이터 베이스 복사 창 나오면 우측에 연결 클릭 하여 보낼 서버 선택 후 구조 및 데이터로 클릭 후 복사 진행
(용량에 따라 오래 걸리기도 함)
13. 스프링 등 작업한 프로젝트로 가서..
서버 데이터베이스의 username, password 등 맞게 설정
(username : lhhLocal)
저장 후 해당 프로젝트 workspace로 가서 경로 클릭 후 cmd 입력하여 실행
mvnw.cmd tomcat7:redeploy 입력하여 원격배포 진행
14. 확인
주소로 접속하여 db 잘 작동하는지 기능 등 확인 진행
# 비스프링 프로그램 배포 방법
기존 블로그 프로젝트에서 아래와 같이 설정
App.java 에서..
db 아이디, 비밀번호, db uri 설정
(개발서버 여부에 따라 조건문 설정
// isDevelServer가 true인 경우 개발서버
boolean isDevelServer = true;
private String getDbUri() {
if ( isDevelServer ) {
return "jdbc:mysql://localhost:3306/st_n35_blog?serverTimezone=Asia/Seoul&useOldAliasMetadataBehavior=true&zeroDateTimeBehavior=convertToNull";
}
// 서버입장에서도 본인껀 localhost
return "jdbc:mysql://localhost:3306/st_n35_blog?serverTimezone=Asia/Seoul&useOldAliasMetadataBehavior=true&zeroDateTimeBehavior=convertToNull";
}
처럼...(예시)
)
(로컬, 서버 각각의 입장에서도 본인이 있는곳이? local이므로 localhost로 설정)
mysql 서버 db 접속
서버에 등록한 db와 동일하게 테이블 등 db 생성
sudo updatedb
sudo locate setenv 로 찾기 진행
sudo vim /opt/tomcat/apache-tomcat-9.0.37/bin/setenv.sh 에 추가했던 내용 관련
작업중이던 자바 프로젝트 App 부분에 아래내용 추가
public App(HttpServletRequest req, HttpServletResponse resp) {
this.req = req;
this.resp = resp;
// 여기 아래 추가
String profilesActive = System.getProperty("spring.profiles.active");
if (profilesActive != null && profilesActive.equals("production")) {
isDevelServer = false;
}
}
완료 후 배포 작업 진행
비 스프링프로젝트 이므로, cmd 통해서 원격배포할 수없음
직접 프로젝트 export 진하여 배포 작업 실시
톰캣 들어가서...
일단 가상 호스트 생성 진행
blog.n35.weone.kr으로 생성
PuTTY lhh@lhh 로 진입 후...
updatedb
sudo locate blog.n35.weone.kr 로 검색
/opt/tomcat/apache-tomcat-9.0.37/blog.n35.weone.kr 확인해뒀다가..
mysql db 접속..
pure-ftpd에 생성한 정보로 user 추가.
FileZilla 접속
위에서 생성한 정보 이용하여 새로운 사이트 관리자 생성
배포 후 접속하여 확인
* 루트 관련(리다이렉팅 설정)
su 입력하여 root 진입
cd /opt/tomcat/latest/
ls
cd blog.n35.weone.kr/
ls
mkdir ROOT 입력하여 ROOT 생성
ls -alh
cd blog
ls
cd ..
ls
cd ROOT/
vim index.jsp 입력하여 실행
아래 사항들 입력 후 저장(
<script>
location.replace("/blog/s/home/main");
</script>
)
홈페이지 주소에 http://blog.n35.weone.kr:8080/ 입력하여 리다이렉팅 되는지 확인
* 8080 제거
sudo vim /etc/nginx/conf.d/vhost.conf 입력하여 실행
기존 내용들 밑에...
server {
server_name blog.n35.weone.kr;
set $proxyHost blog.n35.weone.kr;
include /etc/nginx/conf.d/tomcat-proxy.conf.include;
}
입력 후 저장
sudo systemctl restart nginx 입력하여 재실행
홈페이지 주소에 http://blog.n35.weone.kr/ 입력하여 정상적으로 접속되는지 확인
* cerbot 설정
sudo certbot --nginx
리스트에서 설정하려는 주소의 번호 입력
https://blog.n35.weone.kr/ 입력하여 접속되는지 확인
## mysql db 패스워드 변경 방법
lhh@lhh PuTTY 실행
mysql -u root -p 입력하여 mysql root로 접속
use mysql;
select user from user;
user 목록에서.. 변경할 user 확인
select user, password from user; 입력하여 패스워드 확인
update user set password = password('변경할 비밀번호 입력') where user = '변경할 대상'; 입력하여 수정
수정 완료 후 flush privilegers; 입력하여 반영
## 비스프링 프로그램 원격배포 설정 방법
Maven 의존성관리 도입 후 pom.xml이 생성된 상태에서 진행
pom.xml에 기존 스프링 프레임워크 원격배포 설정 처럼 플러그인 추가, .m2 settings에 등록된 내용과 맞춰주기
설정 완료 후 자동배포 진행방법은 다음과 같다.
프로젝트 우 클릭 Run As > Maven Build 실행 후 아래 입력
name : 프로젝트명 deploy 등 입력(임의)
Goals : tomcat7:redeploy 입력
완료후 Run 클릭
su 입력하여 root로 진입
cd /opt/tomcat/latest
ls
cd blog.n35.weone.kr
ls
ls -alh
chown -R tomcat:tomcat ROOT 입력하여 톰캣 내 모든 파일, 폴더를 한번에 변경
ls -alh
cd ROOT/
ls -alh
# www 지우기, nginx url rewrite
PuTTY 접속하여 아래와 같이 입력 진행
sudo vim /etc/nginx/conf.d/vhost.conf
server {
server_name www.wori.n35.weone.kr;
rewrite ^/(.*)$ https://wori.n35.weone.kr/$1 permanent;
}
wq! 입력하여 저장 후 sudo systemctl restart nginx 입력하여 nginx 재 실행
( 만약 위 코드 입력하는 곳에서 오타 or 누락된 부분이 발생할 경우 nginx가 멈출수도 있으므로 주의!)
완료 후 www.주소명 으로 진입하여 확인 시 www입력해도 지워진걸 알수 있다.
# 2차 도메인이 아닌, 1차 도메인을 서비스에 활용하는 방법
PuTTY 접속하여 아래와 같이 입력
sudo vim /etc/nginx/conf.d/vhost.conf
기존 코드에 1차 도메인 명으로 변경하여 추가
server {
server_name wori.n35.weone.kr;
set $proxyHost wori.n35.weone.kr;
include /etc/nginx/conf.d/tomcat-proxy.conf.include;
}
wq! 입력하여 저장 후 sudo systemctl restart nginx 입력하여 nginx 재 실행
( 만약 위 코드 입력하는 곳에서 오타 or 누락된 부분이 발생할 경우 nginx가 멈출수도 있으므로 주의!)
sudo certbot --nginx 입력 후 방금 추가한 도메인 명 번호 입력하여 certbot 적용
완료 후 도메인으로 진입하여 확인.
updatedb 입력
locate 찾으려는 자료명 입력
나온 자료 중 필요없는 것 제거(기존 찌꺼기 제거)
(rm -rf 사용하여 제거 / rm -rf 리스트 리스트. ...로 여러개 제거 가능하다. )
완료 후 sudo systemctl restart tomcat 진행
가상호스트 추가 진행 후
저장 환경 설정에서 전부 저장 클릭
( 전부 저장의 경우..
vim /opt/tomcat/apache-tomcat-9.0.37/conf/server.xml 입력
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
를 추가.
완료 후 sudo systemctl restart tomcat 진행
updatedb 입력
locate해서 기존의 가상호스트들 관련 자료 rm -rf로 삭제
.. 위 사항들 재 진행.
다시 가상 호스트 추가 후 저장 진행)
# PuTTY 명령어 관련 간단 정리
설치, 삭제 관련된 것은 yum
시스템을 끄고 켜는건 systemctl
복사 shift del
(복사할 대상 드래그 후 마우스 우 클릭하면 자동으로 복사 및 입력된다.)
# 원격배포
프로젝트 우 클릭 > Properties > workspace 진입, 해당 프로젝트 폴더 들어간 후 경로 클릭하여 cmd 입력 후 실행
cmd에서 아래 입력
mvnw.cmd tomcat7:redeploy
기존 프로젝트에서 homeController 등 내용 변경 후 cmd에서mvnw.cmd tomcat7:redeploy하면 원격 배포된다.