728x90
반응형

Django 와 Tibero 연동 방법에 대한 자료입니다. 

Django With Tibero

테스트 환경 사전 준비 사항

테스트를 하기위해서는 파이썬과 파이썬 개발 툴을 설치 해야 합니다. 

그리고 Django Framework 과 Tibero 를 연결하기 위해서는 Tibero odbc 설치가 되어야 하며 

django 와 Tibero 연결을 위한 tibero 용 connector 가 준비 되어야 합니다. 

  • 파이썬 
  • 파이참
  • Tibero odbc 연결
  • Tibero 연동 django Connector

연결 되는 방식은 아래의 그림과 같습니다. 

Tibero 연결 흐름도

파이썬 개발툴 (PyCharm) 다운로드 

테스트를 진행 하기위해 파이썬 개발 도구 툴인 PyCharm 을 다운로드 받습니다. 

아래 경로에서 파이참을 다운로드 받습니다. 

Professional 버전과 Community 버전이 있는데 무료 버전인 Community 버전으로 연동 테스트를 진행 하겠습니다. 

https://www.jetbrains.com/ko-kr/pycharm/download/#section=windows

 

다운로드 PyCharm: JetBrains가 만든 전문 개발자용 Python IDE

 

www.jetbrains.com

 

PyCharm 샘플 프로젝트 오픈

PyCharm 을 실행후 File -> open -> DjangoSample 프로젝트를  오픈합니다. 

파이썬 가상 환경 생성

파이썬 가상 환경은 파이썬 프로젝트를 진행할 때 독립된 환경을 제공해주는 도구 입니다. 

각각의 어플리케이션마다 구동 환경이 다를 경우 별도의 환경을 개별 적으로 만들어 줄수 있습니다. 예를 들어 첫번째 어플리케이션은 파이썬 2.7 버전  + Django3.x  환경으로 구성하고 두번째 어플리케이션은 파이썬 3.7 버전 + Django4.x 버전으로 환경으로 독립적으로 구성해서 개발을 진행 할수 있습니다.

  • app1 : venv1(파이썬 2.7 버전  + Django3.x)
  • app2 : venv2(파이썬 3.7 버전 + Django4.x )

가상환경을 만드는 방법에 대해 알아보겠습니다. 

 

파이참을 실행하면 화면 하단에 Terminal 이란 창이 있습니다.

해당 창은 윈도우 CMD 창에서 작업을 진행 하는 내용과 동일 하게 수행 할수 있는 기능 입니다. 

D:\ 에 가상환경을 만들어 보겠습니다.

python -m venv samples 명령을 통해 가상 환경을 만듭니다. 

 

cd D:\ 

mkdir venvs

cd venvs

python -m venv samples

python -m venv samples 수행 후 samples 라는 디렉 토리가 생기고 samples 디렉토리 내에는 가상화 할수 있는 환경 파일들이 추가 생성 되게 됩니다. 

activate 명령을 통해 가상환경에 진입합니다. 반대로 빠져 나오고자 할때는 deactivate 명령을 수행 합니다. 

  • activate :가상환경 진입
  • deactivate : 가상환경 나오기 
D:\venvs\samples>cd Scripts
D:\venvs\samples\Scripts>activate

(samples) D:\venvs\samples\Scripts>deactivate
D:\venvs\samples\Scripts>

Django 팩키지 설치 

Tibero 와 연동하기 위해서는 pyodbc 가 설치 되어 있어야 합니다. 

그리고 Django 버전은 2.2.x 버전을 설치 해야 합니다. django 3.x 버전을 지원하는 Tibero adapter 가 현재는 없는것으로 보입니다. 

파이썬 에서 팩키지 설치는 pip 명령으로 설치가 가능합니다. 

python -m pip install --upgrade pip
pip install Django==2.2.24
pip install pyodbc==4.0.31
  • pip list 를 통해 설치된 팩키지 리스트를 확인해볼수 있습니다. 
(samples) D:\venvs\samples\Scripts>pip list
Package    Version
---------- -------
Django     2.2.24
pip        22.0.4
pyodbc     4.0.31
pytz       2022.1
setuptools 41.2.0
sqlparse   0.4.2

 


[윈도우]DJango Tibero 연동 테스트 

테스트를 하기 위한 개발 환경 준비가 끝났습니다.

이제 Django 와 Tibero 연동 테스트를 진행 하겠습니다. 

 

Tibero ODBC 설치 및 접속 설정 

Tibero ODBC 설치 관련한 내용은 Tibero 매뉴얼을 참고 하세요 

