반응형

안녕하세요 가야태자 @talkit 입니다.

지난 번 글에서 가입을 진행 했었습니다.

https://gitlab.com/users/sign_in

 

이제 그 아이디로 로그인 하십시오.

프로젝트를 만드셨으면 프로젝트가 나올 것이구요 ^^

프로젝트를 생성하지 않으셨으면 위와 같이 나올껍니다.

Create a project를 클릭 합니다.

이건 그냥 제 성격이어서 Create blank project를 좋아합니다. 오늘은 저걸로 프로젝트를 만들어 보겠습니다.

이렇게 나오면 Project Name에 영어로 입력 하심시오.

저는 My First Project 라고 쳤습니다.

실제로 첫 프로젝트는 아니지만, 계정 만든 기념으로 첫 프로젝트 입니다. ^^

저는 일단 오픈소스를 할것 아니어서 Private를 클릭 했습니다.

그리고 Readme는 그대로 두었습니다. 체크 된채루요.

그리고, Create project를 클릭하겠습니다.

위와 같이 나오면 ^^ 저장적으로 프로젝트가 만들어 진 겁니다.

오늘은 간단하게 gitlab에서 프로젝트 만드는 방법을 알아 봤습니다.

#git #gitlab

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

개요

가장 유명한 git 저장소 호스팅 서비스는 아무래도 깃허브 일 겁니다. 하지만, 저는 깃랩이라는 서비스를 좀 더 좋아합니다. 뭔가 오픈소스를 검색할때는 깃허브를 업청 사용합니다. ^^

위 홈페이지는 gitlab의 홈페이지 입니다.

gitlab은 셀프 매니지드 프로그램도 제공합니다. 그래서 조만간, 저걸 설치도 해보겠습니다.

하지만, 오늘은 호스팅 서비스에 클라우드로 무료로 가입을 해보겠습니다.

가입하기

저위에 보시면 Get free trial 하고, Sign In 있는데 Sign In을 누르십시오.

이유는 Get free trial은 유료서비스도 있어서 해당 서비스를 무료로 이용하고, 또 뭔가를 해야하는 복잡함이 조금 있습니다.

그래서 Sign In을 클릭하십시오.

저는 솔직히 이미 가입 되어 있지만, 이메일 주소만 있으면 또 가입 하실 수 있습니다. ^^

그래서 해보겠습니다. 처음 가입하신다면 실제로 아이디가 없으실 꺼기 때문에 하단의 Register now를 클릭하십시오.

위 내용의 빈칸들을 여러분은 파란색까지 다 하얀색입니다. 채우시면 됩니다. ^^

그리고, 저기 I'm not a robot을 클릭하시고 혹시나 사진 맞추기 같은게 뜨면 해결 하시고 ^^

Register 버튼을 클릭하면 가입은 끝입니다.

여러분들이 보통 Google 아이디가 있다면 그냥 Google 버튼만 누르셔도 됩니다. 마찬가지로 다른 서비스들도 마찬가지 입니다.

그러면 저는 제 아이디로 가입 해보겠습니다.

저는 네이버 아이디를 입력했는데 의와 같은 오류가 나네요 Google은 잘 되었는데 T.T

hotmail.kr을 이용하니 바로 가입이 되네요 T.T

outlook.kr 입니다. ^^

헉 T.T 저 계정은 버려야겠습니다. ^^ 헉 메일 주소를 잘 못 입력 했습니다. ^^

과감하게 버리고 다른 계정을 입력 했습니다. ^^

outlook.kr 이네요 T.T

그래서 outlook에 확인 메일이 잘 도착 했습니다.

이메일 컨펌이 확인 되면,

![[Pasted image 20230114204828.png]]


위와 같이 뜹니다.


저는 위와 같이 답변을 했습니다.

그리고 위 페이지가 뜨는데요 프로젝트를 만드셔도 되고

빠져 나갈 방법이 없어서 T.T

제가 답변을 Create new project 로 해서 그런 것 같습니다. ^^

앗 백스페이스를 한번 누르니까 ^^ 뒤로 가니까 빠져 나오네요 ^^

요렇게 나옵니다.

가입 확인

이미 위에서 가입이 확인이 되어버렸네요

@naver.com 은 가입이 안되는 것 같습니다. T.T

gmail.com 이나, outlook.kr 로 진행하시면 좋을 것 같습니다.

어차피 다음 시간에 프로젝트를 하나 만들어야 해서 ^^

이 페이지만 보여 드리고 마칩니다.

이번에 제가 처음에 이메일을 잘 못 넣어서 뭔가가 이상해 진 것 같습니다.

혹시나 과정에 오류가 있거나 하면 좀 알려 주십시오.

감사합니다.

#git #join #gitlab

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

VMWARE 관련 글을 있는데 정작 VMWARE를 설치하는 글은 없는 것 같아서 적어봅니다. 

리눅스 이야기를 거의 하고 있지만, 오늘은 윈도우즈 입니다. ^^

개요

VMWARE는 VMWARE Inc. 에서 개발한 가상화 도구 입니다. 해당 프로그램의 정식 명칭은 VMWARE Workstion Player 입니다.  서버용으로는 Fusion이라는 솔루션이 있고, 웍스테이션용으로 VMWARE Workstation Pro라는 제품이 있습니다. 지금까지 소개한 제품들은 다 유료 입니다. 하지만, VMWARE Workstation Player 개인에 한해서 무료 입니다. 기업에서 사용할때는 돈을 내고 사용하는 제품입니다. 개인적으로 사용하실때는 무료기 때문에 저는 무료로 사용하고 있습니다. 

VMWARE외에도 Oracle VirtualHost라는 프로그램도 있습니다. 

글을 계속 적게 되면 저 제품도 한번 써보겠습니다. ^^

다운로드

이 화면은 좀 적응이 안되네요 ^^ 영문 홈페이지가 더 편한 것 같습니다. 

다운로드는 저기 Workstation Player 를 다운로드할 계획입니다. 

무료 다운로드를 클릭 하십시오.

GO TO DOWNLOAD를 클릭하십시오.

Windows 64-bit 오른쪽의 DOWNLOAD NOW를 클릭하십시오.

다운로드는 잘 끝났습니다. 이제 설치를 진행 하겠습니다. 

설치

제 컴에서는 설치가 안되어서 집에 있는 다른 피씨에서 설치 과정을 보여 드리겠습니다. 

윈도우가 늘 그렇듯이 위 파일을 더블 클릭하시면 됩니다. 

그러면 인증 화면이 한번 지나갑니다. 그때 Yes 또는 확인을 클릭하십시오.

저는 조금 많이 기다리기는 했는데 위와 같이 VMWARE 화면이 나왔습니다. 

저기서 Next를 클릭합십시오.

라이센스 동의하시구요. Next를 클릭하시면 됩니다. 

저는 강화된 키보드 드라이버는 설차하지 않습니다만, 필요하시면 설치하시면 됩니다. 

그리고, PATH는 등록해 두는게 좋아서 저대로 Next 합니다. 

혹시 설치 위치를 바꾸실 분은  Change를 클릭하셔서 변경 하시면됩니다. 

저는 보통 저 두가지를 체크를 해제 합니다. 하나는 VMWARE의 업데이트를 체크할꺼냐? 두번째는 내가 사용한 경험을 VMWARE와 공유할 것인가 입니다. ^^ 저는 체크를 해제 합니다. ^^

저는 데스크톱에 바로가기를 안만드는 편이라서 Desktop 앞에 체크는 지워는 편입니다. 

그래도 두셔도 됩니다. Next

이제 설치를 시작 합니다. 

음 중간 중간에 네트워크 드라이버등을 설치하고 뭐 여러가지를 자동으로 진행 합니다. 

설치가 끝나면 저렇게 나옵니다. Player는 라이센스 등록을 안해도 무료 입니다. 

Finish를 클릭하시면 됩니다. 

설치 확인

이제 설치는 끝나구요.

시작 메뉴에서 vmware라고 치시거나, V근처에서 찾으시면 저렇게 VMware 가 있습니다. 거기서 17 Player를 클릭하십시오.

처음 켜시면 위와 같이 나옵니다. 저희는 무료로 사용할 것이기 때문에 non-commercial use를 클릭하시면 됩니다. 

그리고 Continue를 클릭하십시오.

이제 라이센스까지 확인이 끝났고 Finish를 눌러시시면 제가 설치할때 보여 드렸던 그 화면이 나옵니다. 

요렇게 나옵니다. 여기까지 잘 따라 오셨으면 설치가 잘 된 것입니다. 

오늘은 여기 까지이고 ^^ 다음 부터는 또 열심히 VMWARE와 관련된 글들을 작성해 보겠습니다.

감사합니다. 

추가 말

제가 설치해 둔 VMWARE는 16.대 입니다. 하지만, 최신 버전을 설치했구요. 메뉴나 이런 부분은 거의 비슷합니다. 제가 쓸때는 17 버전은 다른 컴에 설치해서 이문서를 적었습니다. ^^

아래 관련글들은 16.대에서 진행 한 것이지만, 버전만 변경 되었지 비슷하게 동작 합니다. 

 

관련글

이전에 쓴 관련글들을 소개 합니다. 

리눅스/Linux VMWARE Workstation에 우분투/Ubuntu 16.04 설치하기 https://talkit.tistory.com/593

 

리눅스/Linux VMWARE Workstation에 우분투/Ubuntu 16.04 설치하기

음 VMWARE 설치 문서 부터 적었어야 했는데 간단하게 적겠습니다. VMware Workstation Player 다운로드 | VMware | KR 위 사이트에 가셔서 다운로드하고 다음 다음 눌러서 설치 하시면 됩니다. 라이센스는 우

talkit.tistory.com

맥오에스/MacOS VMWARE Workstation Player 16.1.0에 MacOS Big Sur 설치하기 https://talkit.tistory.com/595

 

맥오에스/MacOS VMWARE Workstation Player 16.1.0에 MacOS Big Sur 설치하기

Mac OS를 예전 부터 사용해보고 싶었습니다. 하자만, 맥을 제가 쓸만한 컴퓨터로 갖추려면 엄청 비쌉니다. 그래서 맥을 구매 안하고 사용할 수 있는 방법은 두가지 입니다. 해킨토시라고 인텔 CPU

talkit.tistory.com

리눅스/Linux VMWARE 네트워크/Network 연결/Connection 방식/Method 변경하기/Change https://talkit.tistory.com/610

 

리눅스/Linux VMWARE 네트워크/Network 연결/Connection 방식/Method 변경하기/Change

요즘 계속 Ubuntu를 이용해서 리눅스에 대해서 설명해 드리고 있습니다. 저 Ubuntu에 X Windows 콘솔이 아니고, SSH 로 붙어 보기 위해서 작업을 계속 진행하고 있습니다. 그것을 설명 드리겠습니다. 우

talkit.tistory.com

리눅스/Linux VMWARE에 우분투/Ubuntu 18.04 설치하기/Install https://talkit.tistory.com/637

 

리눅스/Linux VMWARE에 우분투/Ubuntu 18.04 설치하기/Install

안녕하세요 가야태자 @talkit 입니다. 윈도우즈에 파이썬을 설치를 했지만, 제가 원하는대로 되지를 않아서 리눅스에 설치하고 있습니다. 그래서 16.04가 있긴 하지만, 18.04에 적응도 해볼겸 또 설

talkit.tistory.com

리눅스/Linux VMWARE에 우분투/Ubuntu 20.04 설치하기/Install https://talkit.tistory.com/677

 

리눅스/Linux VMWARE에 우분투/Ubuntu 20.04 설치하기/Install

안녕하세요 가야태자 @talkit 입니다. 최근에 Linux에 뭔가를 많이 깔아보고 실험해보고 블로그 글도 써보고 있습니다. 리눅스/Linux VMWARE에 우분투/Ubuntu 18.04 설치하기/Install https://talkit.tistory.com/637

talkit.tistory.com

리눅스/Linux PuTTY로 SSH를 통해서 VMWARE Linux에 접속해보자. How to connect to Linux on VMWARE via SSH with PuTTY https://talkit.tistory.com/688

 

리눅스/Linux PuTTY로 SSH를 통해서 VMWARE Linux에 접속해보자. How to connect to Linux on VMWARE via SSH with PuTTY

안녕하세요 가야태자 @talkit 입니다. 오늘은 VMWARE에 Ubuntu를 설치 했습니다. VMWARE 켜서 계속 콘솔로만 접속을 할것인가? 이런 의문이 들었습니다. ^^ 그래서 SSH를 통해서 어떻게 접속하게 할지 알

talkit.tistory.com

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

JDBC 드라이버 다운로드

순수 자바

MySQL :: Download Connector/J

위 URL로 이동 합니다.

Platform independent 를 선택 합니다.

그리고 지금 저는 윈도우즈에서 작업 중이라 두번째 Download를 클릭 합니다. zip파일 형식을 내려 받습니다.

젤 밑에 보이시나요 No thanks, just start my download. 를 클릭 하십시오.

그러면 잘 다운로드가 될겁니다.

다운로드 받은 JDBC 드라이버 이클립스에 설정

우선 열어서 압축을 푸십시오.

압축 해제한 폴더로 이동해서,

mysql-connector-j-8.0.31.jar

위 파일을 복사합니다.

이클립스에 lib 폴더를 만들고 붙여넣기를 하십시오.

프로젝트명을 클릭하고 오른쪽을 눌러서 프로퍼티를 선택 하십시오.

그리고, Java 빌드 패스를 선택하십시오.

Libraries 탭으로 이동합니다.

오른쪽 Add JARs 를 클릭하십시오.

지금 현재 pom 파일이 있는 Maven 프로젝트기는 하지만, 이번에는 이런 방법도 있다고 알고 넘어 가는 차원에서 이렇게 하고 있습니다.

Maven을 이용한 MySQL 드라이버 다운로드

다른글을 적고 링크 하겠습니다. 

Java MySQL 접속하기

JAVA 는 JDBC라는 프레임워크를 통해서 데이터베이스에 접속합니다.
데이터베이스 드라이버와 서버 소프트 웨어 개발 버전이 있으면 얼마든지 집에서 해볼 수 있습니다.

JDBC Connection


Class.forName("com.mysql.jdbc.Driver");

MySQL 드라이버 로드

Connection con = DriverManager.getConnection("jdbc:mysql://주소:3306/데이터베이스", "아이디", "비밀번호");

MySQL 접속정보 셋팅

쿼리 해보기

쿼리 해보기는 쿼리 관련 설명하는 파일을 따로 적고 여기에 링크 예정입니다. ^^

전체소스코드

package com.tistory.talkit;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class MySQLExam {

    public static void main(String args[]) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://주소:3306/데이터베이스", "아이디", "비밀번호");
            
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("원하는 쿼리");
            while (rs.next())
                System.out.println(rs.getInt(1) + "  " + rs.getString(2) + "  " + rs.getString(3));
            con.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

}

#java #mysql #source

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

wget은 웹(http,https), FTP를 통해서 파일을 다운로드하게 해주는 고마운 툴입니다.

![[Pasted image 20230108221214.png]]

wget 의 설명을 보려면 리눅스에서

man wget

이라고 치십시오.

그러면 다양한 옵션들이 있습니다. ^^

제가 공부해보려고 하는 내용은 웹에서 다운로드하기 와 ftp에서 다운로드 하기 입니다.

기본 사용법

리눅스 명령어의 기본 사용법은 거의 비슷합니다.

wget [옵션들] 다운로드할 주소

옵션들은 생략이 가능 합니다. ^^

주소는 무조건 있어야 합니다.

web과 ftp는 주소에서 드립니다.

http:// 또는 https:// 로 시작하면 web에서 다운로드하는 것이구요.

ftp:// 에서 다운로드하면 FTP에서 다운로드 하는 것입니다.

web에서 다운로드하기

웹에서 다운로드는 웹 주소만 잘 주시면 됩니다 .^^

일반적으로 제가 프로그램을 다운로드할때 wget을 쓰는 모습을 보셨을 겁니다.

오늘은 네이버의 로고를 한번 다운로드 받아 볼텐데 실제 로고인지는 잘 모르겠습니다. ^^

https://s.pstatic.net/static/www/img/uit/sp_main_947f65.png

오 클릭해보니 맞네요

저 파일을 내려 받아 보겠습니다.

wget https://s.pstatic.net/static/www/img/uit/sp_main_947f65.png

저 명령어를 제가 리눅스에 넣었습니다.

wget https://s.pstatic.net/static/www/img/uit/sp_main_947f65.png
--2023-01-08 05:18:35--  https://s.pstatic.net/static/www/img/uit/sp_main_947f65.png
Resolving s.pstatic.net (s.pstatic.net)... 125.209.254.152, 125.209.254.148, 125.209.254.150, ...
Connecting to s.pstatic.net (s.pstatic.net)|125.209.254.152|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 243162 (237K) [image/png]
Saving to: ‘sp_main_947f65.png’

sp_main_947f65.png                                          100%[========================================================================================================================================>] 237.46K  --.-KB/s    in 0.02s

2023-01-08 05:18:35 (10.2 MB/s) - ‘sp_main_947f65.png’ saved [243162/243162]

이렇게 잘 나오네요 ^^

그런데 웹에 있는 파일명 그대로 다운로드가 됩니다.

이번에는 .png 파일이 정의되어 있어서 잘 다운로드가 되었지만, ^^

가끔

wget -O naverlogo.png  https://s.pstatic.net/static/www/img/uit/sp_main_947f65.png

주소가 저따위로 되어 있으면 ^^ 파일명이 거의 저모습 그대로 저장 됩니다.

그래서,

web에서는 -O 옵션이 중요할 것같습니다.

talkit@ubuntu:~$ ls
Desktop    emmptydir2  emmptydir5     ftpserver11.txt  ftpserver14.txt  ftpserver32.txt  ftpserver35.txt  ftpserver5.txt                       minio.deb  Public              study      testtext.txt
Documents  emmptydir3  emptydir       ftpserver12.txt  ftpserver15.txt  ftpserver33.txt  ftpserver3.txt   ftpserver.txt                        Music      snap                temp       Videos
Downloads  emmptydir4  ftpclient.txt  ftpserver13.txt  ftpserver31.txt  ftpserver34.txt  ftpserver4.txt   mattermost-7.5.2-linux-amd64.tar.gz  Pictures   sp_main_947f65.png  Templates

저기 파일이 다운로드 되어 있습니다.

그런데, naverlogo.png로 변경하려면 어떻게 해야 할까요?

http://도메인주소/abcdefgh.do?dkjalsf=askldfjalksdj&aksdfja=ajskldfja
wget -O naverlogo.png https://s.pstatic.net/static/www/img/uit/sp_main_947f65.png
--2023-01-08 05:22:34--  https://s.pstatic.net/static/www/img/uit/sp_main_947f65.png
Resolving s.pstatic.net (s.pstatic.net)... 125.209.254.152, 125.209.254.148, 125.209.254.150, ...
Connecting to s.pstatic.net (s.pstatic.net)|125.209.254.152|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 243162 (237K) [image/png]
Saving to: ‘naverlogo.png’

naverlogo.png                                               100%[========================================================================================================================================>] 237.46K  --.-KB/s    in 0.02s

2023-01-08 05:22:34 (10.7 MB/s) - ‘naverlogo.png’ saved [243162/243162]

talkit@ubuntu:~$ ls
Desktop    emmptydir2  emmptydir5     ftpserver11.txt  ftpserver14.txt  ftpserver32.txt  ftpserver35.txt  ftpserver5.txt                       minio.deb      Pictures  sp_main_947f65.png  Templates
Documents  emmptydir3  emptydir       ftpserver12.txt  ftpserver15.txt  ftpserver33.txt  ftpserver3.txt   ftpserver.txt                        Music          Public    study               testtext.txt
Downloads  emmptydir4  ftpclient.txt  ftpserver13.txt  ftpserver31.txt  ftpserver34.txt  ftpserver4.txt   mattermost-7.5.2-linux-amd64.tar.gz  naverlogo.png  snap      temp                Videos

잘 저장이 되었습니다.

저기 naverlog.png 보이시지요 ^^

다운로드 받으실 주소를 복사하시고

wget 명령어 뒤에다가 넣어 주시면 되고

-O 옵션을 기억 하시면 될 것 같습니다.

개별 파일의 경우 -O 옵션은 FTP에서도 가능 합니다.

ftp에서 다운로드하기

FTP options:
       --ftp-user=USER             set ftp user to USER
       --ftp-password=PASS         set ftp password to PASS
       --no-remove-listing         don't remove '.listing' files
       --no-glob                   turn off FTP file name globbing
       --no-passive-ftp            disable the "passive" transfer mode
       --preserve-permissions      preserve remote file permissions
       --retr-symlinks             when recursing, get linked-to files (not dir)

FTP 관련 옵션위와 같습니다. ^^
저기서 3가지 정도를 사용해야 합니다.

--ftp-user= ftp 사용자아이디
--ftp-password= ftp 사용자패스워드
--no-passive-ftp

위세가지 옵션을 이용해서 한번 다운로드 해보겠습니다

wget --ftp-user=사용자아이디 --ftp-password=비밀번호 [--no-passive-ftp] 다운로드주소

FTP도 동일하게 다운로드여서 무조건 다운로드 주소는 있어야 합니다.

한번 제가 지난 번에 만들어 둔 ftp로 다운을 받아 보겠습니다.

내부 FTP여서 ^^

wget --ftp-user=talkit --ftp-password=비밀번호 ftp://192.168.0.27:21/ftp*
wget --ftp-user=talkit --ftp-password=비빌번호 ftp://192.168.0.27:21/ftp*
--2023-01-08 06:10:19--  ftp://192.168.0.27/ftp*
           => ‘.listing’
Connecting to 192.168.0.27:21... connected.
Logging in as talkit ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD not needed.
==> PASV ... done.    ==> LIST ... done.

.listing                                                        [ <=>                                                                                                                                     ]   3.36K  --.-KB/s    in 0s

2023-01-08 06:10:20 (24.1 MB/s) - ‘.listing’ saved [3445]

Removed ‘.listing’.
--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpclient.txt
           => ‘ftpclient.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpclient.txt ... done.
Length: 35

ftpclient.txt                                               100%[========================================================================================================================================>]      35  --.-KB/s    in 0.01s

2023-01-08 06:10:20 (2.91 KB/s) - ‘ftpclient.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver.txt
           => ‘ftpserver.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver.txt ... done.
Length: 35

ftpserver.txt                                               100%[========================================================================================================================================>]      35  --.-KB/s    in 0.02s

2023-01-08 06:10:20 (2.20 KB/s) - ‘ftpserver.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver11.txt
           => ‘ftpserver11.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver11.txt ... done.
Length: 35

ftpserver11.txt                                             100%[========================================================================================================================================>]      35  --.-KB/s    in 0.006s

2023-01-08 06:10:20 (5.26 KB/s) - ‘ftpserver11.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver12.txt
           => ‘ftpserver12.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver12.txt ... done.
Length: 35

ftpserver12.txt                                             100%[========================================================================================================================================>]      35  --.-KB/s    in 0.007s

2023-01-08 06:10:20 (5.07 KB/s) - ‘ftpserver12.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver13.txt
           => ‘ftpserver13.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver13.txt ... done.
