1. Java의 역사

Java는 가전제품 내에서 동작하는 임베디드 프로그램을 위한 언어로 썬 마이크로시스템즈사의 제임스 고슬링 팀에 의해 개발 되었습니다.

1991년에 Oak라는 이름으로 시작하여, 1996년에 발표된 1.0.2 버전부터 Java라는 이름을 사용하게 됩니다.

1998년 발표된 J2SE 1.2에서는 웹에서 Java를 실행시킬 수 있게 해주는 Java 애플릿이 추가되면서 웹의 인기와 함께 Java의 인기도 급상승 하게 됩니다. 다양한 기능이 지원되면서 꾸준한 인기를 누리다가 2009년 썬 마이크로시스템즈사가 오라클과 인수 합병되면서 Java의 소유권은 오라클로 넘어갑니다.


2. Java의 특징

1. JVM을 이용해서 운영체제와 상관없이 독립적으로 실행할 수 있습니다. 즉 운영체제 별로 Java프로그램을 개발할 필요가 없습니다.

2. 가비지 컬렉터라는 메모리 관리 프로그램을 지원합니다. 

3. 객체 지향 언어로서 클래스 계층 구조, 상속성, 다형성, 캡슐화를 지원합니다.

4. 멀티 스레드를 지원하여 하나의 프로그램에서 다수의 스레드가 동시에 실행될 수 있습니다.

3. Java 컴파일 및 실행 과정

참조 : https://www.w3schools.in/java-tutorial/compile-java-file-using-javac/


4. JDK 란

참조 : https://medium.com/@logishudson0218/jdk-sdk-ndk-3b095101c040

JDK (Java Developement Kit)
Java 프로그램을 개발하기 위한 도구들로 이루어진 패키지입니다.

JRE (Java Runtime Environment)
Java 프로그램을 개발하는 데 사용되는 라이브러리들의 모음이며, Runtime 환경을 제공하는 데 쓰입니다.
(JRE는 JVM과 Libraries로 구성되어 있습니다.)

JVM (Java Virtual Machine)
바이트 코드를 실행 시킬 수 있는 가상 머신입니다. 그리고 JVM은 운영체제 별로 존재하는데, 운영체제에 맞는 JVM이 설치되어 있다면 어떠한 바이트 코드라도 실행시킬 수 있습니다.

즉, 윈도우즈에서 개발된 Java 프로그램이 CentOS의 JVM 위에서 동작될 수 있다는 의미입니다.


5. Java 환경 변수란?

리눅스나 윈도우즈에서 JDK를 설치하면 Java 환경변수를 지정해주어야 합니다.
그렇다면 왜 Java 환경 변수를 등록해주어야 할까요? 

JDK를 설치하게 되면 임의의 경로에 저장을 합니다. 하지만 운영체제는 설치한 JDK의 위치를 알지 못합니다.
그래서 사용하는 것이 환경 변수입니다. 환경 변수는 운영체제가 참조하는 변수입니다. 환경 변수에 JDK의 경로를 등록하게 되면 JDK의 여러 바이너리 파일들을 사용할 수 있습니다. 

Windows
내컴퓨터 > 시스템 속성 > 환경 변수 > 시스템 변수 > Path에 추가
C:\Program Files\Java\jdk1.8.0_191\bin; 
Linux 
/etc/profile에 추가

JAVA_HOME=/usr/local/jdk1.8
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME

JAVA 환경변수 확인 방법은 cmd나 terminal창에 java -version을 입력해서 확인할 수 있습니다.


6. 클래스란?

객체에 대한 변수와 메소드가 정의된 명세입니다. 일반적으로 클래스를 바로 사용할 수 없고, new 명령어를 이용해서 객체를 생성해 사용할 수 있습니다.


도움이 되셨다면 공감 버튼 한번씩 눌러주세요.

RHEL 7 부터 방화벽을 관리하는 데몬이 iptables에서 firewalld로 변경되었습니다.

iptables을 사용하지 않는 것은 아니고 firewalld의 기반 기능으로 동작하고 있습니다. 

firewalld는 firewall-cmd 명령어를 이용해 사용할 수 있습니다.  firewalld의 기본 설정은 /usr/lib/firewalld/ 경로에 저장되고, 이후 커스텀 설정은 /etc/firewalld/ 경로에 저장됩니다.

