728x90

장고 배포를 위한 환경 구성을 할 때마다 실패를 해서 삽질을 엄청했다.

https://computingforgeeks.com/deploy-python-3-django-application-on-centos-with-apache-and-mod-wsgi/

위 사이트에 적힌 순서에 따라 해도 안되더니 마지막 2줄이 해결책이더라.

 

Windows 10 Pycharm 툴을 이용해서 Python 3.9.5 or Python 3.10.2 환경에서 개발 테스트 한 것을 CentOS 7 으로 옮겨서 실행하다보니 동일 환경을 구성하기 어렵다.

그래서 pip install -r requirements.txt 를 하면 에러가 발생한다.

이런 점을 감안해서 작성한 스크립트이다.

 

1. 선행 작업사항

##########################################################################
## CentOS 7 Package Update
 
yum -y update
 
##########################################################################
# 방화벽 설정
yum -y install firewalld
 
# 방화벽 데몬 시작
systemctl start firewalld
 
# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld
 
firewall-cmd --permanent --add-service=http 
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp
 
firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-all
 
#########################################################################
# Databse 접근을 위한 SELinux 설정 변경
# SELinux 상태 확인
sestatus
 
#SELinux httpd flag 확인 : 네트워크를 통해 Database에 연결할 수 있는 옵션이 꺼져 있음
getsebool -| grep httpd
 
# Database 접근을 위한 SELinx 설정 변경
setsebool -P httpd_can_network_connect_db 1
 
# SELinux 비활성화 하기
vi /etc/sysconfig/selinux
SELINUX=disabled
:wq 로 저장하고 나온다.
 
# 재부팅해야 SELinux 명령어 수정한 사항이 적용된다.
reboot 
 
# 임시 비활성화 방법
setenforce 0
 

 

2. Python 설치 과정

 

#########################################################################
# 파이썬(Python) 설치 과정
#########################################################################
# python 2.7.X 버전이 설치된 것을 확인한다.
rpm -qa | grep mariadb
# 설치된 것이 없다면 아래 한꺼번에 지우기는 실행하지 않아도 된다.
 
## 설치된 것 한꺼번에 지우기
rpm -qa | grep mariadb > list
 
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
 
# Python 모듈을 빌드하려면 개발 도구가 필요
yum -y update
yum -y groupinstall 'Development Tools'
yum -y install yum-utils
yum -y install zip unzip wget mc git net-tools
 
# 아파치와 mode_wsgi 를 설치하기 위해 아래 명령어를 실행한다.
yum -y install epel-release
yum -y makecache
yum -y install httpd mod_wsgi
yum -y install mariadb-devel 
 
# PHP 관련으로 httpd 를 설치하지 말아야 한다.
# 먼저 설치하면 mariadb-devel 이 PHP와 관련되어 설치되기 때문에 
# pip install mysqlclient 명령어 실행시 에러가 발생하더라.
 
 
# 아래 명령어는 필요시 설치해 주면 될 거 같아서 주석처리했다.
#yum -y install gcc openssl-devel bzip2-devel libffi-devel xz-devel sqlite-devel tk-devel
#yum -y install zlib-devel bzip2-devel gdbm-devel 
 
 
# Enable Software Collections
sudo yum -y install centos-release-scl
sudo yum -y install rh-python36 python36-devel httpd-devel rh-python36-mod_wsgi
scl enable rh-python36 bash
 
#sudo yum -y install rh-python38 python38-devel httpd-devel rh-python38-mod_wsgi
#scl enable rh-python38 bash
 
python --version
python -V
 
# yum 설치 문제가 발생하지 않도록 아래와 같이 수정한다.
vi /usr/bin/yum
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
 
vi /usr/libexec/urlgrabber-ext-down
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
 
# 현재 Alias 확인
ls -/bin/python*
 
pip -V
pip3 -V
 
###### SQLite3 DB 설정 ###################################
# Python 에서 SQLite3 를 찾는데, 기본 설치 버전이 3.7.17 이다.
# 장고 설치시에 더 높은 버전을 요구하므로, 아래와 같이 3.10.2 버전을 설치해준다.
 
# https://kojipkgs.fedoraproject.org//packages/sqlite/ 접속하여 확인한다.
# 원하는 파일을 찾아서 링크를 복사하고 wget 으로 붙여넣기 한다.
 