https://technet.tmaxsoft.com/upload/download/online/tibero/pver-20180723-000001/index2.html

 

Tibero 6 Online Manual

 

technet.tmaxsoft.com

Tibero ODBC 설치  Django Tibero 연결 정보 수정 (settings.py)

 

Django Sample 프로젝트 실행 

가상환경 진입 상태에서 다운로드 받은 샘플 프로 젝트를 수행 합니다. 

수행 명령은 python manage.py runserver 입니다. 

python manage.py runserver

 

해당 명령을 수행하면 에러가 발생합니다. 

Tibero 와 연동을 하기위한 Django db adapter 가 없어서 에러가 발생합니다. 

D:\venvs\samples\lib\site-packages\django\db\__init__.py

 

 

(samples) D:\TestLink-django\DjangoSample>python manage.py runserver
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "D:\venvs\samples\lib\site-packages\django\db\utils.py", line 110, in load_backend
    return import_module('%s.base' % backend_name)
  File "C:\Users\jungki\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'django.db.backends.tibero'

....................
..............
...........
중략
...........
...........
    class AbstractBaseUser(models.Model):
  File "D:\venvs\samples\lib\site-packages\django\db\models\base.py", line 117, in __new__
    new_class.add_to_class('_meta', Options(meta, app_label))
  File "D:\venvs\samples\lib\site-packages\django\db\models\base.py", line 321, in add_to_class
    value.contribute_to_class(cls, name)
  File "D:\venvs\samples\lib\site-packages\django\db\models\options.py", line 204, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "D:\venvs\samples\lib\site-packages\django\db\__init__.py", line 28, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "D:\venvs\samples\lib\site-packages\django\db\utils.py", line 201, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "D:\venvs\samples\lib\site-packages\django\db\utils.py", line 125, in load_backend
    ) from e_user
django.core.exceptions.ImproperlyConfigured: 'django.db.backends.tibero' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
    'mysql', 'oracle', 'postgresql', 'sqlite3'

 

Django 연동 Tibero adapter 다운로드 및 디렉 토리 복사 

아래 경로에서 Django 와 연동할수 있는 아답터를 다운로드 받습니다. 

다운로드 받은 파일을 에러가 발생한 디렉토리로 복사합니다. 

Django Tibero adapter

  • 파일 이름 변경: DjangoAdapter-main -> tibero

D:\venvs\samples\Lib\site-packages\django\db\backends 경로에 이름 변경한 tibero 폴더 복사

 

* D:\venvs\samples\lib\site-packages\django\db\backends\tibero

 

https://github.com/TiberoClient/DjangoAdapter

 

GitHub - TiberoClient/DjangoAdapter

Contribute to TiberoClient/DjangoAdapter development by creating an account on GitHub.

github.com

 

 

Django migrate

python manage.py runserver 을 다시 수행 합니다. 

 

Starting development server at http://127.0.0.1:8000/ 라는 메시지가 나오면 정상 적으로 어플리케이션이 구동한 상태입니다. 

웹에서 http://127.0.0.1:8000/admin 접속 합니다. 

에러가 발생 할 것입니다. 

 

Django FrameWork 에서 사용 되는 Table 들이 없어서 발생하는 문제입니다. 

 

 

 

어플리케이션 수행시 (python manage.py runserver )  내용을 좀더 자세히 보겠습니다. 

친절하게 python manage.py migrate 수행하라고 설명해 주고 있습니다. 

 

(samples) D:\TestLink-django\dqaDjangoSample>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, polls, sessions.
Run 'python manage.py migrate' to apply them.
April 06, 2022 - 20:38:15
  • python manage.py migrate 수행 
    • 해당 명령을 수행하면 django framework 에서 필요로 하는 여러 테이블들을 Tibero 서버에 자동으로 생성을 해주게 됩니다. 
(samples) D:\TestLink-django\dqaDjangoSample>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying polls.0001_initial... OK
  Applying sessions.0001_initial... OK

 

  • Tibero 계정 생성된 테이블 확인 
SQL> ls 

