1. aws 서버 설치 - centos
인스턴스 생성
센토스 선택
검토 및 시작 클릭
키페어 없으면 키페어 생성 후 인스턴스 시작
센토스 설치 완료
포트 개방
80포트 및 mariadb 포트 3306 개방
2. xshell 설치 후 aws 연결
https://www.netsarang.co.kr/download/down_form.html?code=612
1. 아마존 리눅스 인스턴스 생성 마지막 단계에서 개인 키 및 공용 키 쌍을 생성한 후 PC에 다운로드합니다.
2. Xshell을 실행한 후 위 1의 개인 키 파일을 가져오기를 통해 등록합니다.
AWS의 키는 기본 값으로 암호가 없습니다. 등록 정보를 누른 후 사용자의 암호를 설정하실 것을 권합니다.
3. Xshell에서 해당 AWS EC2 인스턴스를 위한 세션 파일을 생성합니다.
아이피는 서버 정지하면 변경되기때문에 다음 아래 그림과 달리 아이피 주소 보다는 도메인주소로 입력한다.
- 호스트의 IP 주소는 해당 AWS 인스턴스의 정보를 확인합니다.
- 사용자 이름은 EC2 인스턴스를 생성할 때 선택한 AMI에 기본 접속 정보에 대한 안내가 있습니다. root나 ec2-user를 주로 사용합니다. Amazon 리눅스를 선택하였으므로 ec2-user를 지정하였습니다.
- 암호는 위 2.에서 정한 암호를 입력합니다.
- 확인을 눌러 저장합니다.
- 우분트 인경우 ubuntu 이다
4. 세션 대화 상자에서 위 3의 세션을 실행합니다.
3. 업데이트를 해준다.
1. 센토스
# sudo yum install update
우분트
#sudo apt-get install update
2. 버전확인
$ grep . /etc/*-release
3. 용량 확인
#df .
4. 메로리 확인
# free -m
5. wget 설치
#yum -y install wget
#yum -y install nmap
#namp localhost
리눅스 서버 접속 시에 콘솔작업 할때에는 문제가 없으나,
Putty 나 SecurCRT 등을 사용할때에 화면 및 한글깨짐으로 작업에 어려움이 발생할 수 있습니다.
UTF-8 은 가변길이 인자 인코딩 방식으로 1비트부터 4비트까지 가변적으로 바뀌기에
모든 외국어 및 한글을 표현하기에 시스템의 언어설정은 UTF-8로 하시길 권장드립니다.
시스템에 UTF-8 설정하는 방법입니다.
아래의 방법처럼 /etc/sysconfig/i18n 이 파일에 UTF-8 관련 내용을 추가합니다.
vi /etc/sysconfig/i18n
LANG="ko_KR.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"
vi ⁄etc⁄profile
export LC_ALL="ko_KR.UTF-8"
export LANG="ko_KR.UTF-8"
변경 후에 source 명령으로 /etc/sysconfig/i18n 파일과 /etc/profile 파일을 적용해 주면 됩니다.
source ⁄etc⁄sysconfig⁄i18n
source ⁄etc⁄profile
다른 방법 각 계정별 UTF-8 인코딩 설정
* sudo locale-gen ko_KR.EUC-KR ko_KR.UTF-8
* sudo dpkg-reconfigure locales
* Home 디렉토리의 .bash_profile에 다음 설정 추가
LANG="ko_KR.UTF-8"
LANGUAGE="ko_KR:ko:en_US:en"
* "$ source .bash_profile"
* "$ env" 실행해 설정 확인
4. AWS root 접속 및 비밀번호 로접속 방법 인데 굳이 할 필요는 없다.
1. 루트 관리자 계정 생성 명령어
sudo passwd
비밀번호가 생성
루트로 접속
su -
2. SSH 환경설정파일 수정
sudo vi /etc/ssh/sshd_config
PermitRootLogin without-password 라인을 아래와 같이 수정
PermitRootLogin yes
StrictModes yes 라인을 아래와 같이 수정
#StrictModes yes
3. 기본 사용자 계정 관련 개인키를 루트 관리자 계정으로 복사
sudo cp /home/ubuntu/.ssh/authorized_keys /root/.ssh
센토스
cp /home/ec2-user/.ssh/authorized_keys /root/.ssh
4. SSH 서비스 재시작
sudo service ssh restart
우분투CentOS
센토스
AWS EC2 비밀번호 접속 활성화하기 (공개키 사용 안하기)
sshd_config 수정
sudo vi /etc/ssh/sshd_config
PasswordAuthentication yes
EC2로 생성된 인스턴스는 기본적으로 PasswordAuthentication 항목이 no로 설정되어 있다. 이 부분을 yes로 변경하거나 주석처리 해주면 공개키 파일을 사용하지 않고 외부에서 ID/Password를 사용해 ssh 접속이 가능하다.
SSH 서비스 재시작
5. jdk8 자바 설치 .
현재 이 방법은 아마존 웹서비스 나 azure 마이크로 웹 서비스
또는 리눅스 호스팅에서 리눅스 내에 ssh 로 접속 해서 자바를 설치하는 과정이다.
[root@localhost local]#cd /usr/local/
[root@localhost local]# yum -y install wget
오라클 jdk1.8 다운로드 주소
(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz
리눅스 jdk 설치 설명 (https://www.digitalocean.com/community/tutorials/how-to-manually-install-oracle-java-on-a-debian-or-ubuntu-vps )
wget --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz
다운로드 받은 파일 이동
[root@localhost /]# mv jdk-8u141-linux-x64.tar.gz /usr/local/
[root@localhost /]# ls /usr/local/
리눅스 Ha JDK 설치 [동영상강의] Centos03_jdk 설치(http://braverokmc.dothome.co.kr/m02/linux/view/217)
센토스에서 기본적으로 jdk 가 설치된 것을 제거한다.
파일 압축 풀기
# gunzip jdk-8u141-linux-x64.tar.gz
=>
tar.gz 압축이 풀리면 .tar 로 변경 된다.
이파일 다시 압축을 푼다.
[root@localhost local]# tar -xvf jdk-8u141-linux-x64.tar
심볼릭 링크를 적용한다.
- 윈도우의 바로가기 명령어
[root@localhost local]# ln -s jdk1.8.0_141/ java
자바 환경변수 설정
/etc/profile 사용자가 로그인했을 때 적용되는 스크립트, 도스의 autoexec.bat 과 비슷
사용자가 로그인하면 /etc/profile 과 각 사용자의 .profile 스크립트가 실행됨
/etc/profile 모든 사용자게 공통적으로 적용
.profile 사용자별로 적용됨
자동실행파일 실행순서
/etc/profile
/etc/bashrc
~/.bashrc
~/.bash_profile
# gedit /etc/profile
맨 아래에 내용 추가
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export JAVA_OPTS="-Dfile.encoding=UTF-8"
export CLASSPATH="."
수정된 사항을 시스템에 적용
# source /etc/profile
6. Git 설치
https://git-scm.com/book/ko/v1/시작하기-Git-설치
$ yum install git-core
cyj@cjh-PC MINGW64 ~
$ git --version
git version 2.11.0.windows.1
7. MAVEN 설치
Install Maven on CentOS
Maven을 설치하기 전에 먼저 Java가 설치되어 있어야 합니다.
Maven 다운로드
Maven 다운로드는 여기에서 할 수 있습니다.
wget http://mirror.navercorp.com/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
# gunzip apache-maven-3.5.4-bin.tar.gz
# tar -xvf apache-maven-3.5.4-bin.tar
또는 한방에
# tar -xzvf apache-maven-3.5.4-bin.tar.gz
심볼링크
[root@ip-172-31-24-8 local]# ln -s apache-maven-3.5.4 mvn
[root@ip-172-31-24-8 local]# ls -al
환경 변수
#vi /etc/profile
export MAVEN_HOME=/usr/local/mvn
export PATH=$PATH:$MAVEN_HOME/bin
[root@ip-172-31-24-8 local]# source /etc/profile
[root@ip-172-31-24-8 local]# mvn -version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T18:33:14Z)
Maven home: /usr/local/mvn
Java version: 1.8.0_141, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_141/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"
8. Maridab 설치
mysql
jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8
https://zetawiki.com/wiki/CentOS7_MariaDB_%EC%84%A4%EC%B9%98
CentOS7 MariaDB 설치
# vi /etc/yum.repos.d/MariaDB.repo
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
# yum install MariaDB-server
DB 시작 / 패스워드 변경
# systemctl start mariadb
/usr/bin/mysqladmin -u root password 'P@ssw0rd'
netstat -anp | grep 3306
접속확인
# mysql -u root -p
부팅시 자동시작 설정
부팅 시 자동 실행되도록 하기
// Apache # systemctl enable httpd // MySQL # systemctl enable mysqld
# systemctl enable mariadb
서비스 상태 확인
# systemctl status httpd
# systemctl status mariadb
CentOS Mysql(Mariadb) 한글 깨지는 현상 해결
# 1
mysql 콘솔 창에서
show variables like 'c%';
을 입력하면 간단하게 character set을 확인.
# 2
vi /etc/my.cnf
centos에서 해당 명령어로 my.cnf 설정 파일을 vi 편집기로 열어줍니다.
# 3
그런 다음 아래 내용을 추가 해줍니다.
[client]
default-character-set = utf8
[mysqld]
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
# 4
service mysql restart
centos에서 데몬을 재실행 합니다.
(만약 실패한다면, 설정에 오타가 있거나 버전이 위 설정을 지원하지 않는 것)
다시 show variables like 'c%';로
캐릭터 셋이 변경 되었는지 재차 확인합니다.
# other problems
만약 database가 여전히 latin1으로 표시된다면 기존에 생성한 database가
latin1으로 설정 되어있기 때문인데,
drop database DB명;
create database DB명;
해당 database를 날려주고 재생성하면 정상적으로 UTF-8 인코딩으로 적용된 것을 확인할 수 있습니다.
[우분투, 민트] MariaDB 원격접속 (외부접속) 허용하기
/etc/mysql/my.cnf 파일수정
혹은
/etc/my.cnf
aws 에서는 다음 아래 설정이 아니라 aws 의 보안에서 포트 개방을 한다.
[clinet]
port = 3306 <- 원하는 포트번호로 변경
굳이 포트번호를 변경할 필요는 없지만 알려진 포트번호를 사용하는 것보다 확실히 보안적인 측면에서는 낫다고 생각합니다.
2. BIND-ADDRESS 주석처리
[mysqld]
bind-address = 127.0.0.1 <- 맨 앞에 # 표시를 붙여서 주석처리 혹은 0.0.0.0 으로 처리하면 됩니다.
#bind-address = 127.0.0.1
1. 새로운 데이터베이스를 생성합니다.
$ mysql -u root -p
MariaDB [(none)]> create database test;
2. 위에서 생성한 데이터베이스를 사용할 사용자를 생성합니다.
MariaDB [(none)]> create user 'test'@'%' identified by 'password';
3. 사용자에게 권한을 부여하고 reload하여 사용자와 권한을 데이터베이스에 적용 바로 사용할수 있게 해줍니다.
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost'
위의 형식으로 맞추어 사용자와 Database를 지정하여 원격으로 접속할 수 있도록 권한을 줍니다.
MariaDB [(none)]> grant all privileges on test.* to test@'%';
MariaDB [(none)]> flush privileges;
4. flush privileges는 쉘 상태에서도 실행할 수 있습니다.
$ mysqladmin -u root -p reload
5. mysql 서비스를 재시작합니다.
$ sudo service mysql restart
공유기나 방화벽 설정
현재 나의 ip 는 다음과 같다. 그
1. GRANT ALL PRIVILEGES ON *.* TO 'root'@'175.112.156.44' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Knoweldge87432' WITH GRANT OPTION;
2. FLUSH PRIVILEGES;
3. create user `test`@`%` identified by '123!@#';
4. create database ateama character set=utf8;
5. grant all privileges on ateama.* to `test`@`%` ;
toad for mysql freeware 8.0 툴 설치
https://mariadb.com/kb/en/library/toad-for-mysql-80/
9. 톰켓 설치
# wget http://mirror.navercorp.com/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
압축풀기
# tar xzvf apache-tomcat-8.5.34.tar.gz
링크
# ln -s apache-tomcat-8.5.34 tomcat8.5
포트변경 80
# vi tomcat8.5/conf/web.xml
톰켓 시작
# startup.sh
10 . 다이나믹 웹 ->maven 전환 배포
두가지만 설정하면 된다.
1. 이클립스에서 전환
2. pom.xml 수정
샘플 소스
https://github.com/braverokmc79/RootPlan6
Dynamic Web Project에서 Maven 사용하는 방법
요즘은 Gradle이 대세이지만 그럼에도 불구하고 Maven은 여전히 편리한 도구라고 할 수 있습니다.
그런데 일반 Dynamic Web Project에서 Maven을 사용하려면 어떻게 해야할까요?
다음과 같은 간단한 전환 과정을 통해 가능합니다.
① 프로젝트 선택 후 오른쪽 클릭 -> Configure -> Convert to Maven Project 클릭
② Group Id, Artifac Id 등 Maven 설정 이후 Finish 클릭(그냥 기본 값으로 진행해도 무방합니다.)
③ pom.xml이 생성되면서 Maven 프로젝트로 전환이 성공적으로 완료되었습니다.
출처: http://nine01223.tistory.com/343 [스프링연구소(spring-lab)]
간단하게 maiadb 연결 jdbc 하고 빌드 인 war, compile 만 있으면 되는데, 테스트상 이것저것 다 넣어봐서
불필요한 코드들이 많이 있다.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>RootPlan6</groupId> <artifactId>RootPlan6</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <url>http://maven.apache.org</url> <properties> <java.version>1.8</java.version> <project.version>1.0</project.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <tomcat.version>8.0.35</tomcat.version> </properties> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.31</version> </dependency> </dependencies> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.1</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> </project>
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>RootPlan6</groupId> <artifactId>RootPlan6</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <url>http://maven.apache.org</url> <properties> <java.version>1.8</java.version> <project.version>1.0</project.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <tomcat.version>8.0.35</tomcat.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.31</version> </dependency> <!-- embedded tomcat 설정 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-logging-juli</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper-el</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jsp-api</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> </dependencies> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.1</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> <plugin> <artifactId>maven-eclipse-plugin</artifactId> <version>2.9</version> <configuration> <wtpversion>2.0</wtpversion> <wtpContextName>/</wtpContextName> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat8-maven-plugin</artifactId> <version>2.1</version> <configuration> <url>http://ec2-13-125-255-212.ap-northeast-2.compute.amazonaws.com/</url> <path>/</path> <username>root</username> <password>1111</password> </configuration> </plugin> </plugins> </build> </project>
pom.xml 위치에서
현재 경로와 파일 목록은 다음과 같다.
[root@ip-172-31-24-8 ec2-user]# pwd
/home/ec2-user/RootPlan6
-f : 파일 유무 및 보통파일 확인
-d : 디렉토리 유무 확인
-e : 파일과 폴더를 가리지 않고 존재 하는지 확인
셀 스크립트 생성 depoly.sh 이름으로 할것
# vi depoly.sh
------------------------------------------------------------
#!/bin/bash
git pull
/home/ec2-user/tomcat8.5/bin/shutdown.sh
mvn package
rm -rf /home/ec2-user/tomcat8.5/webapps/ROOT/
mv ./target/RootPlan6-0.0.1-SNAPSHOT /home/ec2-user/tomcat8.5/webapps/ROOT
/home/ec2-user/tomcat8.5/bin/startup.sh
------------------------------------------------------------
권한 변경
# chmod 755 rp_depoly.sh
실행 테스트
./depoly.sh
11. 스프링 부트
스프링부트의 경우 기본적으로 maven 빌드 처리 plugin 셋팅 되어 진다.
위 10번 과 같이 git 에서 clone 후
# ./mvnw clean package
를 하면 처리 하면 된다.
그리고 위 처럼 배포과정을 셀 스크립트 처리 하면 된다.
참조 :
http://macaronics.net/index.php/m01/spring/view/850
http://macaronics.net/index.php/m01/spring/view/887
참조 프로젝트 :
https://github.com/braverokmc79/springboot_myslipp2
12. 스프링
Maven Spring 프로젝트를 만들고 pom.xml에서 패키징을 war로 변경
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>Maven Spring Project</artifactId> <packaging>war</packaging>
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>${maven-war-plugin-version}</version> <configuration> <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory> </configuration> </plugin>
clean install
또는
mvn package
아무것도 설정하지 않고 maven package 골로 빌드를 하면 artifactId-version.war 로 war 파일이 생성된다.
이 war 파일로 배포를 하는데 배포를 할때마다 ROOT.war 나 컨텍스트명.war 로 파일명을 변경해야 되서 귀찮기 그지없다.
mvn package 를 했을때 ROOT.war 나 project.war 같이 생성될 war 파일명을 설정해 보자.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.tistory.stove99</groupId> <artifactId>MyProject</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <build> <!-- ROOT.war 가 생성된다. --> <finalName>ROOT</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> <webXml>WebContent/WEB-INF/web.xml</webXml> </configuration> </plugin> </plugins> </build> </project>
댓글 ( 5)
댓글 남기기