1. 방화벽이란?

허용된 접속을 제외하고 외부 사용자들이 내부 네트워크에 접근하지 못하도록 하는 네트워크 방어 도구 입니다. 

2. 방화벽 실행

systemctl start firewalld

3. Zone

방화벽에는 기본적으로 Zone이라는 개념이 존재합니다. Zone은 서버의 용도에 맞게 미리 정의된 네트워크 보안 레벨을 의미합니다. 아무 설정도 하지 않았다면 기본적으로 public Zone을 사용합니다.

아래 명령어를 입력하면 현재 적용되고 있는 Zone이 출력됩니다.

firewall-cmd --get-default-zone

Zone에 허용 및 금지할 포트와 서비스를 설정할 수 있습니다. 

public zone에 9000번 포트와 9001포트 그리고 mysql 서비스를 등록해보겠습니다.

1. 포트 등록

 방법 1

  firewall-cmd --permanent --zone=public --add-port={9000,9001}/tcp

 방법 2
  firewall-cmd --permanent --zone=public --add-port=9000/tcp
  firewall-cmd --permanent --zone=public --add-port=9001/tcp

 방법 3 (포트를 범위로 지정하여 허용할 수 있습니다.)
  firewall-cmd --permanent --zone=public --add-port=9000-9010/tcp

2. 서비스 등록
 firewall-cmd --permanent --zone=public --add-service=mysql

 firewall-cmd --reload
--permanent 
지정한 옵션을 영구적으로 적용합니다. 해당 옵션을 주지 않는다면 리눅스 리부팅 시, 설정한 옵션이 모두 초기화 됩니다.

--zone=ZoneName
지정한 zone에 설정을 적용합니다. zone을 지정하지 않으면 현재 사용하고 있는 zone에 적용됩니다.

firewall-cmd --reload
방화벽 설정이 끝나면 반드시 방화벽 리로드를 해주어야 적용됩니다. 

zone에 대한 설정 정보를 보려면 다음과 같은 명령어를 입력해주세요.

firewall-cmd --zone=public --list-all

public zone에 대한 설정 정보는 /etc/firewalld/zones/public.xml 경로에서 확인할 수 있습니다.

다른 Zone으로 변경하기

firewall-cmd --set-default-zone=ZoneName

public zone에 9000번 포트 허용 옵션 삭제

firewall-cmd --permanent --zone=public --remove-port=9000/tcp

public zone에 mysql 서비스 허용 옵션 삭제

firewall-cmd --permanent --zone=public --remove-service=mysql

public zone의 특정 IP대역에서 mysql 접근을 허용

firewall-cmd --permanent --zone=public --add-source=192.168.1.0/24 --add-service=mysql

public zone의 mysql에 접근하는 특정 ip 차단

firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=220.92.5.144 service name=mysql reject"

4. 유용한 명령어

firewall-cmd --state
방화벽 상태 확인

firewall-cmd --get-zones
모든 Zone 출력

firewall-cmd --get-default-zone
현재 적용된 Zone 출력

firewall-cmd --list-all
사용 가능한 서비스/포트 출력

firewall-cmd --reload
방화벽 리로드

참조 : https://www.lesstif.com/pages/viewpage.action?pageId=22053128

도움이 되셨다면 공감 한번씩 눌러주세요.

OAuth2(Open Authorization, Open Authentication 2)는 인증을 위한 표준 프로토콜입니다. 

구글, 페이스북, 카카오 등에서 제공하는 Authorization Server를 통해 회원 정보를 인증하고 Access Token을 발급받습니다.

그리고 발급받은 Access Token을 이용해 타사의 API 서비스를 이용할 수 있습니다.

OAuth2 용어 정리

Resource owner(자원 소유자)
Resource server(구글, 페이스북, 카카오 등)의 계정을 소유하고 있는 사용자를 의미합니다.
Client
구글, 페이스북, 카카오 등의 API 서비스를 이용하는 제 3의 서비스
Authorization Server(권한 서버)
권한을 관리해 주는 서버, Access Token, Refresh Token을 발급, 재발급 해주는 역할을 합니다.
Resource Server
OAuth2 서비스를 제공하고, 자원을 관리하는 서버입니다.
Access Token
Authorization Server로 부터 발급 받은 인증 토큰, Resource Server에 전달하여 서비스를 제공 받을 수 있습니다.