NAME                               SUBNAME                  TYPE                
---------------------------------- ------------------------ --------------------
AUTH_GROUP_GROUP_ID_B120CBF9                                INDEX
AUTH_GROUP_PERMISSION_84C5C92E                              INDEX
AUTH_GROU_GROUP_ID__0CD325B0_U                              INDEX
AUTH_PERMI_CONTENT_TY_2F476E4B                              INDEX
AUTH_PERM_CONTENT_T_01AB375A_U                              INDEX
AUTH_USER_USER_ID_G_94350C0C_U                              INDEX
AUTH_USER_USER_ID_P_14A6B632_U                              INDEX
AUTH_USER__GROUP_ID_97559544                                INDEX
AUTH_USER__PERMISSION_1FBB5F2C                              INDEX
AUTH_USER__USER_ID_6A12ED8B                                 INDEX
AUTH_USER__USER_ID_A95EAD1B                                 INDEX
DJANGO_ADM_CONTENT_TY_C4BCE8EB                              INDEX
DJANGO_ADM_USER_ID_C564EBA6                                 INDEX
DJANGO_CO_APP_LABEL_76BD3D3B_U                              INDEX
DJANGO_SES_EXPIRE_DAT_A5C62663                              INDEX
POLLS_CHOI_QUESTION_I_C5B4B260                              INDEX
_TIBERO_CON58500778                                         INDEX
_TIBERO_CON58800226                                         INDEX
_TIBERO_CON59100508                                         INDEX
_TIBERO_CON59400665                                         INDEX
_TIBERO_CON59500888                                         INDEX
_TIBERO_CON59700316                                         INDEX
_TIBERO_CON60100546                                         INDEX
_TIBERO_CON60500165                                         INDEX
_TIBERO_CON61200100                                         INDEX
_TIBERO_CON61600781                                         INDEX
_TIBERO_CON63100670                                         INDEX
_TIBERO_CON63900727                                         INDEX
_TIBERO_CON64200758                                         INDEX
_TIBERO_CON64700708                                         INDEX
_TIBERO_LIDX344900                                          INDEX
_TIBERO_LIDX345100                                          INDEX
_TIBERO_LIDX346800                                          INDEX
AUTH_GROUP_PERMISSIONS_SQ                                   SEQUENCE
AUTH_GROUP_SQ                                               SEQUENCE
AUTH_PERMISSION_SQ                                          SEQUENCE
AUTH_USER_GROUPS_SQ                                         SEQUENCE
AUTH_USER_SQ                                                SEQUENCE
AUTH_USER_USER_PERMISSIONS_SQ                               SEQUENCE
DJANGO_ADMIN_LOG_SQ                                         SEQUENCE
DJANGO_CONTENT_TYPE_SQ                                      SEQUENCE
DJANGO_MIGRATIONS_SQ                                        SEQUENCE
POLLS_CHOICE_SQ                                             SEQUENCE
POLLS_QUESTION_SQ                                           SEQUENCE
AUTH_GROUP                                                  TABLE
AUTH_GROUP_PERMISSIONS                                      TABLE
AUTH_PERMISSION                                             TABLE
AUTH_USER                                                   TABLE
AUTH_USER_GROUPS                                            TABLE
AUTH_USER_USER_PERMISSIONS                                  TABLE
DJANGO_ADMIN_LOG                                            TABLE
DJANGO_CONTENT_TYPE                                         TABLE
DJANGO_MIGRATIONS                                           TABLE
DJANGO_SESSION                                              TABLE
POLLS_CHOICE                                                TABLE
POLLS_QUESTION                                              TABLE
AUTH_GROUP_PERMISSIONS_TR                                   TRIGGER
AUTH_GROUP_TR                                               TRIGGER
AUTH_PERMISSION_TR                                          TRIGGER
AUTH_USER_GROUPS_TR                                         TRIGGER
AUTH_USER_TR                                                TRIGGER
AUTH_USER_USER_PERMISSIONS_TR                               TRIGGER
DJANGO_ADMIN_LOG_TR                                         TRIGGER
DJANGO_CONTENT_TYPE_TR                                      TRIGGER
DJANGO_MIGRATIONS_TR                                        TRIGGER
POLLS_CHOICE_TR                                             TRIGGER
POLLS_QUESTION_TR                                           TRIGGER

Django admin(테스트 계정 생성)

  • Django admin 에 접속 하려면 user 를 만들어 줘야 합니다. 
  • admin 유저를 생성 하겠습니다.
  • python manage.py createsuperuser 명령을 통해 admin 유저의 계정과 비번을 생성 하겠습니다. 
  • testuser1 이라는 계정을 만들겠습니다. 
(samples) D:\TestLink-django\dqaDjangoSample>python manage.py createsuperuser
Username (leave blank to use ''): testuser1
Email address: testuser1@example.com
Password:
Password (again):
Superuser created successfully.

