728x90
반응형

SendMail 이란? 

Sendmail은 인터넷을 통해 이메일을 전송하는데 사용되는 SMTP(Simple Mail Transfer Protocol) 프로토콜을  통해 메일 서비스를 수행하며 범용 목적 인터네트워크 이메일 라우팅 기능이다.

 

SendMail 설치 

Centos 에서 sendmail 을 설치하고 메일서버를  이용해 메일을 보내는 테스트 하는 방법에 대해 알아 보겠습니다. 

1.sendmail 관련 패키지 설치

  • sendamil 설치된 팩키지 확인 
rpm -qa | grep sendmail
  • sendmail 설치
yum install sendmail sendmail-cf sendmail-devel

2.sendmail 설정

  • /etc/mail/sendmail.mc 수정
    1. 52 ,53 라인 dnl 주석 처리 
    2. 118 라인 dnl 삽입
  • 변경전
 52 dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
 53 dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
118 DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl  
  • 변경후

 52  TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
 53  define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
118 dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl 

  • sendmail.cf 파일 생성 
m4 sendmail.mc > sendmail.cf

메일의 정상 수신을 위해서는 호스트 명이 존재 해야 합니다. 

vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#추가
192.168.xx.xx centos7 my.centos7.com​
  • local-host-names 추가 
vi /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
my.centos7.com

3. sendmail 서비스 시작

service sendmail start

#sendmail 이 리눅스 부팅시 실행되도록 설정.
chkconfig --level 2345 sendmail on

 

4. RELAY (IP 허용) :/etc/mail/access

  • 접속 허용 IP 대역 추가 (Connect:192.168                 RELAY)
  • access ip 적용 : makemap hash access < access
vi /etc/mail/access
# By default we allow relaying from localhost...
Connect:localhost.localdomain           RELAY
Connect:localhost                       RELAY
Connect:127.0.0.1                       RELAY
Connect:192.168                 RELAY

cd /etc/mail
makemap hash access < access

5. sendmail 테스트

5-4 번이 헷갈릴수도 있습니다.

꼭 DATA 입력후 엔터를 누른신 후 본문을 작성해 주세요 .

본문 작성이 끝나면 마침표로 "." 작성 완료를 해주세요 

 

5-1.telnet 접속 
telnet centos7 25

5-2.발신 메일 주소 입력
MAIL FROM:example@test.com

5-3.수신 메일 주소 입력
RCPT TO:jungki_min@tmax.co.kr

5-4. "DATA" 입력 후 본문 입력 "." 마침표로 메세지 발송
DATA

SUBJECT:Test Mail

5-5. 접속 종료 

quit

telnet centos7 25
Trying 192.168.17.56...
Connected to centos7.
Escape character is '^]'.
220 my.centos7.com ESMTP Sendmail 8.14.7/8.14.7; Mon, 4 Apr 2022 18:09:28 +0900
MAIL FROM:example@test.com
250 2.1.0 example@test.com... Sender ok
RCPT TO:usermail@daum.net
250 2.1.5 usermail@daum.net... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
SUBJECT:Test Mail
.
250 2.0.0 23499Sdm021395 Message accepted for delivery
quit
221 2.0.0 my.centos7.com closing connection
Connection closed by foreign host.

 

6. 전달 받은 메일함 확인 

728x90
반응형

'06.OS > Linux' 카테고리의 다른 글

[Linux] 리눅스 캐쉬 메모리 비우기  (0) 2022.04.12
[Centos] VSFTPD 설치  (0) 2022.04.08
[Centos] Telnet 설치  (0) 2022.04.05
[Ubuntu] 우분투 ROOT 접속  (0) 2022.03.31
[Ubuntu] Static IP 설정  (0) 2022.03.26
728x90
반응형

Array 변수 활용 방법 

간단하게 쉘에서 배열 변수 작성및 활용 하는 방법에 대해 알아 보겠습니다.

아래는 예시  작성한 코드입니다.

 

  • 사용 방법
변수 선언 
변수 = ("배열값1" "배열값2" ......."")
array=("ARRAY1" "ARRAY2" "ARRAY3" "ARRAY4")

* aix, hp 같은경우 아래 처럼 선언을 해서 사용 해야 합니다. 
set -A array ${array[*]}


