[리눅스] apache vhost 멀티포트 서비스

apache vhost 설정

● 도메인 기준(같은 포트, 다른 도메인)

● 포트 기준(다른 포트, 다른 도메인) : apache 멀티포트 서비스

 

  1. httpd.conf

    1)

    Listen 80

    Listen 8888 (추가)

    2) DocumentRoot 디렉토리 권한 설정 주석처리

     

#<Directory "/usr/local/cafe24/apache/htdocs">
#    Options Indexes FollowSymLinks
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#</Directory>

3) Virtual Host 설정 파일 주석 해제

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

4) httpd-vhosts.conf 설정

NameVirtualHost *:8888 추가

포트별 VirtualHost설정

NameVirtualHost *:80
NameVirtualHost *:8888

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin jooyg62@naver.com
    DocumentRoot "/usr/local/cafe24/apache/htdocs"
    ErrorLog "logs/localhost.80-error_log"
    CustomLog "logs/localhost.80-access_log" common

    <Directory "/usr/local/cafe24/apache/htdocs">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
    JkMountFile conf/uriworkermap.properties
    
</VirtualHost>

<VirtualHost *:8888>
    ServerAdmin jooyg62@naver.com
    DocumentRoot "/home/django/python_ch3"
    ErrorLog "logs/localhost.8888-error_log"
    CustomLog "logs/localhost.8888-access_log" common

    <Directory "/home/django/python_ch3">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

** tomcat 연동과 함께 할 경우
JkMountFile 설정은 VirtualHost에 할 것!!!!

 

httpd.conf 주석 처리
# JkMountFile conf/uriworkermap.properties

 

 

 

 

'규린이 IT 개발 > 규린이 필살 정리' 카테고리의 다른 글

[리눅스] node.js 설치  (0) 2019.07.03
[리눅스] apache - django 연동  (0) 2019.07.02
[리눅스] python 배포 설정  (0) 2019.07.02
[리눅스] python 설치  (0) 2019.07.01
[centOS] postgreSQL 설치  (0) 2019.06.10

[리눅스] python 배포 설정

 

# os.path.dirname: 상위 디렉토리
BASE_DIR = os.path.dirname(os.path.abspath(__file__))

 

python3 zipapp -p "/usr/bin/cafe24/python3.7/bin/python3" python_crawler
python_crawler.pyz
python3 python_crawler.pyz

 

git 명령어 사용


.gitignore 생성

# .gitignore
.idea/
venv/

 

git rm -r --cached .
git add .
git commit -m '[메시지]'
git push

 

  1. python 설치 시, python aplication 실행(venv 아닌상황)

    1.1export PYTHONPATH='application 의존성 경로'

 

ex>
# git clone https://....
# pip3 install -r python_crawler/requirements.txt --target=python_crawler/packages
# export PYTHONPATH='/root/python-projects/python_crawler'
# python3 python_crawler

1.2 꼭 export PYTHONPATH 를 해야돼?

ex)

ex>
# git clone https://....
# pip3 install -r python_crawler/requirements.txt --target=python_crawler
# python3 python_crawler

1.3 압축

ex>
# git clone https://....
# pip3 install -r python_crawler/requirements.txt --target=python_crawler
# python3 -m zipapp python_crawler
# python3 python_crawler.pyz

 

1.4 실행 가능한 파일로 packaging 하기

ex>
# git clone https://....
# pip3 install -r python_crawler/requirements.txt --target=python_crawler
# python3 -m zipapp -p "/cafe24/python3.7/bin/python3" python_crawler
# ./python_crawler.pyz

 

HTTP -> [8080:tomcat-cafe24] <-- AJP --> [:apache:80] <- HTTP

HTTP -> [9090:tomcat-jenkins(server.xml):9009]

수업 내용 정리