OAuth2 인증 과정

대표적으로 많이 사용되는 Authorization Code Grant 방식을 예로 들겠습니다.

다음 그림은 페이코 개발자 사이트의 OAuth2 설명을 참고 하였습니다. https://developers.payco.com/guide/development/start  

'IT > 기타' 카테고리의 다른 글

[JWT] Json Web Token이란?  (0) 2020.10.02
[Javascript] Jqgrid Custom  (0) 2020.09.14
[DEV] 컴파일과 빌드란  (0) 2020.09.10
[보안] 공개키 암호화 방식  (0) 2020.07.20
XSS란?  (0) 2020.07.16

devtools는 웹 서버 개발 시 유용한 기능들을 포함하고 있는 라이브러리 입니다.

화면 수정 시, 서버를 재구동 하지 않고 브라우저를 새로고침 함으로써 화면을 리로딩 시킬 수 있습니다.

1. pom.xml

...
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
</dependency>
...

spring-boot-devtools 라이브러리를 dependency합니다.

2. livereload enabled 및 Cache Disabled

aplication.yml
spring :    
    devtools :
        livereload :
            enabled : true
    thymeleaf:
        cache : false

devtools를 이용해서 livereload를 활성화 시키고, page cache를 비활성화 합니다. 

page cache option은 여러분이 사용하고 있는 페이지 템플릿에 따라 달라질 수 있습니다.


도움이 되셨다면 공감 한번씩 눌러주시면 감사하겠습니다.

1. Yona란?

Git을 기반으로 소스를 관리하고, 팀 프로젝트를 효율적으로 진행하기 위해 개발된 오픈소스 라이브러리입니다.

2. Yona의 기능

  • 이슈트래커
  • 게시판
  • 코드 저장소(Git)
  • Pull Request
  • 코드 리뷰
  • 그룹
  • 메일 연동

3. JAVA 1.8 설치

JAVA 설치
2020/02/19 - [IT/Linux] - [Linux] CentOS 7에 OpenJDK 1.8 설치

4. MariaDB 설치

MariaDB 설치
2020/02/24 - [IT/Linux] - [Linux] CentOS7에 MariaDB 설치하기

mariaDB가 설치되었다면 root계정으로 로그인합니다.

# mysql -u root -p
Enter password: 비밀번호입력

yona 전용 계정과 데이터베이스를 생성해주고 yona 계정에 yona DB에 대한 모든 권한을 부여합니다.

MYSQL > create user 'yona 계정명'@'localhost' identified by '비밀번호'; 
MYSQL > create database yona
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_bin;
MYSQL > grant all on yona.* to 'yona 계정명'@'localhost';

5. Yona 설치 및 unzip

# wget https://github.com/yona-projects/yona/releases/download/v1.10.1-beta/yona-v1.10.1-mariadb-10.2-bin.zip
# unzip yona-v1.10.1-mariadb-10.2-bin.zip

6. Yona 설정 및 실행

yona를 실행하기 전에 application.conf에 mariadb의 yona 계정명과 패스워드를 입력해야합니다.

# vi yona-1.10.1/conf/application.conf
...
# MariaDB
db.default.driver=org.mariadb.jdbc.Driver
db.default.url="jdbc:mariadb://127.0.0.1:3306/yona?useServerPrepStmts=true"
db.default.user=yona
db.default.password="yona패스워드"
...
yona-1.10.1/bin/yona

yona를 실행시켜줍니다.

7. 방화벽 해제

yona 포트를 따로 지정해주지 않으면 9000으로 설정됩니다. 해당 포트에 대한 방화벽을 열어줍니다.

# firewall-cmd --permanent --add-port=9000/tcp
# firewall-cmd --reload

8. yona 접속

IP:9000

ex : http://localhost:9000/

9. SSH를 끊어도 yona가 종료되지 않게 하기

# yona-1.10.1/bin/yona &
# disown
# exit

참조 : https://ignorabilis.tistory.com/4

안녕하세요. 이번에는 CentOS7에 MaraDB 설치 및 설정에 대한 포스팅을 진행하겠습니다.