Length: 35

ftpserver13.txt                                             100%[========================================================================================================================================>]      35  --.-KB/s    in 0.006s

2023-01-08 06:10:20 (5.35 KB/s) - ‘ftpserver13.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver14.txt
           => ‘ftpserver14.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver14.txt ... done.
Length: 35

ftpserver14.txt                                             100%[========================================================================================================================================>]      35  --.-KB/s    in 0.009s

2023-01-08 06:10:20 (3.61 KB/s) - ‘ftpserver14.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver15.txt
           => ‘ftpserver15.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver15.txt ... done.
Length: 35

ftpserver15.txt                                             100%[========================================================================================================================================>]      35  --.-KB/s    in 0s

2023-01-08 06:10:20 (97.6 KB/s) - ‘ftpserver15.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver3.txt
           => ‘ftpserver3.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver3.txt ... done.
Length: 35

ftpserver3.txt                                              100%[========================================================================================================================================>]      35  --.-KB/s    in 0s

2023-01-08 06:10:20 (72.0 KB/s) - ‘ftpserver3.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver31.txt
           => ‘ftpserver31.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver31.txt ... done.
Length: 35

ftpserver31.txt                                             100%[========================================================================================================================================>]      35  --.-KB/s    in 0.002s

2023-01-08 06:10:20 (20.0 KB/s) - ‘ftpserver31.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver32.txt
           => ‘ftpserver32.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver32.txt ... done.
Length: 35

ftpserver32.txt                                             100%[========================================================================================================================================>]      35  --.-KB/s    in 0s

2023-01-08 06:10:20 (139 KB/s) - ‘ftpserver32.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver33.txt
           => ‘ftpserver33.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver33.txt ... done.
Length: 35

ftpserver33.txt                                             100%[========================================================================================================================================>]      35  --.-KB/s    in 0.002s

2023-01-08 06:10:20 (14.7 KB/s) - ‘ftpserver33.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver34.txt
           => ‘ftpserver34.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver34.txt ... done.
Length: 35

ftpserver34.txt                                             100%[========================================================================================================================================>]      35  --.-KB/s    in 0.002s

2023-01-08 06:10:20 (18.7 KB/s) - ‘ftpserver34.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver35.txt
           => ‘ftpserver35.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver35.txt ... done.
Length: 35

ftpserver35.txt                                             100%[========================================================================================================================================>]      35  --.-KB/s    in 0s

2023-01-08 06:10:20 (127 KB/s) - ‘ftpserver35.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver4.txt
           => ‘ftpserver4.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver4.txt ... done.
Length: 35

ftpserver4.txt                                              100%[========================================================================================================================================>]      35  --.-KB/s    in 0s

2023-01-08 06:10:20 (147 KB/s) - ‘ftpserver4.txt’ saved [35]

--2023-01-08 06:10:20--  ftp://192.168.0.27/ftpserver5.txt
           => ‘ftpserver5.txt’
==> CWD not required.
==> PASV ... done.    ==> RETR ftpserver5.txt ... done.
Length: 35

ftpserver5.txt                                              100%[========================================================================================================================================>]      35  --.-KB/s    in 0s

위와 같이 사용 가능 합니다. ^^

ftp로 시작하는 아이들이 잘 다운로드 되었습니다.

 ls
ftpclient.txt    ftpserver12.txt  ftpserver14.txt  ftpserver31.txt  ftpserver33.txt  ftpserver35.txt  ftpserver4.txt  ftpserver.txt
ftpserver11.txt  ftpserver13.txt  ftpserver15.txt  ftpserver32.txt  ftpserver34.txt  ftpserver3.txt   ftpserver5.txt

유용한 옵션 --mirror

홈페이지나 오픈소스를 하다보면 백업을 해야할 경우가 있습니다.

wget --mirror --ftp-user=talkit --ftp-password=비빌번호 ftp://192.168.0.27:21/*

talkit 계정을 미러링 해보겠습니다. ^^

 cd 192.168.0.27/
talkt2@ubuntu:~/wgettest/192.168.0.27$ ls
Desktop    emmptydir2  emmptydir5     ftpserver11.txt  ftpserver14.txt  ftpserver32.txt  ftpserver35.txt  ftpserver5.txt                       minio.deb      Pictures  sp_main_947f65.png  Templates     wgettest
Documents  emmptydir3  emptydir       ftpserver12.txt  ftpserver15.txt  ftpserver33.txt  ftpserver3.txt   ftpserver.txt                        Music          Public    study               testtext.txt
Downloads  emmptydir4  ftpclient.txt  ftpserver13.txt  ftpserver31.txt  ftpserver34.txt  ftpserver4.txt   mattermost-7.5.2-linux-amd64.tar.gz  naverlogo.png  snap      temp                Videos

미러링은 잘 되었습니다.

결론

wget 은 정말 고마운 툴입니다.

요즘은 또 유행하고 있는 것이 curl 이 유행을 하고 있어서 한번 글을 언젠가 적어 보겠습니다.

감샇합니다.

#linux #command #wget

반응형
반응형


안녕하세요 가야태자 @talkit 입니다.

오늘은 계속 사용하고 있는 sudo와 아직 보여 드리지 않았지만, su 라는 명령어에 대해서 말씀 드리겠습니다.

su는 사용자의 권한을 획득하는 명령어이고, 여기에 root 권한도 포함 됩니다.

sudo 해당 사용자 처럼 명령을 수행해 줍니다.

차이점은 한두가지 일을 그냥 진행할때는 sudo가 좋습니다.

계속 해당 사용자의 일을 해야 한다면, 해당 사용자로 로그인 하거나 su를 이용해서 아예 그 계정 권한을 획득해서 작업을 하는 것이 좋다고 생각합니다.

su 사용법

일단 간단하게 su에 대해서 알아 보겠씁니다.

su [옵션들] [-] [사용자명] [아규먼트들]

저도 계속 사용하던 것만 사용해서 알려 드리겠습니다.

옵션은 많은데 -s 정도가 필요할 것 같습니다. 나머지는 별로 저기 - 가 중요 합니다.

"-" 는 음 md에서 -가 뭔가 있어서 ^^ 큰 따옴표로 묶었습니다.

"-"는 해당 사용자의 권한을 완전히 내것으로 입니다.
"-"를 빼면, 환경변수는 내 것을 사용하고 계정만 변경 됩니다.

조금 있다가 차이를 보여 드리겠습니다.

우분투에서 root가 될 수 있는지 한번 보겠습니다.

우분투에서 root 계정의 비밀번호가 없어서 접근이 안되네요 그래서 아래 명령어를 내려 줬습니다.

sudo passwd root

이렇게요 root의 비밀번호를 셋팅 하겠다는 거지요

sudo passwd root
[sudo] password for talkit:
New password:
Retype new password:
passwd: password updated successfully

이렇게 변경해 주었습니다. ^^

그래서 이제 제 우분투에서 root 권한을 획득할 수 있습니다. ^^

실제로 root 권한을 획득해 보겠습니다.

talkit@ubuntu:~$ su -
Password:
root@ubuntu:~#

혹시 프롬프트의 차이가 느껴 지시나요?

$ 와 # 입니다.

$는 일반 사용자 계정을 표시합니다.

"#"은 슈퍼 사용자 계정을 표시합니다.

그래서 계정 끝이 # 이면 조심하셔야 합니다.

모든 곳에 영향을 미치니까요

su - 없이 해보겠습니다.


root@ubuntu:~# echo $HOME
/root
root@ubuntu:~# exit
logout
talkit@ubuntu:~$ echo $HOME
/home/talkit
talkit@ubuntu:~$ su
Password:
root@ubuntu:/home/talkit# echo $HOME
/root
talkit@ubuntu:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
talkit@ubuntu:~$ su -
Password:
su: Authentication failure
talkit@ubuntu:~$ su -
Password:
root@ubuntu:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
root@ubuntu:~#

환경 변수 차이가 거의 없습니다. T.T

       -, -l, --login
              Start  the shell as a login shell with an environment similar to
              a real login:

                 o      clears all the environment variables except  TERM  and
                        variables specified by --whitelist-environment

                 o      initializes  the  environment  variables  HOME, SHELL,
                        USER, LOGNAME, and PATH

                 o      changes to the target user's home directory

                 o      sets argv[0] of the shell to '-' in order to make  the
                        shell a login shell

그래서

"-" 옵션을 제가 잘 못 이해 하고 있는 줄 알고 다시 봤는데 비슷하게 이해는 하고 있네요 .

환경 변수중의 일부만 안변하고 변하는 것이고

"-" 옵션을 주면, 실제로 그 계정으로 login한걸로 되네요 ^^

일단 그렇다고 합니다.

root user로 오래 작업을 해야 할 경우 su - 를 이용해서 작업하시는 것이 훨씬 효율적입니다. - 없이 하면 뭔가 권한이 조금 부족한 느낌입니다. ^^

그리고 su - 뒤에 사용자를 붙이면 해당 사용자로 변경 됩니다.

su - 는 실제로 su - root 가 생략 되어 있다고 보시면 됩니다.

비밀번호 없이 해당계정으로 접근 하시려면, root 계정으로 접근 하신 다음에 비밀번호 없는 계정으로 접근 하시면 됩니다.

오 방금 옵시디안에 vim 옵션을 활성화 했는데 좋습니다. ^^ 기보드 화살표 키로 안가도 될네요 ㅎㅎㅎ

실제로 한번 예저를 보여 드리겠습니다.


su - mattermost
Password:
su: Authentication failure
talkit@ubuntu:~$ su - root
Password:
root@ubuntu:~# su - mattermost
su: warning: cannot change directory to /home/mattermost: No such file or directory
$

위에서 보시면, mattermost 계정으로 접근이 안됩니다. 왜냐면 아까 root 처럼 비밀번호가 없습니다. ^^

하지만, root 계정으로 su 한 다음에 mattermost 계정으로 su 하면 해당 계정으로 접근은 가능 합니다.

계정 홈도 지정해주지 않아서 ^^

저렇게 되네요

마지막으로 su -s -

를 알리고 su 관련 내용은 접고 다음에 있는 sudo를 이야기 하겠습니다.

su -s /usr/bin/csh -

위 명령어를 내렸는데 설치가 안되어 있습니다. ^^

그래서 또 설치 합니다.

sudo apt install csh

csh 은 가끔씩 쓸일이 있어서 설치 해 놓으면 좋을 것 같습니다.

talkit@ubuntu:~$ su -s /bin/csh -
Password:
#

이렇게 하시면 계정을 변경할때 기본 쉘을 변경할 수 있습니다.

여기까지가 su에 관련된 내용입니다.

원하는 사용자의 권한 획득 이제 하시겠죠.

sudo 사용법

sudo는 원하는 사용자 권한으로 일하기라고 생각하시면 됩니다.

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

우선 sudo를 설명 드리려면 sudoers 라는 파일을 알아야 합니다. ^^

%sudo ALL=(ALL:ALL) ALL

위 줄이 중요합니다.

sudo는 저 그룹에 속한 사용자만 가능 합니다.

제 컴퓨터에서 talkit 계정은

vi /etc/group

해서 보시면

sudo:x:27:talkit

sudo 그룹에 포함되어 있습니다

자 그러면, talkit2 계정을 만들겠습니다.

adduser talkit2

일부러 그룹을 안주고 만들었습니다.

저 talkit2에 비밀번호를 주겠습니다.

sudo passwd talkit2

비밀번호를 줬구요

talkit2 계정에 su로 접근 해서 sudo를 한번 해보겠습니다.

첫번째는 실패 합니다.

다시 빠저 나와서 talkit 계정으로

talkit2를 sudo 그룹에 넣습니다.

sudo usermod -aG sudo talkit2

위와 같이 하면 성공합니다.