7월 1일 수업내용을 정리한 내용입니다.

 

  1. Linux Python Env. (3, 5, 7 ...)

  2. Python Virtual Environment(Isolation)

    1) python -m venv v3.3

    2) virtualenv

    3) pyenv

    4) conda

  3. packaging

  4. apache-django

 

  • pips install django, 설치시 {중앙 파이썬 경로}/lib/site-package 폴더 안에 저장된다.

 

  1. Python 설치(CentOS 6.9) 설치(컴파일)

    1-1. 기본 라이브러리 확인

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

    openssl(1.0, 1,2) ---------> 지지부진...

    |

    |------> libressl -> 2.1 -> 2.6.4 ( python3.7 ) -> 2.9..

    • 3.7.x 버전에서는 libressl 2.6.4 이상이 필요합니다.

      wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.9.2.tar.gz
      tar xfvz libressl-2.9.2.tar.gz
      ./configure --prefix=/usr/local/ssl ( makefile 만들기: 빌드 환경 설정 )
      make ( 컴파일 및 설치 )
      make install
      vi /etc/ld.so.conf.d/ssl.conf(리눅스 공유 라이브러리 위치)
       내용 : /usr/local/ssl/lib
      ldconfig -v | grep ssl ( ssl이 잘 올라갔는지 확인한다 )
      
    • 파이썬 3.7.x 을 성공적으로 컴파일하기 위해서 openssl 을 설치해 주어야 합니다.
    • /etc/ld.so.conf.d 에 있는 공유 라이브러리를 전부 메모리에 올린다.

     

    1-2. 파이썬 3.7.3 설치

    1) 다운로드

    wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
    tar xfvz Python-3.7.3.tgz
    ./configure --prefix=/usr/local/cafe24/python3.7.3 --with-openssl=/usr/local/ssl --enable-shared
    make
    make install
    
    -- 공유라이브러리 로딩 설정 --
    vi /etc/ld.so.conf.d/python.conf
     내용 : /usr/local/cafe24/pyton3.7/lib
    ldconfig -v | grep python ( python이 잘 올라갔는지 확인한다 )
    ln -s python3.7.3 python3.7
    
    • --with-openssl=/usr/local/ssl: 해당 openssl 가지고 컴파일 해라.
    • --enable-shared: python 핵심 모듈 파일은 *.so 파일로 만들어 질 것이다.
    • pip 인스톨에 ssl이 사용된다.

     

     

    vi /etc/profile (PATH 설정)
    
    # python3
    export PATH=$PATH:/usr/local/cafe24/python3.7/bin
    
    source /etc/profile
    
  2. Python Isolation Tools ( Virtual Environments )

    1. venv : python3.3 버젼 이후, 부터 기본모듈
    2. virtualenv : python2 부터 사용해오던 가상환경 라이브러리
    3. pyenv : Python Interpretor Version Manager
    4. conda : Anaconda Python 설치했을 때 사용할 수 있다.
    5. etc : virtualenvwrapper, buildout....

    2-1. virtualenv

    pip3 install virtualenv ( 중앙 site-package에 설치된다 )
    mkdir loganalysis ( 프로젝트 생성 )
    cd loganalysis
    virtualenv venv ( 가상환경 생성 )
    source venv/bin/activate ( 가상환경 구동 )
    python --version ( 확인 )
    deactivate ( 가상환경 나오기 )
    
    • 가상환경: 파이썬 관련 실행. 전역에 설치 하지 않고 프로젝트 내에서 라이브러리 설치 할때 사용.

    2-2. python3 -m venv

    mkdir loganalysis ( 프로젝트 생성 )
    cd loganalysis
    python3 -m venv venv ( 가상환경 생성 )
    (이하 같음)
    

    2-3. 간단한 postgres 연결 모듈 테스트 해보기

    cf) postgres < 10.8 인경우 다음사항 확인

    cd /usr/lib64

    rm libpq.so.5

    ln -s /usr/local/cafe24/pgsql/lib/libpq.so.5 libpq.so.5

    2-4 pgsql_crud 프로젝트 테스트

    1) pycharm에서 pgsql_crud 프로젝트 생성

    2) github commit

    venv 및 프로젝트 설정 파일 ignore

    3) 패키지 의존성 파일 생성

    pip freeze > requirements.txt
    

    git commit!

    4) linux 에서 git clone 생성

    5) venv 생성(isolationize)

    virtualenv venv
    source venv/bin/activate **************
    

    6) 의존성 설치

    (venv) pip install -r requirements.txt
    

    7)

    (venv) python3 test_crud.py
    

    2-5 pgsql_crud project의 test_crud.py고립시키지 않고 (venv를 사용하지 않고) 실행

    export PYTHONPATH='/root/dowork/python-projects/pgsql_crud/venv/lib/python3.7/site-packages'

     

    2-6 python_crawler 프로젝트 테스트

    1) 점진적 의존성 체크 확인해보기

     

