ubuntu 20버전을 3년정도 쓰다가 오랜만에 버전업을 시켜주려고 하는데 또 검색하기 귀찮아서 이번엔 nas를 구축할때 얻은 정보들을 적어놓았다.
vim 재설치
첫번째로 하는게 우분투를 설치하면 vim을 재설치를 한다. 처음에 vim-tiny가 설치되어 있어서 vim으로 재설치를 한다
vim으로 변경하면 syntax highlighting, 편집할 때 키보드의 방향키들도 잘 먹힌다. vi로 편집하려는 대상이 디렉토리면 파일 목록도 띄워줌. 여러모로 편리한 기능이 추가된다.
bash
hostname 변경
hostnamectl명령어로 변경할 수 있다. 변경하면 바로 적용되니 터미널을 다시 키거나 재부팅 하면 바뀐 hostname으로 보인다.
bash
su 비밀번호 설정
superuser 비밀번호 설정 방법이다.
bash
ssh 설치
우분투엔 ssh client는 기본적으로 설치가 되어있는데 server는 없다. openssh-server 설치하고 상태를 확인. 아래처럼 초록불이 들어오면 정상 작동하는 상태이다
bash
sshd_config이란 파일이 설정 파일인데 port 변경이나 sftp를 설정할 수 있다.
bash
포트 변경
Port 22부분을 주석 풀고 수정하자. 22번 포트가 ssh의 기본 포트인데 보안상 수정하고 싶다면 변경 가능하다.
sftp 설정
ssh의 기능중 ftp보다 보안이 강화된 보안프로토콜을 사용하는 SFTP(Secure File Transfer Protocal)가 있는데 맨 아래쯤에 Subsystem sftp /usr/lib/openssh/sftp-server 부분을 주석처리하고 맨 아래에 코드를 추가하면 된다.
bash
변경 다 했다면 재실행해서 적용
bash
samba 설치
smb 프로토콜을 사용해 같은 로컬 네트워크 환경에서 파일공유를 할 수 있게 해준다. 속도가 매우 빠른것이 장점. disk 속도만 받쳐주면 공유기의 최대 속도로 파일 복사가 가능하다. 요즘 표준인 1Gbps속도가 나온다. VPN 서버를 만들고 연결하면 smb에 동일하게 접근할 수 있다.
bash
samba 사용자 설정
우분투의 사용자와는 별도로 smbpasswd 명령어를 이용해 samba에 사용자를 등록해 줘야 한다.
bash
root사용자는 다른 사용자도 설정이 가능하다.
bash
등록된 사용자들 확인
bash
설정파일
설정 파일에서 workgroup, 예외 파일, 공유, 휴지통 설정등을 할 수 있다.
bash
타 운영체제 탐색기의 임시파일들 예외 시키기
맥에서 samba를 이용하면 탐색기의 임시 파일들이 생기는데 없애고 싶은 마음이 든다.
맥: .DS_Store, ._*, 윈도우: Thumbs.db
[global]바로 아래에 추가하면 된다.
bash
새로운 공유 주소 추가
맨 위에 적는[공유 경로] 대괄호 안에 들어가는 게 smb://원격주소/공유 경로가 된다.
path는 공유하고 싶은 경로
bash
자세한 설정은 https://info-lab.tistory.com/2
휴지통 기능
vfs module기능을 이용해 휴지통 기능을 쓸 수 있다. samba이용시 파일을 삭제하면 설정해둔 경로로 파일이 이동한다. 아래는 공유 최상단의 .recycle 폴더로 이동하게 했음.
⚠️
휴지통 기능은 안될수도 있으니 꼭 테스트 해보고 사용하길 바람
bash
scp로 파일 복사하는 방법
옵션은 cp명령어랑 비슷하게 작동한다.
-r 폴더 복사 -a 아카이브 모드 -p 권한 유지 -c 압축 복사 -P 포트번호
bash
해당 유저 패스워드를 입력하면 잘 복사가 되는 모습.
재실행
설정을 다 했다면 재실행
bash
GUI모드에서 CLI모드로 변경
리눅스에선 runlevel모드를 변경할 수 있다. 저사양으로 돌리고 싶을 때 graphical 모드 말고 multi-user 모드가 있는데 이 모드로 하면 gnome, 다른 gui들이 실행 안되다 보니 성능상 많이 아낄 수 있다.
ubuntu desktop을 설치하고 multi-user적용한 것과 ubuntu server와 성능차이가 얼마나 날진 모르겠는데 multi-user로 하고 top명령어로 보면 idle시 cpu가 0~1% 사용된다.
bash
multi-user level 적용 모습
이럴꺼면 server모드로 설치하면 어떨까 했는데 아직 리눅스를 잘 다루지 못하다 보니 gui가 어쩌다 한번씩 필요하다..
bpytop 모니터링 툴
우분투엔 top이란 명령어가 내장되어 있다. 하지만 이 top은 ui가 너무 구려서 좀 더 이쁜 버전으로 보자.
bash
neofetch
neofetch 명령어 입력시 간단한 시스템 정보를 보여준다.
bash
neofetch 명령어를 입력하면 아래와 같이 나온다.
터미널 열때 자동으로 보여주기
bash
홈 디렉토리에 .bashrc 란 파일이 있는데 이 파일의 마지막줄에 neofetch를 추가하면 된다.
zsh사용시엔 .zshrc파일을 수정하면 된다.
cloudflare를 이용한 https 와일드카드 발급
cloudflare를 이용하면 와일드카드 발급, 발급시에 도메인 인증 등을 간편하게 할 수 있다. 이때 cloudflare 계정의 Global Api Key를 요구한다.
bash
https://dash.cloudflare.com/profile/api-tokens 에서 Global Api Key를 볼 수 있다.
certbot-cloudflare.ini파일 안에 정보에 맞게 수정하고 저장
bash
root만 접근 가능하게 권한 수정
bash
certbot, certbot cloudflare 플러그인 설치
bash
인증서 발급받기
sudo certbot certonly --dns-cloudflare --preferred-challenges dns-01 --dns-cloudflare-propagation-seconds 20 --dns-cloudflare-credentials /root/.secrets/certbot-cloudflare.ini -d example.com -d *.example.com
20은 대기 시간인데 보통 20초면 됐었다. 도메인 이름도 변경하고 발급받자
이메일 설정, 약관 동의, 정보 수신 동의 등을 하면 머라머라 많이 나오는데 Congratulations!가 나오면 성공.
인증서 재발급
인증서는 90일 동안 유효하기 때문에 제때 재발급을 해줘야 하는데 우분투 17.10 버전 이상은 자동으로 재발급 봇이 작동하고 있어서 신경을 쓰지 않아도 된다.
bash
그래도 재발급 테스트를 해보려면 --dry-run 을 붙여서 해주면 된다.
bash
certbot hook을 이용해 nginx 재실행
인증서가 갱신되면 새로 발급 받은 인증서를 nginx에도 재발급된 인증서를 제때 적용을 시켜줘야 갱신이 제대로 된다. bot의 hook기능이 있어서 이걸 이용하면 된다.
certbot-deploy-hook.sh 파일 생성, 수정
bash
certbot-deploy-hook.sh 안에 아래 내용 추가하고 저장하자
bash
certbot-deploy-hook.sh에 실행권한 추가
bash
php fpm 8.2 설치
apt에 기본적으로 fpm 패키지가 없다. ppa:ondrej/php저장소를 추가해서 리스트를 받아온다.
bash
bash
기타 많이 쓰는 플러그인들인데 선택사항이다. 설치 하는것을 추천함
bash
nginx를 사용할 떄fastcgi_params 파일도 권장사항대로 수정해야 한다. fastcgi_params파일 내용을 아래 내용으로 교체
bash
bash
nginx에 적용
bash
nginx에서 사용할 때 location 적용 예시
bash
fastcgi_pass 부분이 중요한데 보통 php-fpm.sock이란 이름으로 심볼릭 링크가 되어 있지만 없을 경우 에러를 내니 버전이 있는 이름으로 설정하자.
docker 설치
docker를 설치할 때 curl을 필요로 한다 없다면 설치.
bash
bash
잘 설치 됐는지 확인
bash
docker는 기본적으로 root 권한에서만 사용할 수 있기 때문에 그룹에 사용자를 추가해 주자.(안해도 상관없음 sudo 키워드를 통해 쓰면 되긴 하다)
bash
docker-compose 설치
2023.03.24 기준으론 2.17.0이 최신인데 더 최신버전을 설치하고 싶다면v2.17.0 부분을 아래 링크를 참조해 최신으로 변경하면 된다.
2023년 6월 기준으로 v1버전이 지원 종료된다고 하니 v2 버전을 추천함. 하지만 v2에서 jenkins를 docker 거쳐서 사용할 때 에러가 났었는데 패치 했는지는 확인 못했다.
bash
설치 확인
bash
rsync로 파일 동기화
우분투에 기본 내장 명령어인데 파일 복사 기능이다. 원격으로 파일이나 디렉토리를 전달할 수도 있다.
- -v verbosity를 높이는 옵션으로 복사하는 과정을 더 자세하게 보여줍니다.
- -z compress를 주는 옵션으로 파일을 복사할 때 압축해서 복사
- -h 사람이 읽기 쉬운 형태로 복사 결과들을 출력
- -a (same as -rlptgoD) archive 모드로 -rlptgoD 옵션을 적용한 것과 같다
- -r 디렉토리 복사
- -l symlink는 symlink 형태로 복사
- -p 파일과 디렉토리들의 권한을 유지
- -t 수정시간을 유지
- -g 그룹 속성을 유지
- -o 소유자 속성을 유지
- --delete 복사할 경로에 관련 없는 파일 삭제
- -D (same as --devices --specials) -devices --specials의 옵션과 같다
- -devices root 권한이 필요하며 Device 관련된 파일들을 복사해서 생성
- -specials named socket이나 fifo와 같은 특수한 파일들도 복사하는 옵션
- -P (same as --partial --progress) -partial --progress의 옵션과 같다
- -partial rsync는 전송중에 인터럽트가 발생하면 전송하던 파일을 삭제하는게 기본값. 이 옵션을 사용하면 전송된 부분파일을 남기고 다음 부분부터 재전송 할 수 있게하여 속도를 빠르게 할 수 있다
- -progress 진행상황 표시
- -stats 전송 통계 표시
- -e 원격에서 사용할 쉘을 명시하는 옵션 -e 'ssh -p 22' 이렇게 해서 포트 변경 가능
bash
원격 파일 제어
bash
rsync로 동기화하는 자동화 스크립트
--delete 옵션을 적용해서 관련 없는 파일들은 삭제하게 시켰다.
bash
bash
bash
crontab에 등록
bash
아래 내용 추가
bash
내가 사용하는 스크립트
사용하고 싶다면 경로나 체크 부분들을 적절히 수정해서 사용하면 된다. 바로 시작되니 꼭 파일 날리지 않게 한번 더 확인하고 실행하길 바람
bash
아래와 같이 저장됨 (파일 리스트들 생략)
QEMU-KVM 설치
libvirt을 이용해 가상머신을 관리한다.
bash
작동 확인
bash