CentOS 서버에 최신 파이썬을 설치하고 싶으신가요? 기본 제공되는 구버전이 아닌 Python 3.12나 3.11을 직접 빌드해서 설치하는 방법이 필요하신가요? 이 글에서는 소스 컴파일부터 alias 설정까지 완벽하게 알려드립니다.
CentOS에 파이썬 설치가 필요한 이유
CentOS 기본 파이썬은 2.7 또는 3.6 같은 구버전입니다. 최신 라이브러리를 사용하거나 보안 업데이트를 받으려면 Python 3.11 이상이 필요합니다. 소스 컴파일 방식은 최신 버전을 설치하고 시스템 파이썬과 충돌 없이 사용할 수 있습니다.
사전 준비 작업
필수 패키지 설치
# 시스템 업데이트
sudo yum update -y
# 개발 도구 설치
sudo yum groupinstall "Development Tools" -y
# 파이썬 빌드에 필요한 의존성 설치
sudo yum install -y \\\\
gcc \\\\
openssl-devel \\\\
bzip2-devel \\\\
libffi-devel \\\\
zlib-devel \\\\
wget \\\\
make \\\\
sqlite-devel \\\\
readline-devel \\\\
xz-devel \\\\
tk-devel \\\\
gdbm-devel \\\\
ncurses-devel
필수 이유: 이 패키지들이 없으면 파이썬 컴파일 중 오류가 발생합니다.
현재 파이썬 버전 확인
# 기존 파이썬 버전 확인
python --version
python3 --version
# 설치 위치 확인
which python
which python3
주의: 시스템 파이썬(yum이 사용)을 삭제하면 안 됩니다!
1단계: 파이썬 소스 다운로드
wget으로 다운로드
# 작업 디렉토리 이동
cd /usr/src
# 파이썬 3.12.0 다운로드
sudo wget <https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz>
# 또는 3.11.7 다운로드
sudo wget <https://www.python.org/ftp/python/3.11.7/Python-3.11.7.tgz>
# 다운로드 확인
ls -lh Python-*.tgz
최신 버전: https://www.python.org/ftp/python/ 에서 원하는 버전을 선택하세요.
curl 사용 (대안)
# curl로 다운로드
sudo curl -O <https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz>
2단계: 압축 해제
# tar 압축 풀기
sudo tar -xzf Python-3.12.0.tgz
# 디렉토리 확인
ls -l
# 압축 해제된 폴더로 이동
cd Python-3.12.0
# 내용 확인
ls -l
파일 구조: configure 스크립트, Makefile, 소스 코드 등이 있습니다.
3단계: 빌드 환경 설정
configure 실행
# 최적화 옵션으로 빌드 준비
sudo ./configure --enable-optimizations
# SSL 지원 포함 (권장)
sudo ./configure --enable-optimizations --with-openssl=/usr
# 설치 경로 지정 (선택)
sudo ./configure --enable-optimizations --prefix=/usr/local
주요 옵션:
-enable-optimizations: 성능 최적화 (빌드 시간 증가하지만 실행 속도 향상)-with-openssl: SSL/TLS 지원 (pip 사용 시 필수)-prefix: 설치 경로 지정 (기본값: /usr/local)
configure 출력 확인
# 성공 메시지 확인
# "configure: creating Makefile" 메시지가 나타나야 함
# 오류 발생 시 로그 확인
cat config.log | grep error
문제 해결: 오류가 있으면 필수 패키지 설치 여부를 다시 확인하세요.
4단계: 컴파일 및 설치
make로 컴파일
# 컴파일 시작 (시간 소요: 5-15분)
sudo make
# CPU 코어 수만큼 병렬 컴파일 (속도 향상)
sudo make -j $(nproc)
진행 상황: 많은 .c 파일이 컴파일되는 것을 볼 수 있습니다.
altinstall로 설치
# altinstall 사용 (시스템 파이썬 보호)
sudo make altinstall
# ⚠️ install은 사용하지 마세요!
# sudo make install # 시스템 파이썬 덮어쓰기 위험!
altinstall vs install:
altinstall: python3.12, pip3.12 형태로 설치 (안전)install: python3, pip3로 설치 (시스템 파이썬 덮어쓰기 위험)
설치 완료 확인
# 설치된 파이썬 버전 확인
/usr/local/bin/python3.12 --version
# Python 3.12.0
# pip 확인
/usr/local/bin/pip3.12 --version
설치 위치: 기본적으로 /usr/local/bin/에 설치됩니다.
5단계: 파이썬 위치 확인
# python3.12 실행 파일 위치
which python3.12
# /usr/local/bin/python3.12
# 모든 파이썬 위치 확인
whereis python
whereis python3
# 심볼릭 링크 확인
ls -l /usr/local/bin/python*
경로 이해: /usr/local/bin은 사용자 설치 프로그램의 표준 경로입니다.
6단계: alias 설정
bashrc 파일 편집
# root 사용자 bashrc 편집
vi /root/.bashrc
# 또는 nano 사용
nano /root/.bashrc
# 일반 사용자의 경우
vi ~/.bashrc
alias 추가
# 파일 끝에 추가
alias python="/usr/local/bin/python3.12"
alias python3="/usr/local/bin/python3.12"
alias pip="/usr/local/bin/pip3.12"
alias pip3="/usr/local/bin/pip3.12"
편집 방법 (vi):
i키로 입력 모드- 위 내용 붙여넣기
Esc키 누르기:wq입력 후 Enter (저장 후 종료)
전역 설정 (모든 사용자)
# 전역 bashrc 편집 (선택사항)
sudo vi /etc/bashrc
# 위와 동일하게 alias 추가
alias python="/usr/local/bin/python3.12"
alias python3="/usr/local/bin/python3.12"
alias pip="/usr/local/bin/pip3.12"
alias pip3="/usr/local/bin/pip3.12"
주의: 서버 관리자 권한이 필요합니다.
7단계: bashrc 적용
# bashrc 다시 로드
source /root/.bashrc
# 또는
source ~/.bashrc
# 또는 로그아웃 후 다시 로그인
exit
즉시 적용: source 명령으로 재로그인 없이 설정을 적용합니다.
8단계: 설치 확인
버전 확인
# 파이썬 버전 확인
python --version
# Python 3.12.0
python3 --version
# Python 3.12.0
# pip 버전 확인
pip --version
# pip 23.2.1 from /usr/local/lib/python3.12/site-packages/pip (python 3.12)
pip3 --version
성공: 3.12.0 (또는 설치한 버전)이 표시되어야 합니다.
파이썬 대화형 모드
# 파이썬 실행
python
# 버전 확인
>>> import sys
>>> sys.version
'3.12.0 (main, ...'
>>> exit()
간단한 테스트
# 한 줄 명령으로 테스트
python -c "print('Hello, Python 3.12!')"
# Hello, Python 3.12!
# 버전 정보 출력
python -c "import sys; print(f'Python {sys.version}')"
pip 업그레이드 및 설정
pip 최신 버전 업그레이드
# pip 업그레이드
python -m pip install --upgrade pip
# 버전 확인
pip --version
자주 사용하는 패키지 설치
# 가상환경 도구
pip install virtualenv
# 웹 크롤링
pip install requests beautifulsoup4
# 데이터 분석
pip install pandas numpy
# 웹 프레임워크
pip install flask django
# 설치된 패키지 확인
pip list
가상환경 설정
venv로 가상환경 생성
# 프로젝트 디렉토리 생성
mkdir /opt/myproject
cd /opt/myproject
# 가상환경 생성
python -m venv venv
# 가상환경 활성화
source venv/bin/activate
# 프롬프트 변경 확인: (venv) [root@server]#
# 패키지 설치 (가상환경 내)
pip install requests
# 가상환경 비활성화
deactivate
권장 사항: 프로젝트마다 독립된 가상환경을 사용하세요.
여러 파이썬 버전 관리
버전별로 사용하기
# 3.12 사용
python3.12 script.py
# 3.11 사용 (3.11도 설치한 경우)
python3.11 script.py
# 기본 버전 확인
python --version
update-alternatives 설정
# python3를 3.12로 설정
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.12 1
# python3를 3.11로도 등록 (우선순위 2)
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.11 2
# 선택 메뉴 표시
sudo update-alternatives --config python3
# 현재 설정 확인
update-alternatives --display python3
우선순위: 숫자가 높을수록 기본값으로 선택됩니다.
시스템 서비스 설정
systemd 서비스 예제
# 서비스 파일 생성
sudo vi /etc/systemd/system/myapp.service
서비스 파일 내용:
[Unit]
Description=My Python Application
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/myproject
ExecStart=/usr/local/bin/python3.12 /opt/myproject/app.py
Restart=always
[Install]
WantedBy=multi-user.target
서비스 관리:
# 서비스 활성화
sudo systemctl enable myapp
# 서비스 시작
sudo systemctl start myapp
# 상태 확인
sudo systemctl status myapp
자주 발생하는 문제 해결
문제 1: SSL 오류
# pip 사용 시 SSL 오류
pip install requests
# SSL: CERTIFICATE_VERIFY_FAILED
# 해결: OpenSSL 재설정
sudo ./configure --enable-optimizations --with-openssl=/usr
sudo make altinstall
문제 2: zlib 오류
# zipimport.ZipImportError: can't decompress data
# 해결: zlib 설치 후 재컴파일
sudo yum install -y zlib-devel
cd /usr/src/Python-3.12.0
sudo ./configure --enable-optimizations
sudo make altinstall
문제 3: ModuleNotFoundError: _ctypes
# 해결: libffi 설치
sudo yum install -y libffi-devel
cd /usr/src/Python-3.12.0
sudo ./configure --enable-optimizations
sudo make altinstall
문제 4: command not found
# python: command not found
# 해결 1: alias 재적용
source ~/.bashrc
# 해결 2: 심볼릭 링크 생성
sudo ln -s /usr/local/bin/python3.12 /usr/bin/python
# 해결 3: PATH 추가
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
성능 확인
벤치마크 테스트
# 간단한 성능 테스트
python -m timeit '"-".join(str(n) for n in range(100))'
# 최적화 비교 (--enable-optimizations 효과)
python -c "import sys; print(sys.flags.optimize)"
# 1 이상이면 최적화됨
정리 및 청소
소스 파일 삭제
# 빌드 완료 후 소스 삭제 (선택사항)
cd /usr/src
sudo rm -rf Python-3.12.0 Python-3.12.0.tgz
# 설치된 파이썬은 유지됨
디스크 공간: 약 200-300MB 절약
완전한 설치 스크립트
자동화 스크립트
#!/bin/bash
# Python 3.12.0 자동 설치 스크립트
set -e # 오류 시 중단
PYTHON_VERSION="3.12.0"
echo "=== 1. 필수 패키지 설치 ==="
sudo yum update -y
sudo yum groupinstall "Development Tools" -y
sudo yum install -y gcc openssl-devel bzip2-devel libffi-devel \\\\
zlib-devel wget make sqlite-devel readline-devel xz-devel
echo "=== 2. 파이썬 다운로드 ==="
cd /usr/src
sudo wget <https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz>
echo "=== 3. 압축 해제 ==="
sudo tar -xzf Python-${PYTHON_VERSION}.tgz
cd Python-${PYTHON_VERSION}
echo "=== 4. 빌드 설정 ==="
sudo ./configure --enable-optimizations --with-openssl=/usr
echo "=== 5. 컴파일 ==="
sudo make -j $(nproc)
echo "=== 6. 설치 ==="
sudo make altinstall
echo "=== 7. alias 설정 ==="
echo "alias python='/usr/local/bin/python${PYTHON_VERSION%.*}'" >> ~/.bashrc
echo "alias pip='/usr/local/bin/pip${PYTHON_VERSION%.*}'" >> ~/.bashrc
source ~/.bashrc
echo "=== 8. 확인 ==="
/usr/local/bin/python${PYTHON_VERSION%.*} --version
echo "✅ 파이썬 ${PYTHON_VERSION} 설치 완료!"
사용 방법:
chmod +x install_python.sh
./install_python.sh
마치며
CentOS에 파이썬을 소스 컴파일로 설치하는 과정은 필수 패키지 설치 → 소스 다운로드 → configure → make altinstall → alias 설정의 8단계입니다. --enable-optimizations 옵션으로 성능을 최적화하고, altinstall로 시스템 파이썬을 보호하는 것이 핵심입니다.
alias를 통해 python 명령으로 최신 버전을 사용할 수 있고, 가상환경으로 프로젝트별 독립된 환경을 만들 수 있습니다. 이 가이드를 따라하면 안정적이고 최신의 파이썬 개발 환경을 구축할 수 있습니다.
참고 자료
- Python 공식 다운로드: https://www.python.org/downloads/
- Python 소스 빌드 가이드: https://devguide.python.org/getting-started/setup-building/
- CentOS 공식 문서: https://wiki.centos.org/