cd /root
mkdir sqlite3
cd sqlite3
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.10.2/1.fc22/x86_64/sqlite-3.10.2-1.fc22.x86_64.rpm
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.10.2/1.fc22/x86_64/sqlite-devel-3.10.2-1.fc22.x86_64.rpm
 
sudo yum -y install sqlite-3.10.2-1.fc22.x86_64.rpm sqlite-devel-3.10.2-1.fc22.x86_64.rpm
 
# 파이썬에서 설치된 SQLite3 버전 확인 방법
python -"import sqlite3; print(sqlite3.sqlite_version)"
 
#########################################################
##### 파이썬 가상환경 설정 ####################################
#########################################################
# Step : Install virtual environment
cd /var/www
python -m pip install virtualenv
 
# 가상환경 이름을 venv 로 설정했는데 다른 명칭으로 변경해도 된다.
mkdir -/var/www/logs
 
# venv 가상환경 생성
cd /var/www
virtualenv venv
 
# venv 가상환경 실행
source /var/www/venv/bin/activate
 
pip install --upgrade pip setuptools
pip install django
pip install djangorestframework
 
# MySQL 이나 MaraiDB 와 연동 목적
pip install mysqlclient
 
# 파이썬 디버깅 도구 설치
pip install pylint
pip install twisted
 
# venv 가상환경 종료
deactivate
 
 

 

3. MaraiDB 10.5 설치

 

 
################################
##### MariaDB 10.5 버전 설치 #####
################################
 
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
 
:wq 로 저장하고 나온다.
 
sudo yum makecache fast
yum -y install mariadb-server mariadb-client
 
# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb
 
# mariadb 시작
systemctl start mariadb
 
# mariadb 상태 확인
service mariadb status
 
# Maria DB 보안 설정하기
mysql_secure_installation
 