talkit@ubuntu:~$ su - talkit2
su: user talkit2 does not exist
talkit@ubuntu:~$ adduser talkt2
adduser: Only root may add a user or group to the system.
talkit@ubuntu:~$ sudo adduser talkt2
Adding user `talkt2' ...
Adding new group `talkt2' (1001) ...
Adding new user `talkt2' (1001) with group `talkt2' ...
Creating home directory `/home/talkt2' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for talkt2
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
talkit@ubuntu:~$ su - talkit
Password:
talkit@ubuntu:~$ su - talkit2
su: user talkit2 does not exist
talkit@ubuntu:~$ su - talkt2
Password:
su: Authentication failure
talkit@ubuntu:~$ su - talkt2
Password:
su: Authentication failure
talkit@ubuntu:~$ su - talkt2
Password:
talkt2@ubuntu:~$ sudo vi /etc/sudoers
[sudo] password for talkt2:
talkt2 is not in the sudoers file.  This incident will be reported.
talkt2@ubuntu:~$ exit
logout
talkit@ubuntu:~$ sudo usermod -aG sudo talkt2
talkit@ubuntu:~$ su - talkt2
Password:
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

talkt2@ubuntu:~$ sudo vi /etc/sudoers
[sudo] password for talkt2:
talkt2@ubuntu:~$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.

실제로 해보면 위와 같이 되는데 ^^

제가 실수로 talkt2 으로 계정을 만들었네요. 저거 빼고는 차가 없이 잘 테스트가 되었습니다.

일단 실습을 먼저 했구요.

이 실습의 목적은 사용자를 어떻게 sudo 가능하도록 하느냐 입니다. ^^

이제 실제로 sudo 사용법은 어렵지 않습니다. ^^

sudo [옵션] 원하는명령어 [원하는명령어의 옵션들]

옵션들은 생략이 가능하고 sudo 이다 보니 ^^ 무조건 명령어는 하나 넣으셔야 합니다.

옵션 중에는 -u 옵션만 설명을 드리겠습니다.

다른 설명을 원하시면 ^^

man sudo

설명이 잘 나와 있습니다.

sudo cat /etc/sudoers
 sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#

talkit 계정으로 이명령어를 실행하면 sudo 사용자니까 잘 됩니다.

-s 옵션을 설명을 드리면 ^^

sudo -u mattermost cat /etc/sudoers

이렇게 명령을 내려 보겠습니다.

sudo -u mattermost cat /etc/sudoers
cat: /etc/sudoers: Permission denied

당연히 권한이 없는 사용자로 했으니 권한이 없답니다.

결론

음 결론이라기 보다는 권고에 가까 울 것 같습니다.

되도록이면 보안상 sudo를 사용하십시오.

불편하시더라도 ^^

정말로 root 사용자로 작업을 해야 하면 그때

su - 를 이용해서 권한을 획득한 후에 사용하십시오.

su/sudo를 잘 사용해서 root 권한의 업무를 잘 진행하시기 바랍니다.

감사합니다.

#linux #command

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

오늘은 데비안/우분투 리눅스의 설치 관리자인 apt에 대해서 알아 보겠습니다.

우선 리눅스의 설치 관리자는 제가 아는 것으로 ^^

rpm이라는 프로그램

yum이라는 프로그램

그리고, 지금 설명하려고 하는 apt라는 프로그램이 있습니다.

rpm은 레드햇 리눅스에서 만든 패키지 관리 프로그램 이구요.

yum이라는 프로그램은 역시 레드햇 리눅스에서 만든 프로그램인데, rpm 보다는 스스로 호환성/의존성 문제를 해결해 줍니다.

그리고 apt는 호환성/의존성 문제가 해결된 데비안/우분투 리눅스의 설치 관리자 입니다.

![[Pasted image 20230106232301.png]]

apt의 GUI 버전을 보여 드리겨고 했는데 ^^ 위와 같이 카달로그를 받는데 시간이 걸리네요

저거 끝나면 다시 캡쳐를 ^^

지금 제가 하고 있는 것은 CLI 입니다. Command LIne Interface ^^

apt 기본 사용법

 sudo apt 명령어 [패키지명|검색어]

위와 같습니다.

오늘 설명할 명령어는 아래와 같습니다.

update
upgrade
install
reinstall
remove
search
list
show

위 명령어들을 알아 보겠습니다.

대부분 우분투에 뭔가를 까실때 저 명령어들로 해결이 가능 합니다.

우선 update는 최신 버전의 패키지 서버들과 패키지의 버전 업데이트를 목록을 알려 줍니다.

update 명령어

sudo apt update

우분투에서 root를 활성화 시키지 않는 이상 sudo를 사용해야 합니다.

그래서 위와 같이 사용합니다.

한번 해보겠습니다.

![[Pasted image 20230106232754.png]]

아까 하고 있는 작업 끝나서 보입니다. ^^

위와 같이 GUI형태로 프로그램을 설치하고 관리 할 수 있습니다.

다시 putty로 돌아 와서.

sudo apt update 명령어를 내려 보십시오.

sudo apt update
[sudo] password for talkit:
Hit:1 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu focal InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
9 packages can be upgraded. Run 'apt list --upgradable' to see them.

위와 같이 나옵니다. 저기 시키는 대로 한번 쳐 보겠습니다.

list 명령어

sudo apt list --upgradable
firefox-locale-en/focal-updates,focal-security 108.0.1+build1-0ubuntu0.20.04.1 amd64 [upgradable from: 108.0+build2-0ubuntu0.20.04.1]
firefox/focal-updates,focal-security 108.0.1+build1-0ubuntu0.20.04.1 amd64 [upgradable from: 108.0+build2-0ubuntu0.20.04.1]
libcurl3-gnutls/focal-updates,focal-security 7.68.0-1ubuntu2.15 amd64 [upgradable from: 7.68.0-1ubuntu2.14]
linux-generic-hwe-20.04/focal-updates,focal-security 5.15.0.57.63~20.04.23 amd64 [upgradable from: 5.15.0.56.62~20.04.22]
linux-headers-generic-hwe-20.04/focal-updates,focal-security 5.15.0.57.63~20.04.23 amd64 [upgradable from: 5.15.0.56.62~20.04.22]
linux-image-generic-hwe-20.04/focal-updates,focal-security 5.15.0.57.63~20.04.23 amd64 [upgradable from: 5.15.0.56.62~20.04.22]
python3-update-manager/focal-updates,focal-updates 1:20.04.10.11 all [upgradable from: 1:20.04.10.10]
update-manager-core/focal-updates,focal-updates 1:20.04.10.11 all [upgradable from: 1:20.04.10.10]
update-manager/focal-updates,focal-updates 1:20.04.10.11 all [upgradable from: 1:20.04.10.10]

저는 위와 같이나옵니다.

몇가지가 update 되어 있네요.

list는 보시는 바와 같이 패키지 목록을 보여 줍니다.

이왕 list로 왔으니

그냥 list를 해보겠습니다.

sudo apt list | more

조만간 more 와 less에 관해서 작성 해야겠네요 ^^

sudo apt list | more

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Listing...
0ad-data-common/focal,focal 0.0.23.1-1 all
0ad-data/focal,focal 0.0.23.1-1 all
0ad/focal 0.0.23.1-4ubuntu3 amd64
0install-core/focal 2.15.1-1 amd64
0install/focal 2.15.1-1 amd64
0xffff/focal 0.8-1 amd64
2048-qt/focal 0.1.6-2build1 amd64
2ping/focal,focal 4.3-1 all
2to3/focal,focal 3.8.2-0ubuntu2 all
2vcard/focal,focal 0.6-2 all
3270-common/focal 3.6ga4-3build1 amd64
389-ds-base-dev/focal 1.4.3.6-2 amd64
389-ds-base-libs/focal 1.4.3.6-2 amd64
389-ds-base/focal 1.4.3.6-2 amd64
389-ds/focal,focal 1.4.3.6-2 all
3dchess/focal 0.8.1-20 amd64
3depict/focal 0.0.22-1.2build1 amd64
3dldf-doc/focal,focal 2.0.3+ndfsg-4 all
4g8/focal 1.0-3.2 amd64
4pane/focal 6.0-1build1 amd64
4store/focal 1.1.6+20151109-2build2 amd64
4ti2-doc/focal,focal 1.6.9+ds-2build1 all
4ti2/focal 1.6.9+ds-2build1 amd64
64tass/focal 1.54.1900-1 amd64
6tunnel/focal 1:0.13-1 amd64
7kaa-data/focal,focal 2.15.2+dfsg-2build1 all
7kaa/focal 2.15.2+dfsg-2build1 amd64
9base/focal 1:6-7build1 amd64
9menu/focal 1.9-2 amd64
9mount/focal 1.3+hg20170412-1 amd64
9wm/focal 1.4.1-1 amd64
a11y-profile-manager-doc/focal,focal 0.1.11-0ubuntu4 all
a11y-profile-manager-indicator/focal 0.1.11-0ubuntu4 amd64
a11y-profile-manager/focal 0.1.11-0ubuntu4 amd64
a2jmidid/focal 9-2 amd64
a2ps/focal 1:4.14-5 amd64
a56/focal 1.3+dfsg-9 amd64
a7xpg-data/focal-updates,focal-updates 0.11.dfsg1-10build3.1 all
a7xpg/focal-updates 0.11.dfsg1-10build3.1 amd64
aa3d/focal 1.0-8build1 amd64
aac-enc/focal 0.1.6-1 amd64
aajm/focal 0.4-10build1 amd64
aaphoto/focal 0.45-1 amd64
aapt/focal 1:8.1.0+r23-3build2 amd64
abacas/focal,focal 1.3.1-6 all
abcde/focal,focal 2.9.3-1 all
abci/focal 0.0~git20170124.0.f94ae5e-2 amd64
abcm2ps/focal 8.14.6-0.1 amd64
abcmidi/focal 20200122-1 amd64
abe-data/focal,focal 1.1+dfsg-3 all
abe/focal 1.1+dfsg-3 amd64
abgate/focal 1.1.9-2build1 amd64
abi-compliance-checker/focal,focal 2.3-0.2ubuntu1 all
abi-dumper/focal,focal 1.1-1 all
abi-monitor/focal,focal 1.12-2ubuntu1 all
abi-tracker/focal,focal 1.11-1 all
abicheck/focal,focal 1.2-5ubuntu1 all
abigail-doc/focal,focal 1.6-1build1 all
abigail-tools/focal 1.6-1build1 amd64
abisip-find/focal 1.3.0-2 amd64
abiword-common/focal,focal 3.0.2-10 all

위와 같이 설치 되어 있는 캐시되 있는? 설치되고, 설치할 수 있는 모든 패키지들을 보여 주고 있습니다.

sudo apt list --installed

위 명령어를 내리면, 설치 되어 있는 패키지만 찾을 수 있습니다.

지난 번에 제가 설치한 mc 패키지를 한번 찾아 보겠습니다.

sudo apt list --installed | grep mc

위와 같이 하시면 됩니다.

sudo apt list --installed | grep mc

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

fonts-smc-anjalioldlipi/focal,focal,now 7.1.2-1 all [installed,automatic]
fonts-smc-chilanka/focal,focal,now 1.400-1 all [installed,automatic]
fonts-smc-dyuthi/focal,focal,now 3.0.2-1 all [installed,automatic]
fonts-smc-gayathri/focal,focal,now 1.100-1 all [installed,automatic]
fonts-smc-karumbi/focal,focal,now 1.1.2-1 all [installed,automatic]
fonts-smc-keraleeyam/focal,focal,now 3.0.2-1 all [installed,automatic]
fonts-smc-manjari/focal,focal,now 1.710-1 all [installed,automatic]
fonts-smc-meera/focal,focal,now 7.0.3-1 all [installed,automatic]
fonts-smc-rachana/focal,focal,now 7.0.2-1 all [installed,automatic]
fonts-smc-raghumalayalamsans/focal,focal,now 2.2.1-1 all [installed,automatic]
fonts-smc-suruma/focal,focal,now 3.2.3-1 all [installed,automatic]
fonts-smc-uroob/focal,focal,now 2.0.2-1 all [installed,automatic]
fonts-smc/focal,focal,now 1:7.1 all [installed,automatic]
libxdmcp6/focal,now 1:1.1.3-0ubuntu1 amd64 [installed,automatic]
libxvmc1/focal,now 2:1.0.12-2 amd64 [installed,automatic]
mc-data/focal,focal,now 3:4.8.24-2ubuntu1 all [installed,automatic]
mc/focal,now 3:4.8.24-2ubuntu1 amd64 [installed]
pcmciautils/focal,now 018-11 amd64 [installed,automatic]

결과는 위와 같이 나오구요. 실제로 밑에서 두번째 줄에 있는 아이가 mc 입니다 ^^

그럼 다시 돌아가서

upgrade 명령어

업그레이드 가능한 목록을 알아 봤으니 upgrade를 해보겠습니다.

 sudo apt upgrade

명령어는 위와 같습니다.

위 명령어를 내리면 알아서 인터넷에서 받아와서 업그레이드를 진행 합니다. ^^

꺼꾸로 이긴 한데 ^^

upgrade 까지 배웠으니

install 명령어

install을 알아 보겠습니다.

sudo apt install 원하는패키지명

위와 같이 설치 합니다.

음 제가 설치 해둔 리눅스는 컴파일러가 없습니다.

그래서 gcc를 한번 설치 해보겠습니다.

sudo apt install gcc

설치 하기 전에 gcc 엔터를 쳤습니다.

gcc

Command 'gcc' not found, but can be installed with:

sudo apt install gcc

설치 후에 gcc 엔터를 쳤습니다.

gcc
gcc: fatal error: no input files
compilation terminated.

앞에는 프로그램이 없으니 설치 하라고 하고 뒤에는 C파일이 없다고 C파일하나를 내놓으라고 합니다. ^^

설치가 잘 되었씁니다.

remove 명령어

설치가 있으면 삭제가 있습니다. ^^

remove 는 아래와 같습니다.

sudo apt remove gcc

위와 같이 하시면 됩니다.

sudo apt remove gcc
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  gcc
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 51.2 kB disk space will be freed.
Do you want to continue? [Y/n] y
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "ko_KR.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
(Reading database ... 166383 files and directories currently installed.)
Removing gcc (4:9.3.0-1ubuntu2) ...
Processing triggers for man-db (2.9.1-1) ...

실행을 해보면 잘 지워 집니다.

gcc
-bash: /usr/bin/gcc: No such file or directory

다시 아까 처럼 gcc를 쳐봤는데 그렇게 친절 하지는 않네요 ^^

여튼 삭제가 되었습니다.

reinstall 명령어

sudo apt reinstall 패키지명

gcc를 reinstall 해보겠습니다.

sudo apt reinstall gcc

reinstall은 설치할지를 안묻고 바로 설치 해버리네요 ^^

isntall만 사용하셔도 될 것 같습니다.

search 명령어

search 명령어는 설치할 패키지가 있는지 알려 줍니다.

요즘 관심 가지고 있는 obsidian 이 있는지 찾아 보도록 하겠습니다.

apt search obsidian
apt search obsidian*
Sorting... Done
Full Text Search... Done
minetest-mod-nether/focal,focal 2-4 all
  Minetest mod - Nether portals and materials

obsidian-icon-theme/focal,focal 3.5-1 all
  Intuitive Faenza-like icon theme

결과는 위와 같이 나왔습니다.

음 실제 프로그램은 없는 건가요?

일단 한번 리눅스에 옵시디안 설치하는 방법도 글을 한번 써봐야 겠습니다.

show 명령어

이제 마지막으로 show에 대해서 이야기 해보겠습니다.

sudo apt show 패키지명

위와 같이 사용할 수 있습니다.

mc를 한번 show로 보겠습니다.

sudo apt show mc
[sudo] password for talkit:
Package: mc
Version: 3:4.8.24-2ubuntu1
Priority: optional
Section: universe/utils
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Dmitry Smirnov <onlyjob@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1501 kB
Provides: mcedit
Depends: libc6 (>= 2.15), libext2fs2 (>= 1.37), libglib2.0-0 (>= 2.59.2), libgpm2 (>= 1.20.7), libslang2 (>= 2.2.4), libssh2-1 (>= 1.2.8), mc-data (= 3:4.8.24-2ubuntu1)
Recommends: mime-support, perl, unzip
Suggests: arj, bzip2, catdvi | texlive-binaries, dbview, djvulibre-bin, epub-utils, file, genisoimage, gv, imagemagick, libaspell-dev, links | w3m | lynx, odt2txt, poppler-utils, python, python-boto, python-tz, xpdf | pdf-viewer, zip
Homepage: https://www.midnight-commander.org
Download-Size: 477 kB
APT-Manual-Installed: yes
APT-Sources: http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
Description: Midnight Commander - a powerful file manager
 GNU Midnight Commander is a text-mode full-screen file manager. It
 uses a two panel interface and a subshell for command execution. It
 includes an internal editor with syntax highlighting and an internal
 viewer with support for binary files. Also included is Virtual
 Filesystem (VFS), that allows files on remote systems (e.g. FTP, SSH
 servers) and files inside archives to be manipulated like real files.

정말 멋진 툴이네요 ^^

여기까지가 apt의 기본 사용법입니다.

제가 매일 그냥 사용하고 있고 저도 솔직히 REDHAT계열에서 넘어와서 apt 보다는 yum 이 익숙한데 ^^

저도 좀 정리가 되는 느낌입니다.

ubuntu는 보안상 sudo를 사용하고 있습니다.

REDHAT 계열의 시스템들도 sudo를 사용하는 것이 좋습니다.

저 방법을 언젠가는 적어 보겠습니다.

감사합니다.

#linux #ubuntu #install

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

무료 FTP 클라이언트인 파일질라를 이용해서 이번에는 서버에 접속해보도록 하겠습니다.

FTP 프로그램 쉽습니다.

할일이 많지 않으니까요 ^^

파일 올리고 내리고 파일 지우고 디렉토리 만들고 정도만 알면 ^^

FTP로 할일은 다한겁니다.

나머지는 Shell에서 그 파일을 압축을 풀거나 컴파일 하거나 실행하거나 뭐 이런글 해야겠지요 ^^

파일질라 설치

[무료소프트웨어] 알FTP 대체 프로그램 파일질라/FileZilla 설치하기/Install :: 가야태자의 IT이야기 (tistory.com)

혹시 FTP를 설치하지 않으셨으면, 설치 하십시오.

파일질라 업데이트

저 위에 그림 보시면 아시겠지만 최근에는 제가 파일질라를 잘 안써서 새버전이 있답니다.

그냥 새버전을 좀 설치하고 넘어 가겠습니다.

원래는 시작할때 뜨는데 제가 닫았습니다.

우선 새버전이 있습니다 클릭하시고 버전을 클릭하십시오.

이렇게 나옵니다. 저기 또 새버전 설치 버튼 보이시죠 ^^

그러면 자동으로 설치하는데 너무 빨라서 ^^

음 캡쳐를 못했습니다. T.T

바로 설치가 완료 되네요 ^^

확인 누르시면 됩니다.

서버 설치

리눅스와 윈도우즈에 FTP 서버가 있어야 접속을 할 수 있겠지요 ^^

그내용은 아래 글들로 대체 하겠습니다.

리눅스/Linux 우분투에 FTP 서버를 설치해보자. How to install FTP server on Ubuntu Linux :: 가야태자의 IT이야기 (tistory.com)

[무료소프트웨어] Windows에 FTP 서버 구축하기(1) FileZillaServer 설치하기 :: 가야태자의 IT이야기 (tistory.com)

[무료소프트웨어] Windows에 FTP 서버 구축하기(2) FileZillaServer 설정하기 :: 가야태자의 IT이야기 (tistory.com)

저렇게 개인적으로 설치를 하지 않더라도, 카페24나 Oracle VPS 같은 곳에 FTP가 있다면 다음 정보들이 있어야 합니다.

 접속 주소 : 아이피 또는 도메인
 접속 포트 : 일반적으로 FTP 21, SCP는 22 지만, 서버 보안을 위해서 변경하는 경우 해당 포트
 TLS 여부 : 시스템 관리자로 부터 해당 서버가 보안 접속을 사용하는지를 안내 받으십시오.
 아이디 : 시스템 관리자부터 발급 받으시고,
 비밀번호 : 시스템 관리자로 부터 발급 받습니다. ^^

일단 FTP에 접속을 하려면 서버 정보를 아셔야 하고, 아셔야할 내용은 위와 같습니다.

FTP 접속하기

서버 정보를 아셨다면 따라하시면 됩니다.

파일 메뉴의 사이트 관리자를 여십시오.

새 사이트 버튼을 클릭하십시오.

그리고 호스트에 접속주소, 포트에 접속포트 사용자에 아이디 비밀번호에 비밀번호를 넣으시면 됩니다.

저는 평문 FTP를 설치 해두어서 평문 FTP만 사용(보안에 취악)을 선택하십시오.

저는 그래서 위와 같은 모습이 되었습니다.

이제 연결을 해보겠습니다.

WinSCP와 마찬가지로 잘 접속이 됩니다.

FTP와 TLS 보안에 관련될걸 또 글을 한번 적어 봐야겠습니다. ^^

파일 업로드

지난 번과 마찬가지로 위창에서 왼쪽은 로컬 컴퓨터의 창이고, 오른쪽은 서버 컴퓨터의 창입니다.

c:\dev\study

위 폴더를 만드시고,

저 폴더에다가 메모장에서 아부 텍스트나 만드십시오.

저는 지난 번에 만들어 두었던 것이 들어 있습니다.

서버에 디렉토리 만들기

정말 간단 합니다. 서버 쪽에서 오른쪽 마우스 누르시고, study를 만드십시오.

/home/계정명/study

위 폴더를 만드시고 새로 만들어진 study를 더블 클릭해서 이동하십시오.

잘 따라 하셨으면 위와 비슷하게 되었을 것 같습니다.

파일 업로드

그러면 오른쪽의 내용을 업로드 합니다.

왼쪽 로컬 창에서 올리고자 하는 파일을 선태하고 오른쪽 마우스를 누르면 업로드가 있습니다.

해보십시오.

저도 해보겠습니다.

그러면, 위와 같이 됩니다. ^^

파일 다운로드

서버 컴퓨터 파일 명 변경

로컬 컴퓨터도 비슷하게 하시면 됩니다.

다운로드할 파일이 있어야 되서 파일명을 변경해보겠습니다.

    ftpserver1
    ftpclient1

서버 쪽에 있는 파일을 위 두개 정도로 변경해 보겠습니다.


서버 또는 로컬 컴퓨터에서 오른쪽 마우스 누르시고 이름 바꾸기 하시면 됩니다.

이름을 변경해 보십시오

변경이 잘 되었으면, 위와 같이 나올껍니다.

다운로드는 눈치 채셨겠지만

반대로 하시면 됩니다.

파일 다운로드

서버 쪽 컴퓨터에 파일을 오른쪽 마우스를 누르시면, ^^ 파일이 다운로드 됩니다.

지금까지 다운로드까지 잘 따라 하셨으면 위와 같이 되어 있을 겁니다.

파일 권한 변경

제가 아직 리눅스 강의에서 다루지 않았는데 얼른 다뤄야 겠네요

리눅스에는 윈도우즈에는 없는(숨어 있는?) 파일 권한 관리가 있습니다.

자세한 내용은 나중에 다른 글에서 이야기 하구요.

해당 권한을 FTP 클라이언트에서 변경 할 수 있습니다.

일단 저희는 윈도우즈라서 저기 서버 컴퓨터의 파일에서 오른쪽 마우스 누르시면 파일 권한 팝업이 있습니다.

클릭하십시오.

요렇게 되어 있구요 일반적으로 소유자는 풀 권한을 다 가지고 사용자는 읽기만 가지도록 되어 있습니다.

그런데 손님과 공유가 필요하다던지 하면, 그룹이나 공개권한에 쓰기 실행도 할 수 있게 해주면 됩니다.

진짜로 서버를 관리하는 사람끼리면 몰라서 공용 서버에는 되도록 소유자 속성만 잘 관리 하십시오 ^^

FTP에서 할 수 있는 일은 대부분 다 했습니다.

마무리

FTP 관련 내용은 잘 보셨나요?

리눅스/Linux WinSCP로 리눅스와 파일을 교환하자. How to file transfer via WinSCP on Linux :: 가야태자의 IT이야기 (tistory.com)

WinSCP를 이용해서도 동일한 작업을 할 수 있습니다.

다양한 툴들을 사용해보십시오.

감사합니다.

#ftp #linux #windows #filezilla

반응형
반응형

안녕하세요 가야태자 @talit 입니다.

오늘은 추억의 프로그램을 말씀 드리겠습니다.

여러분은 도스를 아시는 세대인가요?

도스시절에 많이 사용되던 프로그램입니다.

이녀석의 원조가 DOS 입니다. Disk Operating System 의 약자 입니다. DOS 많은 회사에서 출시 했었습니다. IBM-DOS도 있고, MS-DOS도 있습니다. 제일 유명한 건 아무래도 MS 즉 마이크로소프트의 도스곘지요.

저도 MS-DOS라는 운영체제를 사용했습니다. 3.대 부터 6.대까지였던 것 같습니다.

그다음에 Windows 3.1이나오고, 윈도우즈 95가 나오고 98이나오고 지금의 Windows 10,11 까지 ^^ 오고 있습니다.

다시 mc 로 돌아가서 ^^

dos 시절에 디렉토리를 이동 하려면, 제가 알려드린 리눅스와 마찬가지로 cd를 이용해서 일이 처야 했습니다.

아직 제가 글은 안썼지만, 리눅스 하시는 분들은 알고 계실, shell script나 bat 파일을 이용해서 많은 작업을 했습니다.

그런데, 정말 편리한 툴이 두가지가 있었습니다. 외국에서는 Norton Comander가, 우리나라에서 Mdir이라는 프로그램 이었습니다.


출처 : 위키피디아 Norton Commander - Wikipedia

노턴은 저렇게 생겼습니다.


출처 : Mdir III 3.10 - DOS 프로그램 저장소 (tistory.com)

Mdir은 이렇게 생겼습니다.

둘다 비슷하구요 ^^ cd와 배치 프로그램이 난무하던 DOS를 정말 많이 도와 주는 프로그램입니다.

cd가 아니고 키보드를 이용해서 디렉토리 이동을 할 수 있고, 양쪽을 폴더 리스트를 이용해서 복사도 할 수 있고 ^^ 디렉토리 삭제도 할 수 있고 정말 획기적이었습니다.

저는 제 나름의 플로피 디스크를 들고 다니면서 대학교 1학년 시절에 ^^

전산실에서 저 프로그램을 만났습니다.

저는 그때도 컴퓨터에 관심이 많았기 때문에 ^^ 까만 화면에서 뭔가를 하고 있었습니다.

그런데 선배님이 오시더니 뭐하노 왜 화면이 까맣노? 라고 하시는 겁니다. ^^

그러더니 ^^, 도스창에 m 엔터를 치시는거였습니다. ^^

ㅋㅋㅋ 그 다음부터는 신세계였습니다. ^^

그런데, putty로 접속했을때 저런 프로그램이 있으면 좋겠다 라는 생각을 리눅스를 사용하면서 많이 했었습니다.

헉, 그런데 말입니다. 있습니다. ^^

Midngiht Commander 라고 줄여서 mc 라고 합니다.

우선 설치 부터 해보겠습니다.

지금 저는 우분투를 사용하기 때문에 ^^

sudo apt install mc

간단하지요 ^^

설치는 다 되었습니다.

mc

실행 명령어는 위와 같습니다.

그냥 프롬프트에 위에서 선배님이 m 치셨듯이 ㅋㅋㅋ mc를 치시면 됩니다.

![[Pasted image 20230106202721.png]]

그러면 이렇게 나옵니다. ^^ 영문일 뿥 Mdir하고 비슷하지 않나요 ^^

색상은 Norton 하고 비슷하지만요 ㅎㅎㅎ

아마 외국에서 개발된 툴이어서 색상은 노턴하고 비슷하게 된 것 같습니다.

mc로 파일편집, 파일이동, 파일 삭제 디렉토리 생성 등은 특수키로 모든걸 다하실 수 있습니다.

탭키로는 두 탭간의 이동을 합니다. 엔터키는 쳐보시면 알겠지만 해당 위치로 이동 하거나, Shell 파일이나 실행파일이면 실행도 해주고, 심시 tar 압축도 해제해 줍니다. ^^

무시 무시한 툴입니다.

리눅스에 적응이 안되면 mc 를 설치하고 사용하시는 방법도 하나의 대안이 되겠습니다.

감사합니다.

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

요즘 진짜로 여러가지를 다뤄보고 이야기 해보고 있습니다.

오늘 설치해보려고 하는 minIO는 오픈소스 오브젝트 스토리지 소스이자 서비스입니다. 그리고 가장 재미 있는 것은 아마존의 S3와 호환이 됩니다.

그래서 S3에 있는 데이타를 minIO 서비스로 이전하거나 심지어 minIO 셀프호스트 서버로 이전이 가능 합니다.

node js client가 동일하게 동작 합니다. ^^

MinIO | High Performance, Kubernetes Native Object Storage

저도 많이 써보지는 못해서 위 URL에 잘 설명 되어 있습니다. ^^

이제 본격적으로 설치를 시작해보겠습니다.

일단 Single Node와 Multi Node가 있습니다.

여기서 저는 Single Node 정말 간단하게 테스트를 해볼 것이라서 ^^

Single Node에는 Single-Drive와 Multi-Drive가 있습니다.

이것도 현재는 Single-Drive를 생각하고 있습니다.

일단 Single Node에 Single-Drive를 만들어 보고 좋으면 Multi로 넘어가던지 해야 할 것 같습니다.

오늘은 설치에 매진 하겠습니다.

minIO 서버 다운로드

저는 현재 Ubuntu를 사용하고 있어서

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20230102094009.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb

이렇게 치라고 하네요 ^^ 해보겠습니다.

저는 거의 매일 접속하는 것 같습니다.

제 VM에 있는 Ubuntu 서버에 접속 합니다.

접속은 잘 되었고, 다운로드를 했는데 잘 되었습니다. ^^

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20230102094009.0.0_amd64.deb -O minio.deb
--2023-01-05 03:39:47--  https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20230102094009.0.0_amd64.deb
Resolving dl.min.io (dl.min.io)... 178.128.69.202, 138.68.11.125
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 38937942 (37M) [application/vnd.debian.binary-package]
Saving to: ‘minio.deb’

minio.deb           100%[===================>]  37.13M   408KB/s    in 3m 14s

2023-01-05 03:43:02 (196 KB/s) - ‘minio.deb’ saved [38937942/38937942]

위와 같이 잘 나오고 있습니다.

설치도 한번 해보겠습니다.

다음에는 도커로도 설치를 해보겠지만, 일단 오늘은 도커 말고, deb파일로 설치를 진행 합니다.

 sudo dpkg -i minio.deb
[sudo] password for talkit:
Selecting previously unselected package minio.
(Reading database ... 161767 files and directories currently installed.)
Preparing to unpack minio.deb ...
Unpacking minio (20230102094009.0.0) ...
Setting up minio (20230102094009.0.0) ...

이번에도 잘 설치가 됩니다.

systemd 파일은

 vi /etc/systemd/system/minio.service

여기에 잘 설치가 되었습니다.

현재 저는 Deploy MinIO: Single-Node Single-Drive — MinIO Object Storage for Linux

저 문서를 보고 따라하고 있습니다.

minIO 서버는 minio-user에 의해서 구동 된다네요 그래서 minio-user 를 만들어라고 합니다. ^^

groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4

여기서 디렉토리는 예제라서 minIO가 사용할 디렉토리를 저렇게 해주시면 됩니다.

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local

User=minio-user
Group=minio-user
ProtectProc=invisible

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

자동으로 설치된 min는 저기 보시다 싶이 minio-user에 의해서 동작하고 있습니다.

저희는 싱글로 설치 할꺼라서 ^^ 계속 이문서를 따라 하겠습니다.

sudo vi /etc/default/minio

저기에 기본 설정 파일이 있다고 합니다.

한번 보겠습니다.

실제로 없네요 ㅋㅋㅋ

# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment

MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me

# MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.

MINIO_VOLUMES="/mnt/data"

# MINIO_SERVER_URL sets the hostname of the local machine for use with the MinIO Server
# MinIO assumes your network control plane can correctly resolve this hostname to the local machine

# Uncomment the following line and replace the value with the correct hostname for the local machine.

#MINIO_SERVER_URL="http://minio.example.net"

가장 간단한 예제 파일 입니다.

vi 편집기로 저는 그대로 ^^ 붙여 넣었습니다.

일단 위에 보면 /mnt/data를 사용하네요

sudo mkdir -p /mnt/data
sudo chown -R minio-user:minio-user /mnt/data

권한을 해당 사용자에게 주었습니다.

MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me

위 두줄은 수정 하시는 것이 좋답니다. ^^

저도 보안 권고를 받을때 amdin 이런 단순한 아이디를 사용하지 않아야 한다고 보안 권고를 받는 경우가 많아서요.

여기 문서에서도 기본 말고 다른것으로 사용하랍니다.

저는 제가 변경 했습니다.

여러분도 여러분이 원하는 아이디 비밀번호로 변경 하십시오.

변경 했으면 한 번 켜 보겠습니다.

sudo systemctl start minio.service
sudo systemctl status minio.service
● minio.service - MinIO
     Loaded: loaded (/etc/systemd/system/minio.service; disabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-01-05 04:07:06 PST; 8s ago
       Docs: https://docs.min.io
    Process: 3057 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi (code=exited, status=0/SUCCESS)
   Main PID: 3058 (minio)
      Tasks: 21
     Memory: 88.8M
     CGroup: /system.slice/minio.service
             └─3058 /usr/local/bin/minio server /mnt/data

Jan 05 04:07:06 ubuntu minio[3058]: WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
Jan 05 04:07:06 ubuntu minio[3058]: Warning: Default parity set to 0. This can lead to data loss.
Jan 05 04:07:06 ubuntu minio[3058]: MinIO Object Storage Server
Jan 05 04:07:06 ubuntu minio[3058]: Copyright: 2015-2023 MinIO, Inc.
Jan 05 04:07:06 ubuntu minio[3058]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Jan 05 04:07:06 ubuntu minio[3058]: Version: RELEASE.2023-01-02T09-40-09Z (go1.19.4 linux/amd64)
Jan 05 04:07:06 ubuntu minio[3058]: Status:         1 Online, 0 Offline.
Jan 05 04:07:06 ubuntu minio[3058]: API: http://192.168.0.27:9000  http://127.0.0.1:9000
Jan 05 04:07:06 ubuntu minio[3058]: Console: http://192.168.0.27:44313 http://127.0.0.1:44313
Jan 05 04:07:06 ubuntu minio[3058]: Documentation: https://min.io/docs/minio/linux/index.html

상태를 확인 해봤는데 잘 켜진 것 같습니다.

journalctl -f -u minio.service
-- Logs begin at Sun 2022-12-25 00:14:58 PST. --
Jan 05 04:07:06 ubuntu minio[3058]: WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
Jan 05 04:07:06 ubuntu minio[3058]: Warning: Default parity set to 0. This can lead to data loss.
Jan 05 04:07:06 ubuntu minio[3058]: MinIO Object Storage Server
Jan 05 04:07:06 ubuntu minio[3058]: Copyright: 2015-2023 MinIO, Inc.
Jan 05 04:07:06 ubuntu minio[3058]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Jan 05 04:07:06 ubuntu minio[3058]: Version: RELEASE.2023-01-02T09-40-09Z (go1.19.4 linux/amd64)
Jan 05 04:07:06 ubuntu minio[3058]: Status:         1 Online, 0 Offline.
Jan 05 04:07:06 ubuntu minio[3058]: API: http://192.168.0.27:9000  http://127.0.0.1:9000
Jan 05 04:07:06 ubuntu minio[3058]: Console: http://192.168.0.27:44313 http://127.0.0.1:44313
Jan 05 04:07:06 ubuntu minio[3058]: Documentation: https://min.io/docs/minio/linux/index.html

오 journalctl -f -u minio.service 명령어로 확인 하니깐 뭔가 나오네요 ^^

위와 같이 잘 나오네요.

접속을 한번 해보겠습니다.

이야 아까 만든 비밀번호로 로그인도 잘 됩니다.

그럼 내일 부터는 버킷을 만들고 파일을 올리는 등의 방법을 적어 보겠습니다

하루에 하나만 포스팅 하고 있어서 ^^

다음 글이 언제 출판될지 모르겠지만, 저는 열심히 글을 적고 있겠습니다.

감사합니다.

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

이번에는 제 노트패드++가 1버전정도 차이가 나서 재설치를 하려고 합니다.

우선 Downloads | Notepad++ (notepad-plus-plus.org) 

 

Downloads | Notepad++

 

www.notepad-plus-plus.org

위 사이트에 접속 하시면 다운로드 하실 수 있습니다. 

저는 최신 버전인 8.4.8 버전을 설치 하겠습니다. 

8.4.8 버전을 클릭하고 스크롤을 아래로 내리시면 위와 같은 화면이 나옵니다.

저기서 Installer 누르십시오.

다운로드 된 파일을 더블 클릭합니다. 

한국어 좋습니다. ^^

다음 누르십시오.

동의함 누르시구요.

설치폴더 지정하시고 다음

저는 구성요소를 그래로 사용하기 때문에 다음 누릅니다.

바탕화면에 바로가기 생성하려면 클릭하시고 설치

플러그인 호환성에 문제가 있다네요 확인, 저는 기존에 설치 되어 있어서 그렇고 보통은 안나옵니다. ^^

마침 누르시면 설치가 완료되고, Notepad++이 실행 됩니다. 

업그레이드이기 때문에 기존에 있던 파일들도 잘 열립니다.

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘은 무료스프트웨어 관련에 글을 적습니다. 

저도 제일 처음 IT를 본격적으로 시작할때 어릴때 말고, 디자이너가 되려고 노력을 해봤습니다. ^^

그때 패운 것들이 포토샵, 일러스트레이터, 3D MAX 등 이었습니다. 

그런데, 기술은 누구보다 잘 하는데 ^^ 디자인에 소질이 없어서 개발로 전향을 했습니다. 

하지만, 가끔 간단하게 3D 파일을 만들거나, 동영상 편집을 해야하면 사용하는 프로그램이 BLENDER 입니다.

제 PC에 깔려 있는 블랜더 버전이 2.8인데 사이트에 있는 버전은 3.4.1이서 새로 한번 받아서 다시 설치 해보겠습니다. 

Download — blender.org 

 

Download — blender.org

The Freedom to Create.

www.blender.org

다운로드는 위 URL에서 하시면 됩니다. 

저는 계속 윈도우여서 윈도우에 설치를 진행 합니다. 

최신 버전은 3.4.1 인데

최신 버전 보다 LTS 버전을 받으시라고 권해 드리고 싶습니다.  

그래서 저 아래에 Looking for Blender LTS? 보이시죠.

클릭하십시오.

요거 비슷하게 나올꺼구요 저기서 저는 3.3 LTS를 설치 하겠습니다. ^^

클릭하시면 위와 같이 나옵니다. 

스크롤을 내리십시오.

스크롤 살짝 내리시면 저렇게 나옵니다. 

저기서 Windows - Installer 을 클릭 하십시오.

그러면 다운로드 창이 열리는데 다운로드 하시면 됩니다. 

다운로드 하신 폴더에서 파일을 더블 클릭 하시면 됩니다. 

Next 누르십시오.

I accept 앞에 체크 체크하고,  Next 누르십시오.

설치 위치 변경 하실 분들은 변경하시고 아니면 Next 누르십시오.

Install 누르시면 설치를 시작 합니다. 

잠시 기다리면 권한 관련 동의에 예 누르시고, 설치를 시작 합니다. 

저는 설치가 이미 되어 있어서 바로가기가 이미 있어서 설치를 못한다고 하고 설치가 완료 되었습니다. 

Finish 누르십시오.

그리고, 시작 줄에서 시작 버튼 누르시면 블렌더를 찾아서 시작 하시면 됩니다. 

정상적으로 설치 되었으며 ㄴ위와 같이 보일 겁니다. 

3.3.2로 잘 설치가 되었습니다. 

저는 그냥 간단 간단한 작업들만 하기 때문에 사용법은 알려 드릴수가 없어서 T.T

저는 개발자 입니다. ^^

아래 유튜브 채널에 정말 많은 강의가 있습니다. 

참고 하십시오

(82) AZTechnology - YouTube

 

AZTechnology

A 부터 Z 까지 다양한 소프트웨어랑 하드웨어 기술을 기술을 다루는 채널입니다. 소프트웨어 : 블렌더, UE5, 기타 등 하드웨어 : GoPro, iPhone, Drone 업로드 일정 : 랜덤

www.youtube.com

 

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

[무료소프트웨어] 마크다운/Markdown 편집기/Editor 마크텍스트/MarkText 다운로드 및 설치하기 https://talkit.tistory.com/623

위글은 Markdown 편집기인 Marktext를 소개하는 글로 ^^ 나름 제 블로그의 인기글입니다. 

저도 옵시디언이 뭔지 아직 잘 모르겠습니다. 

그런데 오늘,  안피곤님의 블로그 https://anpigon.tistory.com/ 에서 옵시디언이라는 아이를 발견 했습니다. 

보관하고 멀티유저 멀티소스를 지향하는 글쓰기를 하고 싶어서 계속 찾고 있었는데 제 착각이었습니다. 

요즘 저는 티스토리에 글을 쓰고 티스토리 글을 복사해서 제 스팀잇 블로그 가야태자의 스팀잇 블로그 https://steemit.com/@talkit 에도 같이 연재를 하고 있습니다. 

옛날에 @anpigon 님이 작성하신 티스토리 블로그 관련 앱이 생각나서 찾다가 안피곤님 블로그를 발견했습니다. 그런데 찾던 앱은 제가 찾는 것 같하고 반대의 개념이었습니다. ^^

스티미 https://github.com/anpigon/steeme 라는 앱인데 이것은 스팀잇에 글을 쓰고, 해당 글을 tistory로 옮겨주는 역할을 하는 프로그램 이었습니다. 

그런데 ^^ 안피곤님 블로그에서 옵시디언이라는 아이를 발견 했습니다. 

한번 다운 받아서 깔아 보겠습니다. 

옵시디언 https://obsidian.md/ 

도메인이 아예 md로 끝나는 것으로 봐서 마크다운을 지원하는 것 같습니다. ^^

저는 이글 쓰고, 안피곤님이 작성하신 스팀잇 플러그인과 티스토리 플러그인을 받아 볼 생각입니다. 

저는 윈도우즈를 사용하고 있어서 그렇지만, 맥이나, 다른 OS도 지원 합니다. 

헉 다운받은 exe파일을 더블클릭하자마자 뭐가 막 움직이더니 그냥 설치가 되어버리네요 ^^

Create new vault 를 한번 해보겠습니다. vault는 

vault
명사 둥근 천장 vault, dome
지하실 cellar, vault, dive
아치 천장 vault
뛰어 넘음 vault
돔꼴의 동굴 vault

Google 번역기를 돌려 보면 위와 같이 나오네요 ^^ 둥근천장은 뭘까요 ^^

뭔지를 모르겠지만 한번 만들어 보고 이번글은 끝내겠습니다. ^^

일단 Name 적고 디렉토리를 선택 했습니다. 저는 OneDrive를 사용하기 때문에 백업도 됩니다. ^^

열어보니 인터페이스를 위와 같이 생겼네요 ^^

Create new file 한번 해보겠습니다. 

오늘은 여기까지 하고 안피곤님의 플러그인을 한번 사용해보면서 글을 적어 보겠습니다. 

안피곤님 감사합니다. 

그리고, 독자 여러분도 감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

요즘 Slack에 관심이 있었는데 Slack이 유료라서 Mattermost에 관심을 두고 있습니다. 

그런데, 하나 하나 해보고 있는데 gitlab.com 이라고 github와 비슷한 git 저장소 서비스의 플러그인을 설정해 보겠습니다. 

저는 주로 gitlab을 사용하는 이유가 처음 사용해서 라고 해야할까요^^

마이크로소프트에 인수 되기 전까지 github는 폐쇄 소프트웨어는 유료로 저장소를 사용해야 했습니다. 

요즘은 폐쇄도 가능한 것으로 알고 있습니다. 

하지만, gitlab은 무료인데 폐쇄 소프트웨어 즉 회사 소스 관리를 할 수 있게 해주었습니다. 

그래서 사용하게 되었고 지금도 사용하고 있습니다. 

그래서 gitlab과 제가 설치한 mattermost를  연동 하고 싶었습니다. 

우선 설치는 관리자 아이디로 접속하고, 채널에 접속 합니다. 

그리고, 저위에 보시면 바둑판 아이콘을 클릭하고 Marketplace를 클릭합니다. 

그러면 이 비슷한 모양이 나옵니다.

저기서 현재는 2페이지에 gitlab plugin이 들어 있습니다. 

제가 설치하려고 하는 GitHub/GitLab/Jenkins 까지 모두 들어 있습니다. ^^

설치는 제가 GitLab을 설치해버려서 ^^ 다른 플러그인 처럼 Install 누르시면 됩니다. 

이제 Configuration을 해야 합니다. 

Configure 버튼을 클릭하면

위 그림 처럼 플러그인 설정화면으로 이동 합니다. 

https://gitlab.com/-/profile/applications. 이 주소를 클릭 하셔서 gitlab으로 이동 합니다. 

로그인이 안되어 있으면 로그인 하시고 ^^

위와 비슷한 화면이 나타날텐데요 ^^ Name에 Mattermost - 회사명 정도를 넣으라고 되어 있네요 ^^

https://your-mattermost-url.com/plugins/com.github.manland.mattermost-plugin-gitlab/oauth/complete, replacing https://your-mattermost-url.com

그리고 Redirect URI는 저기서 your-matter-url.com을 여러분의 도메인으로 바꾸면 되는 것 같습니다. 

저는 변경 했습니다. 

그리고, api, read_user 를 선택 합니다. 

Save application을 클릭하십시오.

위 화면이 나오면 Application ID하고 Secret 를 각각 복사해 둡니다. 

저는 복사를 해두었습니다. 

그리고 Mattermost 설정화면으로 돌아 오십시오.

이 화면으로 돌아 오셔야 합니다. ^^

Enable Plugin 을 true로 합니다. 

 그리고 Gitlab URL, Oauth Client ID, Secret를 아까 복사해둔 두개와 주소는 셀프호스트 아니면 저대로 두시면 됩니다. 

그리고 나서 Webhook Secret 과 At Rest Encryption Key 아래에 Regenerate 를 각각 클릭 합니다. 

채널로 돌아가셔서

채널 상에다가 

/gitlab connect

이렇게 하시면 링크가 하나 나오는데 이링크를 클릭 하십시오

Shift 누르고 클릭하시는 것이 좋습니다. 

지금은 주확색인데 인증 버튼을 한번 눌러 줍니다. 

그러면 인증을 시작 합니다. 

끝나면, 돌아오는데 창을 닫으라고 하면 닫으십시오.

/gitlab subscriptions add userid/[그룹또는프로젝트] issues,merges,pushes,issue_comments

잘되었는데 성공했다는 메시지가 나옵니다. 

/gitlab webhook add userid/그룹또는프로젝트명

식을 뜹니다. 

저걸 다시 채팅창에 쳐 주십시오.

웹 훅이 만들어 졌구요.

Readme를 Push 해보겠습니다. ^^

요렇게 잘 나옵니다. 

Slack를 왜 쓰는지 이제 알겠습니다. 

오늘은 여기까지하고 또 다른 Mattermost글을 써보겠습니다. 

관련글 

리눅스/Linux Slack 대체 프로그램 Mattermost를 설치해보자. How to install Mattermost on Ubuntu Linux https://talkit.tistory.com/695

리눅스/Linux Mattermost https로 운영하기 How to setup mattermost via https on ubuntu https://talkit.tistory.com/704

리눅스/Linux Mattermost 구글 메일서버와 Email 알림 설정하기. How to setup Google SMTP & email notification. https://talkit.tistory.com/705

리눅스/Linux Mattermost 회원가입 초대 가능하게 하기. How to setup enable account creation. https://talkit.tistory.com/708

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

MariaDB를 이용한 Database 사용하기 #003 - Cleint DBeaver 설치하기 https://talkit.tistory.com/569

위 글에서도 설치하는 법을 알려 드렸지만, 동일 할껍니다. 하지만, 버전이 확 바껴서 한번 설치 해보도록 하겠습니다. 

https://dbeaver.io/download/

 

Download | DBeaver Community

Download Tested and verified for MS Windows, Linux and Mac OS X. Install: Windows installer – run installer executable. It will automatically upgrade version (if needed). MacOS DMG – just run it and drag-n-drop DBeaver into Applications. Debian package

dbeaver.io

다운로드 하는  URL은 위에 들어가시면 됩니다. 

저는 윈도우즈에 설치 할꺼여서 윈도우즈 바이너리를 받습니다. ^^

기억하기 쉬운 위치에 잘 받으시면 됩니다. 

다 받으셨으면 더블 클릭해서 설치를 진행 하시면 됩니다. 

윈도우즈에 프로그램 설치는 이제 너무 쉽지요 ^^

다음 누릅니다. 

동의함을 누르시면 됩니다. 

여기도 다음을 누르시면 됩니다. 그러면 권한 획득하시고, 

다음 누르시면 됩니다. 

앞에서 했는데 또 묻네요 ^^

실제로 설치할 패키지를 선택 합니다. 기본적으로 편리하게 사용하기 위해서 DBeaver와 java를 꼭 선택 하십시오.

설치 위치 정하시구요.

윈도우 메뉴도 정하시고 설치 누르시면

설치를 시작 합니다. ^^

이 화면 나오면 마침 누르시면 됩니다. ^^

Dbeaver가 실행 됩니다. 

tip of day는 꺼주시고

저는 아마 upgrade한 것이라 그런 것 같은데 다운로드 하시면 됩니다. 

요렇게 되어 있으면 잘 설치 된 겁니다.

오늘은 여기까지 하고, 

다음 글에서 MySQL 서버와 연결하는 법을 보안 부터 시작 해서 알아 보겠습니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

요즘 저는 Ubuntu 리눅스를 주로 사용해서 이야기를 하고 글을 적고 있습니다. 

하지만, 제가 가장 많이 접하고, 사용했던 리눅스는 빨간모자 즉, RedHat 계열의 리눅스 들입니다. 

RHEL이라고 레드햇 엔터프라이즈 리눅스, Fedora라고 페도라리눅스, RHEL이 상용화되면서, CentOS라는 리눅스까지 모두 Redhat 계열의 리눅스 입니다. 참 써보지는 않았지만, Oracle Linux도 RedHat 계열로 알고 있습니다. 

왜 이야기를 드리느냐? 그 이유는 CentOS가 원래 본연의 목적을 더이상 진행하지 않기 때문입니다. 

그래서 저도 고민을 했습니다. 그냥 CentOS를 쓸것인가? 우분투로 갈것인가? 하지난 아직 실제로 사용하고 있는 상용 서버는 CentOS를 사용하고 있습니다. ^^ 제 개인적으로 사용하는 서버들은 Ubuntu를 사용하고 있습니다. 아참 제가 다니는 회사가 과학회사인데 T.T 저는 문과 입니다. ^^ 과학용으로는 또 Fedora도 가끔 사용합니다. ^^

Ubuntu외에 알고는 있었지만, 또하나의 대안이 있어서 소개해 드립니다. 오늘은 소개해 드리고 ^^ 다른 글에서 VMWARE 에 한번 설치해보겠습니다. ^^

이 배포판의 목적은 대놓고 적고 있습니다. RHEL의 커뮤니티 판이라구요. 즉 RHEL을 무료로 사용할 수 있다는 겁니다. 

CentOS는 조금간 EOS(서비스 종료)될 예정입니다. 그리고 CentOS Stream 이라고, RHEL의 테스트 버전으로 남게 됩니다. 

참 리눅스는 Open Source여서 개발을 하게 되면 일부 소스를 제외하고는 모두 공개하게 되어 있습니다. 그래서 가능한 것이 커뮤니티 버전 입니다. ^^ 소스가 공개 되어 있으니, 컴파일을 해서 다시 배포판을 만들면, 그 배포판에 배포판 만드신 분이 뻘짓만 안하면 ^^ 정말 괜찮은 방법입니다. ^^

로고 바꾸고 서비스 URL정도를 바꾸고, 계속 패치 해주고 얼마나 좋습니까 ^^

아참 제목에는 있지만, 새로운 리눅스의 이름을 본문에는 하나도 안적었네요 신기 합니다. ^^

리눅스의 이름의 로키(Rocky)리눅스입니다. CentOS의 원래 창시자 이름중 하나라고 되어 있씁니다. ^^

다운로드 페이지는 저렇게 생겼습니다. ^^

저기서 잘 봐두셔야 할 부분은 Planned EOL: 입니다. 2029년까지네요 정말 깁니다. ^^

그래서 조금 찾아 봤습니다. 

EOL 이 End of Life네요 T.T

Active Support는 리눅스내의 패키지 업데이트를 이양 합니다. 8 버전대는 2024년 5월 31일까지네요. 저기 위에 있었는 EOL은 Security Support가 2029년 5월 31일에 끝나네요.

상당히 좋은 조건 입니다. ^^

진짜로 한번 마이그레이션 고민을 해봐야겠습니다. 

요늘은 Rocky 리눅스를 소개 해 드렸구요.

다음 글에서는 설치를 한번 해봐야겠습니다. 

감사합니다. 

참 소개만 하고 까먹었네요 ^^

로키 리눅스 홈페이지 : https://rockylinux.org/

 

Rocky Linux

Rocky Linux is an open enterprise Operating System designed to be 100% bug-for-bug compatible with Enterprise Linux.

rockylinux.org

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘 Mattermost에서 알아볼 것은 간단 합니다. 

지금 현재까지는 아마 찾으신 분들도 있겠지만, 제 강의를 따라 오셨다면, 채팅방에 혼자 계셨을 가능성이 있습니다. 

오늘은 채팅창에 여러명을 초대 할 수 있도록 만들어 보겠습니다. 

짧다고 말씀 드린 이유는 위그럼이 다여서 그렇습니다. ^^

우선 젤 위에 Enable Account Creation 이 true로 되어 있어야 합니다. 

Enable Open Server를 true로 주면 저는 위험하다고 생각이 되어서 ^^

Enable Email invitations 만 true로 줬습니다. 

저렇게 하고 아래 저장 버튼을 클릭하시면 끝입니다. 

그리고 채널로 돌아가서 앗 채널 만들어기를 설명을 안드렸나요 T.T

다음에 또 글을 적겠습니다. 

Invite Members를 클릭하시고

To에다가 초대할 이메일 넣으시고 Invite 또는 초대를 누르시면

다시 Invite 눌러주시면 됩니다. 

그러면, 메일을 셋팅 하셨다면 ^^

초대 메일이 Email 주소 소유자 분에게 갈꺼고 그분이 가입해서 아이디를 만드는 식입니다. ^^

이런식으로 초대된 사용자들과 대화가 가능 합니다. 

관련글

리눅스/Linux Slack 대체 프로그램 Mattermost를 설치해보자. How to install Mattermost on Ubuntu Linux :: 가야태자의 IT이야기 (tistory.com)

 

리눅스/Linux Slack 대체 프로그램 Mattermost를 설치해보자. How to install Mattermost on Ubuntu Linux

안녕하세요 가야태자 @talkit 입니다. 이번 글에서는 제가 지난 번에 리눅스를 설치 하면서 뭔가를 설치해보고자한다고 말씀 드렸는데 그것 중에 하나가 Mattermost라는 툴입니다. 이툴은 Slack이라는

talkit.tistory.com

리눅스/Linux Mattermost https(SSL)로 운영하기 How to setup mattermost via https(SSL) on ubuntu :: 가야태자의 IT이야기 (tistory.com)

 

리눅스/Linux Mattermost https(SSL)로 운영하기 How to setup mattermost via https(SSL) on ubuntu

안녕하세요 가야태자 @talkit 입니다. 리눅스/Linux Slack 대체 프로그램 Mattermost를 설치해보자. How to install Mattermost on Ubuntu Linux https://talkit.tistory.com/695 위글에 이어서 ^^ 지금 현재 저는 성공 했습니

talkit.tistory.com

리눅스/Linux Mattermost 구글 메일서버와 Email 알림 설정하기. How to setup Google SMTP & email notification. :: 가야태자의 IT이야기 (tistory.com)

 

리눅스/Linux Mattermost 구글 메일서버와 Email 알림 설정하기. How to setup Google SMTP & email notification.

안녕하세요 가야태자 @talkit 입니다. 일단 NGINX 관련 설정을 제외하고는 거의 끝났습니다. 이제 Email 알림을 동작하도록 해보겠습니다. 우선 Email은 메일서버가 있어야지 구동이 가능합니다. 그래

talkit.tistory.com

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

리눅스/Linux 편집기를 사용해보자 vi/vim 열고(Open) 닫기(Close) https://talkit.tistory.com/591

리눅스/Linux vi/vim NIX에서 가장 유명한 텍스트 편집기 - 글쓰기. One of the best text editor on NIX fields. - Writing https://talkit.tistory.com/699

오늘은 위글들 다음으로 쓰는 글입니다. 잠시 또 다른 길로 샜다가 왔습니다. ^^

끌쓰기는 익히셨다면 ^^

대한민국
동해물
백두산
한라산
백록담
천지
서울
대전
대구
부산
하늘
땅
검은색
우리나라
강산
아리앙
Apple
a
an
the
Korea
Republic of Korea
Internet
What is this
english
korean
Guten Tak
Guten Morgan
Guten Abent
문서 줄 수 30줄

지난 번에는 새로운 문서를 입력하는 법을 알려 드렸습니다.

이제는 글자를 지우고 문장을 지우고 문장을 입력하는 등의 일을 해보겠습니다. 

자  위 파일을 우리는 testtext.txt 로 저장 하겠습니다. 

이제 제가 말씀을 안드려서 저 문서를 그대로 vi 편집기에 옮길 수 있으시죠 ^^

그리고, <Esc> :wq 를 용해서 저장하고 빠저 나온 다음에 다음 작업을 또 시작 하겠습니다. 

vi testtext.txt

위명령어를 이용해서 문서를 만들고 다시 문서를 여셨나요?

저는 여셨다고 보고 ^^

실제로 제가 30줄의 단어를 나열 했는지 확인 해보겠습니다. 

<Esc> 누르시고, :set nu

명령어를 입력해 주십시오

 

      1 대한민국
      2 동해물
      3 백두산
      4 한라산
      5 백록담
      6 천지
      7 서울
      8 대전
      9 대구
     10 부산
     11 하늘
     12 땅
     13 검은색
     14 우리나라
     15 강산
     16 아리앙
     17 Apple
     18 a
     19 an
     20 the
     21 Korea
     22 Republic of Korea
     23 Internet
     24 What is this
     25 english
     26 korean
     27 Guten Tak
     28 Guten Morgan
     29 Guten Abent
     30 문서 줄 수 30줄

이렇게 나오면 합격 ^^

자 이제 첫번째 줄을 지워 보겠습니다. 

12번째 줄을 지워보겠습니다. ^^

그러면 이제  또 <Esc>  누르시고, :12  엔터 치십시오

그러면 커서가 12번째 줄로 이동할껍니다. 

그자리에서 역시 숙달 되시면 안해도 되겠지만, 가끔 다른 키를 누르시고, 안된다는 분들이 있어서 ^^ <Esc> 한번더 누르시고, dd를 누르십시오.

      1 대한민국
      2 동해물
      3 백두산
      4 한라산
      5 백록담
      6 천지
      7 서울
      8 대전
      9 대구
     10 부산
     11 하늘
     12 검은색
     13 우리나라
     14 강산
     15 아리앙
     16 Apple
     17 a
     18 an
     19 the
     20 Korea
     21 Republic of Korea
     22 Internet
     23 What is this
     24 english
     25 korean
     26 Guten Tak
     27 Guten Morgan
     28 Guten Abent
     29 문서 줄 수 30줄

줄 지우기 입니다. 

그런데 지운게 실수다 우리에게 중요한 Undo 신이 ^^ vi에도 있습니다. 

소문자 u를 누르십시오.

      1 대한민국
      2 동해물
      3 백두산
      4 한라산
      5 백록담
      6 천지
      7 서울
      8 대전
      9 대구
     10 부산
     11 하늘
     12 땅
     13 검은색
     14 우리나라
     15 강산
     16 아리앙
     17 Apple
     18 a
     19 an
     20 the
     21 Korea
     22 Republic of Korea
     23 Internet
     24 What is this
     25 english
     26 korean
     27 Guten Tak
     28 Guten Morgan
     29 Guten Abent
     30 문서 줄 수 30줄

자 12번째 줄인 땅이 복구 되었습니다. ^^

조심해야 할 것 같습니다. T.T Undo를 한번만 제공하는 것 같네요 ^^

자 그럼 글자를 지워 보겠습니다. 24번째 줄에 What를 지워보도록 하겠습니다. 

이번에는 : 누르고 숫자 누르십시오 ^^

그리고 24번째 줄로 커서가 이동했으면 W 위에 커서를 놓으시고, 아시죠 hjkl 을 이용해서 ^^ 잘 조정하시기를 

대문자 W 앞에서 소문자 x를 글자수만큼 누릅니다. What는 4글자니까 4번만 누르겠습니다. 띄워쓰기도 지우려면 다섯번 누르셔도 됩니다. 

      1 대한민국
      2 동해물
      3 백두산
      4 한라산
      5 백록담
      6 천지
      7 서울
      8 대전
      9 대구
     10 부산
     11 하늘
     12 땅
     13 검은색
     14 우리나라
     15 강산
     16 아리앙
     17 Apple
     18 a
     19 an
     20 the
     21 Korea
     22 Republic of Korea
     23 Internet
     24  is this
     25 english
     26 korean
     27 Guten Tak
     28 Guten Morgan
     29 Guten Abent
     30 문서 줄 수 30줄

잘 따라 하셨으면 위와 같이 되었을 겁니다. ^^

is 앞에다가 커서 놓으시고, i를 누르셔서 What을 복원 하십시오.

What라고 치시면 됩니다. ^^

그러면 다시 복원이 되었을 것 같습니다. 

그런데 그러면 dd를 내가 지우고 싶은게 지워 질때가지 쳐야 하나요?

아닙니다. 3dd 라고 입력해 볼껍니다.

위치는 사과를 없애 보겠습니다. Apple죠

마찬가지로 : 번호 누르셔서 잘 따라 오십시오.

17라인에 오셨으면 잘 따라해보십시오. 3dd

      1 대한민국
      2 동해물
      3 백두산
      4 한라산
      5 백록담
      6 천지
      7 서울
      8 대전
      9 대구
     10 부산
     11 하늘
     12 땅
     13 검은색
     14 우리나라
     15 강산
     16 아리앙
     17 the
     18 Korea
     19 Republic of Korea
     20 Internet
     21 What is this
     22 english
     23 korean
     24 Guten Tak
     25 Guten Morgan
     26 Guten Abent
     27 문서 줄 수 30줄

Apple, a , an 이 사라졌습니다. ^^

여러분은 잘 지워졌나요

이렇게 하시면 됩니다. 

u를 누르셔서 다시 세줄을 복원 합니다. ^^

찾기부터 해보겠습니다. 

Korea를 찾아 보지요 ^^

/Korea를 입력해보십시오.

      1 대한민국
      2 동해물
      3 백두산
      4 한라산
      5 백록담
      6 천지
      7 서울
      8 대전
      9 대구
     10 부산
     11 하늘
     12 땅
     13 검은색
     14 우리나라
     15 강산
     16 아리앙
     17 Apple
     18 a
     19 an
     20 the
     21 Korea
     22 Republic of Korea
     23 Internet
     24 What is this
     25 english
     26 korean
     27 Guten Tak
     28 Guten Morgan
     29 Guten Abent
     30 문서 줄 수 30줄
~
~
~
?Korea

이렇게 나오고 T.T 저기 커서는 안보이지만 여러분은 커서가 Korea에 와있지요?

다음 찾기는 n 이전 찾기는 N 입니다. 한번 눌러 보십시오.

찾기를 알아 봤으니 바꿔 보겠습니다. 

What is this를 How are you 로 바꿔 보시죠 ^^

:%s/What is this/How are you

이렇게 하시면 됩니다. 

      1 대한민국
      2 동해물
      3 백두산
      4 한라산
      5 백록담
      6 천지
      7 서울
      8 대전
      9 대구
     10 부산
     11 하늘
     12 땅
     13 검은색
     14 우리나라
     15 강산
     16 아리앙
     17 Apple
     18 a
     19 an
     20 the
     21 Korea
     22 Republic of Korea
     23 Internet
     24 How are you
     25 english
     26 korean
     27 Guten Tak
     28 Guten Morgan
     29 Guten Abent
     30 문서 줄 수 30줄
~
~
~
:%s/What is this/How are you

잘 따라 하셨으면 위와 같이 변경되어 있을 겁니다. ^^

:%s/What is this/How are you/g

위 문서에서는 소용이 없겠지만, /g 옵션을 모든 문서의 내용을 변경 합니다. 

그래서 Korea를 Corea로 변경해 보겠습니다. 

:%s/Korea/Corea/g

위와 같이 하면 저위에 있는 2개의 Korea가 Corea로 변경 될 겁니다. 

      1 대한민국
      2 동해물
      3 백두산
      4 한라산
      5 백록담
      6 천지
      7 서울
      8 대전
      9 대구
     10 부산
     11 하늘
     12 땅
     13 검은색
     14 우리나라
     15 강산
     16 아리앙
     17 Apple
     18 a
     19 an
     20 the
     21 Corea
     22 Republic of Corea
     23 Internet
     24 How are you
     25 english
     26 korean
     27 Guten Tak
     28 Guten Morgan
     29 Guten Abent
     30 문서 줄 수 30줄
~
~
~

이렇게 보이시나요 ^^

대소문자를 구분하기 때문에 korean의 korea는 변경이 안되었습니다. ^^

vi/vim 도 많이 써보는 수 밖에 없습니다. 

여러가지 문서를 많이 다뤄 보시기를 바랍니다.

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

리눅스/Linux 편집기를 사용해보자 vi/vim 열고(Open) 닫기(Close) https://talkit.tistory.com/591

리눅스/Linux vi/vim NIX에서 가장 유명한 텍스트 편집기 - 글쓰기. One of the best text editor on NIX fields. - Writing https://talkit.tistory.com/699

리눅스/Linux cat 간단한 텍스트 파일 보기 Simple Text File Viewer https://talkit.tistory.com/675

리눅스/Linux 기본 명령어 - ls, 파일 목록 보기 dir(?) https://talkit.tistory.com/581

[리눅스/Linux] 파일 복사(Copy File) cp 명령어(Command) https://talkit.tistory.com/668

[리눅스/Linux] 파일 이동시키기(Move File)/이름 바꾸기(Change Name) mv 명령어(Command) https://talkit.tistory.com/667

리눅스에서 디렉토리를 만들어 보자. mkdir https://talkit.tistory.com/582

음 지금까지 리눅스 기본 관련글을 쓰면서 파일을 만들고,읽고, 목록확인하고, 이동 시키는 명령어는 열심히 알려 드렸습니다.  디렉토리 만들기도 했네요 ^^

위의 글들을 참고 하시면 되겠습니다. ^^

그런데 파일 삭제는 어떻게 할까요?

rm 이라는 명령어를 사용합니다. 

RM(1)                                                                                                                                               User Commands                                                                                                                                               RM(1)

NAME
       rm - remove files or directories

SYNOPSIS
       rm [OPTION]... [FILE]...

DESCRIPTION
       This manual page documents the GNU version of rm.  rm removes each specified file.  By default, it does not remove directories.

       If the -I or --interactive=once option is given, and there are more than three files or the -r, -R, or --recursive are given, then rm prompts the user for whether to proceed with the entire operation.  If the response is not affirmative, the entire command is aborted.

       Otherwise, if a file is unwritable, standard input is a terminal, and the -f or --force option is not given, or the -i or --interactive=always option is given, rm prompts the user for whether to remove the file.  If the response is not affirmative, the file is skipped.

OPTIONS
       Remove (unlink) the FILE(s).

       -f, --force
              ignore nonexistent files and arguments, never prompt

       -i     prompt before every removal

       -I     prompt once before removing more than three files, or when removing recursively; less intrusive than -i, while still giving protection against most mistakes

       --interactive[=WHEN]
              prompt according to WHEN: never, once (-I), or always (-i); without WHEN, prompt always

       --one-file-system
              when removing a hierarchy recursively, skip any directory that is on a file system different from that of the corresponding command line argument

       --no-preserve-root
              do not treat '/' specially

       --preserve-root[=all]
              do not remove '/' (default); with 'all', reject any command line argument on a separate device from its parent

       -r, -R, --recursive
              remove directories and their contents recursively

       -d, --dir
              remove empty directories

       -v, --verbose
              explain what is being done

       --help display this help and exit

       --version
              output version information and exit

       By default, rm does not remove directories.  Use the --recursive (-r or -R) option to remove each listed directory, too, along with all of its contents.

       To remove a file whose name starts with a '-', for example '-foo', use one of these commands:

              rm -- -foo

              rm ./-foo

       Note that if you use rm to remove a file, it might be possible to recover some of its contents, given sufficient expertise and/or time.  For greater assurance that the contents are truly unrecoverable, consider using shred.

매뉴얼에서 확인해보면 저렇게 쓴다고 합니다. 

저는 제 나름대로 또 설명하겠습니다. 

rm [옵션들] 파일명|*|*패턴*

위와 같이 씁니다. 

자 옵션들 중에서 -f -r -d -v 정도만 알면 되겠습니다. 

-f 는 강제로 무조건이라는 뜻이고

-r 은 하위 디렉토리까지 포함 한다는 뜻이구요.

-d 는 빈 디렉토리만 이라는 뜻입니다. 

-v 는 지워지는 파일을 보여줘라.

위와 같은 뜻이어서 

같이 사용할 수 있습니다. 

하나하나 한번 실습을 해보겠습니다. 

cp ftpserver.txt ftpserver1.txt
cp ftpserver.txt ftpserver2.txt
cp ftpserver.txt ftpserver3.txt
cp ftpserver.txt ftpserver4.txt
cp ftpserver.txt ftpserver5.txt

일단 예전에 ftp 실습할때 만들어 둔 파일을 5개를 더 만들었습니다. 

 mkdir emptydir
 mkdir notemptydir
 cp ftp* notemptydir/

빈디렉토리와 안빈디렉토리를 만들고 안빈 디렉토리에 파일을 좀 복사해 두었습니다. 

자 이제 rm 명령어를 실험해보겠습니다. 

ls -al
rm ftpserver1.txt
ls -al

위 명령어들을 순서대로 쳐 보겠습니다. ^^

talkit@ubuntu:~$ ls -al
total 331068
drwxr-xr-x 17 talkit talkit      4096 Jan  3 03:28 .
drwxr-xr-x  3 root   root        4096 Dec 25 00:12 ..
-rw-------  1 talkit talkit      4624 Jan  1 07:21 .bash_history
-rw-r--r--  1 talkit talkit       220 Dec 25 00:12 .bash_logout
-rw-r--r--  1 talkit talkit      3771 Dec 25 00:12 .bashrc
drwxrwxr-x 11 talkit talkit      4096 Dec 28 06:51 .cache
drwx------ 12 talkit talkit      4096 Dec 29 06:10 .config
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Desktop
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Documents
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Downloads
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 emptydir
-rw-r--r--  1 talkit talkit        35 Dec 30 00:27 ftpclient.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver1.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver2.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver3.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver4.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver5.txt
-rw-rw-r--  1 talkit talkit        35 Dec 30 00:27 ftpserver.txt
drwx------  3 talkit talkit      4096 Dec 25 00:21 .gnupg
-rw-------  1 talkit talkit        35 Dec 29 06:34 .lesshst
drwxr-xr-x  3 talkit talkit      4096 Dec 25 00:21 .local
-rw-rw-r--  1 talkit talkit 338882654 Dec 21 05:26 mattermost-7.5.2-linux-amd64.tar.gz
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Music
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 notemptydir
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Pictures
-rw-r--r--  1 talkit talkit       807 Dec 25 00:12 .profile
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Public
-rw-r--r--  1 talkit talkit         0 Dec 28 06:43 .sudo_as_admin_successful
drwxrwxr-x  2 talkit talkit      4096 Dec 30 00:37 temp
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Templates
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Videos
talkit@ubuntu:~$ rm ftpserver1.txt
talkit@ubuntu:~$ ls -al
total 331064
drwxr-xr-x 17 talkit talkit      4096 Jan  3 03:31 .
drwxr-xr-x  3 root   root        4096 Dec 25 00:12 ..
-rw-------  1 talkit talkit      4624 Jan  1 07:21 .bash_history
-rw-r--r--  1 talkit talkit       220 Dec 25 00:12 .bash_logout
-rw-r--r--  1 talkit talkit      3771 Dec 25 00:12 .bashrc
drwxrwxr-x 11 talkit talkit      4096 Dec 28 06:51 .cache
drwx------ 12 talkit talkit      4096 Dec 29 06:10 .config
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Desktop
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Documents
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Downloads
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 emptydir
-rw-r--r--  1 talkit talkit        35 Dec 30 00:27 ftpclient.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver2.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver3.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver4.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver5.txt
-rw-rw-r--  1 talkit talkit        35 Dec 30 00:27 ftpserver.txt
drwx------  3 talkit talkit      4096 Dec 25 00:21 .gnupg
-rw-------  1 talkit talkit        35 Dec 29 06:34 .lesshst
drwxr-xr-x  3 talkit talkit      4096 Dec 25 00:21 .local
-rw-rw-r--  1 talkit talkit 338882654 Dec 21 05:26 mattermost-7.5.2-linux-amd64.tar.gz
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Music
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 notemptydir
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Pictures
-rw-r--r--  1 talkit talkit       807 Dec 25 00:12 .profile
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Public
-rw-r--r--  1 talkit talkit         0 Dec 28 06:43 .sudo_as_admin_successful
drwxrwxr-x  2 talkit talkit      4096 Dec 30 00:37 temp
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Templates
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Videos

위와 같이 나옵니다. 앞에 있었던 ftpserver1.txt 가 사라졌습니다. 

이번에는 *를 이용해서 지워 보겠습니다. 그래서 조금 더 파일을 만들어 보겠습니다. 

cp ftpserver.txt ftpserver11.txt
cp ftpserver.txt ftpserver12.txt
cp ftpserver.txt ftpserver13.txt
cp ftpserver.txt ftpserver14.txt
cp ftpserver.txt ftpserver15.txt
cp ftpserver.txt ftpserver21.txt
cp ftpserver.txt ftpserver22.txt
cp ftpserver.txt ftpserver23.txt
cp ftpserver.txt ftpserver24.txt
cp ftpserver.txt ftpserver25.txt
cp ftpserver.txt ftpserver31.txt
cp ftpserver.txt ftpserver32.txt
cp ftpserver.txt ftpserver33.txt
cp ftpserver.txt ftpserver34.txt
cp ftpserver.txt ftpserver35.txt

이정도 해보겠습니다. ^^

rm ftpserver2*.txt

위와 같이 명령어를 내려 보십시오.

ls -al
total 331124
drwxr-xr-x 17 talkit talkit      4096 Jan  3 03:33 .
drwxr-xr-x  3 root   root        4096 Dec 25 00:12 ..
-rw-------  1 talkit talkit      4624 Jan  1 07:21 .bash_history
-rw-r--r--  1 talkit talkit       220 Dec 25 00:12 .bash_logout
-rw-r--r--  1 talkit talkit      3771 Dec 25 00:12 .bashrc
drwxrwxr-x 11 talkit talkit      4096 Dec 28 06:51 .cache
drwx------ 12 talkit talkit      4096 Dec 29 06:10 .config
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Desktop
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Documents
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Downloads
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 emptydir
-rw-r--r--  1 talkit talkit        35 Dec 30 00:27 ftpclient.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver11.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver12.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver13.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver14.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver15.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver21.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver22.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver23.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver24.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver25.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver2.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver31.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver32.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver33.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver34.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver35.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver3.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver4.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver5.txt
-rw-rw-r--  1 talkit talkit        35 Dec 30 00:27 ftpserver.txt
drwx------  3 talkit talkit      4096 Dec 25 00:21 .gnupg
-rw-------  1 talkit talkit        35 Dec 29 06:34 .lesshst
drwxr-xr-x  3 talkit talkit      4096 Dec 25 00:21 .local
-rw-rw-r--  1 talkit talkit 338882654 Dec 21 05:26 mattermost-7.5.2-linux-amd64.tar.gz
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Music
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 notemptydir
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Pictures
-rw-r--r--  1 talkit talkit       807 Dec 25 00:12 .profile
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Public
-rw-r--r--  1 talkit talkit         0 Dec 28 06:43 .sudo_as_admin_successful
drwxrwxr-x  2 talkit talkit      4096 Dec 30 00:37 temp
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Templates
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Videos
talkit@ubuntu:~$ rm ftpserver2*.txt
talkit@ubuntu:~$ ls -al
total 331100
drwxr-xr-x 17 talkit talkit      4096 Jan  3 03:33 .
drwxr-xr-x  3 root   root        4096 Dec 25 00:12 ..
-rw-------  1 talkit talkit      4624 Jan  1 07:21 .bash_history
-rw-r--r--  1 talkit talkit       220 Dec 25 00:12 .bash_logout
-rw-r--r--  1 talkit talkit      3771 Dec 25 00:12 .bashrc
drwxrwxr-x 11 talkit talkit      4096 Dec 28 06:51 .cache
drwx------ 12 talkit talkit      4096 Dec 29 06:10 .config
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Desktop
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Documents
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Downloads
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 emptydir
-rw-r--r--  1 talkit talkit        35 Dec 30 00:27 ftpclient.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver11.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver12.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver13.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver14.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver15.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver31.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver32.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver33.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver34.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver35.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver3.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver4.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver5.txt
-rw-rw-r--  1 talkit talkit        35 Dec 30 00:27 ftpserver.txt
drwx------  3 talkit talkit      4096 Dec 25 00:21 .gnupg
-rw-------  1 talkit talkit        35 Dec 29 06:34 .lesshst
drwxr-xr-x  3 talkit talkit      4096 Dec 25 00:21 .local
-rw-rw-r--  1 talkit talkit 338882654 Dec 21 05:26 mattermost-7.5.2-linux-amd64.tar.gz
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Music
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 notemptydir
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Pictures
-rw-r--r--  1 talkit talkit       807 Dec 25 00:12 .profile
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Public
-rw-r--r--  1 talkit talkit         0 Dec 28 06:43 .sudo_as_admin_successful
drwxrwxr-x  2 talkit talkit      4096 Dec 30 00:37 temp
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Templates
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Videos

실행을 하면 위와 같이 2로 시작하는 아이들이 모두 사라졌습니다. 

자 그러면, 디렉토리를 한번 지워 보겠습니다. 

아무 옵션없이요 ^^

rm emptydir

저명령어를 내렸더니 아래와 같이 나옵니다.

rm emptydir
rm: cannot remove 'emptydir': Is a directory

디렉토리여서 못지원다. ^^

cp -r  emptydir emmptydir1
cp -r  emptydir emmptydir2
cp -r  emptydir emmptydir3
cp -r  emptydir emmptydir4
cp -r  emptydir emmptydir5

빈디렉토리르 조금 늘렸습니다. 

자 저 중에서 1번을 -d 옵션을 사용해서 지워 보겠습니다. 

rm -d emptydir1

emptydir1이 없어진 모습은 아래 실행 결과에서 확인 할 수 있습니다. 

ls -al
total 331120
drwxr-xr-x 22 talkit talkit      4096 Jan  3 03:38 .
drwxr-xr-x  3 root   root        4096 Dec 25 00:12 ..
-rw-------  1 talkit talkit      4624 Jan  1 07:21 .bash_history
-rw-r--r--  1 talkit talkit       220 Dec 25 00:12 .bash_logout
-rw-r--r--  1 talkit talkit      3771 Dec 25 00:12 .bashrc
drwxrwxr-x 11 talkit talkit      4096 Dec 28 06:51 .cache
drwx------ 12 talkit talkit      4096 Dec 29 06:10 .config
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Desktop
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Documents
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Downloads
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:37 emmptydir1
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:37 emmptydir2
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:37 emmptydir3
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:37 emmptydir4
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:38 emmptydir5
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 emptydir
-rw-r--r--  1 talkit talkit        35 Dec 30 00:27 ftpclient.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver11.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver12.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver13.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver14.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver15.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver31.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver32.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver33.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver34.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver35.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver3.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver4.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver5.txt
-rw-rw-r--  1 talkit talkit        35 Dec 30 00:27 ftpserver.txt
drwx------  3 talkit talkit      4096 Dec 25 00:21 .gnupg
-rw-------  1 talkit talkit        35 Dec 29 06:34 .lesshst
drwxr-xr-x  3 talkit talkit      4096 Dec 25 00:21 .local
-rw-rw-r--  1 talkit talkit 338882654 Dec 21 05:26 mattermost-7.5.2-linux-amd64.tar.gz
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Music
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 notemptydir
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Pictures
-rw-r--r--  1 talkit talkit       807 Dec 25 00:12 .profile
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Public
-rw-r--r--  1 talkit talkit         0 Dec 28 06:43 .sudo_as_admin_successful
drwxrwxr-x  2 talkit talkit      4096 Dec 30 00:37 temp
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Templates
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Videos
talkit@ubuntu:~$ rm -d emmptydir1
talkit@ubuntu:~$ ls -al
total 331116
drwxr-xr-x 21 talkit talkit      4096 Jan  3 03:38 .
drwxr-xr-x  3 root   root        4096 Dec 25 00:12 ..
-rw-------  1 talkit talkit      4624 Jan  1 07:21 .bash_history
-rw-r--r--  1 talkit talkit       220 Dec 25 00:12 .bash_logout
-rw-r--r--  1 talkit talkit      3771 Dec 25 00:12 .bashrc
drwxrwxr-x 11 talkit talkit      4096 Dec 28 06:51 .cache
drwx------ 12 talkit talkit      4096 Dec 29 06:10 .config
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Desktop
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Documents
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Downloads
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:37 emmptydir2
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:37 emmptydir3
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:37 emmptydir4
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:38 emmptydir5
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 emptydir
-rw-r--r--  1 talkit talkit        35 Dec 30 00:27 ftpclient.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver11.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver12.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver13.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver14.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver15.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver31.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver32.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver33.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver34.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:33 ftpserver35.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver3.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver4.txt
-rw-rw-r--  1 talkit talkit        35 Jan  3 03:27 ftpserver5.txt
-rw-rw-r--  1 talkit talkit        35 Dec 30 00:27 ftpserver.txt
drwx------  3 talkit talkit      4096 Dec 25 00:21 .gnupg
-rw-------  1 talkit talkit        35 Dec 29 06:34 .lesshst
drwxr-xr-x  3 talkit talkit      4096 Dec 25 00:21 .local
-rw-rw-r--  1 talkit talkit 338882654 Dec 21 05:26 mattermost-7.5.2-linux-amd64.tar.gz
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Music
drwxrwxr-x  2 talkit talkit      4096 Jan  3 03:28 notemptydir
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Pictures
-rw-r--r--  1 talkit talkit       807 Dec 25 00:12 .profile
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Public
-rw-r--r--  1 talkit talkit         0 Dec 28 06:43 .sudo_as_admin_successful
drwxrwxr-x  2 talkit talkit      4096 Dec 30 00:37 temp
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Templates
drwxr-xr-x  2 talkit talkit      4096 Dec 25 00:21 Videos
talkit@ubuntu:~$

잘 확인해보십시오.

그러면 notempdydir을 -d를 주고 지워 보겠습니다.

cp -r notemptydir notemptydir1
cp -r notemptydir notemptydir2
rm -d notemptydir1
rm: cannot remove 'notemptydir1': Directory not empty

일부러 디렉토리를 하나 더 만들고 지워 봤습니다. 

그랬더니 이번에는 비워 있지 않은 디렉토리랍니다.

원래는 notemptydir1에 들어가서 모든 파일을 지원 다음에 한칸 위에가서 -d로 파일을 지워야 합니다. 

한번 해보면 아래와 같습니다. 

 cd notemptydir1/
talkit@ubuntu:~/notemptydir1$ ls
ftpclient.txt  ftpserver1.txt  ftpserver2.txt  ftpserver3.txt  ftpserver4.txt  ftpserver5.txt  ftpserver.txt
talkit@ubuntu:~/notemptydir1$ rm *
talkit@ubuntu:~/notemptydir1$ cd ..
talkit@ubuntu:~$ rm -d notemptydir
rm: cannot remove 'notemptydir': Directory not empty
talkit@ubuntu:~$ rm -d notemptydir1

자 보이시나요 ^^

디렉토리 이동해서 지우고, 위로 이동해서 다시 디렉토리지우고 번거럽지요.

그걸 한번 해결 해주는 없션이 -r 입니다.

rm -r notemptydir2

1번은 제가 지워 버려서 ^^ 2번을 이제 한번 지워 보겠습니다. 

 rm -rv notemptydir2
removed 'notemptydir2/ftpserver5.txt'
removed 'notemptydir2/ftpclient.txt'
removed 'notemptydir2/ftpserver2.txt'
removed 'notemptydir2/ftpserver3.txt'
removed 'notemptydir2/ftpserver.txt'
removed 'notemptydir2/ftpserver4.txt'
removed 'notemptydir2/ftpserver1.txt'
removed directory 'notemptydir2'

일부러 v 옵션을 붙여서 해봤습니다. 그랬더니 지워지는 모습이 보이고 잘 지워집니다. 

그러면 남은 옵션이 -f 입니다. 

해보겠습니다. 

-f는 보통 -i 옵션이 알리아스로 주어져 있을때 같이 사용합니다. 그런데 우분투는 -i 가 없어서 ^^

그래서 -f 옵션을 실습해 보겠습니다. 

rm -rfv notemptydir

원래 지우려고 만든 디렉토리 들이라 ^^

 rm -rfv notemptydir
removed 'notemptydir/ftpserver5.txt'
removed 'notemptydir/ftpclient.txt'
removed 'notemptydir/ftpserver2.txt'
removed 'notemptydir/ftpserver3.txt'
removed 'notemptydir/ftpserver.txt'
removed 'notemptydir/ftpserver4.txt'
removed 'notemptydir/ftpserver1.txt'
removed directory 'notemptydir'

위와 같이 잘 지워 집니다. 

처음에는 제가 처음에 가르쳐 드린 방법으로 하시는게 좀 더 안전 합니다.

디렉토리 안의 파일 먼저 지우고 

위로 이동해서 파일 지우는 방법이요

하지만, 서버 디렉토리가 또 있을수도 있으니 ^^

익숙해지시면 -rfv 옵션을 잘 사용하셔야 합니다. 

정말 위험하니까요 ^^

리눅스는 휴지통이 있는 것도 아니어서 바로 지워진다고 생각하셔야 합니다. ^^

자나깨나 rm 조심입니다. ^^

감사합니다. 

Mattermost에 빠져 있다가 다시 리눅스 글입니다. ^^

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

일단 NGINX 관련 설정을 제외하고는 거의 끝났습니다. 

이제 Email 알림을 동작하도록 해보겠습니다. 

우선 Email은 메일서버가 있어야지 구동이 가능합니다. 

그래서 SMTP서버를 구축을 할 수도 있겠지만, SMTP서버를 구축 하려면, 

1. 고정IP

2. 도메인

3. 서버설정

4. 화이트리스트 등록

등을 진행 해야해서 패스하고, 단 회사에서 SMTP 서버를 미리 운영하고 계신다면 가능 합니다. ^^

여기서는 Google SMTP 서버를 활용하는 방법을 알려드리겠습니다. 

일단 System Console에 접속합니다. 

ENVRIONMENT에서 SMTP를 클릭해서 보시면 위와 비슷하지만, 다르게 되어 있을 겁니다. 

1) SMTP서버는 smtp.gmail.com으로 변경 합니다.

2) 포트는 587로 변경 합니다. 

3) Enable SMTP Authenication 을 true 로 당연히 변경 하셔야 하구요.

4) SMTP Server Username 을 gmail 아이디를 넣습니다. 

5) SMTP Server Password는 gmail 앱 비밀번호를 넣어야 하는데 잠시 뒤에 설명해 드리겠습니다. 

6) Connection Security는 STARTTLS를 선택 합니다. 

여기까지 선택하시면 SMTP 설정은 끝났습니다. 

Gmail 초창기에는 Gmail 패스워드로 밖에서 SMTP를 이용할 수 있었는데요. 지금은

안됩니다. 

Gmail SMTP 앱 비밀번호 설정하기

https://myaccount.google.com/

 

Google 계정

Google은 사용자마다 원하는 개인정보 보호 설정이 다르다는 사실을 인지하고 있습니다. 그래서 Google 계정에서는 사용이 간편한 컨트롤과 개인정보 보호 진단 같은 도구를 제공합니다. 이런 도구

www.google.com

Google 계정에 접속을 합니다. 

접속하셔서 왼쪽에 보안을 누르십시오.

Google에 로그인을 찾으셔서 앱비밀번호를 클릭 하십시오.

그러면 계정 비밀번호를 묻습니다.

로그인 하시구요.

저는 이미 생성해서 생성했다가 지워 버릴 것입니다. ^^

앱 선택이라고 되어 있는 콤보박스에서 메일,  기기선택에서 기타(맞춤기기)를 선택하시구요. 

생성 버튼을 누릅니다.

저기 안에 노란색 상자 안에 비밀번호가 있습니다. 복사를 하십시오.

System Console의 SMTP Server Password 란에 붙여 넣으시면 됩니다. 

이게 16자리 비밀번호 이고 16자라가 다 붙어 있습니다. 복사하면 구글에서 자동으로 해주는 것 같습니다. 

그리고 저장하신 다음에 Test Connection을 눌러 보시면 저는 잘 접속이 되었습니다. 

그러면 된 것입니다. 

 알람 설정하기

이제 System Console의 SITE CONFIGURATION 메뉴에서 Notifications를 클릭하십시오.

위 그림과 같이 만들어야 합니다. 

1) Show 블라블라는  true

2) Enable Email Notification 은 true 당연하겠지만, 위의 SMTP설정을 하지 않으면 불가능 합니다. 

3) Notification Display Name 은 저는 그냥 소프트웨어 이름 + Notification으로 했습니다. 

4) Address 로 끝나는 아이들은 전부 제 개인메일로 설정 했습니다. 지인 또는 가족들하고 쓸꺼라서요 ^^

Push Notification Contents는 Full 블라블라로 선택해두었습니다. 

그리고 Save 해주시면 됩니다. 

설정을 하고 저렇게 쳤습니다. ^^

오 예쁘게 메일이 왔습니다. ^^

그런데 ,^^  Footer 부분을 조금 손을 대야 할 것 같습니다. 

저주소를 바꾸는 부분이 없네요 조금 살펴 봐야 할 것 같습니다. 

여기까지 되셨으면 잘 된겁니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

리눅스/Linux Slack 대체 프로그램 Mattermost를 설치해보자. How to install Mattermost on Ubuntu Linux https://talkit.tistory.com/695

위글에 이어서 ^^ 지금 현재 저는 성공 했습니다. 위에 보이시겠지만, ^^

https 모드로 동작하고 있습니다. 

지금 현재 조금 더 공부해야 할 것은 NGINX 프록시로 설정하는 부분입니다. 이부분은 또 성공 하면 글을 쓰도록 하고 제가 성공한 부분이 mattermost를 직접 https로 운영하는 것을 알려 드리겠습니다. 

1. 우선, 도메인을 하나 사셔야 합니다. 

요즘 저는 https://www.hosting.kr 에서 도메인을 구매하고 있습니다. 저렴 합니다. ^^

2. certbot라는 프로그램을 깔아야 합니다. 

무료 SSL 인증서인 Let's Encrypt 스크립트를 이용해서 진행할 계획이어서 certbot을 설치 해야 합니다. 

sudo apt update
sudo apt install certbot python3-certbot-nginx

NGINX는 안까셔도 될 것 같지만, ^^

저는 궁극적으로 nginx위에 https를 올리고 mattermost를 운영하고 싶어서 일단 설치 했습니다. 

3. http로 성공한 mattermost에 접속 하셔서 다음과 같이 설정 합니다. 

System Console에 접속 하셔야 하구요.

ENVIRONMENT > Web Server 항목의 내용은 변경 해야 합니다. 

1) Site URL을 https://구매한도메인:443 으로 변경하시고

2) Listen Address를 :443으로 변경 하십시오.

3) Fordward port 80 to 443 을 true로

4) Connection Security를 TLS로 변경 하십시오.

5) Use Let's Encrypt를 true로 변경하십시오.

일단 이렇게 하시면 끝입니다. 

그리고 맨 아래에 Save 버튼을 클릭 합니다. 

sudo setcap cap_net_bind_service=+ep /opt/mattermost/bin/mattermost

위 명령어를 이용해서 mattermost가 1000번대 이하의 포트에서 실행 되도록 바꾸줍니다. 

저는 이것 때문에 한동한 고생했습니다. 고생하지 마시기를 저도, 매뉴얼을 제대로 안읽는 스타일이라서 ^^

sudo systemctl restart mattermost

mattermost를 재시작 또는 시작 해주시면 됩니다. 

그러면, 설치가 잘 될 것으로 생각 됩니다. 

이게 NGINX하고 충돌이 일어 납니다. 이건 아직 해결을 못했습니다. 

NGINX가 깔려 있지 않는 곳에서 운영 가능 합니다. 

일단 NGINX를 안쓰시면 ^^ 

sudo systemctl stop nginx
sudo systemctl disable nginx

위명령어로 nginx를 끄고, 자동실행이 안되게 하십시오.

Mattermost만 운영할때이고, 다른 사이트와 같이 운영해야하면 일단 저는 http로 사용하시는 것을 권해 드려야겠네요.

NGINX 관련 설정이 성공하면 다시 글을 작성하겠습니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘은 NGINX의 SSL 설정 마지막 입니다. 

일반적으로 저는 아파치에 SSL설정을 많이 했습니다. 

그런데 무료로 한게 아니고 대부분 돈을 내고 인증서를 샀습니다. 그리고 1년에 한번 갱신하는 형태로 진행을 했습니다. 

그런데, Let's Encrypt는 무료이고 3개월에 한번씩 갱신을 해줘야 합니다. 

 Crontab의 사용법

오늘은 간단한 사용법을 알려 드리고, Crontab 만으로 다른 글을 하나 더 적도록 하겠습니다. 

crontab에 스케쥴을 등록해보자. 

sudo crontab -e

음 위 명령어를 입력 합니다. 

 sudo crontab -e
[sudo] password for talkit:
no crontab for root - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.tiny
  3. /bin/ed

Choose 1-3 [1]:

crontab 을 처음 수행하면 무슨 편집기로 편집 할꺼냐고 묻습니다. 

저희는 vi를 쓸줄 안다고 생각하고 ^^

2번을 선택 합니다. ^^

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
~
~
~
~

위와 같이 나올껍니다. 

vi는 계속 알려 드려야 하는데 일단 

:$를 입력하시고 엔터 치십시오

그러면 맨 마지막줄로 갈껍니다. 

그리고 o 키를 누르신 다음

0 5 * * * /usr/bin/certbot renew --quiet

요렇게 해주면 인증서 만료일이 30일이내면 자동으로 매일 새벽 5시에 인증서를 갱신합니다. 자동 갱신 후에는 다시 30일이 남아야 갱신을 하겠죠 ^^

그런데, 여기서 힌트를 하나 얻어야 합니다. 

저 같은경우는 늘 컴퓨터를 켜두는 편이긴 한데 켜두질 않는 경우는 수동으로 하면 되겠지요 ^^

수동 재 갱신도 

/usr/bin/certbot renew

이렇게 해주면 될 것 같습니다. ^^

글을 적을 꺼리가 많아져서 좋네요 ^^

오늘은 여기까지 하구요.

또 다음 글에서 뵙겠습니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

NGINX 관련 문서들을 열심히 적고 있습니다. 

오늘은 위 그림에서 보이는 Not secure를 해결하고자 합니다. 

선행과정

리눅스 설치하기

리눅스/Linux VMWARE에 우분투/Ubuntu 20.04 설치하기/Install https://talkit.tistory.com/677

리눅스/Linux VMWARE에 우분투/Ubuntu 18.04 설치하기/Install https://talkit.tistory.com/637

위두 글을 이용해서 VMWARE에 리눅스를 설치 하십시오.

NGINX 설치하기 

리눅스/Linux 우분투에 NGINX Web server 설치하기 How to install NGINX Web server on Ubuntu Linux.  https://talkit.tistory.com/700 

위글을 참고 하시면 됩니다. 

도메인 이름 구매하기

https://www.hosting.kr 

 

글로벌 IT 파트너 - 호스팅케이알(HK)

KISA 고객만족도 최다 선정, 도메인 최저가 제공, 기업/공공도메인, 도메인연결/웹호스팅 무료, 서버, 아마존클라우드(AWS), G Suite, 홈페이지제작 1644-7378

www.hosting.kr

요즘 저기가 도메인이 저렴 한 것 같습니다. 

저는 어제 도메인을 하나 구매 했습니다. ^^

SSL이 IP(아이이) 기반으로 인증이 안되기 때문에 도메인을 구매 하셔야 합니다. 

NGINX 서버블락(Server Block) 설정

리눅스/Linux NGINX 웹서버 설정하기 How to configure NGINX Documents Files.  https://talkit.tistory.com/701

제 글을 계속 읽고 계신다면, 위 글이 서버 블락에 대해서 설명하고 있습니다. 

example.com 대신에 구매하신 도메인 관련 서버블락으로 만드시면 됙, default를 지우셨듯이 example.com 파일을 지우고 새로운 파일을 넣으시면 됩니다. ^^

그러면 이제 실제로 우리가 하고자는 SSL 설정을 시작 해보겠습니다. 

Let's Encrypt를 통한 SSL 설정하기

Certbot를 설치 합니다. 

sudo apt update

습관적으로 계속 한다고 생각 하시면 되구요.

sudo apt install certbot python3-certbot-nginx

서트봇 관련 패키지와 플러그인을 설치 합니다. 

저는 설치가 잘되었습니다. 이번에는 너무 길이서 ^^

server_name example.com www.example.com;

서버네임을 변경하는 과정인데 저는 도메인을 하나 따서 진행 합니다.  example.com 대신에 제 실제 도메인을 넣었습니다. 

여러분들도 실제로 구매하신 도메인을 넣어셔야 합니다. 

혹시 DNS 설정과 관련된 문제는 제가 다른 글에서 한번 써보겠습니다. 

방화벽 설정

이번에도 생략 합니다. ^^

SSL/TLS 인증서 획득하기

sudo certbot --nginx -d example.com -d www.example.com
 sudo certbot --nginx -d example.com -d www.example.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for example.com
Waiting for verification...
Challenge failed for domain example.com
http-01 challenge for example.com
Cleaning up challenges
Some challenges have failed.

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: example.com
   Type:   connection
   Detail: 공인아이피: Fetching
   http://example.com/.well-known/acme-challenge/f8kAgZFm0jvoMhu3mbtN5F7IS7B7xcXupFP1XN7C-NU:
   Timeout during connect (likely firewall problem)

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.

저는 집에 있는 컴픀터에 SSL인증 중이라서 ^^ 오류가 나네요 T.T 제가 보안 때문에  몇가지 검사를 위해서 서버에 접속을 했는데 접속이 안된답니다. ^^

그래서 저는 IP타임 공유기의 설정을 변경해서 다시 아래 명령어를 수행 했습니다. 

 

 sudo systemctl restart nginx
talkit@ubuntu:~$ sudo certbot --nginx -d example.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/example.com

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2023-04-01. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

위와 같이 성공 했습니다. 

오 ^^

오 저 앞에 Not secure가 없어졌습니다. ^^

이번 글은 여기까지 하고, 다음글에서는  Let's Encrypt의 갱신 자동화에 대해서 글을 또하나 적어보고, 또한 도메인 구매와 도메인 설정(DNS)에 관해서 알아보겠습니다. 

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

리눅스/Linux 우분투에 NGINX Web server 설치하기 How to install NGINX Web server on Ubuntu Linux. https://talkit.tistory.com/700

앗 지난 번 글이 블로그에 700번째 글이었네요 ^^

요즘 블로깅을 열심히하고 있습니다.

NGINX 설정파일 위치

/etc/nginx/sites-available

우분투의 경우 nginx의 설정파일을 저기 들어 있습니다.

sudo vi /etc/nginx/sites-available/default

기본적으로 default라는 파일이 설치하면 존재 합니다.

그래서 저도 한번 열어 보겠습니다.

# Default server configuration
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
}

일단 SSL이라든지 여러가지 설정이 주석으로 정의 되어 있습니다만, 주석부분은 대부분 지워 버리면 실제로 위와 같은 결과만 나옵니다. ^^

default 서버는 80번 포트에서 대기 중이구요. /var/www/html 폴더에 html 파일이 있습니다.

그리고 시작 파일은 index.html, index.htm, index.nginx-debian.html 이 시작 파일 입니다.

default를 없애고, example를 만들어 보도록 하겠습니다. 저는 앞으로 여기서 mattermost를 만들어야겠지요 ^^ 아닌가 mattermost는 나중에 ^^

sudo mkdir /var/www/example

example 디렉토리를 웹 홈에 만들구요.

sudo vi /var/www/example/index.html

index.html 파일을 생성 합니다. 

리눅스/Linux vi/vim NIX에서 가장 유명한 텍스트 편집기 - 글쓰기. One of the best text editor on NIX fields. - Writing https://talkit.tistory.com/699

위 글을 보시면 vi로 글쓰는 방법이 나와 있습니다. ^^ 

<html>
	<body>
	NGINX 테스트 웹페이지에 오신 것을 환영합니다.
	<body>
</html>

위 코드를 index.html에 붙여 넣으십시오. 저장하고 나오시면 됩니다. 

:wq 안 잃어버리셨죠 ^^

sudo vi /etc/nginx/sites-available/example.com

example.com 블락을 만들기위해서 파일을 하나 만들겠습니다. 

server {
listen 80;
root /var/www/example;
index index.html;
server_name 127.0.0.1;
}

위 내용을 붙여 넣으시고, 저장 합니다. 

sudo rm -f /etc/nginx/sites-enabled/default

sites-enabled에서 default 링크를 삭제 합니다. 

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled

음 example.com을 sites-enabled 폴더에 링크를 걸어 줍니다. 

sudo systemctl restart nginx

nginx를 재시작해 줍니다. 

sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2023-01-01 00:30:21 PST; 10s ago
       Docs: man:nginx(8)
    Process: 3211 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 3212 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 3213 (nginx)
      Tasks: 17 (limit: 19071)
     Memory: 13.6M
     CGroup: /system.slice/nginx.service
             ├─3213 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─3214 nginx: worker process
             ├─3215 nginx: worker process
             ├─3216 nginx: worker process
             ├─3217 nginx: worker process
             ├─3218 nginx: worker process
             ├─3219 nginx: worker process
             ├─3220 nginx: worker process
             ├─3221 nginx: worker process
             ├─3222 nginx: worker process
             ├─3223 nginx: worker process
             ├─3224 nginx: worker process
             ├─3225 nginx: worker process
             ├─3226 nginx: worker process
             ├─3227 nginx: worker process
             ├─3228 nginx: worker process
             └─3229 nginx: worker process

Jan 01 00:30:21 ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
Jan 01 00:30:21 ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.

재시작 했으면 상태도 한번 확인해주시고 ^^

브라우져에서 확인을 하면

저같은 경우는 위와 같이 나옵니다. ^^

잘 만들어서 잘 구동이 되고 있네요 ^^

오늘은 여기까지 하겠습니다. 제 목표는 저기 Not secure 없애는 거여서  다음글 또는 그 다음 글에서 아마 가능 할 것으로 생각 됩니다. ^^

감사합니다.

 

반응형
반응형

안녕하세요. 가야태자 @talkit 입니다.

궁극적으로 하려고 하는 것은 Mattermost라는 Slack 대체 프로그램에 TLS 기반의 SSL을 도입하게 하는 것입니다.

그전에 NGINX를 잘 몰라서 설치해보고, SSL을 어떻게 구성하는지를 좀 알아보고 다시 Mattermost를 손을 대야 할 것 같습니다.

웹서버는?

웹서버는 간단하게 정의하자면 웹을 서비스하는 서버 입니다. 저희가 http 또는 https로 시작하는 주소를 입력하면 브라우져에서 여러 화면들을 확인하게 되는데, 그 주소에 웹서버가 있기 때문입니다.

그런데, 저는 Apache Web Server 주로 사용하는 사람입니다. 하지만, 그렇다고, 블로그에 아파치를 설치하는 방법을 적은 적이 없네요 ^^ 앞으로는 적도록 하겠습니다.

https://httpd.apache.org/

아파치 웹서버는 위 URL에서 정보를 확인하고 다운로드 할 수 있습니다.

물론 Ubuntu에서 기본 패키지로 제공하기 때문에 금방 설치할 수 있습니다.

이번에 적으려고 하는 NGINX도 웹서버의 일종입니다. Apache 보다는 좀 더 뒤에 나온 제품이어서 좀 더 신선한 기능들을 제공하긴 하지만, 서로 경쟁 관계여서 요즘은 NGINX가 좀 더 점유율을 가져가고 있다고 알고 있습니다. ^^ 서로를 보고 보완을 하고 있는 것으로 알고 있습니다.

W3Techs - extensive and reliable web technology surveys 출처 :&nbsp;https://w3techs.com/

위에서 보시다 싶이 NGIX가 1.1% 정도 우위를 점유하고 있습니다.

NGINX의 공식 웹사이트는 https://nginx.org/en/ 에서 확인할 수 있습니다.

우리는 우분투 리눅스에 오늘 NGINX를 설치할 것입니다. ^^

우분투 리눅스 설치.

리눅스/Linux VMWARE에 우분투/Ubuntu 20.04 설치하기/Install https://talkit.tistory.com/677

리눅스/Linux VMWARE에 우분투/Ubuntu 18.04 설치하기/Install https://talkit.tistory.com/637

위두 글을 이용해서 VMWARE에 리눅스를 설치 하십시오.

Putty 로 리눅스에 접속하기

[무료소프트웨어] 무료 보안쉘 클라이언트 PuTTY 최신 버전 다운로드 및 설치하기. How to Install the latest version PuTTY that is free Secure Shell Client. https://talkit.tistory.com/674

리눅스/Linux 오라클 VPS에 접속해보자. How to connect to free VPS on Oracle Cloud. https://talkit.tistory.com/673

리눅스/Linux SSH를 통해서 VMWARE Linux에 접속해보자. How to connect to Linux on VMWARE via SSH https://talkit.tistory.com/688

리눅스에 접속하시는 방법은 위 글들에서 설명해 두었습니다. 참고해서 접속하시면 될 것 같습니다.

리눅스에 NGINX 설치

저는 계속 Putty러 접속을 합니다.

여러분들이 VMWARE에 우분투를 설치하셨거나, 우분투 리눅스 VPS를 하나 가지고 계시거나 하다는 전제 하에서 이 글은 시작 하고 있습니다.

리눅스에 접속하기

서버에 우선 접속하십시오.

Putty를 여시고 저기 주소에 입력하시거나 아래에 있는 저장된 세션에서 선택해서 접속 하시면 됩니다.

login as: talkit
talkit@192.168.0.27's password:
Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.15.0-56-generic x86_64)

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

0 updates can be applied immediately.

Your Hardware Enablement Stack (HWE) is supported until April 2025.
Last login: Thu Dec 29 23:51:08 2022 from 192.168.0.3
talkit@ubuntu:~$ ps -ef | grep nginx
talkit      2021    2007  0 23:50 pts/0    00:00:00 grep --color=auto nginx
talkit@ubuntu:~$

저는 잘 접속이 되었구요.

접속해서 ps로 nginx가 없는 것 까지 확인 했습니다. 제가 Mattermost를 설치하면서 nginx도 설치 했거든요 ^^

nginx 설치 이전으로 VMWARE파일을 돌려 놨습니다.

NGINX 설치하기

그 다음 과정을 계속 진행 하겠습니다.

sudo apt update

위 명령어는 옵셔널 이긴 하지만 한번씩 해주는 것이 좋습니다.

sudo apt install nginx

NGINX 설치는 정말 간단합니다. ^^

 sudo apt install nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream
  nginx-common nginx-core
Suggested packages:
  fcgiwrap nginx-doc
The following NEW packages will be installed:
  libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream
  nginx nginx-common nginx-core
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 605 kB of archives.
After this operation, 2,141 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 nginx-common all 1.18.0-0ubuntu1.4                                                                                                                                                                                                                        [37.7 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libnginx-mod-http-image-filter amd6                                                                                                                                                                                                                       4 1.18.0-0ubuntu1.4 [14.8 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libnginx-mod-http-xslt-filter amd64                                                                                                                                                                                                                        1.18.0-0ubuntu1.4 [13.0 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libnginx-mod-mail amd64 1.18.0-0ubu                                                                                                                                                                                                                       ntu1.4 [42.9 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libnginx-mod-stream amd64 1.18.0-0u                                                                                                                                                                                                                       buntu1.4 [67.4 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 nginx-core amd64 1.18.0-0ubuntu1.4                                                                                                                                                                                                                        [425 kB]
Get:7 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 nginx all 1.18.0-0ubuntu1.4 [3,620                                                                                                                                                                                                                        B]
Fetched 605 kB in 2s (293 kB/s)
Preconfiguring packages ...
Selecting previously unselected package nginx-common.
(Reading database ... 160070 files and directories currently installed.)
Preparing to unpack .../0-nginx-common_1.18.0-0ubuntu1.4_all.deb ...
Unpacking nginx-common (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package libnginx-mod-http-image-filter.
Preparing to unpack .../1-libnginx-mod-http-image-filter_1.18.0-0ubuntu1.4_amd64.deb ...
Unpacking libnginx-mod-http-image-filter (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package libnginx-mod-http-xslt-filter.
Preparing to unpack .../2-libnginx-mod-http-xslt-filter_1.18.0-0ubuntu1.4_amd64.deb ...
Unpacking libnginx-mod-http-xslt-filter (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package libnginx-mod-mail.
Preparing to unpack .../3-libnginx-mod-mail_1.18.0-0ubuntu1.4_amd64.deb ...
Unpacking libnginx-mod-mail (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package libnginx-mod-stream.
Preparing to unpack .../4-libnginx-mod-stream_1.18.0-0ubuntu1.4_amd64.deb ...
Unpacking libnginx-mod-stream (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package nginx-core.
Preparing to unpack .../5-nginx-core_1.18.0-0ubuntu1.4_amd64.deb ...
Unpacking nginx-core (1.18.0-0ubuntu1.4) ...
Selecting previously unselected package nginx.
Preparing to unpack .../6-nginx_1.18.0-0ubuntu1.4_all.deb ...
Unpacking nginx (1.18.0-0ubuntu1.4) ...
Setting up nginx-common (1.18.0-0ubuntu1.4) ...
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /lib/systemd/system/nginx.                                                                                                                                                                                                                       service.
Setting up libnginx-mod-http-xslt-filter (1.18.0-0ubuntu1.4) ...
Setting up libnginx-mod-mail (1.18.0-0ubuntu1.4) ...
Setting up libnginx-mod-http-image-filter (1.18.0-0ubuntu1.4) ...
Setting up libnginx-mod-stream (1.18.0-0ubuntu1.4) ...
Setting up nginx-core (1.18.0-0ubuntu1.4) ...
Setting up nginx (1.18.0-0ubuntu1.4) ...
Processing triggers for systemd (245.4-4ubuntu3.19) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for ufw (0.36-6ubuntu1) ...
talkit@ubuntu:~$

중간에 Y 한번만 눌러 주시면 됩니다.

 sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-12-31 23:56:28 PST; 51s ago
       Docs: man:nginx(8)
   Main PID: 2701 (nginx)
      Tasks: 17 (limit: 19071)
     Memory: 13.8M
     CGroup: /system.slice/nginx.service
             ├─2701 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─2702 nginx: worker process
             ├─2703 nginx: worker process
             ├─2704 nginx: worker process
             ├─2705 nginx: worker process
             ├─2706 nginx: worker process
             ├─2707 nginx: worker process
             ├─2708 nginx: worker process
             ├─2709 nginx: worker process
             ├─2710 nginx: worker process
             ├─2711 nginx: worker process
             ├─2712 nginx: worker process
             ├─2713 nginx: worker process
             ├─2714 nginx: worker process
             ├─2715 nginx: worker process
             ├─2716 nginx: worker process
             └─2717 nginx: worker process

Dec 31 23:56:28 ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 31 23:56:28 ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.

리눅스 서비스를 확인하면 이미 nginx가 활성화 되어 있는 상태 입니다. ^^

방화벽 설정 - 생략

방화벽 관련 설정도 있지만 방화벽 설정은 안해서 ^^

웹서버에 브라우져로 접속해 보기

웹서버가 켜져 있는걸 확인 했으니까 브라우져로 접속을 해보겠습니다.

Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

잘 설치 되었다고 뜨네요 ^^

기본적으로 여기까지하면 웹서버가 설치 되었습니다. 

다음에는 웹서버의 웹 문서들을 어디에 놓을 건지에 대해서 말씀 드리겠습니다. 

감사합니다. 

 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

vi/vim 관련 글을 안쓴줄 알았더니 ^^ 이제 3년 전이네요 20년도에 vi 관련글을 적었습니다. 

그것도 열고 닫는 것만요 ^^

리눅스/Linux 편집기를 사용해보자 vi/vim 열고(Open) 닫기(Close) https://talkit.tistory.com/591

해당글은 위글을 참조하시면 도움이 될껍니다. 다시 한번 해보도록 하겠습니다. 

vi를 전문적으로 다룰 것이 아니어서 일단, 파일을 열고 또는 새파일을 만들고, 저장하고, 편집하기 위한 명령어들을 알려 드리겠습니다. 

일반적으로 윈도우즈의 편집기들은 문장의 줄이나 칸을 이동할때 화살표키를 이용합니다.

그런데, vi는 화살표가 되는 버전도 있지만 전통 적으로는 다른 키를 이용 합니다. 

k - 위로 이동(↑)
j - 아래로 이동(↓) 
l - 우측으로 이동(→)
h - 좌측으로 이동(←)

화살표로도 가능 합니다. 그런데 사용하시다 보면, hjkl의 조합이 얼마나 편한지 느껴 지실 겁니다. ^^

이유는 화살표키로 가지 않아도 바로 이동할 수 있기 때문입니다. 

vi 모드를 익히셔야 합니다. 

여러가지 모드가 있는 것으로 알고 있는데 저는 두가지만 설명 드리겠습니다. 

Esc 모드와 INSERT 모드 입니다. 

Esc 모드 - 모든 작업을 하다가 <Esc>키를 누르면 Esc 모드로 이동한다. 검색이나, 이동등을 위한 모드 이다.
INSERT 모드 - <i><o><O>키 중 하나를 누르면 사용가능한 편집 모드 입니다. 
             <i> - 입력한 자리 부터 편집을 할 수 있다. 
             <o> - 입력한 자리 한줄 아래에 새로운 줄을 만들고 편집을 할 수 있다. 
             <O> - 입력한 자리 한줄 위에 새로운 줄을 만들고 편집을 할 수 있다.
             
언제든지 <Esc>키를 누르면 Esc 모드로 이동한다.

Esc 모드에서 제가 사용하는 법을 바로 보여 드리겠습니다. 

위 동영상에서 잘 보실 수 있을 겁니다. 그리고 실제로 해보시기를 권합니다. ^^

글의 주제가 글을 쓰는 주제라서 이제 글쓰기를 알려 드리겠습니다. 

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

자 이제 실제로 한번 vi 로 입력해 보겠습니다. 내용은 애국가 1절 위의 내용을 입력하시는 걸로 하겠습니다. ^^

vi 애국가.txt

애국가 파일을 만들겠습니다. 

하면 빈 파일의 애국가.txt가 만들어지고 Esc 모드로 있을 겁니다. 

우리는 INSERT 모드로 변경을 해야 합니다. 

위에서 <i>를 누르면 현재 위치에서 편집을 할 수 있는 모드로 간다고 했습니다. 

동상이 잘 안만들어 지네요 T.T 위에는 잘 만들어 졌는데 말이죠.

그럼 해보겠습니다. 

일단 애국가.txt가 없다고 생각하고

위 명령어를 리눅스 쉘상에서 내려 주십시오.

<i>키를 입력하고 애국가 1절을 입력해보십시오.

위의 글을 복사하셔서 <i> 키 누르고 마우스 오른쪽 키를 누르셔도 됩니다. 

연습해보신다고 생각하셔 하나하나 치셔도 됩니다. 

방법은 어떻게든 애국가 1절을 모두 입력해 보십시오 ^^

그리고, 모두 입력 하셨으면 Esc 모드로 빠져 나가기위해서 <Esc>키를 누르시고 

:wq 를 입력합니다. 

제가 가끔 설명하면서 쳤던 그 명령어입니다. 

w가 쓰기 q가 문서 나가기 입니다. ^^

그러면 최초로(?) 리눅스에서 문서를 하나 만드셨네요. 물론 최초는 아시겠지만요.

이제 만드셨으면, 2절을 입력해 보겠습니다. 추가로요 ^^

남산 위에 저 소나무 철갑을 두른 듯
바람 서리 불변함은 우리 기상일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

2절을 vi에서 입력하기 위해서 또 여셔야겠지요 ^^

vi 애국가.txt

명령어는 동일 합니다. 

다른점은 여셨을때 비어 있었다면, 지금은 1절이 입력 되어 있습니다. 

자 화살표 키로 입력 하셔도 되겠지만 hjkl을 이용해서 맨 마지막줄로 이동해 주십시오 

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세
~
~
~
~
~

아까 잘 따라 하셨으면 vi로 열었을때 저정도가 나올껍니다. 내용은 솔직히 애국가 1절이 아니어도 상관 없습니다. 

j 4번 누르셨나요?

방법은 두가지 입니다. i를 누르시고 화살표로 맨 마지막으로 이동하신 다음에 엔터를 친다. 이게 첫번째 방법이고

소문자 o키를 누른다가 두번째 방법입니다. 왜냐면 저기 보전하세 다음 줄에 ^^ 넣어야 하니까요.

한글일때는 당황하지 마시고 한영키를 누르셔서 o키를 누르시면 됩니다. ^^

엔터를 한번 치겠습니다. 1절과 구분하기 위해서 요

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

남산 위에 저 소나무 철갑을 두른 듯
바람 서리 불변함은 우리 기상일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세
~
~
~
~
~
~
~

아마도 여러분의 화면에는 이 비슷한 화면이 떠 있을 겁니다. 

그럼 이제 저장하고 나가 보십시오.

<Esc>  누르고, :wq 누르셨지요?

이 기상과 이 맘으로 충성을 다하여
괴로우나 즐거우나 나라 사랑하세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

이번에는 동일한 과정을 거쳐서 4절을 입력해보겠습니다. 

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

남산 위에 저 소나무 철갑을 두른 듯
바람 서리 불변함은 우리 기상일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

이 기상과 이 맘으로 충성을 다하여
괴로우나 즐거우나 나라 사랑하세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세
~
~
~
~
~
~
~
~
~

설명은 일부러 안드렸습니다. 잘 따라 하셨을 꺼라고 생각 됩니다. ^^

오늘 위에서 설명 드린 것은 다 설명 드리고 끝내려고 합니다. ^^

제가 일부러 이렇게 했습니다. ^^

1절

2절

4절

이 있네요 앗 3절을 입력을 안했습니다. 

중간에 끼워 넣으면 되지요 너무 걱정 안하셔도 됩니다. ^^

가을 하늘 공활한데 높고 구름 없이
밝은 달은 우리 가슴 일편단심일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

자 어떻게 해야 할까요?

방법은 여기서도 2가지 정도가 있습니다. 

첫번째로 hjkl을 잘 이용해서 2절의 마지막 보전하세 가 있는 줄로 갑니다. 

그리고 소문자 o키를 누르시면 됩니다. ^^ 이게 첫번째구요.

여기서 대문자 O도 사용하셔야지요 ^^

2절의 보전하세 다음줄로 갑니다. ^^ 빈줄이죠 ^^

빈줄에서 대문자 O를 눌러 보십시오.

비디오 녹화를 잘 익혀서 ^^ 이런건 비디로로 보여 드리면 좋을 것 같습니다. ^^

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

남산 위에 저 소나무 철갑을 두른 듯
바람 서리 불변함은 우리 기상일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

가을 하늘 공활한데 높고 구름 없이
밝은 달은 우리 가슴 일편단심일세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세

이 기상과 이 맘으로 충성을 다하여
괴로우나 즐거우나 나라 사랑하세
무궁화 삼천리 화려강산
대한 사람 대한으로 길이 보전하세
~
~
~
~
~
~
~

여기까지 잘 따라 하셨을 것으로 믿습니다. 

오늘은 글쓰기 였고, 입력만 있는 글 쓰기였습니다. 다음 vi에서는 글을 수정하는 방법을 알려드리겠습니다. 

지금도 일종의 수정을 하셨지만, 줄을 지우거나, ^^ 글자를 지우기도 해야 하지 않겠습니까 ^^

감사합니다. 

 

반응형
반응형

두서 없이 요즘 리눅스에 관한 글을 조금식 작성하고 있습니다. 

 

지난 번 글에서는 리눅스를 윈도우에 설치하는 법을 적었습니다. 

 

오늘은 리눅스 편집기에 대해서 적도록 하겟습니다. 

 

리눅스에는 정말 강력한 vim 이라는 편집기가 있습니다. 

 

vim 은 상용 편집기인 vi를 리눅스에서 무료로 사용할 수 있도록 구현한 편집기 입니다. 

 

지금은 도스, 윈도우즈용도 나와 있습니다. 

리눅스에서는 vi도 vim이 열립니다. ^^

vi [파일명]

vi로 파일을 열어 보시려면 위와 같이 하면 됩니다. 파일명이 옵셔널인 이유는 처음 파일을 만드실때는 파일명 없이도 열 수 있습니다. 한번 해보겠습니다. 

vi ftpserver.txt
FTP 전송을 위한 파일 준비

이렇게 내용이 잘 나옵니다. ^^

이제는 닫아 보겠습니다. 

<Esc>키를 습관적으로 한번 누르십시오.

열자마자 닫는거라 안여서도 되지만요 ^^

:q

아무 수정도 안하셨다면 위와 같이 하면 빠져 나옵니다. 

:q!

빠저나오는데 뭔가 수정 된게 있어서 안된다고 하면 !를 하나 더 넣으십시오 ^^

그리고 수정 내용을 저장 하셔야 되면

:wq

w 명령어를 넣으시면 됩니다. 

오늘은 진짜로 열고 다는 법만 알려 드렸습니다. ^^

-R                   Readonly mode (like "view")

vi의 옵션중에 -R 옵션이나 명령어 중에 view는 그냥 문서를 열어서 편집이 안되도록 하는 것입니다. 

알아두면 좋을 것 같습니다. 

vi -R ftpserver1.txt
FTP 전송을 위한 파일 준비
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"ftpserver.txt" [readonly] 1 line, 35 characters

실제로 열어 보면 위와 같이 나옵니다. readonly 보이시죠 ^^

view ftpserver.txt
FTP 전송을 위한 파일 준비
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"ftpserver.txt" [readonly] 1L, 35C

view로 열어도 동일한 효과 입니다.

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘은 리눅스의 백그라운드 서비스에 대해서 알아 보겠습니다. 

위 그림은 리눅스가 아니라 ^^ 윈도우즈 서비스 관리 콘솔입니다. ^^

리눅스에도 저런 아이가 있을까 해서 찾아 봤는데 ^^ 없네요 T.T 

그래서 리눅스 서비스를 서비스를 제공하는 systemd 라는 프로그램이 있습니다. 

그리고, systemd의 서비스를 관리할 수 있는 systemctl 이라는 프로그램이 있습니다. 

여기서 서비스는 여러분이 웹서버를 설치했을때 독립적인 데몬으로 관리할 수도 있겠지만, 리눅스가 관리하는 서비스로 만들수도 있습니다. 

요즘 제가 열심히 깔고 있는 MySQL 서버도 서비스로 운영할 수 있습니다. 

ubuntu에서는 서비스로 올려 두었습니다. 

systemctl start|stop|restart|status|enable|disable 서비스명[.service]

이렇게 관리할 수 있습니다. 

start는 서비스를 시작 합니다. 

stop은 서비스를 종료합니다. 

restart는 서비스를 재시작 합니다. 

status는 서비스의 상태를 확인해 줍니다. 

enable은 서비스가 서버나 컴퓨터가 재시작할때 자동으로 시작하게 해줍니다. 

disable는 서비스가 서버나 컴퓨터가 재시작할때 자동으로 시작 안됩니다. ^^

매뉴얼을 보시면 더다양한 명령어가 있지만 주로 사용하는 명령어는 저정도가 되겠습니다. 

지난 번에 설치한 mattermost 서비스를 종료해 보겠습니다. 

sudo systemctl stop mattermost

저렇게 하면 꺼집니다. ^^

sudo systemctl status mattermost

현재 상태를 보실 수 있습니다. 

 sudo systemctl stop mattermost
[sudo] password for talkit:
talkit@ubuntu:~$ sudo systemctl mattermost
Unknown operation mattermost.
talkit@ubuntu:~$ sudo systemctl status mattermost
● mattermost.service - Mattermost
     Loaded: loaded (/lib/systemd/system/mattermost.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Fri 2022-12-30 19:33:44 PST; 1min 17s ago
    Process: 1430 ExecStart=/opt/mattermost/bin/mattermost (code=exited, status=0/SUCCESS)
   Main PID: 1430 (code=exited, status=0/SUCCESS)

Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.686 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"com.mattermost.nps","wrapped_extras":"pathplugins/com.mattermost.nps/server/dist/plugin-linux-amd64pid1709"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.686 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"com.github.matterpoll.matterpoll","wrapped_extras":"pathplugins/com.github.matterpoll.matterpoll/server/dist/plugin-linux-amd64pid166>
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.686 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"playbooks","wrapped_extras":"pathplugins/playbooks/server/dist/plugin-linux-amd64pid1749"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.687 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"com.mattermost.apps","wrapped_extras":"pathplugins/com.mattermost.apps/server/dist/plugin-linux-amd64pid1724"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.687 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"focalboard","wrapped_extras":"pathplugins/focalboard/server/dist/plugin-linux-amd64pid1762"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.690 -08:00","level":"info","msg":"plugin process exited","caller":"plugin/hclog_adapter.go:61","plugin_id":"com.mattermost.calls","wrapped_extras":"pathplugins/com.mattermost.calls/server/dist/plugin-linux-amd64pid1733"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.690 -08:00","level":"info","msg":"stopping websocket hub connections","caller":"platform/web_hub.go:121"}
Dec 30 19:33:44 ubuntu mattermost[1430]: {"timestamp":"2022-12-30 19:33:44.697 -08:00","level":"info","msg":"Server stopped","caller":"app/server.go:764"}
Dec 30 19:33:44 ubuntu systemd[1]: mattermost.service: Succeeded.
Dec 30 19:33:44 ubuntu systemd[1]: Stopped Mattermost.

결과는 위와 같이 나오네요. Active inactive로 나옵니다. 

sudo systemctl start masttermost

서버를 켜고 다시 실행해보면요.

 sudo systemctl start mattermost
talkit@ubuntu:~$ sudo systemctl status mattermost
● mattermost.service - Mattermost
     Loaded: loaded (/lib/systemd/system/mattermost.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-12-30 19:36:10 PST; 7s ago
   Main PID: 2059 (mattermost)
      Tasks: 109 (limit: 19071)
     Memory: 545.1M
     CGroup: /system.slice/mattermost.service
             ├─2059 /opt/mattermost/bin/mattermost
             ├─2086 plugins/com.mattermost.plugin-todo/server/dist/plugin-linux-amd64
             ├─2097 plugins/com.github.matterpoll.matterpoll/server/dist/plugin-linux-amd64
             ├─2110 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
             ├─2116 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64
             ├─2125 plugins/com.mattermost.apps/server/dist/plugin-linux-amd64
             ├─2137 plugins/com.mattermost.calls/server/dist/plugin-linux-amd64
             ├─2148 plugins/playbooks/server/dist/plugin-linux-amd64
             └─2161 plugins/focalboard/server/dist/plugin-linux-amd64

Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.333 -08:00","level":"info","msg":"Initialized notification backend","caller":"app/plugin_api.go:973","plugin_id":"focalboard","name":"notifyMentions"}
Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.333 -08:00","level":"info","msg":"Initialized notification backend","caller":"app/plugin_api.go:973","plugin_id":"focalboard","name":"notifySubscriptions"}
Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.334 -08:00","level":"info","msg":"Initialized notification backend","caller":"app/plugin_api.go:973","plugin_id":"focalboard","name":"notifyLogger"}
Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.341 -08:00","level":"info","msg":"FocalBoard Server","caller":"app/plugin_api.go:973","plugin_id":"focalboard","version":"7.5.4","edition":"plugin","build_number":"3697449214","build_date":"\"Wed Dec 14 18:04:06 UTC 2022\"","build_hash":"414>
Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.341 -08:00","level":"info","msg":"Server.Start","caller":"app/plugin_api.go:973","plugin_id":"focalboard"}
Dec 30 19:36:09 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:09.350 -08:00","level":"info","msg":"Boards product successfully started.","caller":"app/plugin_api.go:973","plugin_id":"focalboard"}
Dec 30 19:36:10 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:10.429 -08:00","level":"info","msg":"Starting Server...","caller":"app/server.go:913"}
Dec 30 19:36:10 ubuntu mattermost[2059]: {"timestamp":"2022-12-30 19:36:10.429 -08:00","level":"info","msg":"Server is listening on [::]:8065","caller":"app/server.go:985","address":"[::]:8065"}
Dec 30 19:36:10 ubuntu mattermost[2059]: {"timestamp":"

위와 같이 나옵니다. 저기 보시면 Active가 active(running)네요 ^^

sudo systemctl restart mattermost

서버의 설정을 바꾸고 껐다 켤때는 stop, start를 순서대로 실행해도 되지만 위와 같이 restart로 해결 가능 합니다. 

sudo sytemctl disable mattermost

지금 현재 mattermost가 자동으로 컴퓨터가 켜지면 실행 되도록 되어 있는데 ^^

그 기능을 껐습니다.  다시 켜 두도록 하겠습니다. 

sudo systemctl disable mattermost
Removed /etc/systemd/system/mysql.service.wants/mattermost.service.
# 서버를 껐다 켭니다. 
sudo shutdown -r now

# 접속하자 마자 상태를 확인 합니다. 
sudo systemctl status mattermost
[sudo] password for talkit:
● mattermost.service - Mattermost
     Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled)
     Active: inactive (dead)

# mattermost를 자동으로 켜게 만듭니다. 
sudo systemctl enable mattermost     

# 서버를 껐다 켭니다. 
sudo shutdown -r now


# 접속하자 마자 상태를 확인 합니다. 
sudo systemctl status mattermost

● mattermost.service - Mattermost
     Loaded: loaded (/lib/systemd/system/mattermost.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-12-30 19:45:17 PST; 1min 31s ago
   Main PID: 1418 (mattermost)
      Tasks: 114 (limit: 19071)
     Memory: 870.0M
     CGroup: /system.slice/mattermost.service
             ├─1418 /opt/mattermost/bin/mattermost
             ├─1653 plugins/com.mattermost.plugin-todo/server/dist/plugin-linux-amd64
             ├─1658 plugins/com.github.matterpoll.matterpoll/server/dist/plugin-linux-amd64
             ├─1677 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
             ├─1684 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64
             ├─1695 plugins/com.mattermost.calls/server/dist/plugin-linux-amd64
             ├─1708 plugins/com.mattermost.apps/server/dist/plugin-linux-amd64
             ├─1721 plugins/playbooks/server/dist/plugin-linux-amd64
             └─1736 plugins/focalboard/server/dist/plugin-linux-amd64

Dec 30 19:45:15 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:15.980 -08:00","level":"info","msg":"Initialized notification backend","caller":"app/plugin_api.go:973","plugin_id":"focalboard","name":"notifySubscriptions"}
Dec 30 19:45:15 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:15.980 -08:00","level":"info","msg":"Initialized notification backend","caller":"app/plugin_api.go:973","plugin_id":"focalboard","name":"notifyLogger"}
Dec 30 19:45:15 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:15.991 -08:00","level":"info","msg":"FocalBoard Server","caller":"app/plugin_api.go:973","plugin_id":"focalboard","version":"7.5.4","edition":"plugin","build_number":"3697449214","build_date":"\"Wed Dec 14 18:04:06 UTC 2022\"","build_hash":"414>
Dec 30 19:45:15 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:15.991 -08:00","level":"info","msg":"Server.Start","caller":"app/plugin_api.go:973","plugin_id":"focalboard"}
Dec 30 19:45:16 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:16.004 -08:00","level":"info","msg":"Boards product successfully started.","caller":"app/plugin_api.go:973","plugin_id":"focalboard"}
Dec 30 19:45:17 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:17.217 -08:00","level":"info","msg":"Starting Server...","caller":"app/server.go:913"}
Dec 30 19:45:17 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:17.217 -08:00","level":"info","msg":"Server is listening on [::]:8065","caller":"app/server.go:985","address":"[::]:8065"}
Dec 30 19:45:17 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:17.217 -08:00","level":"info","msg":"Sending systemd READY notification.","caller":"commands/server.go:130"}
Dec 30 19:45:17 ubuntu systemd[1]: Started Mattermost.
Dec 30 19:45:55 ubuntu mattermost[1418]: {"timestamp":"2022-12-30 19:45:55.156 -08:00","level":"info","msg":"Post.Message has size restrictions","caller":"sqlstore/post_store.go:2475","max_characters":16383,"max_bytes":65535}

 

서버를 껏다 켜면서 테스트 해보니 위와 같이 나옵니다. 

리눅스 시스템 서비스를 이용하면, 정말 편합니다. 

감사합니다. 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

이번 글에서는 제가 지난 번에 리눅스를 설치 하면서 뭔가를 설치해보고자한다고 말씀 드렸는데 그것 중에 하나가 Mattermost라는 툴입니다.

이툴은 Slack이라는 협업도구(?)를 대체하는 프로그램 입니다.

Mattermost는 Slack과 마찬가지로, 웹사이트에서 가입해서 사용할 수 있습니다.

하지만, Slack과는 다르게 Self-managed server를 제공 합니다.

그래서 저는 테스트 겸 제가 셋팅해 놓은 VMWARE ubuntu에 그리고 궁극적으로 외부의 VPS에 설치하고자 합니다.

Mattermost 설치전으로 되돌릴수 있도록 백업을 하고 있습니다. ^^

zip파일로 VM폴더를 묶어 두면 나중에 복원하거나 다른 것을 해볼 때 사용 가능 합니다.

이부분은 다음에 VMWARE 백업 이라는 주제로 한번 글을 써보겠습니다.

오늘은 Mattermost 설치에 주안점을 두겠습니다.

Mattermost 공식 홈페이지에는 기본적으로 docker를 이용해서 설치하고 사용하는 법을 알려 주고 있습니다. 그런데 제가 docker잘 모릅니다. T.T

그래서 일단 Ubuntu에 직접 설치하는 것을 생각하고 있습니다.

순서를 조금 요약해보겠습니다.

1. Ubuntu 설치
2. Database 설치
3. Mattermost server 프로그램 설치
4. Mattermost server 프로그램 설정
5. Mattermost server 상에 TLS 설정
6. NGINX server 설치
7. Mattermost server를 위한 proxy로 NGINX 설정
8. SSL과 HTTP/2와 함께 NGINX 설정

공식 매뉴얼에 나오 있는 것은 위와 같습니다.

1. Ubuntu 설치


리눅스/Linux VMWARE에 우분투/Ubuntu 20.04 설치하기/Install https://talkit.tistory.com/677

위 글로 대체 하겠습니다.

2. Database 설치


리눅스/Linux 우분투 리눅스에 MySQL을 설치해보자. How to install MySQL on Ubuntu https://talkit.tistory.com/680

MySQL 설치도 위글로 대체 하겠습니다. ^^

설치가 끝나면 계정 설을 해야 합니다.

sudo mysql -u root -p

# 프롬프트가 등장하면

create user 'mmuser'@'%' identified by 'mmuser-password';

mmuser는 그대로 두시고, mmuser-password 를 원하는 비밀번호로 변경해서 진행 하시면 되는데 보안상 호스트가 %인것은 위험한데 저건 일단 오늘은 설치해보고 보관 관련 이슈는 한번 다뤄 보겠습니다.

Mattermost를 위한 데이터베이스를 하나 만듭니다.

create database mattermost;

mattermost 데이터베이스에 mmuser에게 권한을 줍니다.

 grant all privileges on mattermost.* to 'mmuser'@'%';

여기도 모든 권한을 줘서 보안 관련 이슈를 말씀 드리겠습니다.

그런데 저렇게 설정하면 나중에 보안 문제 빼고는 편안 합니다. ^^

설정 다하셨으면 MySQL은 빠져 나오시면 됩니다.

3. Mattermost server 프로그램 설치

Deploy Your Self-Hosted Mattermost Server | Mattermost

 

Deploy Your Self-Hosted Mattermost Server | Mattermost

Deploy a Mattermost server in minutes on the platform of your choice including Kubernetes, Ubuntu, Debian, Red Hat, and Docker.

mattermost.com

위 URL에서 최신 버전의 Mattermost 서버를 다운로드 합니다. 

wget https://releases.mattermost.com/7.5.2/mattermost-7.5.2-linux-amd64.tar.gz

위 명령어를 내리면, 다운로드를 진행 합니다. 

tar xzvfp mattermost-7.5.2-linux-amd64.tar.gz

받은 파일의 압축을 푸십시오.

sudo mv mattermost /opt

압축을 /opt 로 옮기라고 되어 있습니다. 그래서 저는 따라하는 중입니다. 

sudo mkdir /opt/mattermost/data

데이타 폴더를 만드라네요 ^^

sudo useradd --system --user-group mattermost

mattermost 리눅스 계정을 만들라고 합니다. 

sudo chown -R mattermost:mattermost /opt/mattermost

mattermost 계정에 프로그램 폴더를 권한을 줍니다. 

sudo chmod -R g+w /opt/mattermost

그룹에 쓰기권한을 주네요 ^^

/opt/mattermost/config/config.json

위 파일을 수정해야 합니다. ^^

sudo vi /opt/mattermost/config/config.json
 "SqlSettings": {
    "DriverName": "postgres",
    "DataSource": "postgres://mmuser:mostest@localhost/mattermost_test?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",
    "DataSourceReplicas": [],
    "DataSourceSearchReplicas": [],
    "MaxIdleConns": 20,
    "ConnMaxLifetimeMilliseconds": 3600000,
    "ConnMaxIdleTimeMilliseconds": 300000,
    "MaxOpenConns": 300,
    "Trace": false,
    "AtRestEncryptKey": "",
    "QueryTimeout": 30,
    "DisableDatabaseSearch": false,
    "MigrationsStatementTimeoutSeconds": 100000,
    "ReplicaLagSettings": []
  },

config.json을 열면, SqlSettings 가 있습니다. 
기본적으로 PostgreSQL로 되어 있네요

 "SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "mmuser:비밀번호1@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8\u0026writeTimeout=30s"",
    "DataSourceReplicas": [],
    "DataSourceSearchReplicas": [],
    "MaxIdleConns": 20,
    "ConnMaxLifetimeMilliseconds": 3600000,
    "ConnMaxIdleTimeMilliseconds": 300000,
    "MaxOpenConns": 300,
    "Trace": false,
    "AtRestEncryptKey": "",
    "QueryTimeout": 30,
    "DisableDatabaseSearch": false,
    "MigrationsStatementTimeoutSeconds": 100000,
    "ReplicaLagSettings": []
  },

위와 같이 변경 합니다. 앞에서 그대로 따라하셨으면 비밀번호만 변경해주시면 됩니다. 

그리고 저장 하고 빠져 나갑니다. 

    "SiteURL": "http://원하는주소",

SiteURL을 위와 같이 변경 하십시오.

https로 변경 하겠지만, ^^ http:// 로 여기서는 설정 합니다. 

이제 거의 설치가 끝난 것 같습니다. ^^

cd /opt/mattermost

저희가 설치한 디렉토리로 이동 합니다. 

sudo -u mattermost ./bin/mattermost

서버를 실행 합니다. 두둥.

뭔가 서버는 잘 떴구요.

이 화면이 나오면 잘된겁니다. 

일단 저는 웹브라우져로 접속해 보겠습니다. 

처음 가입 시키는 아이디가 system_admin 권한을 가진답니다. 

^^

첫번째 아이디는 어디서 만들지를 고민 하고있었습니다. T.T

여기서 하면 되네요.

Email address는 이메일 주소이고,

Username은 이름이 아니고 T.T 계정입니다. 띄워쓰기 없이 계정으로 만드십시오.

비밀번호는 잘 만드십시오.

Team이 없으니 가입 하라고 나옵니다. ^^

Go to system console을 눌러서 들어간 화면 입니다. ^^

여기까지 보셨으면 ^^ 빠져 나옵니다 

PuTTY로 돌아가서 Ctrl + c 키를 누르면 서버가 꺼집니다. 

그런데 매일 매일  Shell 상에 저 서버를 띄워 둘수는 없습니다. ^^

그래서 system 서비스로 만들어야 합니다. 

sudo touch /lib/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=network.target
After=mysql.service
BindsTo=mysql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
  WantedBy=mysql.service

vi 를 이용해서 위 파일열 여시고 붙여 넣으시면 됩니다. 

단, Ubuntu 이고, 제가 위에 설명한대로 따라하셨다는 전제 하에서 입니다 .^^

설치 위치는 변경 해주셔야 합니다. 혹시 다르게 설치 하셨으면요 ^^

서버를 자동으로 켜기 위해서 

sudo systemctl enable mattermost

서비스를 실행 합니다. 

sudo systemctl start mattermost

그럼 설치는 여기 까지 하고, 웹에서 Email 노티피케이션하고, 초대 가능하게 하기 등 몇가지 설정하상은 다음 글에서 설명 드리겠습니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다. 

리눅스/Linux 우분투에 FTP 서버를 설치해보자. How to install FTP server on Ubuntu Linux https://talkit.tistory.com/693

저는 VMWARE에 설치된 우분투 리눅스에 FTP 서버를 설치를 했습니다. 

하지만 지금 하는 내용은 일반적인 리눅스 FTP에도 해당 합니다. 

WinSCP가 컴퓨터에 없으면, 

[무료소프트웨어] 알FTP/ALFTP 대체프로그램 WinSCP 설치하기 https://talkit.tistory.com/606

글을 참조하셔서 설치하시면 됩니다. 

저는 설치가 되어 있기 때문에 어떻게 사용하는지만 알려 드리겠습니다. ^^

메뉴는 위와 같이 생겼습니다. 

저기서 세션(S) 를 클릭하시고 새로운 세션을 클릭하십시오.

이렇게 생긴 아이가 뜰겁니다. ^^

저는 워낙 많은 사이트가 등록 되어 있어서 가렸습니다. 

처음올 파일 프로토콜에서 SCP를 FTP로 변경 합니다. 

우선 제가 설치한 서버는 암호화를 안했기 때문에 암호화 안함 이라고 선택 하시면 됩니다. 

서버정보에 암호화가 되어 있으면 암호화를 선택하시면 됩니다. 

설치하신 서버 또는 접속하고자 하는 서버의 호스트 이름/IP/도메인명 을 입력합니다. 

포트는 자동으로 선택된 21번이 맞구요. 혹시나, 보안상 서버 관리자가 포트를 변경 했으면, 변경된 포트번호를 사용하시면 됩니다. 

그리고, 아이디 현재 제 서버에는 talkit 밖에 없어서 ^^ 비밀번호는 비밀번호를 입력하시면 됩니다. 

그리고 저기 저장 버튼을 누르시면 

위와 같이 나옵니다. 

집에서 사용하는 개인 PC 같은 경우 암호 저장에 체크하셔도 됩니다.

하지만, 밖에서 사용하는 공용 PC는 암호를 저장하지 마십시오.

저는 암호를 기억하려고 노력해서 보통은 암호를 저장하지 않습니다. 

아까 세션창의 왼쪽 화면에 ^^ 위와 같이 나올 겁니다. 

아이디@호스트명

위와 같이 나오면 이제 세션이 저장이 잘된거구요.

오른쪽 하단에서 로그인을 클릭하시면 됩니다. 

비밀번호 저장을 체크 하셨으면 안나옵니다만, ^^ 자동으로 로그인 해줍니다. 

저는 비밀번호 저장을 체크 하지 않아서 위와 같이 비밀번호를 묻습니다. 

해당 서버의 비밀번호를 넣으시면 됩니다. 

왼쪽이나 오른쪽 창의 내용은 다르겠지만 위와 같이 접속이 되었을 겁니다. 

여기서 왼쪽 창은 로컬컴퓨터의 파일 목록 입니다. 

오른쪽 창은 서버 컴퓨터의 파일 목록 입니다. 

그전에 파일을 하나 준비를 해야 해서 리눅스 상에서 준비를 해보겠습니다. 

echo "FTP 전송을 위한 파일 준비" > ftpserver.txt

echo에 관련된 글을 작성 했는데 echo를 이용해서 파일을 만드는 방법은 설명을 안했네요. ^^

또 글감이 하나 생겼습니다. ^^

putty로 가셔서 위 명령어를 수행 하십시오.

echo "FTP 전송을 위한 파일 준비" > ftpserver.txt
talkit@ubuntu:~$ ls
Desktop  Documents  Downloads  ftpserver.txt  Music  Pictures  Public  Templates  Videos

실제로 실행을 해보면 위와 같이 나옵니다. 

서버에다가 파일을 만들었으니까 서버 쪽에 있는 새로 고침 버튼을 클릭 합니다. 

저는 c:\dev\study  에 파일을 다운로드 받겠습니다. 

위와 같이 받아 졌을 겁니다. 

그러면 파일을 한번 열어 보겠습니다. 

ftpserver.txt를 더블 클릭하십시오.

파일명이 다르면 해당 파일명을 더블 클릭하시면 됩니다. 

FTP 전송을 위한 파일 준비

저희가 명령어로 만들었던 파일이 잘 들어 있습니다. 

자 그럼 저 파일을 서버로 다시 보내 보겠습니다. 

그런데 파일이 동일한 파일이 있으니까

숙달 되시면 WinSCP에서도 가능한 일이지만, 탐색기를 열고 해당 폴더에 가십시오.

그리고 복사해서 붙여 넣기를 하시고 이름을 바꾸겠습니다. 

요렇게 될꺼구요 

저기 복사보면을 ftpclient.txt 로 바꿔 보겠습니다. 

이렇게 되었을 껍니다. 

저기서 FTP로 돌아가면

로컬 컴퓨터 쪽 화면에 ftpclient.txt가 생겼습니다. ^^

내용은 그냥 아까하고 동일하게 하고, 서버로 올려 보겠습니다. 

저 파일을 잡고, 서버 쪽으로 드래그앤드랍 하시면 됩니다. 끌어서 놓으시면 됩니다. 

또는 파일을 클릭하시고, F5키를 누르시면 됩니다. 

또 한가지는 오른쪽 마우스 누르시고, 업로드를 클릭하면, 

위 그림과 같이 나옵니다. 

저기서 확인 누르시면 업로드가 됩니다. 

그러면 위와 같이 나옵니다.

그리고 동일하게 서버 컴퓨터 쪽에 있는 ftpclient.txt를 더블 클릭 해보십시오.

그러면, 

FTP 전송을 위한 파일 준비

동일하게 들어 있을 겁니다. 

그리고 이것이 사기인가 하시는 분들은 putty로 돌아가서 

cat ftpclient.txt

해보시면  

cat ftpclient.txt
FTP 전송을 위한 파일 준비

요렇게 잘 나옵니다. 

개발을 하다가 보면 FTP를 사용할일이 많습니다. 

저는 간단하게 설명을 드렸지만, 여러분은 좀 더 다양한 기능을 사용해 보십시오.

파일을 올려 보고 파일을 지워도 보고

단, 시험용 머신을 하나 만드시고 하시는 것을 권해 드립니다. ^^

간단하게 파일을 올리고 내리는 방법을 설명 드렸습니다. 

감사합니다. 

 

반응형

+ Recent posts