개발하기에 앞서 매번 필수 설치요소들이 우리의 발목을 잡을때가 많다. 세팅으로 코딩을 진행 못하고 1~2일이라는 시간을 잡아먹는 것에 난 여러가지 지혜와 전략을 고민해 보았다.
일단 필수적인 터미널 환경에서의 세팅에 관한 지혜를 공유할 예정이다.
제외 : 블로그를 찾아서 따라하는 과정은 일반적으로 아는 부분이니 제외하겠다.
조언 및 지혜 : 이러한 부분을 잘 극복하는 방법은 내가 이 문제를 나의 문제로써 직면하고 어떤 식으로 주로 해결해 나가는지 자주 경험하고 이해하기 시작하면 그 다음부턴 보통 어떤 식으로 접근하여 문제를 해결 할 수 있는지 눈이 보인다고 조언하셨다. 주로 환경 셋업을 했는데도 불구하고 문제가 발생한다면 주로 [“프로그램의 재설치”], [“누락된 설치나 올바른 위치에서의 설치”], [“시스템에서 보안 설정이나 잘 못된 설정”], [“시스템에서 부가적인 특정 요구 -정보나 프로그램”] 이런식의 요구 사항들이 있다. 주로 4가지 접근법으로 해결해 나간다. 더하여 터미널에서 명시하는 메시지를 잘 읽고 무엇이 잘 못 되었는지 파악해 나가야 한다.
문법의 구성은 주로 이렇다.=== [명령어][옵션] [대상, 파일명이나 선택 메뉴] ==예시: [명령어](예: ls, cd, cp, sudo 등) [옵션](예: -g는 글로벌 전역, -y는 yes라는 동의, --save는 저장 “--"가 두개면 풀네임 – 하나면 약자)[대상, 파일명이나 선택 메뉴]
예시 : db2 -tvf test.sql의 뜻은 db2라는 플랫폼으로 test.sql을 실행하는데 -t는 테이블 형태로 출력 -v는 실행된 sql문 출력 -f는 다음 오는 대상을 sql스크립트로 인식하고 실행
• 개념: 소프트웨어를 설치, 업데이트, 제거하는 데 사용되는 도구.
• 사용 예: apt advanced packacge tool의 약어로 주로 sudo apt install 설치할 대상으로 자주 사용, yum Yellowdog Updater Modified의 약어로 주로 sudo yum install 설치할 대상으로 자주 사용 apt와 동일 작용을 하지만 사용하는 배경이 다름, pacman 등.
• 개념: 명령줄 인터페이스를 통해 컴퓨터와 상호작용하는 창.
• 사용 예: 명령어 입력, 파일 조작, 시스템 모니터링 등.
• 개념: 파일 및 디렉토리를 관리하고 조작하는 도구.
• 사용 예: ls 리스트를 의미 디렉토리가 보유한 파일 리스트를 보여준다, cd choose direction 약어로 다음 디렉토리나 폴더의 선택시 사용, cp copy의 약어로 어떤 것을 복사하고 다른 디렉토리로 붙여 넣는 경우 사용, mv move의 약어로 파일을 다른 곳으로 이동시 사용, rm remove의 약어로 파일을 완전 제거할 때 사용 curl choose url의 약어로 url에서 파일을 가져올때 사용
• 개념: 사용자와 그룹 계정을 관리하고 권한을 할당하는 도구.
• 사용 예: useradd, usermod, groupadd, chown, chmod 등.
• 개념: 텍스트 파일을 편집하는 도구.
• 사용 예: vim, nano, gedit 등.
• 개념: 실행 중인 프로세스를 모니터링하고 제어하는 도구.
• 사용 예: ps, top, kill 등.
• 개념: 정기적으로 작업을 예약하고 실행하는 스케줄링 도구.
• 사용 예: 주기적인 백업, 자동화된 작업 등.
• 개념: 원격으로 안전하게 서버에 접속하고 명령을 실행하는 프로토콜 및 도구.
• 사용 예: 원격 서버 관리, 파일 전송 등.
• 개념: 파일과 디렉토리를 압축하거나 해제하는 도구.
• 사용 예: tar, gzip, zip, unzip 등.
• 개념: 네트워크 연결 상태 확인 및 네트워크 정보 조회하는 도구.
• 사용 예: ping, ifconfig, netstat, traceroute 등
https://choboit.tistory.com/88 추가적으로 필요하거나 자주 사용되는 리눅스 용어 모음집
1. 요구하는 프로그램이 깔렸는지 확인 :: [프로그램 이름] -v 예: dbmate –version
2. No found라는 메시지를 확인 후, npm uninstall -g dbmate와 npm uninstall dbmate로 모든 dbmate 제거
3. 사용하던 터미널의 환경이 올바른지 확인 bash인지 zsh인지 확인 후..
48-2nd-FIVEGUYS-backend(이건 디렉토리 이름)$ zsh 이런식으로 입력하여 zsh로 변경
개발 환경은 zsh을 기준으로 하는 경우가 많다고 한다. 더 많은 기능과 ios에서도 활용이 편리하기에 zsh을 추천 (Zsh 은 입력칸 앞이 “$” bash는 입력칸 앞이 “%”)
4. 이전 zsh환경에(bash와 zsh은 설치 파일 공유 X) 깔았던 dbmate가 있는지 다시 확인 외부에서 한번 깔았던 경험이 있어 다시 확인함..그리고 dbmate -v로 버전 확인 그리고 dbmate 존재를 확인
5. mysql 접속 : 48-2nd-FIVEGUYS-backend(이건 디렉토리 이름) % mysql -u root -p 접속 시도 그리고 mysql비번 입력 -> 에러 메세지 발생Enter password : ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/v….
6. mysql 서버 재시작 : mysql.server start 입력.. 커맨드 인지 불통 따라서 다른 커맨드로 관리자 권한을 갖는 sudo service mysql start 를 재입력
7. 다시 비번 재입력 -> 불통 -> sudo mysql -u root -p 관리자 권한으로 재접속 후 그냥 엔터 입력 (내 비밀번호가 설정이 안되있을 수 도 있다 판단)
8. Mysql 서비스 자체를 재설정 하기로 시도
9. Show databases;
10. mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User | Host | plugin |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | cachingsha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | auth_socket |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
11. mysql> UPDATE mysql.user SET plugin='caching_sha2_password' WHERE User='root'; 루트의 설정을 바꾸고** mysql> ^DBye 이렇게 mysql 환경을 빠져나옴
12. sudo mysql -u root -p 재접속 후 (패스워드 설정 안되 있음) -> mysql> Update
mysql.user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> ^DBye 이렇게 커맨드라인으로 비밀번호 재설정 할 수 있는 환경으로 구성
13. 48-2nd-FIVEGUYS-backend% sudo mysql server restart 재시작
48-2nd-FIVEGUYS-backend% sudo mysql -u root -p
Enter password: 비번 입력 -> 접속 성공 -> mysql> ^DBye 환경에서 나옴
14. 다시 리액트 환경있는 곳에서 db라는 디렉토리 확인 후(Db mate는 db라는 폴더를 인지하고 작동하기에 db폴더 필수)-> dbmate up 이라는 커멘드 입력.. 그리고 작동 성공