# root 비밀번호 설정 등 상세 과정은 생략한다. 거의 Y만 누르면 끝난다.
 
 
# UTF-8 로 통신하기 위한 서버/클라이언트 설정
vi /etc/my.cnf.d/server.cnf
[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
 
vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
 
# MariaDB 재시작
service mariadb restart
 
# MariaDB 접속하여 적용된 사항 확인
mysql -u root -p
status
show variables like 'c%';
 
#########################################
####### 실제 적용 예제 ######
#########################################
// DB 생성
create database pythondb default character set utf8;
 
use mysql;
create user pythonfox@localhost identified by 'PythonWonder#$';
grant all privileges on pythondb.* to pythonfox@localhost;
flush privileges;
quit
 
### 테이블 백업하기 ####
mysqldump -uroot ---databases pythondb > pythondb.sql
 
### 테이블 구조만 백업하기 ####
mysqldump -uroot ---no-data --databases pythondb > pythondb.sql
 

 

4. 장고 프로젝트 생성 예시

 

 
################################################
# 장고 프로젝트 생성 및 Web 서버 구동 테스트
################################################
# venv 가상환경 실행
source /var/www/venv/bin/activate
 
# 프로젝트 생성 예시
cd /var/www/html/
django-admin startproject config .
 
python manage.py startapp accounts
python manage.py startapp blog
python manage.py startapp bookmark
 
# bootstrap4 라이브러리 설치
pip install django-bootstrap4
 
# Client IP address 수집을 위한 라이브러리
pip install django-ipware
 
# RSA/AES 암호화 라이브러리
pip install pycryptodome
pip install pycryptodomex
 
# mariadb db 연동 라이브러리
pip install mariadb
 
# 이제 Windows/MAC 환경에서 구현했던 코드를 리눅스 각 APP에 Override로 한다.
 
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic
 
 
# 8000번 포트로 Web 서버 구동(개발자 모드)
python manage.py runserver 0.0.0.0:8000
 
# 정상 동작하는 걸 확인하고 나서
deactivate
 
sudo chown -R apache:apache /var/www/html/
 
 
# Django 배포(운영)를 위한 설정
vi /etc/httpd/conf.d/django.conf
 
<VirtualHost *:80>
        ServerName localhost
        DocumentRoot /var/www/html/
 
        Alias /static /var/www/html/static
        <Directory "/var/www/html/static">
                Options FollowSymLinks
                Order allow,deny
                Allow from all
                Require all granted
        </Directory>
 
        Alias /media /var/www/html/media
        <Directory "/var/www/html/media">
                Options FollowSymLinks
                Order allow,deny
                Allow from all
                Require all granted
        </Directory>
        ErrorLog /var/www/logs/error.log
        CustomLog /var/www/logs/access.log combined
 
        WSGIPassAuthorization On
        WSGIDaemonProcess wowdjango python-path=/var/www/html:/var/www/venv/lib/python3.6/site-packages
        WSGIProcessGroup wowdjango
        WSGIScriptAlias / /var/www/html/config/wsgi.py
 
        <Directory /var/www/html/config>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>
</VirtualHost>
 
 
# 아래 두줄을 실행하기 전에는 에러가 발생하면서 동작되지 않더라.
sudo cp /opt/rh/httpd24/root/usr/lib64/httpd/modules/mod_rh-python36-wsgi.so /lib64/httpd/modules
sudo cp /opt/rh/httpd24/root/etc/httpd/conf.modules.d/10-rh-python36-wsgi.conf /etc/httpd/conf.modules.d
 
systemctl restart httpd
 
# 서버를 재부팅하거나 Web 서버를 중지시킨 경우에 가상환경 재실행 명령어
source /var/www/venv/bin/activate
 
cd /var/www/html/
python manage.py runserver 0.0.0.0:8000
 
# 가상환경 종료
deactivate
 
# Web 브라우저에서 접속시 문제가 없는지 테스트 해본다.
 

 

 

파일 위치 찾기

 

개발 서버 구동

 

 

환경설정 파일

python_conf.zip
0.10MB

 

 

mod_wsgi 설치하는 또다른 방법이다.

sudo yum -y install httpd httpd-devel
#mod_wsgi 는 python pip 로 설치할 것이므로 yum 설치는 생략한다.
 
# venv 가상환경 실행
source /var/www/venv/bin/activate
 
# mod_wsgi 설치
pip install mod_wsgi
 
# mod_wsgi 설치 확인
mod_wsgi-express start-server
 
#wsgi_module 등록하기
mod_wsgi-express install-module
 
cd /etc/httpd/conf.modules.d/
vi 10-wsgi.conf
LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
# :wq(저장)하고 빠져나온다.
 
# 정상 동작하는 걸 확인하고 나서
deactivate
 
# Web 브라우저에서 잘 동작되는 걸 확인할 수 있다.

 

 

 

 

 

 

 

 

블로그 이미지

Link2Me

,
728x90

SQLite 높은 버전을 소스설치하고 나서 Python 에서 sqlite3 버전을 체크하면 계속 3.7.17 버전으로 표시되는 경우에 해결방법이다.

 

cd /root
mkdir sqlite3
cd sqlite3
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.10.2/1.fc22/x86_64/sqlite-3.10.2-1.fc22.x86_64.rpm
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.10.2/1.fc22/x86_64/sqlite-devel-3.10.2-1.fc22.x86_64.rpm
 
sudo yum -y install sqlite-3.10.2-1.fc22.x86_64.rpm sqlite-devel-3.10.2-1.fc22.x86_64.rpm
 
python -"import sqlite3; print(sqlite3.sqlite_version)"
 

 

이것 저것 테스트하다보니 원하지 않는 결과로 당황하기도 하면서 다시 한번 적어둔다.

 

아래와 같이 소스 설치하는 방법도 나오는데 이런거 전혀 필요없더라.

cd /root
wget https://www.sqlite.org/2020/sqlite-autoconf-3320100.tar.gz 
tar xvfz sqlite-autoconf-3320100.tar.gz
cd sqlite-autoconf-3320100 
./configure
make && make install
 
mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
cp /usr/local/bin/sqlite3 /usr/bin/sqlite3
 

 

블로그 이미지

Link2Me

,
728x90

Python 3 를 yum 으로 설치하면 3.6.X 버전이 설치된다.

가상환경에서 tensorflow 를 설치했더니 3.10.X 버전을 요구하는 것 같다.

그래서 3.10.2 버전을 소스 설치했더니 SSL 에러가 발생하더라. 삽질 끝에 해결이 되었다.

 

###############################################################
# 파이썬(Python 3.10) 설치 과정
###############################################################
 
# Python 모듈을 빌드하려면 개발 도구가 필요
yum -y install epel-release
yum -y groupinstall 'Development Tools'
yum -y install yum-utils
yum -y install mariadb-devel 
yum -y install zlib zlib-devel libffi-devel bzip2-devel
yum -y install gcc gcc-c++ openssl openssl-devel
yum -y install zip unzip wget mc git net-tools
 
# openssl 경로 맞춰주기
vi /root/.bashrc
export PATH="/usr/local/ssl/bin:${PATH}"
 
mkdir -/home/httpd/python/
cd /home/httpd/python/
wget https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tgz
sudo tar xvf Python-3.10.2.tgz
 
 
cd /home/httpd/python/Python-3.10.2/Modules
# 파이썬 인스톨 전에 SSL 설정 꼭 해야 한다.
vi Setup
 
# /ssl 로 찾아 주석처리된 것은 그대로 두고 아래 코드를 추가한다.
SSL=/usr/local/ssl
_ssl _ssl.c \
    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    -L$(SSL)/lib -lssl -lcrypto
 
#:wq 로 저장하고 빠져나온다.
 
cd ..
./configure --enable-optimizations
sudo make altinstall
 
 
python3.10 --version
 
pip3.10 --version
pip3.10 list
 
vi /root/.bashrc
alias python3="/usr/local/bin/python3.10"
alias pip="/usr/local/bin/pip3.10"
 
source /root/.bashrc
 
 
# 현재 Alias 확인
ls -/bin/python*
 
# ln -s 원본파일이름 심볼릭링크이름
ln -/bin/pip3.6 /bin/pip
# 심볼릭 링크(ln) 삭제
rm /bin/pip
 
ln -/usr/local/bin/pip3.10 /bin/pip
 
 
##### 파이썬 가상환경 설정 ####################################
# pip 업그레이드
/usr/local/bin/python3.10 -m pip install --upgrade pip
 
cd /home/httpd/python/
python3 -m pip install virtualenv
python3 -m pip install --upgrade pip
 
# 가상환경 이름을 django 로 설정했는데 다른 명칭으로 변경해도 된다.
virtualenv dlearning
# 실행하면 dlearning 폴더가 자동으로 생성된다.
 
# dlearning 가상환경 실행
source /home/httpd/python/dlearning/bin/activate
 
cd dlearning
 
# 파이썬 디버깅 도구 설치
pip install pylint
pip install twisted
 
pip install numpy pandas jupyter
pip install tensorflow-cpu
# GPU 가 있는 버전은 pip install tensorflow 로 한다.
 
 
# 가상환경 종료
deactivate

 

위에 설명된 SSL 부분의 실제 내용을 캡쳐한 그림이다.

 

yum 설치가 안될 경우 아래와 같이 코드를 수정한다.

# 아래와 같이 수정하지 않으면 yum 설치가 되지 않는다.
vi /usr/bin/yum
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
 
vi /usr/libexec/urlgrabber-ext-down
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.

 

참고자료

https://brightwhiz.com/how-to-install-python-3-10-on-centos-7-centos-8-linux-systems/

 

How To Install Python 3.10 on CentOS 7 | CentOS 8 Linux Systems

With this tutorial you can follow along to install Python 3.10 on CentOS 7 or CentOS 8 Linux systems to have the latest version

brightwhiz.com

위 사이트만으로는 해결이 안될 수 있으니 꼭 SSL 설치 부분을 고려해줘야 한다.

 

블로그 이미지

Link2Me

,
728x90

Python 강좌 듣고 장고 프레임웍 사용 방법을 초보 수준으로 배웠다.

MySQL 또는 MariaDB 를 사용할 경우가 훨씬 많을 거 같아서 기존에 PHP + MariaDB 10.3 이 설치된 환경에서 추가로 Python 과 MariaDB를 사용하려고 수차례 삽질을 한 끝에 확인한 것은 MariaDB 10.3 은 Python Django 프레임웍에서 사용하기가 어려운 줄 알았는데 추가 테스트 결과 yum 설치 순서를 변경하니까 MariaDB 10.3 사용하는데 문제가 없었다.

Python Django 프레임웍은 기본 yum 설치하는 것이 가장 속편하더라.

 

###### SQLite3 DB 설정 #################
cd /root
mkdir sqlite3
cd sqlite3
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.10.2/1.fc22/x86_64/sqlite-3.10.2-1.fc22.x86_64.rpm
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.10.2/1.fc22/x86_64/sqlite-devel-3.10.2-1.fc22.x86_64.rpm
sudo yum -y install sqlite-3.10.2-1.fc22.x86_64.rpm sqlite-devel-3.10.2-1.fc22.x86_64.rpm
sqlite3 –version
.quit
# 빠져나오는 것은 .quit

 

Python 에서는 mariadb 를 기본 yum 설치한 것은 제대로 인식하더라.

MariaDB 10.3 설치 상태에서 인식이 안되는 현상이 있어서 계속 확인 중이다.

아래 그림과 같이 yum list installed mariadb* 로 설치 상태를 확인하고 해보시라.

(실패 경우) 아래 그림과 위의 그림에서 maria-devel 이 다르다는 걸 알 수 있다.

 

MariaDB 사용을 위한 Python 설치 스크립트

# 아래 스크립트는 root권한 모드에서 복사해서 그대로 이용할수 있도록 만든 스크립트이다.

#은 root 권한에서는 주석이므로 앞에 주석에 해당되는 걸 없앴다.

 

# Python 모듈을 빌드하려면 개발 도구가 필요

# mariadb-devel 대신에 mysql-devel 로 된 것도 있는데 어떤 걸 해도 상관없다.
yum -y install epel-release
yum -y groupinstall 'Development Tools'
yum -y install yum-utils
yum -y install zip unzip wget mc git net-tools
yum -y install mariadb-devel 

yum -y install gcc gcc-c++ python3 python3-devel openssl openssl-devel
yum -y install zlib zlib-devel libffi-devel

python3 -V
pip3 -V

# pip 설치는 가상환경 만들어서 하는 걸 권장하므로 아래 한줄은 주석처리했다. (이 단계에서 하지 말라는 의미)
# pip3 install --upgrade pip

# 현재 Alias 확인
ls -l /bin/python*

ln -s /bin/pip3.6 /bin/pip

 

##### 파이썬 가상환경 설정 ##################################################
mkdir -p /home/httpd/python/
cd /home/httpd/python/
python3 -m pip install virtualenv
python3 -m pip install --upgrade pip
# 가상환경 이름을 django 로 설정했는데 다른 명칭으로 변경해도 된다.
virtualenv django
source /home/httpd/python/django/bin/activate

pip3 install --upgrade pip setuptools
pip3 install pylint
pip3 install twisted

pip3 install Django
pip3 install djangorestframework
pip3 install mysqlclient

# pip3 install mysqlclient 이 한줄 때문에  엄청난 삽질과 시간낭비를 했다.

 

 

MariaDB 설치

# 기본 설치 명령어이다.

yum -y install mariadb mariadb-server

 

# 기본 yum 설치 대신에 MariaDB 10.4 버전 설치 시

vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

sudo yum makecache fast
yum -y install MariaDB-server MariaDB-client

 

######### MariaDB 세팅 #########################################

# 기본 yum 설치이든 MariaDB 10.4 를 설치했던 아래 과정은 동일하다.
# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb

# mariadb 시작
systemctl start mariadb

# mariadb 상태 확인
systemctl status mariadb

# Maria DB 보안 설정하기
mysql_secure_installation
관리자 비밀번호 지정 --> 이 과정은 유투브에 보면 많이 나오고, 내 블로그 MariaDB 10.3 설치 게시글에 나온다.

vi /etc/my.cnf.d/server.cnf
[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8


vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8

# MariaDB 서버 재시작
systemctl restart mariadb

mysql -u root -p
비밀번호
status

 

####### 실제 적용 예제 ######
##########################################
// DB 생성
create database django default character set utf8;
use mysql;
create user codefox@localhost identified by 'wonderfull!#%';
grant all privileges on django.* to codefox@localhost;
flush privileges;

 

quit

 

#######################################################################
# 방화벽 설정
yum -y install firewalld

# 방화벽 데몬 시작
systemctl start firewalld

# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld

firewall-cmd --permanent --add-service=http 
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp

firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --reload
firewall-cmd --list-all

#######################################################################

 

이제 장고 프레임웍에서 MairaDB 사용을 위한 준비는 된 셈이다.

 

MariaDB 10.3 제거 방법

이 CASE는 Python Django 사용을 위해 pip3 install mysqlclient 할 때 에러가 발생 시 하시라.

MariaDB 10.3 에 DB 테이블이 있다면 백업부터 하고 지워야 한다.

아래 스크립트는 root권한 모드에서 복사해서 그대로 이용할수 있도록 만든 스크립트이다. #은 root 권한에서는 주석이므로 앞에 주석에 해당되는 걸 없앴다.

 

systemctl stop mariadb
yum list installed mariadb*
yum -y remove MariaDB-client.x86_64 MariaDB-common.x86_64 

yum -y remove MariaDB-compat.x86_64 MariaDB-server.x86_64
rm -rf /etc/yum.repos.d/MariaDB.repo

cd /var/lib/mysql/
rm -rf ib_logfile0 ib_logfile1 ibdata1

cd /var/lib
rm -rf mysql/

블로그 이미지

Link2Me

,
728x90

CentOS 7 리눅스에는 기본적으로 파이썬 2.7이 설치되어 있다.

기존에 설치된 건 버전이 낮아서 사용이 불가능하다.

아래 명령어는 리눅스 관리자권한에서 직접 붙여넣기 편하게 앞에 #을 제거했다. #은 주석으로 인식하므로...

메모장 또는 EditPlus 같은 에디터를 이용하여 아래 내용을 Drag 하고 복사하여 붙여넣기를 한 다음에 CentOS 7 에서 명령어를 입력하면 편리하다.

yum -y install epel-release

yum -y install gcc openssl-devel bzip2-devel libffi-devel sqlite-devel

#yum -y install sqlite*

# root 디렉토리 또는 임의의 디렉토리에서 실행한다.

# python 최신 버전을 확인하려면 https://www.python.org/ftp/python/ 를 한다. 그리고 아래 빨간색 부분을 변경

wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
tar -xvf Python-3.9.5.tgz
cd Python-3.9.5/
./configure --enable-optimizations

make altinstall

# make && make intall 절대 하지 말길

 

# 설치된 파이썬 3.9 바이너리 파일이 어디있는지 확인한다.
which python3.9

 

# bash파일에 파이썬 별칭을 만든다.
vi /root/.bashrc

alias python3="/usr/local/bin/python3.9"
를 추가하고 :wq 로 빠져나온다.

 


# source명령어로 적용시킨다.
source /root/.bashrc

 

# 파이썬 버전을 출력해보면 된다.

# python3.9를 python 으로 변경하면 yum 설치 등 환경설정을 별도 작업해줘야 할 일이 좀 있어서 그냥 python3 으로 설치를 했다.

yum -y install python 으로 설치하면 python 3.6.8 이 기본 설치되어 소스 설치로 좀 더 높은 버전을 설치했다.

 

 

# 원래 상태로 되돌리기

   - 위에 입력한 alias 라인을 지운다. (저장후 나감)
   # hash -r  → bash cache를 초기화 (alias삭제후 python3 명령어 치면 계속  /usr/local/bin/python3.9 를 찾는다)

 

 

# yum 동작을 위한 파이썬
vi /usr/bin/yum
#!/usr/bin/python 으로 되어 있다.
만약 yum install python3 를 했다면 같은 디렉토리에 파이썬 2.7 버전과 3.6 버전이 설치된다.
이 경우에는 
#!/usr/bin/python2.7
로 명확하게 지정해줘야 yum 설치 기능이 동작된다.

내 경우는 python3.9 를 별도 소스 설치했고 python3 로 동작시키도록 했으므로 굳이 변경할 필요는 없다.

 

가상환경 설정

 

 

가상환경 만들기

먼저 가상환경을 만들 디렉토리를 설정한다. 가상환경 이름은 django 라고 설정했다.

mkdir -p /home/httpd/python

cd /home/httpd/python

virtualenv django

 

가상환경 활성화

source django/bin/activate

또는 절대경로 전체를 적어줘도 된다.

가상환경 비활성화

deactivate

 

장고 설치

pip install django

 

장고 REST Framework 설치

pip install djangorestframework

여기까지는 문제없이 잘되었다.

문제는 SQLite3 DB 인식을 하도록 하는 것에서 실패하여 파이썬3를 yum 설치하는 방법으로 해결했다.

블로그 이미지

Link2Me

,
728x90

Visual Studio Code 에서 파이썬 명령어를 입력하면 자동완성 명령어를 미리 보여주는 기능을 활성화하기 위한 방법이다.

 

{

    "python.pythonPath": "C:/Python39/python.exe",

    "python.autoComplete.addBrackets": true

}

블로그 이미지

Link2Me

,
728x90

파이썬에서 python extension loading 에러가 발생하면서 제대로 동작하지 않는다.

파이썬을 삭제하고 다시 깔아도 동일하다.

해결책은 파이썬 환경설정이 저장된 폴더에 있는 정보를 모두 삭제해주면 초기화가 된다.

 

 

 

다시 VSCode 파일을 실행하고 나서 Font Size 등을 다시 정하고, Python 을 다시 설정해준다.

블로그 이미지

Link2Me

,
728x90

mac 환경에서 pip install pandas 한 사항을 적어둔다.

 

윈도우 환경에서 설정한 그림이다.

 

블로그 이미지

Link2Me

,
728x90

가상환경을 사용하는 이유

당연히 파이썬 패키지(라이브러리) 간 의존성 때문에 쓰는 거다. 특정 패키지 버전을 업데이트 할 때 다른 것들이 호환되지 않아 문제가 생기는 경우가 발생한다.

 

cd /Users/jsk005/Documents

python3 -m venv 가상환경이름

python3 -m venv python_basic

cd bin

source ./activate

해제시키려면 deactivate

이제 이 가상환경에서 code 를 입력하면 vscode  가 자동 실행된다.

자동실행되지 않으면 PATH 설정이 안된 것이므로 PATH를 추가해준다.

 

vscode 에서 view --> command palette --> shell 입력하면...

 

윈도우 환경에서 가상환경 만들기

'파이썬 > Python 환경설정' 카테고리의 다른 글

[vscode] python extension loading 에러  (0) 2021.06.22
pip install pandas  (0) 2021.05.11
vscode for mac update issue  (0) 2021.05.06
VS code 언어모드 변경  (0) 2021.05.05
VSCode 의 Task 설정  (0) 2021.05.05
블로그 이미지

Link2Me

,
728x90

맥에서 파이썬 사용을 하려고 vscode for mac 을 다운로드 받아서 압축을 푸니까 다운로드 폴더에 visual studio code 파일이 생성된다.

그곳에서 파일 실행을 하니까 실행은 되는데 update 를 하려고 하면 안된다는 에러 메시지가 발생한다.

원인은 Applications folder 로 파일을 옮기지 않아서 그런 것이다.

Move Code out of Downloads and into the Applications folder.

'파이썬 > Python 환경설정' 카테고리의 다른 글

[vscode] python extension loading 에러  (0) 2021.06.22
pip install pandas  (0) 2021.05.11
파이썬 가상환경 venv 사용하기  (0) 2021.05.06
VS code 언어모드 변경  (0) 2021.05.05
VSCode 의 Task 설정  (0) 2021.05.05
블로그 이미지

Link2Me

,
728x90

 

 

 

'파이썬 > Python 환경설정' 카테고리의 다른 글

[vscode] python extension loading 에러  (0) 2021.06.22
pip install pandas  (0) 2021.05.11
파이썬 가상환경 venv 사용하기  (0) 2021.05.06
vscode for mac update issue  (0) 2021.05.06
VSCode 의 Task 설정  (0) 2021.05.05
블로그 이미지

Link2Me

,
728x90

디버깅 (F5) 이나 디버깅 없이 실행 (Ctrl + F5) 로 작성된 코드를 실행할 수도 있지만,
좀 더 편하게, 입맛에 맞게, 셋팅을 자동으로 처리하여 프로그램을 실행시켜 보려면 tasks.json 을 만들어서 실행하는 것이 편하다.
tasks.json 만드는 법이다.

 

 

 

 

 

기본 생성된 tasks.json 내용을 지우고 아래 내용을 복사하여 붙여넣기 한다.

 

{

    // See https://go.microsoft.com/fwlink/?LinkId=733558

    // for the documentation about the tasks.json format

    "version": "2.0.0",

    "tasks": [

        {

            "label": "Project Label",

            "type": "shell",

            "command": "python",

            "args": [

                "${file}"

            ],

            "presentation": {

                "reveal": "always",

                "panel": "new"

            },

            "options": {

                "env": {

                    "PYTHONIOENCODING": "UTF-8"

                }

            },

            "group": {

                "kind": "build",

                "isDefault": true

            }

        }

    ]

}

 

 

해당 파일이 열려 있는 상태에서 
단축키 Ctrl + Shift + B  (⌘ + ⇧ + B) 를 눌러보면 프로그램 실행결과를 확인 할 수 있다.

'파이썬 > Python 환경설정' 카테고리의 다른 글

[vscode] python extension loading 에러  (0) 2021.06.22
pip install pandas  (0) 2021.05.11
파이썬 가상환경 venv 사용하기  (0) 2021.05.06
vscode for mac update issue  (0) 2021.05.06
VS code 언어모드 변경  (0) 2021.05.05
블로그 이미지

Link2Me

,