1. DSM 역방향 프록시 설정

 - 제어판 > 로그인 포털 > 고급 > 역방향 프록시 클릭

 - 역방향 프록시 생성

 역방향 프록시 이름 : Mattermost Chat

 소스:

 프로토콜: HTTPS

 호스트 이름: chat.yourname.synology.me

 포트: 443

 

 체크 HSTS 활성화

 

 대상:

 프로토콜: HTTP

 호스트 이름: localhost

 포트: 8401

 

 - 사용자 지정 머리글 설정

 사용자 지정 머리글 탭으로 이동해서 생성을 선택하고 WebSocket 항목 선택

 머리글 이름과 값은 두 가지가 자동으로 생성됨으로 저장

2. DSM HTTP 설정

 - 제어판 > 네트워크 > 연결성 > HTTP/2 활성화 체크 및 적용

 - 제어판 > 보안 > 고급 > HTTP 압축 활성화 체크 후 적용

 

3. mattermost 폴더 생성

 - docker 폴더 내 mattermost 폴더를 생성하고 다음 7개 이름의 폴더를 생성

 client, config, data, db, indexes, logs, plugins

4. Portainer에서 mattermost 설치하기

 - Portainer 접속 후 대시보드에서 Stacks 선택 및 +Add stack 클릭

 - Name은 mattermost, Build method는 Web editor 선택 후 아래 코드를 Web editor에 입력하기

 > 아래 내용 중 user의 내용은 UID와 GID를 의미하며 확인 방법은 아래 설명

더보기

UID와 GID는 putty 접속 후 id라는 명령어를 입력하면 확인가능

루트권한으로 실행하면 root 계정에 대한 UID가 나타남으로 일반 권한에서 실행

 > TZ는 타임존으로 한국의 경우 Asia/Seoul 입력

 > MM_SERVICESETTINGS_SITEURL은 역프록시 설정 시 입력된 synology.me DDNS 정보 입력(ex. chat.yourname.synolgy.me)

version: "3.9"
services:
  mattermost-db:
    image: postgres
    container_name: Mattermost-DB
    hostname: mattermost-db
    security_opt:
      - no-new-privileges:true
    pids_limit: 100
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "mattermost", "-U", "mattermostuser"]
      interval: 10s
      timeout: 5s
      retries: 5
    user: 1026:100
    volumes:
      - /volume1/docker/mattermost/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=mattermost
      - POSTGRES_USER=mattermostuser
      - POSTGRES_PASSWORD=mattermostpw
      - TZ=Asia/Seoul
    restart: always

  mattermost:
    image: mattermost/mattermost-team-edition:latest
    container_name: Mattermost
    hostname: mattermost
    security_opt:
      - no-new-privileges:true
    pids_limit: 200
    user: 1026:100
    volumes:
      - /volume1/docker/mattermost/config:/mattermost/config:rw
      - /volume1/docker/mattermost/data:/mattermost/data:rw
      - /volume1/docker/mattermost/logs:/mattermost/logs:rw
      - /volume1/docker/mattermost/plugins:/mattermost/plugins:rw
      - /volume1/docker/mattermost/client:/mattermost/client/plugins:rw
      - /volume1/docker/mattermost/indexes:/mattermost/bleve-indexes:rw
    environment:
      - TZ=Asia/Seoul
      - MM_SQLSETTINGS_DRIVERNAME=postgres
      - MM_SQLSETTINGS_DATASOURCE=postgres://mattermostuser:mattermostpw@mattermost-db:5432/mattermost?sslmode=disable&connect_timeout=10
      - MM_BLEVESETTINGS_INDEXDIR=/mattermost/bleve-indexes
      - MM_SERVICESETTINGS_SITEURL=https://chat.yourname.synology.me
    ports:
      - 8401:8065
    restart: always
    depends_on:
      mattermost-db:
        condition: service_started

 - Deploy the Stack을 클릭하여 mattermost 설치하기

 - 생성 완료 시 오른쪽 상단에 Success 메시지 확인

 

