We build for multiple versions of Scala. This only matters if you are using Scala and you want a version built for the same Scala version you use. Otherwise any version should work (2.13 is recommended).
Kafka 3.4.0 includes a significant number of new features and fixes. For more information, please read ourblog postand the detailedRelease Notes.
위 부분에 있는 두번째 파일을 다운로드 합니다.
cd /opt
mkidr kafka
cd kafka
wget https://archive.apache.org/dist/kafka/3.4.0/kafka_2.13-3.4.0.tgz
저는 /opt 폴더에 요즘은 설치를 하고 있스니다. 예전에는 /usr/local 에 설치를 많이 했었습니다.
ls | wc -l
12
(base) talkit@ubuntu:~$ ls
build dbeaver-ce_latest_amd64.deb Desktop Documents Downloads Music Pictures Public Templates upvu_web Videos vmwaretools
실제로 ls 를 해보면 나온 단어들이 12개 입니다.
ls -al 과 조합을 해보겠습니다.
(base) talkit@ubuntu:~$ ls -al | wc -l
36
(base) talkit@ubuntu:~$ ls -al
total 123148
drwxr-xr-x 26 talkit talkit 4096 Mar 15 05:51 .
drwxr-xr-x 3 root root 4096 Feb 25 02:42 ..
-rw------- 1 talkit talkit 565 Mar 6 06:41 .bash_history
-rw-r--r-- 1 talkit talkit 220 Feb 25 02:42 .bash_logout
-rw-r--r-- 1 talkit talkit 4257 Mar 14 07:40 .bashrc
drwxrwxr-x 2 talkit talkit 4096 Mar 6 06:40 build
drwxrwxr-x 19 talkit talkit 4096 Mar 15 05:50 .cache
drwxrwsr-x 4 talkit talkit 4096 Mar 14 06:53 .conda
drwx------ 15 talkit talkit 4096 Mar 15 05:50 .config
-rw-rw-r-- 1 talkit talkit 125960484 Feb 19 10:18 dbeaver-ce_latest_amd64.deb
drwxr-xr-x 2 talkit talkit 4096 Feb 25 02:48 Desktop
drwxr-xr-x 2 talkit talkit 4096 Feb 25 02:48 Documents
drwxr-xr-x 3 talkit talkit 4096 Mar 20 04:53 Downloads
drwxrwxr-x 3 talkit talkit 4096 Mar 5 06:24 .eclipse
drwx------ 3 talkit talkit 4096 Feb 25 02:48 .gnupg
drwxrwxr-x 5 talkit talkit 4096 Mar 14 08:51 .ipython
drwxrwxr-x 2 talkit talkit 4096 Mar 14 08:52 .jupyter
drwxr-xr-x 5 talkit talkit 4096 Mar 14 06:20 .local
drwx------ 4 talkit talkit 4096 Mar 6 06:56 .mozilla
drwxr-xr-x 2 talkit talkit 4096 Feb 25 02:48 Music
drwxrwxr-x 5 talkit talkit 4096 Mar 6 07:03 .npm
drwxr-xr-x 2 talkit talkit 4096 Feb 25 02:48 Pictures
-rw-r--r-- 1 talkit talkit 807 Feb 25 02:42 .profile
drwxr-xr-x 2 talkit talkit 4096 Feb 25 02:48 Public
drwx------ 2 talkit talkit 4096 Mar 15 05:51 .putty
-rw------- 1 talkit talkit 7 Mar 14 07:41 .python_history
-rw-r--r-- 1 talkit talkit 0 Feb 25 03:47 .sudo_as_admin_successful
drwxrwxr-x 2 talkit talkit 4096 Mar 5 06:23 .swt
drwxr-xr-x 2 talkit talkit 4096 Feb 25 02:48 Templates
drwxrwxr-x 8 talkit talkit 4096 Mar 6 07:10 upvu_web
drwxr-xr-x 2 talkit talkit 4096 Feb 25 02:48 Videos
drwxrwxr-x 3 talkit talkit 4096 Feb 25 03:47 vmwaretools
-rw-rw-r-- 1 talkit talkit 262 Mar 14 08:05 .wget-hsts
drwxrwxr-x 3 talkit talkit 4096 Mar 6 06:48 .yarn
-rw-rw-r-- 1 talkit talkit 116 Mar 6 06:47 .yarnrc
36이 나왔는데 저 줄을 세어 보시면 36줄입니다.
ls 강좌에서 -al 을 하면 숨어 있는 모든 파일들을 보여준다고 말씀 드렸는데 숨어 있는 파일들이 많습니다. ^^
저도 잘 써보지는 않는데 -c 하고 -m 이 있는데 차치를 한번 보겠습니다.
wc -l # 라인수를 세고요.
wc -c # 바이트 수를 세고요.
wc -m # 캐릭터 수를 세고요.
wc -w # 단어 수를 셉니다.
sudo apt install ./dbeaver-ce_latest_amd64.deb
[sudo] password for talkit:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'dbeaver-ce' instead of './dbeaver-ce_latest_amd64.deb'
The following NEW packages will be installed:
dbeaver-ce
0 upgraded, 1 newly installed, 0 to remove and 47 not upgraded.
Need to get 0 B/126 MB of archives.
After this operation, 158 MB of additional disk space will be used.
Get:1 /home/talkit/dbeaver-ce_latest_amd64.deb dbeaver-ce amd64 22.3.5 [126 MB]
Selecting previously unselected package dbeaver-ce.
(Reading database ... 157064 files and directories currently installed.)
Preparing to unpack .../dbeaver-ce_latest_amd64.deb ...
Unpacking dbeaver-ce (22.3.5) ...
Setting up dbeaver-ce (22.3.5) ...
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
설치도 잘 되었습니다.
확인해 보겠습니다.
dbeaver-ce 가 설치된 프로그램입니다.
한번 클릭 해보고 오늘은 마치겠습니다.
윈도우즈 처럼 예쁘게 잘 뜨네요 ^^
처음에 들어가면 조금 다르게 데이터 베이스를 만들까요 부터 몇가지를 물어 보는데 저는 취소 했습니다.
원래 마이크로소프트의 빌게이즈 형님과 스티브 발머 형님이 계실 때는 리눅스와 사이가 많이 나빴습니다. 그런데 새로운 대표님은 리눅스하고 너무 친 합니다. ^^ 마이크로소프트 제품이 많이 리눅스로 포팅 되고 있습니다. 그 중에서 개발자용 에디터인 VisualStudioCode도 포팅 되어 있습니다.
이러한 비쥬얼 스튜디오 코드를 제 우분투에 설치 해보록 하겠습니다. 제 경험이 다른 분들께 도움이 되시기를 바라면서 한번 설치 해보겟습니다.
cd 원하는디렉토리
wget "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" -O visualstudiocode.deb
위와 같이 치시면 파일이 받아 집니다.
저도 해보겠습니다.
wget wget "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" -O visualstudiocode.deb
--2023-03-04 21:45:43-- http://wget/
Resolving wget (wget)... failed: Temporary failure in name resolution.
wget: unable to resolve host address ‘wget’
--2023-03-04 21:45:43-- https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64
Resolving code.visualstudio.com (code.visualstudio.com)... 13.107.238.49, 13.107.237.49, 2620:1ec:4e:1::49, ...
Connecting to code.visualstudio.com (code.visualstudio.com)|13.107.238.49|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://az764295.vo.msecnd.net/stable/92da9481c0904c6adfe372c12da3b7748d74bdcb/code_1.76.0-1677667493_amd64.deb [following]
--2023-03-04 21:45:44-- https://az764295.vo.msecnd.net/stable/92da9481c0904c6adfe372c12da3b7748d74bdcb/code_1.76.0-1677667493_amd64.deb
Resolving az764295.vo.msecnd.net (az764295.vo.msecnd.net)... 117.18.232.200
Connecting to az764295.vo.msecnd.net (az764295.vo.msecnd.net)|117.18.232.200|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 94825848 (90M) [application/octet-stream]
Saving to: ‘visualstudiocode.deb’
visualstudiocode.deb 36%[========================================> ] 32.68M 10.9MB/s eta 5svisualstudiocode.deb 100%[===============================================================================================================>] 90.43M 11.2MB/s in 8.2s
2023-03-04 21:45:52 (11.1 MB/s) - ‘visualstudiocode.deb’ saved [94825848/94825848]
FINISHED --2023-03-04 21:45:52--
Total wall clock time: 8.8s
Downloaded: 1 files, 90M in 8.2s (11.1 MB/s)
저는 잘 받아 졌습니다.
그러면 설치를 해보겠습니다.
ls
sudo apt install ./visualstudiocode.deb
ls를 쳐서 다운로드한 파일이 잇는지 확인 하시고 ^^
apt install을 이용해서 설치 합니다. 파일 설치할때는 ./를 무조건 넣어야 하나 봅니다.
sudo apt install ./visualstudiocode.deb
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'code' instead of './visualstudiocode.deb'
The following NEW packages will be installed:
code
0 upgraded, 1 newly installed, 0 to remove and 27 not upgraded.
Need to get 0 B/94.8 MB of archives.
After this operation, 394 MB of additional disk space will be used.
Get:1 /home/talkit/visualstudiocode.deb code amd64 1.76.0-1677667493 [94.8 MB]
Selecting previously unselected package code.
(Reading database ... 167921 files and directories currently installed.)
Preparing to unpack .../talkit/visualstudiocode.deb ...
Unpacking code (1.76.0-1677667493) ...
Setting up code (1.76.0-1677667493) ...
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for shared-mime-info (1.15-1) ...
Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
저는 설치가 잘 되었습니다.
제 우분투에 설치 된 프로그램들을 보면 제일 밑에 보이시죠 Visual Studio Code 가 잘 설치 되었습니다.
우선 위 그림 처럼 Ubuntu 데스크톱에서 오른쪽 마우스 누르고, Open in Terminal을 클릭 하십시오.
요렇게 터미널이 뜰껍니다. 여기서
sudo apt install gftp
라고 치십시오.
sudo apt install gftp
[sudo] password for talkit:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
gftp-common gftp-gtk gftp-text
The following NEW packages will be installed:
gftp gftp-common gftp-gtk gftp-text
0 upgraded, 4 newly installed, 0 to remove and 24 not upgraded.
Need to get 648 kB of archives.
After this operation, 3,698 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/universe amd64 gftp-common amd64 2.0.19-6 [408 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 gftp-gtk amd64 2.0.19-6 [157 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 gftp-text amd64 2.0.19-6 [81.2 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 gftp all 2.0.19-6 [1,916 B]
Fetched 648 kB in 3s (216 kB/s)
Selecting previously unselected package gftp-common.
(Reading database ... 166813 files and directories currently installed.)
Preparing to unpack .../gftp-common_2.0.19-6_amd64.deb ...
Unpacking gftp-common (2.0.19-6) ...
Selecting previously unselected package gftp-gtk.
Preparing to unpack .../gftp-gtk_2.0.19-6_amd64.deb ...
Unpacking gftp-gtk (2.0.19-6) ...
Selecting previously unselected package gftp-text.
Preparing to unpack .../gftp-text_2.0.19-6_amd64.deb ...
Unpacking gftp-text (2.0.19-6) ...
Selecting previously unselected package gftp.
Preparing to unpack .../archives/gftp_2.0.19-6_all.deb ...
Unpacking gftp (2.0.19-6) ...
Setting up gftp-common (2.0.19-6) ...
Setting up gftp-gtk (2.0.19-6) ...
Setting up gftp-text (2.0.19-6) ...
Setting up gftp (2.0.19-6) ...
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
설치가 잘 되었습니다.
gftp
터미널에서 gftp라고 치시면 됩니다.
저는 이렇게 잘 떴습니다.
그런데 개발 환경을 구축 하면서 계속 저렇게 실행 할 수는 없어서 저 아이콘을 시작 바에 고정 해보겠습니다.
우분투 하단의 위 아이콘을 살짝 클릭 하십시오.
위에서 한번은 실행 하셨기 때문에 위와 같이 나올껍니다.
오른쪽 마우스 클릭 하시면 위와 같이 나옵니다.
저기서 Add to Favorites를 클릭하십시오.
왼쪽에 잘 설치가 되어 있습니다.
이 왕하는 짐에 저는 Terminal도 즐겨 찾기 해두겠습니다.
이제 실제로 로컬에 접속해서 사용해 보겠습니다.
윈도우즈용 ftp와 비슷하게 되어 있습니다. ^^
솔직히 저는 gFTP가 아니고 파일질라 리눅스용을 생각하고 있어서 ^^ 간단하게 다운로드 업로드 몇가지만 테스트 해보겠습니다.
Host에 주소를 User에 아이디를 Pass에 비밀번호를 입력하시고 접속 하시면 됩니다.
gFTP도 다양한 프로토콜을 지원 합니다. ^^
정보를 입력하신 다음에 저 컴퓨터 아이콘을 클릭하거나 엔터 치시면 접속을 진행 합니다.
리모트 쪽에 잘 접속이 되었습니다.
저희가 텍스트 ftp에서 만들었던 여러가지 디렉토리 그리고 윈도우즈에서 만들었던 디렉토리들이 잘 있습니다.
위에 인터페이스 처럼 왼쪽 오른쪽으로 나뉘어서 왼쪽은 로컬이고, 오른쪽은 리모트 입니다.
디렉토리 이동을 lcd 와 cd로 구분하지 않고 아예 GUI로 하니 편합니다. ^^
로컬에서 디렉토리를 만드려면 저기 New Folder...을 클릭하십시오.
제가 방금 test7을 생성했습니다.
잘 만들어 졌습니다.
더블 클릭해서 이동 하십시오.
늘 써먹고 있는 ^^ 이 파일들을 받아 보겠습니다.
gftp에서 Shift로 선택을 하시고 저기 까만 동그라미 안에 있는 화살표를 누르시면 됩니다.
로컬 디렉토리에 잘 다운로드가 되었습니다.
리모트 디렉토리에 다시 test9를 만들어 이아이들을 올려 보겟씁니다.
리모트에서도 동일하게 New Folder을 클릭하시면 새 폴더가 만들어 집니다.
예쁘게 만들어졌구요 저기로 이동 합니다. 로컬과 마찬가지로 더블클릭하시면 됩니다.
이번에는 반대쪽 화살표를 누르시면 ^^
업로드 됩니다.
요렇게 잘 업로드 됩니다. ^^
리눅스를 깔면 기본적으로 접하게 되는 또는 간단하게 설치해서 사용할 수 있는 gFTP에 대해서 알아 봤습니다.
이글에서 저는 제 우분투에 FTP 서버를 설치 해 두었습니다. 그래서 저기 접속을 해보겠습니다.
ftp localhost 21
저렇게 치시면 되는데 21은 표준 FTP 포트여서 생략 가능 합니다.
localhost는 안넣으시면, ftp 프로그램이 먼저 켜지고, 명령어를 이용해서 접속하실 수 있습니다.
일단 실행 해보겠습니다.
ftp localhost 21
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:talkit):
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
위와 같이 실행을 했구요 잘 실행 되었습니다.
Name에 다른 아이디로 접속하시려면, 다른 아이디를 입력하시면 됩니다. talkit 계정으로 접속하시려면 그냥 엔터 치시면 됩니다.
그리고 Password 에는 정확한 패스워드를 입력하시면 됩니다.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1000 1000 4096 Dec 25 00:21 Desktop
drwxr-xr-x 2 1000 1000 4096 Dec 25 00:21 Documents
drwxr-xr-x 2 1000 1000 4096 Dec 25 00:21 Downloads
drwxr-xr-x 2 1000 1000 4096 Dec 25 00:21 Music
drwxr-xr-x 2 1000 1000 4096 Dec 25 00:21 Pictures
drwxr-xr-x 2 1000 1000 4096 Dec 25 00:21 Public
drwxr-xr-x 2 1000 1000 4096 Dec 25 00:21 Templates
drwxr-xr-x 2 1000 1000 4096 Dec 25 00:21 Videos
drwxrwxr-x 2 1000 1000 4096 Jan 10 16:00 climates
drwxrwxr-x 2 1000 1000 4096 Jan 03 03:37 emmptydir2
drwxrwxr-x 2 1000 1000 4096 Jan 03 03:37 emmptydir3
drwxrwxr-x 2 1000 1000 4096 Jan 03 03:37 emmptydir4
drwxrwxr-x 2 1000 1000 4096 Jan 03 03:38 emmptydir5
drwxrwxr-x 2 1000 1000 4096 Jan 03 03:28 emptydir
-rw-r--r-- 1 1000 1000 35 Dec 30 00:27 ftpclient.txt
-rw-rw-r-- 1 1000 1000 35 Dec 30 00:27 ftpserver.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:33 ftpserver11.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:33 ftpserver12.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:33 ftpserver13.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:33 ftpserver14.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:33 ftpserver15.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:27 ftpserver3.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:33 ftpserver31.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:33 ftpserver32.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:33 ftpserver33.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:33 ftpserver34.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:33 ftpserver35.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:27 ftpserver4.txt
-rw-rw-r-- 1 1000 1000 35 Jan 03 03:27 ftpserver5.txt
-rw-rw-r-- 1 1000 1000 338882654 Dec 21 05:26 mattermost-7.5.2-linux- amd64.tar.gz
-rw-rw-r-- 1 1000 1000 38937942 Jan 03 02:01 minio.deb
-rw-rw-r-- 1 1000 1000 243162 Nov 09 02:30 naverlogo.png
drwx------ 3 1000 1000 4096 Jan 06 06:21 snap
-rw-rw-r-- 1 1000 1000 243162 Nov 09 02:30 sp_main_947f65.png
drwxr-xr-x 2 1000 1000 4096 Jan 07 03:22 study
drwxrwxr-x 2 1000 1000 4096 Dec 30 00:37 temp
-rw-rw-r-- 1 1000 1000 270 Jan 03 06:17 testtext.txt
drwxrwxr-x 2 1000 1000 4096 Jan 08 06:10 wgettest
226 Directory send OK.
파일 리스트를 확인 하는 명령어인 ls 치시면, 파일 목록을 보실 수 있습니다.
cd : FTP 서버의 디렉토리 이동
lcd : 로컬 컴퓨터의 디렉토리 이동
윈도우즈에서 로컬의 디렉토리를 이동할때는 GUI로 이동 했는데 얘는 GUI가 없으니 명령어로 이동 해야 합니다.
그 명령어가 lcd 입니다.
cd 명령어는 접속 해 있는 서버방의 디렉토리가 이동 됩니다.
디렉토리를 하나 만들어 보겠습니다.
mkdir test
ftp> mkdir test
257 "/home/talkit/test" created
위와 같이 잘 만들어 졌습니다.
cd test
250 Directory successfully changed.
cd test 명령어로 잘 이동을 했구요.
lcd 로컬의 디렉토리를 이동 해보겠습니다.
lcd test
아직 이동한 적이 없기 때문에 로컬에서 test로 이동 했을 겁니다.
ftp> lcd test
Local directory now /home/talkit/test
다시
cd ..
250 Directory successfully changed.
위 디렉토리로 이동 하겠습니다.
이제 다운로드를 한번 받아 보겠습니다.
get 파일명
위 명령어를 이용하시면 로컬에 다운로드 할 수 있습니다.
get ftpclient.txt
local: ftpclient.txt remote: ftpclient.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpclient.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.01 secs (2.8677 kB/s)
잘 다운로드 되었습니다.
! ls
! 명령어를 이용하면 로컬에 있는 명령어를 수행 할 수 있습니다. 저는 주로 로컬 작업을 미리 해두고 들어가서 몰랐는데 ^^
가능하네요 ^^
ftp> !ls
ftpclient.txt
잘 다운로드 받아져 있습니다.
mkdir test3
cd test3
위 명령어로 원격 디렉토리를 이동하고, 파일을 올려 보겟습니다.
ftp> mkdir test3
257 "/home/talkit/test3" created
ftp> cd test3
250 Directory successfully changed.
위와 같이 잘 만들어 지고 이동 되었으면
put 파일명
위 명령어로 파일을 전송 할 수 있습니다.
put ftpclient.txt
put ftpclient.txt
local: ftpclient.txt remote: ftpclient.txt
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
35 bytes sent in 0.00 secs (510.1446 kB/s)
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 1000 1000 35 Feb 19 02:33 ftpclient.txt
226 Directory send OK.
실행하면 위와 같이 잘 됩니다. ^^
cd ..
! mkdir test5
lcd test5
로컬에 test5 폴더를 만들고 저기다가 ftp로 시작하는 파일들을 받아 보겠습니다.
그런데 많은 파일을 받아야 해서 명령어가 다릅니다.
mget 파일명일부*
mget ftp*
mget ftpclient.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpclient.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (255.0723 kB/s)
mget ftpserver.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (160.4680 kB/s)
mget ftpserver11.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver11.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (244.1406 kB/s)
mget ftpserver12.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver12.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (249.4868 kB/s)
mget ftpserver13.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver13.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (234.1074 kB/s)
mget ftpserver14.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver14.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (220.5141 kB/s)
mget ftpserver15.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver15.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (109.9025 kB/s)
mget ftpserver3.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver3.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (205.9017 kB/s)
mget ftpserver31.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver31.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (240.7020 kB/s)
mget ftpserver32.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver32.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (213.6230 kB/s)
mget ftpserver33.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver33.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (217.7050 kB/s)
mget ftpserver34.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver34.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (189.8871 kB/s)
mget ftpserver35.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ftpserver35.txt (35 bytes).
226 Transfer complete.
35 bytes received in 0.00 secs (271.2674 kB/s)
mget ftpserver4.txt?
실제로 위와 같이 명령을 내리면 되는데 y를 계속 눌러 주셔야 합니다.
mput 파일명일부*
명령어는 반대로 여러개의 파일을 한꺼번에 올릴때 사용합니다.
하지만, 간단하게 CLI 밖에 안될때는 저렇게 해도 개발의 특성상 많은 파일을 주고 받아야 해서
ftp는 잠깐 쓰는 것 왜에는 권장하지 않습니다. ^^
참 아까 말씀 드린거를 하나 더 말씀 드리고 마치겠습니다.
ftp
치시고 엔터 치시면
ftp 프롬프트로 이동하는데 ^^ 이때 open 명령어를 이용하시면 접속 하실 수 있습니다.
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)
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.
#
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.
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 이 익숙한데 ^^
[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"
저도 보안 권고를 받을때 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 명령어로 확인 하니깐 뭔가 나오네요 ^^
하지만, 제가 가장 많이 접하고, 사용했던 리눅스는 빨간모자 즉, 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일에 끝나네요.
리눅스/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줄
~
~
~
음 지금까지 리눅스 기본 관련글을 쓰면서 파일을 만들고,읽고, 목록확인하고, 이동 시키는 명령어는 열심히 알려 드렸습니다. 디렉토리 만들기도 했네요 ^^
위의 글들을 참고 하시면 되겠습니다. ^^
그런데 파일 삭제는 어떻게 할까요?
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.
그런데 무료로 한게 아니고 대부분 돈을 내고 인증서를 샀습니다. 그리고 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일이 남아야 갱신을 하겠죠 ^^
그런데, 여기서 힌트를 하나 얻어야 합니다.
저 같은경우는 늘 컴퓨터를 켜두는 편이긴 한데 켜두질 않는 경우는 수동으로 하면 되겠지요 ^^
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)에 관해서 알아보겠습니다.
# 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 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 없애는 거여서 다음글 또는 그 다음 글에서 아마 가능 할 것으로 생각 됩니다. ^^