리눅스 개발환경
윈도우 운영체제에서 벗어나 서버를 리눅스에서 운용해보자
리눅스란
- UNIX 계열의 오픈 소스 운영 체제(OS)
* UNIX는 다중 사용자, 다중 작업을 지원하는 신뢰성 높은 운영체제로 리눅스는 UNIX의 무료버전이라고 볼 수 있다. - 다중 사용자 환경을 지원
- 여러 사용자가 동시에 시스템에 로그인하여 작업할 수 있다. - 네트워크 기능을 풍부하게 지원
- 네트워크 프로토콜 및 서비스를 구축하고 관리하는 다양한 도구와 기능을 제공하여 서버 및 네트워크 환경에서 사용하기에 용이합니다. - 안정성과 보안에 중점을 두고 있다.
- 다양한 배포판 : Ubuntu, Red Hat, ... 등
- 각 배포판은 리눅스 커널을 기반으로 하면서도 추가적인 패키지, 도구, 사용자 인터페이스 등을 포함하고 있어 사용자 요구에 맞게 선택하면 된다.
* 리눅스 커널 : 하드웨어를 제어하고 응용 프로그램과의 상호작용을 제공하는 핵심역할
서버에 리눅스를 사용하는 이유
- 비용절감
- 오픈소스여서 무료이다. (레드헷 등의 배포판도 윈도우에 비해 비용이 적다) - 시스템 효율
- 효율적인 시스템 운영으로 하드웨어 요구사항이 낮다 - 보안
- 관리자 이외의 접근이 제한된다
- 윈도우와 달라 바이러스, 멀웨어의 공격이 적다
(오픈소스라서 취약점이 빠르게 개선되기 때문) - 유연성
- 오픈소스여서 운영체제를 수정하고 최적화 할 수 있다.
윈도우에서 리눅스 사용하기
- 윈도우 PC에서 리눅스 기반 프로젝트를 개발할 수 있는 방법은 다음과 같다.
- 가상 머신(VM) 사용
- Oracle VirtualBox, VMware Workstation 등의 가상화 솔루션을 설치하여 윈도우에서 리눅스 개발 환경을 구축한다. - 듀얼 부팅(Dual Boot)
- 하드 드라이브에 두 개의 운영 체제를 설치하여 부팅시 필요한 운영체제를 선택한다. - 원격 접속(Remote Access)
- 리눅스 서버나 가상 머신에 원격으로 접속하여 개발하는 방법
- SSH(Secure Shell) 또는 원격 데스크톱 프로토콜(Remote Desktop Protocol)을 사용 - 컨테이너 기술(Containerization)
- 윈도우에 도커(Docker)를 설치하고, 리눅스 기반의 컨테이너를 실행하여 개발 작업을 수행
* 도커 : 애플리케이션과 그 실행에 필요한 종속성을 컨테이너로 패키징하여 이식성과 격리성을 제공하는 컨테이너화 플랫폼
명령줄 인터페이스
리눅스는 텍스트 기반의 운영체제로 명령줄 인터페이스(CLI)가 중요한 역할을 한다.
이에 CLI에 대해 톺아보기로 한다
CLI(Command-line Interface)
- GUI(Graphical User Interface)는 직관적이라는 장점이 있지만 어플리케이션간의 입출력을 전달하거나 자동화하는 작업에는 적합하지 않다
>> 리눅스 뿐만 아니라 윈도우 등에서도 개발에는 CLI가 많이 사용되는 이유 - CLI는 터미널, 쉘, 콘솔 등과는 구분되는 개념이나 혼용해서 사용되곤 한다.
- 종류
- 리눅스 OS : Bash
- 윈도우 OS : PowerShell

환경변수
- 운영체제가 시스템 환경에서 사용하는 값들을 저장하는 변수
변수값에 경로를 미리 세팅해서 언제든 가져다 쓸 수 있게 한다. - CLI에서 역할
1. 실행 가능한 프로그램의 경로 지정한다.
- javac, python 등의 프로그램 명령어를 전역에서 사용할 수 있게함
- Path 변수에 저장한다.
2. 설정값 전달
- DB연결정보, API키와 같은 중요 정보를 환경변수에 저장해서 보안 강화한다
3. 사용자별로 환경 설정을 구성
- 사용자의 프로파일 파일에 환경변수를 설정한다
4. 환경변수의 값에 따라 조건부 실행을 수행하도록 할 수 있다.
5. 스크립트 실행환경을 구성할 수 있다
- 출력로그, 디버그모드 등
프롬프트 구성
- Bash
사용자명 @ 호스트명 : 현재디렉토리 $ - Git Bash
사용자명 @ 호스트명 MINGW64 현재디렉토리 (깃브랜치)
$ - 사용자명
- 컴퓨터에 로그인한 사용자를 식별
- 식별하는 이유
1. 권한, 자원액세스에 차등을 둔다
2. 로그를 통해 활동을 식별한다 - 호스트명
- 네트워크에서 컴퓨터를 식별하기 위한 이름
* 프로그래밍에서 호스트는 대게 컴퓨터를 의미한다
- cmd 창에서 hostname을 입력해서 확인할 수 있다.
- 식별하는 이유
1. 네트워크상의 각 컴퓨터를 식별하여 통신에 활용
2. 프롬프트에 표기됨으로써 원격인지 로컬인지 구분이 가능하
3. 여러 서버를 관리하는 경우 각 서버를 식별
CLI 기본조작
- 단축키
- tab : 자동완성
- ctrl + c : 현재 프로세스를 중지시키고 프롬프트를 띄운다 (^c 와 동일) - 명령어 옵션
'--help' : 해당 명령어의 사용법, 다양한 옵션들, 예제 등을 볼 수 있다. - 기호의 의미
- ~ : 홈 디렉토리 (home/유저)
- . : 현재 디렉토리
- .. : 상위 디렉토리
- - : 옵션이 1글자일 경우 사용(여러개의 옵션을 붙여서 쓸 수 있다 ex: -lSGr)
- -- : 옵션이 두글자 이상인 경우(ex: --help)
- ^ : ctrl키를 대체할 수 있는 문자(단축키를 명령어로 입력)
- \ : 명령어가 다음줄과 이어질 때, 줄의 끝에 붙인다. (여러줄 명령어 작성, 뒤에 공백을 넣으면 안됨)
- | : 첫번째 명령어의 출력을 두번째 명령어의 입력으로 전달
'명령어1 | 명령어2'의 형태로 사용
- "a:b" : a는 사용자이름, b는 비밀번호를 뜻함 - 경로표기
- 상대경로 : './' 로 시작되나 생략할 수 도 있다
- 절대경로 : '/'로 시작된다.

'다양한 기술들 > Linux 관련' 카테고리의 다른 글
| [Linux] 명령어 작성 팁 / 기본 명령어들(파일 및 동작 관련) (0) | 2024.07.23 |
|---|---|
| [Linux] 파일 권한과 소유자 다루기 (0) | 2024.07.23 |
| [Shell Script] 명령어 순차 실행 (0) | 2024.03.19 |
| [SSH] 공개키 암호화(RSA)를 사용한 원격 Shell 연결 (0) | 2023.06.25 |
댓글