MariaDB는 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL과 동일한 소스 코드를 기반으로 하며, GPL v2 라이선스를 따른다.

출처 : https://ko.wikipedia.org/wiki/MariaDB

 

1. MariaDB yum repo 등록

vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

mariadb 10.4 버전을 baseurl로 등록하였습니다. 다른 버전을 다운받고 싶다면 baseurl을 수정해주세요.


2. MariaDB 설치 및 확인

yum install MariaDB
# rpm -qa | grep MariaDB
MariaDB-compat-10.4.12-1.el7.centos.x86_64
MariaDB-client-10.4.12-1.el7.centos.x86_64
MariaDB-common-10.4.12-1.el7.centos.x86_64
MariaDB-server-10.4.12-1.el7.centos.x86_64

# mariadb --version
mariadb Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using readline 5.1

3. MariaDB 실행 및 비밀번호 변경

//mariadb 실행
# systemctl start mariadb

//비밀번호 변경
# /usr/bin/mysqladmin -u root password '변경할 비밀번호 입력'

//포트 및 데몬 이름 확인
# netstat -anp | grep 3306


4. CharaterSet utf8mb4로 변경

# vi /etc/my.cnf
[mysqld]
default_storage_engine=innodb

init-connect='SET NAMES utf8mb4'
lower_case_table_names=1
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci


[client]
port=3306
default-character-set = utf8mb4

[mysqldump]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

mariadb 재시작

systemctl restart mariadb

5. mariaDB 로그인 및 CharacterSet 확인

# mysql -u root -p
Enter password: 설정한 비밀번호 입력

characterSet이 utf8mb4로 변경되었는지 확인합니다.

> show variables like 'c%';


6. linux 리부팅 시 자동으로 실행되도록 설정

# systemctl enable mariadb
# systemctl is-enabled mariadb
enabled

참조 : https://ignorabilis.tistory.com/4


도움이 되셨다면 공감버튼을 눌러주세요!

1. open-jdk 1.8 설치

# yum install java-1.8.0-openjdk
# yum install java-1.8.0-openjdk-devel

설치가 완료되면 /usr/bin/경로에 java가 생성됩니다.


2. 환경변수 등록

/usr/bin/java 경로에 심볼릭링크가 걸려있기 때문에 실제 경로를 찾아서 환경변수에 등록해주어야 합니다.

# readlink -f /usr/bin/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre/bin/java

실제 경로를 찾았으면 /etc/profile을 vi로 열어줍니다. 그리고 JAVA_HOME, PATH, CLASSPATH를 등록합니다.

//# vi /etc/profile

...

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

export JAVA_HOME PATH CLASSPATH

환경 변수를 등록했다면 ssh연결을 재시작하거나 source /etc/profile 명렁어를 입력해줍니다.

등록한 환경 변수가 제대로 적용되었는지 테스트합니다.

# echo $JAVA_HOME
# echo $PATH
# echo $CLASSPATH

3. HelloWorld.java 컴파일 후 실행

# vi HelloWorld.java
public class HelloWorld{
   public static void main(String[] args){
        System.out.println("Hello World!!");
   }
}

HelloWorld.java 파일을 컴파일하고 실행시켜서 테스트해봅니다.

# javac HelloWorld.java
# java -cp . HelloWorld
Hello World!!

 

테스트 끝!


도움이 되셨다면 공감버튼을 눌러주세요!

CentOS 7에 Tomcat8을 설치 및 설정하는 예제를 진행하겠습니다. 테스트의 편의성을 위해 root 계정에서 진행하겠습니다.

1. open-jdk 1.8 설치 

jdk가 설치되어 있지 않다면 아래 링크에서 다운로드해주세요.

2020/02/19 - [IT/Linux] - [Linux] CentOS 7에 OpenJDK 1.8 설치

2. tomcat 설치

tomcat은 설치하는 방법이 다양합니다. 이번 예제는 wget을 이용해 설치하겠습니다.

# wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.27/bin/apache-tomcat-8.5.27.tar.gz

// 압축 해체
# tar zxvf apache-tomcat-8.5.27.tar.gz

// 톰캣을 /usr/local/로 이동시키고 디렉토리 이름을 tomcat8로 변경
# mv apache-tomcat-8.5.27 /usr/local/tomcat8