생성된 user 로 접속 - URL (http://127.0.0.1:8000/admin)

user 미생성 시 접속 불가  user 생성후 접속 

Django Admin 설문 작성(Polls) 테스트 

  • Questions: 설문지 제목 
  • Choices : 설문지 선택 내용 작성 

  • Questions 버튼을 눌러서 설문할 주제를 작성합니다. 

 

  • Choices 버튼을 눌러서 선택지를 작성합니다 
  • 테스를 위해 3개은 선택지를 만들었습니다. 

설문 작성이 완료 되었고 이제 설문 페이지에 접속 해서 등록된 내용이 잘 나오는지 확인해 보겠습니다.

http://127.0.0.1:8000/polls/ 페이지로 접속을 합니다. 

등록한 설문지가 정상적으로 나오고 있습니다. 

 

 

마지막으로 설문 투표 테스트를 진행해 보시기 바랍니다. 

 

[리눅스]DJango Tibero 연동 테스트 

Centos7 기준으로 설명 합니다. 

UnixODBC설치 

unixODBC 와 연동 테스트 진행 예정으로 unixODBC를 설치 합니다. 

unixODBC 다운로드 

아래 경로에서 다운로드 받습니다. 

http://www.unixodbc.org/download.html

 

unixODBC

Distribution Format unixODBC is currently availible in a gzip, tar format. This means that you should; 1. copy the unixODBC-2.3.9.tar.gz file somewhere you can create files and directories 2. gunzip unixODBC*.tar.gz 3. tar xvf unixODBC*.tar Doing so will c

www.unixodbc.org

 

unixODBC install

  • 환경변수를 설정 합니다. 
#ODBC 환경변수 설정 
export UNIXODBC_HOME=/home/django/unixODBC-2.3.9
export LD_LIBRARY_PATH=$UNIXODBC_HOME/lib:$LD_LIBRARY_PATH
export PATH=$UNIXODBC_HOME/bin:$PATH
  • 설치를 진행 합니다. 
./configure --prefix=$UNIXODBC_HOME --sysconfdir=$UNIXODBC_HOME/etc --with-iodbc-inidir=$UNIXODBC_HOME/etc --disable-gui
&& make
&& make install
  • odbc 연동 환경설정을 합니다. 
#위치 : HOME/.odbc.ini
vi .odbc.ini

[ODBC Data Sources]

Tibero7 = Tibero7 ODBC driver

[ODBC]

Trace = 1

TraceFile = /home/django/unixODBC/unixODBC-2.3.9/trace/odbc.trace

[Tibero7]

Driver = /home/django/tibero7/client/lib/libtbodbc.so

Description = Tibero ODBC driver for Tibero

server = xxx.xxx.xxx.xxx


#server는(ip,hostname 둘다가능)

port = 17000

#port 는 tibero port

database = tibero

#database 는  DB_NAME 입력 

User =tibero

Password = tmax

 

unixODBC 테스트 

[django@centos7:/home/django/unixODBC-2.3.9]$ isql -v Tibero7
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select * from dual;
+------+
| DUMMY|
+------+
| X    |
+------+
SQLRowCount returns 1
1 rows fetched
SQL>

 

리눅스 파이썬 Dajngo 환경 설정 

윈도우에서 테스트 했던 방식과 동일 합니다. 

가상 화경을 셋팅 합니다. 

mkdir venvs

#경로이동
python -m venv djangoenv

#파이썬 가상 환경진입
. djangoenv/bin/activate

#압축 해제 
unzip DjangoAdapter-main.zip
unzip dqaDjangoSample.zip

# tibero django adapter  복사 
cp -Rf DjangoAdapter-main /home/django/venvs/djangoenv/lib/python3.7/site-packages/django/db/backends/tibero

 

  • 디렉 토리 구조 입니다. 
(djangoenv) [django@centos7:/home/django]$ tree venvs/ -L 2
venvs/
|-- djangoenv
|   |-- bin
|   |-- include
|   |-- lib
|   |-- lib64 -> lib
|   |-- pip-selfcheck.json
|   |-- pyodbc.pyi
|   `-- pyvenv.cfg
|-- dqaDjangoSample
|   |-- __init__.py
|   |-- __pycache__
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
|-- dqaDjangoSample.zip
|-- manage.py
`-- polls
    |-- __init__.py
    |-- __pycache__
    |-- admin.py
    |-- apps.py
    |-- migrations
    |-- models.py
    |-- templates
    |-- tests.py
    |-- urls.py
    |-- views.py
    `-- views2.py

파이썬 Dajngo Tibero 연동 필요 팩키지 설치 

  • 설치 리스트를 파일로 관리 해서 설치 하도록 하겠습니다.
  • 윈도우에서 설치했던 패키지와 동일 합니다. 
 python -m pip install --upgrade pip
 pip install Django==2.2.24
 pip install pyodbc==4.0.31

 

Django 샘플 소스 ,Django Tibero Adapter  다운로드 및 압축 해제

 

(djangoenv) [django@centos7:/home/django/venvs]$ unzip dqaDjangoSample.zip 

 

Django 실행 및 테스트 

  • python manage.py runserver 0.0.0.0:8000

(djangoenv) [django@centos7:/home/django/venvs]$ python manage.py runserver 0.0.0.0:8000               
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
April 08, 2022 - 07:53:32
Django version 2.2.24, using settings 'dqaDjangoSample.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[08/Apr/2022 07:53:34] "GET /admin/ HTTP/1.1" 200 7031
[08/Apr/2022 07:53:35] "GET /static/admin/css/responsive.css HTTP/1.1" 200 17944
[08/Apr/2022 07:53:35] "GET /static/admin/css/base.css HTTP/1.1" 200 16378
[08/Apr/2022 07:53:35] "GET /static/admin/css/dashboard.css HTTP/1.1" 200 412
[08/Apr/2022 07:53:35] "GET /static/admin/css/fonts.css HTTP/1.1" 200 423
[08/Apr/2022 07:53:35] "GET /static/admin/img/icon-deletelink.svg HTTP/1.1" 200 392
[08/Apr/2022 07:53:35] "GET /static/admin/img/icon-addlink.svg HTTP/1.1" 200 331
[08/Apr/2022 07:53:35] "GET /static/admin/img/icon-changelink.svg HTTP/1.1" 200 380
[08/Apr/2022 07:53:35] "GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 200 85692
[08/Apr/2022 07:53:35] "GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 200 86184
[08/Apr/2022 07:53:35] "GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 200 85876

  • 윈도우에서 테스트 했던 방법과 동일 하게 테스트를 진행해 볼수 있습니다. 

 

728x90
반응형
728x90
반응형

Nginx 웹서버 설치 방법

Django 웹서버에 배포 하기 위해 Nginx 설치방법에 대해 알아 보겠습니다. 

1.Nginx 저장소 추가

/etc/yum.repos.d/ 경로에 nginx 레파지 토리 추가 합니다. 

 

$ cd /etc/yum.repos.d/
$ vi   nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

 

2. 설치

 yum install -y nginx

 

3.Nginx 설정 파일 수정 

Nginx 설정 관련한 파일을 수정합니다. 

  • /etc/nginx/conf.d/default.conf 
  • nginx 에서 사용할 포트를 수정합니다. 사용하고자 하는 포트를 정해서 변경해주세요 
  • 저는 80 -> 8088 포트를 사용하겠습니다.
server {
    listen       8088;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

4. 방화벽 설정

Nginx 포트 방화벽 해제를 합니다. 

테스트를 위해 방화벽을 중지 시켰습니다.

보안이 걱정 된다면 방화벽 활성화 이후 Nginx 리스너 포트를 개방해 주세요 

$ firewall-cmd --state       
running
# 방확벽 중지 
systemctl stop firewalld

# 방확벽 시작 
systemctl start  firewalld

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

# 포트 개방
firewall-cmd --permanent --zone=public --add-port=8088/tcp

# 방화벽 재시작
firewall-cmd --reload

# 개방된 포트 목록 확인
firewall-cmd --list-ports

5. Nginx 서비스 시작

#nginx 서비스 활성화
systemctl enable nginx

#Nginx 서비스 시작 
systemctl start nginx

#Nginx 서비스 상태 확인
systemctl status nginx
  • nginx 서비스 상태 확인

$ systemctl status nginx
* nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since 금 2022-04-08 11:21:58 KST; 1min 9s ago
     Docs: http://nginx.org/en/docs/
  Process: 23340 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 23341 (nginx)
    Tasks: 5
   Memory: 3.2M
   CGroup: /system.slice/nginx.service
           |-23341 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           |-23342 nginx: worker process
           |-23343 nginx: worker process
           |-23344 nginx: worker process
           `-23345 nginx: worker process

6. Nginx  웹페이지 접속 

http://localhost:8088/ 로 접속 해서 정상 적으로 설치 되었는지 확인 합니다.

Nginx&nbsp; 접속

728x90
반응형
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:test_user@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
반응형
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 & Podman > 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
반응형

+ Recent posts