5. mattermost 접속하기

 - 위에서 설정한 chat.yourname.synology.me로 접속하면 데스크탑 앱 또는 브라우저에서 사용을 선택하는 화면이 나타남

 - Email, username, Password 입력 후 Create Account 클릭 시 계정생성 완료 및 팀생성 화면으로 전환됨

 - 팀생성 및 팀 URL 정보 입력 후 Mattermost 사용

 - synology NAS에서 mattermost 설치를 위한 방법 설명을 마침

 

참고자료

 - mariushosting.com "How to Install Mattermost on Your Synology NAS" 링크

'Synology Nas > Docker' 카테고리의 다른 글

[Docker] Portainer 사용하기  (0) 2023.07.10
[Docker] Portainer 설치하기  (0) 2023.07.10

1. Portainer 시작하기

 - Portainer 접속하기

 - Portainer 초기화면에서 "Get Started" 클릭

 - 오른쪽 연필 클릭

 - Public IP에 자신의 NAS IP 주소 입력 후 Update Environment 클릭

 - 오른쪽 상단에 "Environment updated" 메시지 확인

 - 위와 같은 순서로 진행했다면 다음과 같이 대시보드를 확인할 수 있음

 

참고자료

 - mariushosting.com "Docker를 사용한 30초 Portainer 설치" 링크

'Synology Nas > Docker' 카테고리의 다른 글

[Docker]Mattermost 설치하기  (0) 2023.07.10
[Docker] Portainer 설치하기  (0) 2023.07.10

1. putty 접속을 위한 SSH 서비스 활성화하기

 - 제어판 > 파일서비스 > FTP > FTP 서비스 활성화

 - 제어판 > 파일서비스 > FTP > FTP SSL/TLS 암호화 서비스(FTPS) 활성화

 - 제어판 > 파일서비스 > FTP > SFTP 서비스 활성화

 - 제어판 > 터미널 및 SNMP > 터미널 > SSH 서비스 활성화 체크

 

2. DSM 패키지에서 Docker 설치하기

 - DSM 패키지 센터에서 Container Manager 설치(DSM 7.2 미만은 Docker 설치)

3. docker 폴더 내 portainer-ce 폴더 생성

4. putty로 NAS 접속해서 Portainer 설치하기

sudo docker run -p 8800:8800 -p 9000:9000 --detach --name=portainer-ce --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/portainer-ce:/data portainer/portainer-ce

 

5. Container Manager에서 portainer-ce 설치 확인

 

6. Portainer 접속 포트 설정 및 접속하기

 - 위에서 설정한 포트 8800, 9000을 제어판 > 외부 액세스 > 라우터 구성 > 생성에서 추가하기

 - 생성된 포트의 연결 테스트 후 OK 확인하기

 - 위에서 설정된 포트 번호를 사용해서 http://synology-ip-address:9000 으로 접속하기

 

7. Portainer 시작하기

 - 초기 접속 시 계정정보 입력 화면이 뜨며 Username, Password 입력 및 Create user 선택

 

 

참고자료

 - how to install portainer on a synology nas https://youtu.be/bLHWxtrU8Tg

How to Install Portainer on a Synology NAS

 - mariushosting.com "Docker를 사용한 30초 Portainer 설치" 링크

'Synology Nas > Docker' 카테고리의 다른 글

[Docker]Mattermost 설치하기  (0) 2023.07.10
[Docker] Portainer 사용하기  (0) 2023.07.10

크롬브라우저를 사용해서 Selenium으로 크롤링을 진행할 경우 ChromeDriver가 크롬브라우저와 버전이 맞지 않아 동작을 하지 않는 경우가 있다.

대부분 사용자들은 크롬브라우저의 업데이트 기능을 중지시키지 않기 때문에 나도 모르게 업데이트가 진행되어 있을 수 있다.

이 경우 Selenium으로 크롤링을 진행할 때 Python에서 크롬브라우저 관련 오류가 발생한다.

 

이를 방지하기 위해서 설치된 크롬브라우저의 버전에 맞게 ChromeDriver를 자동으로 다운로드하거나 업데이트해주는 Webdriver_manager 라이브러리를 소개한다.

 

Webdriver-manager 사용방법

 

1. 모듈 설치

pip install webdriver-manager

 

2. 사용방법

Selenium 3버전과 4버전의 사용방법이 다르다.

Selenium 3

# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)

driver.get('https://www.google.com')

Selenium 4

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