배열 갯수 확인 
${#array[@]}

배열 값 확인 
 ${배열변수[키값]}
 ${array[0]}

vi array.sh 
#!/bin/bash
array=("ARRAY1" "ARRAY2" "ARRAY3" "ARRAY4")


echo "모든 배열 변수 출력"
echo "array COUNT:"${#array[@]}
echo "array all  :" ${array[@]}

echo "array 1    :" ${array[0]}
echo "array 1    :" ${array[1]}
echo "array 2    :" ${array[2]}
echo "array 3    :" ${array[3]}
echo "array 4    :" ${array[4]}


echo " ======================================" 
echo " =========== LOOP ARRAY PRINT =========" 
echo " ======================================" 
loop_cnt=0
while [[ $loop_cnt -lt ${#array[@]} ]]
do

echo "array : ${array[loop_cnt]}"
loop_cnt=`expr $loop_cnt + 1`
done

 

 

 

 

728x90
반응형
728x90
반응형

내 사이트 (블로그) 검색 사이트 노출 

이번 포스팅에서는 내 사이트 (블로그) 검색 사이트에 노출 시키는 방법을 알아보겠습니다. 

 

1.구글 가입 및 구글 서치 콘솔 접속 

사이트를 운영하는 사람이라면 구글 계정 하나 쯤은 가지고 있겠죠? 

우선 구글 계정을 만듭니다. 

구글 계정으로 구글 서치 콘솔에 접속 하겠습니다. 

구글 서치 콘솔에 접속 하셨다면 노출 시킬 사이트 주소를 입력후 계속 버튼을 누릅니다. 

 

 

2.사이트 소유권 확인 작업

이제 사이트주소에대한 소유권 확인 작업을 진행 하겠습니다.  

하단 다른 확인 방법 중 HTML 태그 버튼을 눌러서 meta 태그를 복사합니다. 

3.노출 시킬 사이트 메타 테그 삽입

블로그의 HTML 편집기에 <head> </head> 사이에 복사합니다. 

티스토리 라면 관리자 페이지 에서 스킨편집-> 스킨 변경 -> HTML 편집 창에서 해당 작업을 진행 합니다. 

 

메타 태그 삽입이 완료 되었다면 적용 버튼을 눌러주세요!

 

4.구글 서치 완료 작업 진행 

이제 다시 구글 서치 페이지로 돌아 와서 완료 버튼을 눌러주세요!

 

완료 버튼을 누르면 소유권 확인이 완료되었다고 팝업창이 나오게 됩니다. 

5.사이트맵 등록 

소유권이 확인 완료 되면 11시 방향 목록 버튼을 눌러주세요 

그 다음 노출 시키고자 했던 블로그 URL 을 선택합니다. 

이후 사이트맵(Sitemaps) 매뉴을 클릭합니다. 

 

사이트맵 URL 입력 란에 

sitemap.xml , rss 를 추가 하고 제출 합니다. 

정상적으로 추가가되면 하단 제출된 사이트 맵에 상태표시가 성공으로 표시가 됩니다. 

6.URL 검사(색인 생성요청) 

마지막입니다.  

URL 검사 버튼을 눌러서 노출시킬 사이트에 대한 색인을 만드세요 

 

색인 생성 요청 버튼을 누르면 아래와 같이 색인 생성 작업이 진행 창이 나옵니다. 

 

728x90
반응형

'99. 블로그 꾸미기 > Tip' 카테고리의 다른 글

[구글 광고] 카테고리 URL 제거 방법  (0) 2022.05.22
티스토리 PDF 파일 저장  (0) 2022.03.04
728x90
반응형

Telnet 이란?

텔넷(TELNET)은 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜이다

텔넷은 아래와 같은 특징을 가지고 있습니다. 

  • TCP/IP 기반의 프로토콜
  • 원격 터미널 접속서비스
  • TCP 23번 포트 를 기본적으로 사용 한다. 

1.Telnet 설치 팩키지 확인 및 설치 

rpm -qa | grep telnet
yum install -y telnet*
  • 설치 과정 확인
$ rpm -qa | grep telnet
$ rpm -qa | grep telnet*
$ yum list telnet*
  6ned plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
 * epel: ftp.riken.jp
 * extras: mirror.kakao.com
 * updates: mirror.kakao.com
Available Packages
telnet.x86_64                                             1:0.17-66.el7                                      updates
telnet-server.x86_64                                      1:0.17-66.el7                                      updates
$ yum install -y telnet*
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
 * epel: ftp.riken.jp
 * extras: mirror.kakao.com
 * updates: mirror.kakao.com
Resolving Dependencies
--> Running transaction check
---> Package telnet.x86_64 1:0.17-66.el7 will be installed
---> Package telnet-server.x86_64 1:0.17-66.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================
 Package                       Arch                   Version                         Repository               Size
====================================================================================================================
Installing:
 telnet                        x86_64                 1:0.17-66.el7                   updates                  64 k
 telnet-server                 x86_64                 1:0.17-66.el7                   updates                  41 k

Transaction Summary
====================================================================================================================
Install  2 Packages

Total download size: 106 k
Installed size: 168 k
Downloading packages:
(1/2): telnet-server-0.17-66.el7.x86_64.rpm                                                  |  41 kB  00:00:00     
(2/2): telnet-0.17-66.el7.x86_64.rpm                                                         |  64 kB  00:00:00     
--------------------------------------------------------------------------------------------------------------------
Total                                                                               726 kB/s | 106 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:telnet-0.17-66.el7.x86_64                                                                      1/2 
  Installing : 1:telnet-server-0.17-66.el7.x86_64                                                               2/2 
  Verifying  : 1:telnet-server-0.17-66.el7.x86_64                                                               1/2 
  Verifying  : 1:telnet-0.17-66.el7.x86_64                                                                      2/2 

Installed:
  telnet.x86_64 1:0.17-66.el7                           telnet-server.x86_64 1:0.17-66.el7                          

Complete!
$ telnet centos7
Trying 192.168.17.56...
telnet: connect to address 192.168.17.56: Connection refused

 

2.Telnet 접속 확인  

설치 텔넷 접속시 Connection refused 에러가 발생 합니다. 

텔넷 서비스가 중지되어 있어 접속 에러가 발생합니다. 

텔넷 서비스 활성화후 재 접속을 합니다. 

 

$ telnet centos7              
Trying 192.168.17.56...
telnet: connect to address 192.168.17.56: Connection refused

$ systemctl start telnet.socket 

 

$ telnet 192.168.17.56
Trying 192.168.17.56...
Connected to 192.168.17.56.
Escape character is '^]'.

Kernel 3.10.0-1160.el7.x86_64 on an x86_64
centos7 login: docker_test
Password: 
Last login: Thu Mar 31 15:54:04 on pts/9

 

3.Telnet Command

 아래 명령은 telnet 사용 기본 명령어 입니다. 

 

#telnet 서비스 시작
systemctl start telnet.socket

#시스템 시작 시 자동으로 telnet 서버가 시작될 수 있게 활성화 시킨다.
systemctl enable telnet.socket


#telnet 서비스 정지
systemctl stop telnet.socket
systemctl disable telnet.socket

#tlent 서비스 상태 확인 
systemctl status telnet.socket

 

 

728x90
반응형

'06.OS > Linux' 카테고리의 다른 글

[Centos] VSFTPD 설치  (0) 2022.04.08
[SendMail] Centos7 SendMail 설치  (0) 2022.04.07
[Ubuntu] 우분투 ROOT 접속  (0) 2022.03.31
[Ubuntu] Static IP 설정  (0) 2022.03.26
[CentOS]Host Name 변경  (0) 2022.03.26
728x90
반응형

docker-compose 란? 

여러개의 컨테이너가 유기적으로 묶여서 하느의 어플리케이션으로서 동작이 필요할경우 유용하게 사용할수 있는기능입니다. 

 

예를 들어 웹 어플리케이션을 서비스 한다고 했을 때  서비스가 실행되기 위해서는 웹서버(Apache, IIS, Nginx )와 Database(Oralce,Tibero,Mysql,posgressSql) 컨테이너를 생성해야 합니다. 

 

Docker 로 해당 서비스를 수행한다고 하면 아래와 같이 매번 docker run  옵션을 설정해 CLI(Commnad Line Interface) 컨테이너를 생성 해야 합니다. 

docker-compose 는 이런 번거로움을 해결하기 위해 여러 컨테이너를 하나의 서비스로 묶어 다룰수 있도록 작업 환경을 제공합니다. 

 

1.Docker 를 통한 웹 서비스 컨테이너 생성 방법

# Mysql 컨테이너 생성 
$ docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:latest

#Apach 컨테이너 생성 
$ docker run -d --name apache -p 8080:80 httpd

 

2.docker-compose (docker-compose.yml)를 이용한 웹 서비스 컨테이너 생성 

docker-compose 사용 방법

위 그림 처럼 도커 컴포즈는 docker-compose.yml 에 서비스할 컨테이너를 정의 하고 묶음으로 관리 할수 있다.

  • docker-compose.yml
    • version :YAML 파일 포맷 버전을 나타냅니다. 
    • service : 생성될 컨테이너들의 묶음을 나타냅니다. 
    • apach, mysql : 생성할 서비스 이름입니다. 
version: "3.8"
services:
   apache:
    build: './apache/'
    depends_on:
      - mysql
    networks:
      - frontend
      - backend
    ports:
      - "8080:80"
    volumes:
      - ./public_html/:/var/www/html/
  mysql:
    image: mysql:5.6.40
    networks:
      - backend
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
networks:
  frontend:
  backend:

 

 

3.docker-compose  와 Docker 호환성 메트릭스 

도커컴포즈는 yml 파일로 컨테이너 구성하는데 사용하는 도커 버전에 따라 도커 컴포즈 버전을 맞춰서 사용해야 한다. 

현재 도커 컴포즈 버전은 3.9 버전까지 릴리즈 되어 있습니다. 

아래표는 도커 컴포즈 와 호환되는 도커 버전에대한 호환성 메트릭스 표입니다. 

 

Docker and Docker-compose&nbsp;compatibility matrix

 

https://docs.docker.com/compose/compose-file/compose-file-v3/

 

Compose file version 3 reference

 

docs.docker.com

 

728x90
반응형

'02.Docker > Docker' 카테고리의 다른 글

Docker 설치  (0) 2022.03.20
자주 사용하는 Docker 명령어  (0) 2022.03.18
사용자 계정에서 Docker Command 사용 방법  (0) 2022.02.22
728x90
반응형

docker-compose를 사용해서 Mysql을 설치 진행을 해보겠습니다. 

 

파일 구조는 아래와 같습니다.

 

파일구조

$ tree db
db root directory 
|-- docker-compose.yml // mysql 빌드 파일 
`-- env.mysql // 환경 파일 

 

mysql 환경 파일 (env.mysql)

MYSQL_DATABASE=mysql8
MYSQL_ROOT_PASSWORD=admin
MYSQL_USER=testuser
MYSQL_PASSWORD=userpasswd

 

mysql compose 파일(docker-compose.yml)

version: '3.8'

services:
  mysql_db: ## Service Name

    container_name: mysql-8  ## Container Name

    image: mysql:8.0

    env_file:
      - ./env.mysql

    ports:
      - 23306:3306

    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci

    volumes:
      - ./mysql_data:/var/lib/mysql

 

mysql 설치 (docker-compose up -d)

$ docker-compose up -d --build                                                               
Creating network "db_default" with the default driver
Pulling mysql_db (mysql:8.0)...
8.0: Pulling from library/mysql
f003217c5aae: Pull complete
65d94f01a09f: Pull complete
43d78aaa6078: Pull complete
a0f91ffbdf69: Pull complete
59ee9e07e12f: Pull complete
04d82978082c: Pull complete
70f46ebb971a: Pull complete
db6ea71d471d: Pull complete
c2920c795b25: Pull complete
26c3bdf75ff5: Pull complete
9ec1f1f78b0e: Pull complete
4607fa685ac6: Pull complete
Digest: sha256:1c75ba7716c6f73fc106dacedfdcf13f934ea8c161c8b3b3e4618bcd5fbcf195
Status: Downloaded newer image for mysql:8.0
Creating mysql-8 ... done

 

mysql 상태 확인 

  • docker image ls 명령을 통해 mysql 이미지가 생성된 것을 확인할 수 있습니다. 
$ docker image ls
REPOSITORY                           TAG                   IMAGE ID       CREATED         SIZE
mysql                                8.0                   667ee8fb158e   37 hours ago    521MB
  • docker-compose ps 명령을 통해 컨테이너 상태를 확인할 수 있습니다. 
$ docker-compose ps  
 Name                Command               State                           Ports                        
--------------------------------------------------------------------------------------------------------
mysql-8   docker-entrypoint.sh --cha ...   Up      0.0.0.0:23306->3306/tcp,:::23306->3306/tcp, 33060/tcp

 

mysql Data file 확인 

도커 설치 후 mysql_data 디렉터리가 생성이 되었고 해당 디렉터리에 데이터 파일이 생성됩니다. 

docker-compose 파일에 volume 설정을 하면  호스트 디렉터리에  mysql_data  디렉터리가 없더라도 빌드 과정에서 

자동으로 생성 되게 됩니다. 

 

    volumes:
      - ./mysql_data:/var/lib/mysql =>  [host volume]:[container volume]

 

$ tree db
db
|-- docker-compose.yml
|-- env.mysql
`-- mysql_data
    |-- #ib_16384_0.dblwr
    |-- #ib_16384_1.dblwr
    |-- #innodb_temp [error opening dir]
    |-- auto.cnf
    |-- binlog.000001
    |-- binlog.000002
    |-- binlog.000003
    |-- binlog.index
    |-- ca-key.pem
    |-- ca.pem
    |-- client-cert.pem
    |-- client-key.pem
    |-- ib_buffer_pool
    |-- ib_logfile0
    |-- ib_logfile1
    |-- ibdata1
    |-- ibtmp1
    |-- mysql [error opening dir]
    |-- mysql.ibd
    |-- mysql8 [error opening dir]
    |-- performance_schema [error opening dir]
    |-- private_key.pem
    |-- public_key.pem
    |-- server-cert.pem
    |-- server-key.pem
    |-- sys [error opening dir]
    |-- undo_001
    `-- undo_002

 

mysql 컨테이너 접속 및 실습

  • docker-compose exec mysql_db /bin/bash 명령을 통해 컨테이너에 접속을 합니다.
  • mysql -u testuser  -p --host 127.0.0.1 접속 명령을 통해 mysql에 접속합니다. 
    • MYSQL_USER=testuser
    • MYSQL_PASSWORD=userpasswd
  • show database 명령을 통해 접속 db를 확인합니다.
    • MYSQL_DATABASE=mysql8
  • t_board 테이블을 생성합니다. 
  • show tables  명령을 통해 생성된 테이블을 확인합니다. 
  • t_board  테이블에 데이터를 입력합니다. 
  • 입력한 데이터를 조회합니다. 

 

 

Sample data

CREATE TABLE t_board (
board_idx INT(11) NOT NULL AUTO_INCREMENT COMMENT ' ',
title VARCHAR(300) NOT NULL COMMENT '',
contents TEXT NOT NULL COMMENT '',
hit_cnt SMALLINT(100) NOT NULL DEFAULT '0' COMMENT '',
created_datetime DATETIME NOT NULL COMMENT '',
creator_id VARCHAR(50) NOT NULL COMMENT '',
updated_datetime DATETIME DEFAULT NULL COMMENT '',
updater_id VARCHAR(50) DEFAULT NULL COMMENT '',
deleted_yn CHAR(1) NOT NULL DEFAULT 'N' COMMENT ' ',
PRIMARY KEY (board_idx)
);

insert into t_board(board_idx,title, contents, hit_cnt,created_datetime, creator_id,  deleted_yn)
values(1,'제목','내용 작성',1,SYSDATE(),'tester','N');


select * from t_board;

 

  • 테스트 테스트 진행 
$ docker-compose exec mysql_db /bin/bash
root@24a15adb0cb3:/# ls
bin  boot  dev  docker-entrypoint-initdb.d  entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

root@24a15adb0cb3:/var/lib/mysql# mysql -u testuser  -p --host 127.0.0.1
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql8             |
+--------------------+
2 rows in set (0.01 sec)

mysql> use mysql8
Database changed
mysql> CREATE TABLE t_board (
    -> board_idx INT(11) NOT NULL AUTO_INCREMENT COMMENT ' ',
    -> title VARCHAR(300) NOT NULL COMMENT '',
    -> contents TEXT NOT NULL COMMENT '',
    -> hit_cnt SMALLINT(100) NOT NULL DEFAULT '0' COMMENT '',
    -> created_datetime DATETIME NOT NULL COMMENT '',
    -> creator_id VARCHAR(50) NOT NULL COMMENT '',
    -> updated_datetime DATETIME DEFAULT NULL COMMENT '',
    -> updater_id VARCHAR(50) DEFAULT NULL COMMENT '',
    -> deleted_yn CHAR(1) NOT NULL DEFAULT 'N' COMMENT ' ',
    -> PRIMARY KEY (board_idx)
    -> );
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> show tables;
+------------------+
| Tables_in_mysql8 |
+------------------+
| t_board          |
+------------------+
1 row in set (0.01 sec)

mysql> insert into t_board(board_idx,title, contents, hit_cnt,created_datetime, creator_id,  deleted_yn)
    -> values(1,'',' ',1,SYSDATE(),'tester','N');
Query OK, 1 row affected (0.01 sec)

mysql> select * from t_board;
+-----------+-------+----------+---------+---------------------+------------+------------------+------------+------------+
| board_idx | title | contents | hit_cnt | created_datetime    | creator_id | updated_datetime | updater_id | deleted_yn |
+-----------+-------+----------+---------+---------------------+------------+------------------+------------+------------+
|         1 |       |          |       1 | 2022-03-31 07:34:14 | tester     | NULL             | NULL       | N          |
+-----------+-------+----------+---------+---------------------+------------+------------------+------------+------------+
1 row in set (0.00 sec)


 

728x90
반응형
728x90
반응형

docker-compose 를 이용해 빌드를 진행해 보겠습니다. 

파일 구조는 아래와 같습니다. 

 

os
|-- Dockerfile : 빌드 하기 위한 도커 파일 
`-- docker-compose.dev.yml : docker-compose 에서 실습할 yml 파일 

 

ubuntu 20.04 버전으로 이미지를 만들도록 하겠습니다. 

내용은 없습니다. 

Docker File 생성(Dockerfile) 

FROM ubuntu:20.04
RUN echo " TEST ubuntu"

docker-compose.yml 파일 생성 (docker-compose.dev.yml)

version: '3.8'

services:

     ubuntu: ## Service Name

         container_name: ubuntu20  ## Container Name

         build:
           context: . ## build Docker file location
           dockerfile: Dockerfile ## build file name

 

docker-compose build

docker-compose 수행시 사용되는 default 파일명은 docker-compose.yml 입니다. 

운영과 개발 이미지를 분리하고자 한다면 docker-compose.dev.yml (개발) or docker-compose.prod.yml 처럼 

파일을 분리해서 컨테이너를 관리하면 됩니다. 

 

만약  default 파일이 없다면 아래와 같은 에러가 발생합니다. 

docker-compose build
ERROR: 
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?
        Supported filenames: docker-compose.yml, docker-compose.yaml, compose.yml, compose.yaml

 

docker-compose 명령을 통해 Dockerfile 빌드를 진행후 생성된 이미지를 확인 합니다. 

이미지명은 현재 디렉토리명_커테이너명(os_ubuntu )으로 생성됩니다. 

  1. docker-compose -f docker-compose.dev.yml build  // 이미지 빌드 
  2. docker-image ls // 도커 이미지 확인 
$ docker-compose -f docker-compose.dev.yml build 
Building ubuntu
Sending build context to Docker daemon  3.584kB
Step 1/2 : FROM ubuntu:20.04
 ---> ff0fea8310f3
Step 2/2 : RUN echo " TEST ubuntu"
 ---> Using cache
 ---> 70456ca2c54a
Successfully built 70456ca2c54a
Successfully tagged os_ubuntu:latest

$ docker image ls
REPOSITORY                           TAG                   IMAGE ID       CREATED         SIZE
os_ubuntu                            latest                70456ca2c54a   6 hours ago     72.8MB

 

Docker Container 기동 및 확인 

컨테이너 기동 명령어는 docker-compose -f [compose file name ] up or up -d 입니다. -d 일경우 컨테이너가 백그라운드로 실행 되게 됩니다. 

docker-compose -f docker-compose.dev.yml up 또는 

docker-compose -f docker-compose.dev.yml -up -d (백그라운드 실행)

 

컨테이너 상태 확인 시 종료 되어있습니다. 

Docker 는 Virtual machine 이 아니라 가상화된 공간을 제공해 줄 뿐이다 .

이러한 이유로 docker-compose up 을 수행해도  컨테이너는 기동 후 바로 종료된다. 

 

[docker_test@centos7:/data1/docker_test/compose/os]$ docker-compose -f docker-compose.dev.yml up                                
Creating network "os_default" with the default driver
Creating ubuntu20 ... done
Attaching to ubuntu20
ubuntu20 exited with code 0
[docker_test@centos7:/data1/docker_test/compose/os]$ docker ps -an 1
CONTAINER ID   IMAGE       COMMAND   CREATED              STATUS                          PORTS     NAMES
e7a79b9a66fb   os_ubuntu   "bash"    About a minute ago   Exited (0) About a minute ago             ubuntu20

 

Docker Container 접속

  • docker-compose.dev.yml
version: '3.8'

services:

     ubuntu: ## Service Name

         container_name: ubuntu20  ## Container Name

         build:
           context: . ## build Docker file locate
           dockerfile: Dockerfile ## build file name

         command:  tail -f > /dev/null​

재기동 및 접속 

  • docker-compose down : 도커 컨테이너를 중지 시키고 삭제 합니다.
  • docker-compose stop : 도커 컨테이너를 중지 시킵니다. 
  • docker-compose start : 도커 컨테이너를 실행합니다. 
  • docker-compose ps : 컨테이너 상태를 확인합니다.
  • docker-compose exec [servicename] [shell cmd] : 도커 컨테이너 접속 
    • 접속시 컨테이너 명이 아니고 .yml 파일에 작성한  서비스 명(ubuntu)입니다. 

 

 

$ docker-compose -f docker-compose.dev.yml  down           
Stopping ubuntu20 ... done
Removing ubuntu20 ... done
Removing network os_default

docker ps -a
CONTAINER ID   IMAGE                                             COMMAND                  CREATED          STATUS                  PORTS                                                                                  NAMES
$ docker ps -a
CONTAINER ID   IMAGE                                             COMMAND                  CREATED          STATUS                  PORTS                                                                                  NAMES
53513453d705   os_ubuntu                                         "tail -f > /dev/null"    44 seconds ago   Up 4 seconds    ​   os_ubuntu                                         "tail -f > /dev/null"    44 seconds ago   Up 4 seconds

docker-compose -f docker-compose.dev.yml  ps -a      
  Name           Command         State   Ports
----------------------------------------------
ubuntu20   tail -f > /dev/null   Up           

$ docker-compose -f docker-compose.dev.yml exec ubuntu /bin/bash 
root@53513453d705:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

 

728x90
반응형

'02.Docker > docker-compose' 카테고리의 다른 글

[docker-compose] docker mysql 설치  (0) 2022.04.01
docker-compose 를 이용한 Oracle 19c 설치  (0) 2022.03.22
Docker-compose 설치  (0) 2022.03.21
728x90
반응형

우분투 한글 설정 하는 방법에 대해 알아보겠습니다. 

 

우분투 제어판 설정 

Setting 버튼을 눌러 제어판 환경으로 들어가보겠습니다. 

 

Region & Language  -> Manage Installed Languages -> Install /Revove Languages..  클릭 

Ubuntu 한글팩 설치 

Installed Languages ->Korea 선택 후 Apply 클릭하면 

한글 팩이 설치 가 진행 됩니다. 

 

한글 팩 적용 

설치가 완료되면 계정 로그 아웃 이후 재 접속을 진행해 주세요 

재접속을 해야 한글로 변경되는 부분을 확인하실수 있습니다. 

 

* 일반 유저 계정에서는 한글 설정 변경이 일부 제대로 적용이 안되는것 같네요.. root 접속후 한글 설정을 마무리 해주시고 

다시한번 재접속 해주세요 한글이 적용됩니다. 

 

키보드 설정시 한글도 추가 해주시기 바랍니다. (+) 버튼 클릭후 한글 추가 

 

728x90
반응형
728x90
반응형

Ubuntu ROOT  접속 방법 

우분투는 설치 시 ssh 나 GUI에서 root 로그인 접속이 제한되어 있습니다. 

ssh로 리모트 ubuntu 서버에 접속하는 방법과 

GUI 로그인 리스트에서 root 계정 활성화 하는 방법에 대해 알아보겠습니다. 

 

ROOT 접속 계정 비빌 번호 설정 

sudo passwd root 명령으로 root 비밀번호를 생성합니다. 

 

ubuntu@ubuntu:~$ pwd
/home/ubuntu
ubuntu@ubuntu:~$ whoami
ubuntu
ubuntu@ubuntu:~$ sudo passwd root
[sudo] password for ubuntu: 
New password: 
Retype new password: 
passwd: password updated successfully
ubuntu@ubuntu:~$ su - root
Password: 
root@ubuntu:~# whoami
root
root@ubuntu:~# 

 

SSH Root 접속 허용 설정 (/etc/ssh/sshd_config)

#PermitRootLogin prohibit-password => PermitRootLogin yes 설정 

root@ubuntu:~# vi /etc/ssh/sshd_config
#       $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Include /etc/ssh/sshd_config.d/*.conf

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

SSH 서비스 재 시작 후 접속

sudo service ssh restart

 

일반계정 ssh ROOT 접속 

일반계정에서 접속이 가능 한지 확인해보겠습니다. 

ubuntu 계정에서 root 로 정상적으로 접속이 되고 있습니다. 

 

ubuntu@ubuntu:~$ ssh root@192.168.58.130
The authenticity of host '192.168.58.130 (192.168.58.130)' can't be established.
ECDSA key fingerprint is SHA256:HXSV8v929Lw15GM4sjnyr8Od6Y/84S1jrajWaC7PFtk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.58.130' (ECDSA) to the list of known hosts.
root@192.168.58.130's password: 
tiberoPermission denied, please try again.
root@192.168.58.130's password: 
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.13.0-37-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

17 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

Your Hardware Enablement Stack (HWE) is supported until April 2025.
*** System restart required ***
Last login: Sat Mar 26 07:13:22 2022 from 192.168.58.130
root@ubuntu:~# whoami
root

GUI 리스트에서 root 접속 활성화 하기 

 

아래 3개의 파일을 수정 하면 gui 리스트에 root 계정 접속도 가능합니다.

주석 처리 (#) 를 해주세요.

 

1./etc/gdm3/custom.conf 수정

 

 

2./etc/pam.d/gdm-password 

 

3./etc/pam.d/gdm-autologin 

 

vi /etc/gdm3/custom.conf 

# Enabling automatic login
AutomaticLoginEnable = true
AutomaticLogin = root

[security]
AllowRoot=true

vi /etc/pam.d/gdm-password 
#auth   required        pam_succeed_if.so user != root quiet_success

vi /etc/pam.d/gdm-autologin 
#auth   required        pam_succeed_if.so user != root quiet_success

서버 재기동 후 접속 

root@ubuntu:~# shutdown -r now 

Notlited 클릭수 username root /비번 입력 후 접속을 진행합니다. 

이제 root 도 접속이 가능합니다. 

728x90
반응형

'06.OS > Linux' 카테고리의 다른 글

[SendMail] Centos7 SendMail 설치  (0) 2022.04.07
[Centos] Telnet 설치  (0) 2022.04.05
[Ubuntu] Static IP 설정  (0) 2022.03.26
[CentOS]Host Name 변경  (0) 2022.03.26
[Ubuntu] Vmware Ubuntu20.04 LTS 설치  (0) 2022.03.26
728x90
반응형

간단하게 파일 비교 하는 java 소스 공유합니다. 

두개의  텍스트 파일을 비교하는 간단한 코드입니다. 

단점은 원본 파일 대상으로 라인 by 라인으로 비교를 하기 때문에 중간에 비교대상 라인이 다르면 모두 다르게 출력되게 됩니다. ㅠㅠ 

 

소스  파일

package ims;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.TreeMap;

public class FileCompare {

	// 두개 파일 비교
	public static void main(String[] args) throws IOException {
		// String original file = args[0];
		// String compare file = args[1];

		String oldfilename = "D:\\test1.sql";
		String newfilename = "D:\\test2.sql";

		FileCompare comp = new FileCompare();
		String result = comp.compareFile(oldfilename, newfilename);
		if (result.length()>0) {
			String diffFilename =new File(newfilename).getName();
			FileWriter diff = new FileWriter(diffFilename+".error",false);
			System.out.println("file is different");
			System.out.println(String.format("[%s][%s]|[%s] ", "line", "original file", "compare file"));
			System.out.println(result);
			diff.write(result);
			diff.flush();
			diff.close();

		} else {
			System.out.println("file is equal");
			
		}


	}

	public String compareFile(String oldfilename, String newfilename) throws IOException {
		TreeMap<Integer, String> compare = new TreeMap<Integer, String>();
		File oldfile = new File(oldfilename);
		File newfile = new File(newfilename);
		BufferedReader bf = null;
		StringBuffer errorLine = new StringBuffer();
		try {
			bf = new BufferedReader(new FileReader(oldfile));
			int key = 0;
			// old file read
			while (true) {
				String str = bf.readLine();
				if (str == null)
					break;
				compare.put(++key, str);
			}

			bf = new BufferedReader(new FileReader(newfile));
			key = 0;

			// old file vs new file compare

			while (true) {
				String str = bf.readLine();
				if (str == null)
					break;
				if (!str.equals(compare.get(++key))) {
					errorLine.append(String.format("[%d]:[%s]|[%s]\n", key, str, compare.get(key)));
				}

			}

		} catch (IOException E) {
		}
		bf.close();
		return errorLine.toString();
	}

}

 

원본(test1.txt) 비교 대상파일(test2.txt)
DROP TABLE DEPT;
CREATE TABLE DEPT
       (DEPTNO NUMBER(2) ,
DNAME2 VARCHAR2(14) ,
LOC VARCHAR2(13) ) ;
DROP TABLE DEPT;
CREATE TABLE DEPT
       (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14) ,
LOC VARCHAR2(13) ) ;

 

실행결과

file is different
[line][original file]|[compare file] 
[3]:[       (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,]|[       (DEPTNO NUMBER(2) ,]
[4]:[ DNAME VARCHAR2(14) ,]|[ DNAME2 VARCHAR2(14) ,]
728x90
반응형

'03.Program > 02.java' 카테고리의 다른 글

[Java] JDBC 프로그래밍  (0) 2022.04.20
[Java basic-Utility] 디렉토리 파일 리스트 조회  (0) 2022.03.26
Linux OpenJdk 설치  (0) 2022.03.21

+ Recent posts