- [Linux] 서버 이전을 위한 리눅스 명령어2024년 03월 08일 16시 59분 39초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
1. ubuntu root 활성화
1-1. 현재 접속 계정 확인
- 계정명만 출력 : whoami
- 계정명 + 추가 정보 출력 : who am i
1-2. root 비밀번호 생성
- sudo passwd root (명령 실행 후 사용할 비밀번호 입력하면 됨)
1-3. root 계정으로 전환
- su - root
✔ super user 참조
더보기1. 프롬프트 root@(생략):~#와 같이 오른쪽에 #이 붙어있으면 super user를 의미한다. 반면 $이면 일반 유저이다.
2. super user인 root 계정은 lock이 걸려있다.
3. sudo passwd -u root 명령으로 unlock할 수 있다.
4. sudo passwd -l root 명령으로 lock할 수 있다.1-4. /etc/ssh/sshd_config 파일의 내용 수정하여 root 로그인 가능하도록 설정
- vi /etc/ssh/sshd_config
✔ vi 사용을 위한-최소한의-명령어 더보기 참조
더보기- i : 수정
- 콜론(:) 누른 후 wq : 저장 및 종료
- 콜론(:) 누른 후 q! : 저장하지 않고 강제 종료
✔ vi 사용시 방향키가 ABCD로 표시되는 현상 발생 시 더보기 참조
더보기1. 경로 이동 : cd ~
2. .exrc 생성 : vi .exrc
set bs=2 set noc
3. .exrc 적용 : source .exrc
- PermitRootLogin yes 추가
# (생략) #LoginGraceTime 2m #PermitRootLogin prohibit-password PermitRootLogin yes # 이 코드 추가 #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 # (생략)
2. nginx
2-1. 설치 전 패키지 목록 업데이트(공통 사항)
- sudo apt update && sudo apt upgrade
2-2. nginx 설치
- sudo apt install nginx (설치 중간에 "Do you want to continue?" 물어보면 "y" 입력 후 엔터!)
2-3. nginx 실행
- 중지 : sudo service nginx stop
- 시작 : sudo service nginx start
- (재)부팅 시 자동 시작 : sudo systemctl enable nginx
- 변경 사항 적용 : sudo service nginx restart
- 테스트 : nginx -t
- 상태 보기 1 : sudo service nginx status
- 상태 보기 2 : ps -ef | grep nginx
2-4. 방화벽 설정
- 방화벽 상태 확인 : sudo ufw status
- ssh 허용 : sudo ufw allow ssh
- SSH 서비스 상태 확인 : sudo systemctl status ssh
- SSH 서비스가 설치되지 않은 경우 설치 : sudo apt install openssh-server
- SSH 서비스 시작 : sudo systemctl start ssh
- 방화벽 활성화 : sudo ufw enable
- nginx 허용 설정 : sudo ufw allow 'Nginx Full' (80 & 443 포트 모두 허용)
- 방화벽 활성화 삭제 : sudo ufw delete allow 포트번호
🤔 방화벽을 활성화하면 외부에서 22번 포트로 서버에 접속할 수 없게 된다. 따라서 ssh를 허용해야 한다. sudo ufw allow ssh
2-5. nginx 삭제
- 관련 폴더 포함 삭제 : apt-get remove --purge nginx nginx-full nginx-common
3. 노드 버전 관리자(NVM)
3-1. NVM 설치
- 설치 명령 : curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
- 환경 변수 설정 : export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
😉 공식 문서 참조 : https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating
3-2. 명령어
- 설치 가능 버전 리스트 조회 : nvm ls-remote (안정적인 LTS 버전 추천함)
- 설치예 : nvm install v18.19.1 (v18.19.1 버전을 설치, v를 붙여야 한다)
- 현재 사용 중인 버전 확인 : nvm current
- 설치된 버전 리스트 조회 : nvm ls
- 사용할 버전 변경예 : nvm use v20.11.1 (v20.11.1 버전을 사용)
- 기본 버전 설정예: nvm alias default v18 (v18.19.1 버전을 기본 버전으로 설정)
4. PM2
- NVM 설치 이후 진행해야 한다.
- pm2 설치 : npm i pm2 -g
5. MySQL
5-1. MySQL 설치
- 설치 명령 : sudo apt install mysql-server
- 버전 확인 : mysql --version
- 보안 설정 : sudo mysql_secure_installation
더보기1. 패스워드 난이도를 설정할 것인가? y
※ y 를 하면 mysql 사용자의 비밀번호를 설정할 때, 비밀번호의 난이도를 강제할 수 있다.2. 비밀번호 난이도? 2
※ 여기에서는 STRONG로 설정함3. 익명 사용자를 제거할 것인가? y
4. 원격으로 root의 mysql접속을 허용하지 않을 것인가? n
5. Test 데이터베이스를 삭제할 것인가? y
※ 여기에서는 Test 데이터베이스를 사용하지 않기로 함.6. 권한 테이블을 reload할 것인가? y
5-2. 방화벽 설정
- mysql 3306 포트 허용 : sudo ufw allow mysql
5-3. MySQL 실행
- (백그라운드) 실행 : sudo service mysql start
- 서버 재시작 시 자동 실행 : sudo systemctl enable mysql
- 실행 중지 : sudo service mysql stop
- 재시작 : sudo service mysql restart
😉 참조 : https://zetawiki.com/wiki/MySQL
5-4. root 계정 PW 설정
- mysql 접속 : sudo mysql
- PW 설정
mysql> USE mysql; # plugin을 mysql_native_password로 한다. 이렇게 하지 않으면 서버 애플리케이션에서 DB에 접근할 수 없었다(MySQL 8.0 보다 오래된 클라이언트 버전 사용했기 때문). # MySQL 8.0 이상에서는 기본적으로 caching_sha2_password를 사용, mysql_native_password보다 더 강력한 보안 지원함 # 따라서 caching_sha2_password 사용 권장(사용 방법은 아래 명령어에서 mysql_native_password 생략하면 됨) mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<여기에 사용할 비밀번호 작성. 작은 따옴표 반드시 표시해야 함. 화살 괄호는 무시>'; # 새로 고침 mysql> FLUSH PRIVILEGES; # 나가기 mysql> EXIT;
- root로 mysql 접속 : mysql -u root -p
- 적용한 비번 입력해야 함.
5-5. 외부 접속 허용
MySQL은 기본적으로 로컬에서만 접속된다. 외부 접속을 허용하기 위해서는 mysql에 접속하여 다음과 같이 설정한다.
1) mysql 설정
mysql> USE mysql; # 사용자를 확인한다. root 사용자가 localhost이면 외부에서 접근할 수 없다. mysql> SELECT Host,User,plugin,authentication_string FROM mysql.user; +-----------+------------------+- | Host | User | +-----------+------------------+- | ... | ... | | localhost | root | +-----------+------------------+- # 외부에서 접속할 root 사용자를 생성한다. mysql> CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<사용할 비밀번호 작성>'; # 생성한 유저에게 외부에서 접속할 수 있도록 권한을 할당한다. mysql> GRANT ALL PRIVILEGES ON *.* to 'root'@'%'; # 새로고침 한다. mysql> flush privileges; # 정상적으로 생성되었는지 확인한다. host가 %인 root 사용자가 생성되었다. mysql> SELECT Host,User,plugin,authentication_string FROM mysql.user; +-----------+------------------+- | Host | User | +-----------+------------------+- | % | root | | ... | ... | | localhost | root | +-----------+------------------+- # 계정 삭제가 필요한 경우 DROP user 계정명;
2) MySQL 설정 파일(mysqld.cnf)을 nano 편집기로 열기
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
3) mysqld.cnf 코드 중 bind-address 수정
mysqld.cnf에 작성된 코드 중 bind-address 설정이 bind-address = 127.0.0.1인 경우 0.0.0.0으로 변경한다.
bind-address = 0.0.0.0
※ nano 편집기 사용법 더보기 참조
더보기파일 처리
- Ctrl + S : 현재 파일 저장
- Ctrl + O : 다른 이름으로 저장
- Ctrl + R : 다른 파일 삽입
- Ctrl + X : 종료
편집
- Ctrl + K : 현재 줄 삭제
- Alt + 6 : 현재 줄 복사
- Ctrl + U : 붙여넣기
- Alt + T : 버퍼 끝까지 잘라내기
- Alt + 3 : 주석
- Alt + U : 실행 취소
- Alt + E : 다시 실행
검색 및 교체
- Ctrl + Q : 뒤로 검색
- Ctrl + W : 앞으로 검색
- Alt + Q : 이전 검색
- Alt + W : 다음 검색
- Alt + R : 바꾸기
삭제
- Ctrl + H : 커서 앞 문자 삭제
- Ctrl + D : 커서 뒤 문자 삭제
- Ctrl + Del : 단어 삭제
- Alt + Del : 줄 삭제
이동
- Ctrl + ← : 한 단어 뒤로 이동
- Ctrl + → : 한 단어 앞으로 이동
- Ctrl + A : 줄 시작으로 이동
- Ctrl + E : 줄 끝으로 이동
- Ctrl + P : 이전 줄 이동
- Ctrl + N : 다음 줄 이동
- Ctrl + ↑ : 이전 블록 이동
- Ctrl + ↓ : 다음 블록 이동
- Ctrl + Y : 이전 페이지 이동
- Ctrl + V : 다음 페이지 이동
- Alt + \ : 버퍼 시작으로 이동
- Alt + / : 버퍼 끝으로 이동
- Alt + G : 지정된 줄로 이동
정보
- Ctrl + C : 커서 위치 표시
- Alt + D : 현재 파일 단어/줄/문자 수 표시
- Ctrl + G : 도움말 표시
그 외
- Tab : 들여쓰기
- Alt + N : 줄 번호 표시
- Alt + P : 공백 표시
- Ctrl + L : 화면 새로 고침
- Ctrl + Z : nano 일시 중지4) mysqld.cnf 변경 후 MySQL 리스타트
sudo service mysql restart
🤔 백엔드 소스 코드가 변경된 것이 없는데 API 요청시 에러가 발생한다면...? sql_mode=only_full_group_by 에러가 의심된다. 해결 방법은 링크 참조(https://dodo1054.tistory.com/230). 더보기를 참조해도 좋음.
더보기1. vi 실행 : vi /etc/mysql/mysql.conf.d/mysqld.cnf
2. 설정 추가 : sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
6. Java
6-1. Java설치
- open jdk 11 설치(원하는 버전 설치)
sudo apt install openjdk-11-jdk
※ open jre만 필요한 경우 더보기 참조
더보기sudo apt install openjdk-11-jre
6-2. 환경 변수 설정
- 전체 환경 변수 확인 : export
- 환경 변수 추가 : vi ~/.bashrc
# ~/.bashrc에 아래 코드 추가 export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) export PATH=$PATH:$JAVA_HOME/bin
- 변경 내용 현재 실행된 쉘에 적용 : source ~/.bashrc
- 적용한 환경 변수 확인 : echo $JAVA_HOME
7. Let's Encrypt
7-1. Let's Encrypt 설치
- apt 업데이트를 하지 않았다면... : sudo apt update && sudo apt upgrade
- letsencrypt 설치 : sudo apt install letsencrypt
7-2. 무료 TLS 인증서 발급
8. Git
8-1. Git 설치
- apt 업데이트를 하지 않았다면... : sudo apt update && sudo apt upgrade
- git 설치 : sudo apt install git
- git 버전 확인 : git --version
8-2. Git 인증
728x90반응형'CS > Linux' 카테고리의 다른 글
[Linux] ubuntu 서버 성능 모니터링 (0) 2024.03.15 [Linux] Centos 방화벽(firewall) 설정 명령어 (0) 2024.03.14 [Linux] LVM 마운트 "can't read superblock" 에러 (0) 2024.02.26 [Linux] Putty SSH Key 로그인 에러 "server refused our key" (0) 2024.02.26 [Linux] Let's Encrypt로 TLS 무료 인증서 발급 & 자동 갱신 설정 (0) 2024.01.16 다음글이 없습니다.이전글이 없습니다.댓글