pycharm에서 import 하는 방법


settings > Project Interpreter > 설정 > show all ... > 빨간색 뜨는 것 삭제 > (+) 버튼 > venv 추가

 

 

궁금한 것


  • -devel 패키지

    • 주어진 라이브러리에 대해 코드를 컴파일하는 데 필요한 모든 파일.
    • 해당 라이브러리를 사용하는 응용 프로그램을 실제로 컴파일하려면 해당 응용 프로그램의 인터페이스를 설명하는 헤더 파일(*.h)공유 라이브러리(*.so)에 대한 버전없는 심볼릭 링크가 필요합니다.
  • makefile은 어디 있을까?
  • so, 공유 라이브러리? 윈도우는 dll
  • ldconfig 란?

 

 

 

 

비트 연산 기초

 

100 == 0x64?

컴퓨터 언어에서 16진수를 표시하기 위해 숫자 앞에 0x 를 붙입니다. 10진수 100은 16 진수로 64이며 0x64로 표현됩니다.

 

그 이외,

100의 2진수: 0b1100100

100의 10진수: 100

100의 8진수: 0o144

100의 16진수: 0x64

 

Bin : 2진수 ( binary )

Dec : 10진수 ( decimal )

Oct : 8진수 ( octal )

Hex : 16진수 ( hexadecimal )

 

 

비트 연산자 종류

비트 연산의 종류로는 다음과 같이 있습니다.

  • OR(|) : 둘 중 하나라도 1 이면 1

  • AND(&) : 둘다 1이면 1

  • NOT(~)

  • Exclusive OR(^) : 다르면 1, 같으면 0

  • Shift(>>, <<) : 비트를 지정한 수만큼 좌우로 이동시킨다)

    ex. int num = 15 >> 2 << 1

    1111(15) -> 0011(3) -> 0110(6)

    오른쪽 쉬프트가 일어났을때 비트 자리를 벗어나면 해당 비트는 짤리게 된다.

 

참고로, 0x001 0x0001 0x000000001 ... 등 이 모든 16진수 수는 10진수 1과 같다.

 

예제


문제

입력해준 number가 홀수이면 1부터 number까지의 홀수를 모두 더하고,

짝수이면 1부터 number까지의 짝수를 모두 더해라.

 

해답
for n in range(number+1):
    if number & 0x0001 ^ n & 0x0001 == 0:
        s += n

 

 

'규린이 IT 개발' 카테고리의 다른 글

[Mysql] 컬럼 추가, 수정, 삭제  (0) 2021.11.03
[javascript] 페이지 새로고침  (0) 2021.11.03
[java] JMX, MBean 기초  (0) 2019.06.12
[Python] 파이썬 기초  (0) 2019.06.12
[이클립스] build path  (0) 2019.06.11

JMX(Java Management Extention)

  1. MBean(Managed Bean) 플랫폼 혹은 사용자에 의해 만들어진 모니터링용 객체.
  2. Standard MBean, Dynamic MBean, Model MBean, Open MBean 4가지 종류로 나뉨
  3. MBean Server : MBean을 등록. MBeans를 모니터링하기 원하는 원격 JMX 관리자는 MBean Server를 통하여 정보를 획득
  4. agent service : MBeans를 관리하는 (개발자가 제작한) 서비스

 

 

JMX 계층적 구성 요소

img

JMX 계층적 구성 요소에 대한 설명

 

img

JMX 계층적 구성 요소에 대한 설명 (2)

 

img

 

 

예제 따라하기

Standard MBean 예제 git URL

 