driver.get('https://www.google.com')

 

3. 참고사항

ChromeDriver로 크롤링을 할 때 간혹 ChromeDriver 프로세스가 백그라운드에서 종료가 안되서 오류가 발생하는 경우가 있기 때문에 os 모듈을 통해 강제 종료를 넣어주면 도움이 된다.

import os
import time

try:
    os.system("taskkill /f /im chromedriver.exe /t")
    print(f"크롬드라이버 강제 종료 성공")
except Exception as e:
    print(f"크롬드라이버 강제 종료 실패")

time.sleep(1)

 

4. 전체코드

본인은 Selenium3를 사용하기에 Selenium3를 기준으로 코드를 작성하였다.

import os
import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

try:
    os.system("taskkill /f /im chromedriver.exe /t")
    print(f"크롬드라이버 강제 종료 성공")
except Exception as e:
    print(f"크롬드라이버 강제 종료 실패")

time.sleep(1)

chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)

driver.get('https://www.google.com')

MariaDB의 기본 Character Set은 latin1이다.

이를 보편적으로 사용하는 utf8로 변경하는 방법이다.

 

1. 기본 Character Set 확인하기

MariaDB[none]> show variables like 'c%';

실행 후 아래와 같이 나타난다.

+----------------------------------+----------------------------+
| Variable_name                    | Value                      |
+----------------------------------+----------------------------+
| character_set_client             | utf8                       |
| character_set_connection         | utf8                       |
| character_set_database           | latin1                     |
| character_set_filesystem         | binary                     |
| character_set_results            | utf8                       |
| character_set_server             | latin1                     |
| character_set_system             | utf8                       |
| character_sets_dir               | /usr/share/mysql/charsets/ |
| check_constraint_checks          | ON                         |
| collation_connection             | utf8_general_ci            |
| collation_database               | latin1_swedish_ci          |
| collation_server                 | latin1_swedish_ci          |
| column_compression_threshold     | 100                        |
| column_compression_zlib_level    | 6                          |
| column_compression_zlib_strategy | DEFAULT_STRATEGY           |
| column_compression_zlib_wrap     | OFF                        |
| completion_type                  | NO_CHAIN                   |
| concurrent_insert                | AUTO                       |
| connect_timeout                  | 10                         |
| core_file                        | OFF                        |
+----------------------------------+----------------------------+
20 rows in set (0.000 sec)

 

2. UTF8로 설정하기

아래 3개의 파일에 Character Set 설정을 추가한다.

(client.cnf는 없을 수 있으며, 이 경우 직접 생성하면 된다.)

 

파일 경로는 아래 경로로 진입하면 있다.

/etc/my.cnf.d/

 - /etc/my.cnf.d/client.cnf

[client]
default-character-set=utf8

 - /etc/my.cnf.d/mysql-clients.cnf

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

 - /etc/my.cnf.d/server.cnf