3. tomcat 설정 및 환경 변수 등록

vi /usr/local/tomcat8/conf/server.xml
// vi /usr/local/tomcat8/conf/server.xml
// 아래 설정을 찾아서 URIEncoding="UTF-8"을 추가한다.

...
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8" />
...
vi /etc/profile
...

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
CATALINA_HOME=/usr/local/tomcat8
CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib-jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar
PATH=$PATH:$JAVA_HOME/bin:/bin:/sbin
export JAVA_HOME PATH CLASSPATH CATALINA_HOME
설정 후 아래 명령어 입력 
# source /etc/profile

3. tomcat 실행

startup.sh파일은 tomcat을 실행시키는 shell script입니다. 해당 파일을 실행시켜 tomcat을 작동시켜줍니다.

# /usr/local/tomcat8/bin/startup.sh

tomcat이 실행되고 있는지 확인합니다.

//톰캣 프로세스 확인
# ps -ef|grep tomcat8

// 8080 포트가 열려있는지 확인 
# netstat -tln

 테스트해보기 위해 다음 명령어를 실행시켜줍니다.

# wget http://localhost:8080/

index.html 파일이 다운로드 되었다면 정상적으로 tomcat이 실행되고 있다는 의미입니다. 

index.html 파일은 기본적으로 실행되는 /usr/local/tomcat8/webapps/ROOT WebService에서 다운받은 것이며, 

http://localhost:8080 호출 시,  /usr/local/tomcat8/webapps/ROOT/index.jsp 파일이 index.html로 변환되어 다운됩니다.


4. systemctl 등록

vi /etc/systemd/system/tomcat8.service
# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking

Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/"
Environment="CATALINA_HOME=/usr/local/tomcat8"
Environment="CATALINA_BASE=/usr/local/tomcat8"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

ExecStart=/usr/local/tomcat8/bin/startup.sh
ExecStop=/usr/local/tomcat8/bin/shutdown.sh

User=root
Group=root
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

 

# systemctl daemon-reload
# systemctl enable tomcat8

// tomcat8 실행
# systemctl start tomcat8

5. systemctl service 부팅 시 자동 실행

//부팅 시 자동 실행 서비스 등록
# systemctl enable tomcat8.service
//등록된 서비스 조회
# systemctl list-unit-files --type service |grep tomcat8

 

6. tomcat manager 설정 (해당 설정은 선택사항 입니다.)

tomcat manager란 tomcat 모니터링 및 어플리케이션 관리, WAR 배포 및 다양한 서비스를 제공해주는 관리 페이지입니다.

1) tomcat-users.xml 수정

vi /usr/local/tomcat8/conf/tomcat-users.xml
<tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0">

  <role rolename="manager"/>
  <role rolename="manager-gui" />
  <role rolename="manager-script" />
  <role rolename="manager-jmx" />
  <role rolename="manager-status" />
  <role rolename="admin"/>
  <user username="admin" password="패스워드" roles="admin,manager,manager-gui, manager-script, manager-jmx,  manager-status"/>

</tomcat-users>

 

2) 외부 접근 허용 설정

vi /usr/local/tomcat8/conf/Catalina/localhost/manager.xml
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">          <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>

설정 후, 서버 재시작

3) 테스트

http://자신의IP:8080/manager

위 주소를 입력하고 ID와 password를 입력면 아래와 같은 웹페이지가 노출됩니다.  

만약 접근이 안된다면 여러가지 이유가 있겠지만, 8080포트로 방화벽이 열려있는지 확인해주시기 바랍니다.
방화벽에 대한 정보는 아래 링크를 이용해주세요.
2020.03.02 - [IT/Linux] - [Linux] firewalld 방화벽 설정하기

'IT > Linux' 카테고리의 다른 글

[Linux] CentOS7에 MariaDB 설치하기  (8) 2020.02.24
[Linux] CentOS 7에 OpenJDK 1.8 설치  (0) 2020.02.19
[Linux] 계정과 그룹관리  (0) 2020.02.12
[Linux] CentOS 7 Git Server 구축하기  (0) 2020.02.11
[Linux] CentOS 7 Mysql 설치  (0) 2019.12.27

+ Recent posts