소스에 대한 설명

HelloMBean.java (interface)

  • 인터페이스 메소드는 MBean의 속성과 동작을 작성한다.
  • standard MBean은 MBean 인터페이스와 클래스로 구성된다.
  • JMX agent MBean을 관리한다.
  • 규약에 따르면 MBean 인터페이스는 suffix로 MBean으로 명명한다.
  • 관리되는 application이 값을 읽거나 변경이 가능하도록 getter, setter를 지원한다.

 

Main.java

  • Creating a JMX Agent to Manage a Resource
  • 리소스는 MBeans에 의해 측정되며 JMX agent에 의해 리소스가 관리되어 진다.
  • JMX agent의 코어는 MBean server이다. MBean server는 등록된 MBean 들이 관리되는 object server이다.
  • JMX agent 코어 말고 MBean들을 관리하기 위한 서비스들을 포함하고 있다.
  • Main은 초기화된 MBean server를 얻음으로서 시작된다.
  • 모든 JMX MBean은 object name을 가져야한다. 이 ObjectName은 JMX 사양을 따라야 한다.
  • ObjectName은 domain and a list of key-properties 을 가져야한다.

 

 

예제 소스를 실행시킨 뒤 JConsole을 실행시키면 다음과 같이 실행 시킨 예제가 JConsole에 잡히게 됩니다.

image

 

연결 후 MBeans 탭에 들어가면 예제 소스에서 만들어 등록한 MBean을 확인 할 수 있습니다.

 

image

이클립스에서 코드를 실행한 모습

image

🔼 아래는 MBeans 탭을 통해 setCacheSize 함수를 실행한 모습

MBeans탭에서 런타임중 소스의 상태를 수정(Refresh)하고 현재 상태를 확인 할 수 있습니다.

이 중 setCacheSize 함수를 실행시켜 cacheSize 값을 200 -> 150으로 값을 변경 시켜 주었습니다.

위에서 확인 할 수 있듯이 이클립스에서 함수가 실행된 모습을 볼 수 있습니다.

 

참고 자료

'규린이 IT 개발' 카테고리의 다른 글

[javascript] 페이지 새로고침  (0) 2021.11.03
[알고리즘] 비트 연산 기초  (0) 2019.06.13
[Python] 파이썬 기초  (0) 2019.06.12
[이클립스] build path  (0) 2019.06.11
[java] Reflection 예제 소스  (1) 2019.06.05

Python 기초

파이썬 용도✒️

  1. 웹 프레임워크 -> 웹 서비스 개발 (Django, Flask)
  2. 데이터 분석 (Numpy, Pandas) ( -> ML/DL -> AI )
  3. 시스템 관리 툴 (쉘 스크립트 대체)

 

Trac ?

: Issue Tracker

 

Pycharm


pycharm 기본 설정

setting > Editor > inspections > Spelling > 체크 해제

(코딩 중 스펠링 체크로 인해 코드가 보기 안좋을 수 있음)

 

Virtualenv 란?

모든 프로젝트의 lib를 중앙 lib{PYTHON_PATH}/libs)에 설치할 경우 복잡해지기 때문에 Virtual 환경을 만든다.

프로젝트 별로 venv 폴더 밑에 {PYTHON_PATH} 폴더 안에 있는 내용을 그대로 복사하여 가지게 된다.

Base interpreter : 중앙 python 정보를 그대로 카피 하겠다는 뜻.

 

프로젝트를 생성하면 가상 파이썬 환경이 생긴다.

 

단축키


Alt + Enter 자동 임포트

 

 

git global 설정


git을 사용할 때 git global 설정 에러가 뜰 경우 다음과 같이 cmd 창에 명령어 입력

git config --global user.name [이름]

git config --global user.email [이메일]

 

 

 

'규린이 IT 개발' 카테고리의 다른 글

[알고리즘] 비트 연산 기초  (0) 2019.06.13
[java] JMX, MBean 기초  (0) 2019.06.12
[이클립스] build path  (0) 2019.06.11
[java] Reflection 예제 소스  (1) 2019.06.05
[리눅스] 디스크 마운트  (0) 2019.06.04