[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

 

3. MariaDB 재시작하기

systemctl restart mariadb

 

참고로 Character Set 변경 전에 Database가 생성되었다면, 재생성하거나 ALTER 명령어로 변경해주어야 한다.

ALTER DATABASE `데이터베이스명`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;

 

MariaDB 저장소 변경 등을 수행할 때 오류가 발생하여 MariaDB를 완전히 삭제해야 할 경우 아래와 같은 방법으로 삭제가 가능하다.

 

1. MariaDB 설치 제거

yum remove -y mariadb mariadb-server

삭제 완료 후 "Complete!"가 나타난다.

 

2. MariaDB에 사용되었던 각종 찌꺼기 파일 제거

rm -rf /data/mysql
rm /etc/my.cnf

위의 mysql 폴더 제거 명령은 MariaDB Data 저장소를 변경하지 않았으면 MariaDB의 기본 저장소인 "/var/lib/mysql"가 된다.

 

3. MariaDB가 사용했던 로그 제거

로그 제거는 root 계정으로 진행해야 한다.

sudo su
rm /var/log/mariadb/mariadb.log.rpmsave
rm -rf /usr/lib64/mysql/
rm -rf /usr/share/mysql/

 

4. MariaDB 관련 라이브러리 제거

sudo yum -y remove mariadb-libs

 

5. MariaDB 제거 확인하기

아래 명령어 실행 시 아무것도 뜨지 않으면 완전히 제거된 것이다.

rpm -qa | grep -i mariadb

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

[MariaDB] Character Set UTF8 변경  (0) 2023.06.13
[MariaDB] MariaDB의 Data 저장 위치 변경하기  (0) 2023.06.13
[MariaDB] MariaDB 설치하기  (0) 2023.06.13

CentOS 7에 설치되는 MariaDB는 기본 폴더인 /var/lib/mysql에 저장된다.

대부분의 Server는 OS 설치용 저장소와 별개로 데이터저장을 위한 저장소를 추가하는데

이를 위해 MariaDB의 Data 저장 위치를 변경할 필요가 있다.

 

다양한 정보를 참고하여 변경해보았으나 아래 작성되는 내용이 오류가 없이 잘 동작했다.

 

1. MariabDB의 Data 저장 위치 확인

mysql -u root -p

로 MariaDB 접속 후

MariaDB [(none)]>   select @@datadir;

명령어를 통해 아래와 같이 기존 Data 저장 위치를 확인할 수 있다.

+-------------------+
| @@datadir |
+-------------------+
| /var/lib/mysql/ |
+-------------------+
1 row in set (0.01 sec)

 

2. MariaDB 서비스 정지

sudo systemctl stop mariadb

 

3. 신규 Data 디렉토리 생성 및 MariaDB 데이터 복사

(Data 디렉토리를 /data/mysql로 변경)

sudo mkdir /data/
sudo rsync -av /var/lib/mysql /data/
sudo chown -R mysql:mysql /data/mysql

 

4. my.cnf 파일을 수정하여 MariaDB의 Data 디렉토리 경로 변경

sudo vi /etc/my.cnf

my.cnf 파일에 아래 내용을 추가하고 저장한다.

[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock

[client]
socket=/data/mysql/mysql.sock

#symbolic-links=0
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

 

5. SELinux 보안 Context 추가 및 서비스 시작

sudo semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
sudo restorecon -R /data/mysql
sudo systemctl start mysql

 

6. 변경된 Data 디렉토리 확인하기

mysql -u root -p

로 MariaDB 접속 후

MariaDB [(none)]>   select @@datadir;

명령어를 통해 아래와 같이 기존 Data 저장 위치를 확인할 수 있다.

+-------------------+
| @@datadir |
+-------------------+
| /data/mysql/ |
+-------------------+
1 row in set (0.00 sec)

 

7. 기존 MariaDB Data 디렉토리 삭제하기

sudo rm -R /var/lib/mysql

삭제 후 저장소의 저장용량 확인은 df로 확인할 수 있다.

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

[MariaDB] Character Set UTF8 변경  (0) 2023.06.13
[MariaDB] Linux에서 MariaDB 완전 삭제하기  (0) 2023.06.13
[MariaDB] MariaDB 설치하기  (0) 2023.06.13

MariaDB 설치하기

CentOS 7 기준

 

1. yum update 및 upgrade하기

sudo yum update
sudo yum upgrade

2. MariaDB 설치 (최신버전으로 설치된다)

sudo yum -y install mariadb-server

설치 완료 시 가장 하단에 "Complete!"가 나타남

 

3. 설치 확인

rpm -qa | grep -i mariadb

MariaDB-server, common, client, compat과 같이 총 4개의 설치상태를 확인할 수 있음

 

4. MariaDB 서비스 가동

sudo systemctl start mariadb

 

5. 시작시 자동 실행 등록

sudo systemctl enable mariadb

 

6. MySQL 방화벽 개방

firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload

 


이후 내용은 MariabDB 접속 후 진행


 

7. MariaDB 신규 계정 생성

CREATE USER '계정'@'localhost' IDENTIFIED BY '비밀번호';

 

8. 신규 Database 생성

CREATE DATABASE `데이터베이스명`;

 

9. 신규 DB 접근 권한 설정

GRANT ALL PRIVILEGES ON `데이터베이스명`.* TO "계정"@"localhost";
FLUSH PRIVILEGES;

exit

 

참고사항으로 계정생성 시 'localhost'에 '%'을 넣을 경우 모든 접속 허용

 

+ Recent posts