<!doctype html>

 

Build Path

[프로젝트 우클릭] > preferences > Java Build Path > Source

위의 경로로 들어가게 되면 이클립스 Build 설정을 할 수 있다.

여기서 build가 필요 없는 부분에 대해서 Excluded 설정을 할 수 있는데, xml 이나 properties 같이 build가 불필요한 파일에 대해 설정해 줄 필요가 있다.

그 이유는 소스에 대한 수정이 일어날 경우 이클립스가 계속해서 수정된 소스에 대해 build 하기 때문이다.

(이 때 불필요한 작업을 줄이기 위함.)

 

Excluded 설정을 하게 될 경우, 이클립스는 설정한 소스에 대해서 build를 하지 않게 된다.

 

참고로, 기본 디폴트로 build 되는 위치는, {$PROJECT_HOME}/target/classes 이다.

 

그러나, 메이븐 프로젝트의 경우

기본 src/main/java 와 src/main/resources 폴더는 maven 에서 디폴트로 빌드가 되도록 지정되어 있어 이클립스에서 위의 두 경로에 대해서 excluded 설정을 하더라도 빌드가 된다.

위의 내용은 pom.xml > Effective POM 탭에서 확인 할 수 있다.

 

메이븐에서도 빌드를 막기 위해서는 아래와 같이 pom.xml에 다음과 같은 설정을 해줘야 한다.

 

 

- 소스 다운로드

wget https://ftp.postgresql.org/pub/source/v10.8/postgresql-10.8.tar.gz

 

- 압축 풀기

tar xvfz postgresql-10.8.tar.gz

 

- 빌드환경 구성 및 빌드
: 빌드환경 구성 전 readline lib, python lib 설치 필요

yum -y install python-devel
yum -y install readline-devel
yum -y install zlib-devel
yum -y install gcc

yum -y install openssl-devel

cd postgresql-10.8
./configure --prefix=/usr/local/cafe24/pgsql --with-python --with-openssl --enable-nls=ko
make
make install

 

- 환경변수 등록

#postgres
export POSTGRES_HOME=/usr/local/cafe24/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export PATH=$PATH:$POSTGRES_HOME/bin

 

- 변경 내용 적용
source /etc/profile

 

- 기본 데이터베이스 생성(DB 초기화)
sudo -u postgres /usr/local/cafe24/pgsql/bin/initdb -E UTF8 --locale=ko_KR.UTF-8 /usr/local/cafe24/pgsql/data

또는,

initdb /usr/local/cafe24/pgsql/data

 

- postgreSQL 서버 실행
sudo -u postgres /usr/local/cafe24/pgsql/bin/pg_ctl -D /usr/local/cafe24/pgsql/data -l /usr/local/cafe24/pgsql/data/logfile start

또는,

pg_ctl -D /usr/local/cafe24/pgsql/data -l logfile start

 

- 기본 계정 접속
psql -U postgres ([접속할 DB명])

 

- 패스워드 설정
postgres=# alter user postgres with password '[패스워드]';

 

- 나가기
postgres=# \q

 

- 접근 제어 설정(보안)
: postgres 계정에 패스워드를 입력하여 접근하도록 설정
vi /cafe24/pgsql/data/pg_hba.conf

img

- 서버 끄기
killall postgres

- 서버 시작 확인
ps -ef | grep postgresql
postgres=# ! clear
: 명령어 치는 쉘 명령어 !

- DB 목록
postgres=# \l

 

- DB 생성
postgres=# create database webdb

 

- DB 접속
postgres=# \c webdb

 

- 스키마 확인
postgres=# \dn

 

- DB 테이블 확인
webdb=# \dt

테이블 desc
webdb=# \d pet

파일 테이블에 insert
: 개행으로 구분된 데이터를 테이블 INSERT

webdb=# \copy pet from '/home/webmaster/pet.txt';

img

권한 부여
postgres=# grant all privileges on all tables in schema public to webdb;
webdb=# alter table pet owner to webdb;

 

유저 생성

create user grapana password 'grapana';

 

+ Recent posts