nginx + uwsgi 에 키스 톤 구축

웹 서버 로 서 nginx 는 메모리 사용량 이 적 고 성능 이 높 아 강남 으로 유명 합 니 다.예전 에 저 는 apache 를 웹 서버 로 하여 openstack 의 api 서 비 스 를 apache 에 구축 하 였 습 니 다.nginx 의 고성능 을 체험 하기 위해 nginx 로 바꾸다.
    서버 를 찾 습 니 다. 시스템 은 표준 centos 7 이 고 키스 톤 서 비 스 를 배치 합 니 다.
   STEP 0: 먼저 stop 원생 키스 톤 서비스
systmctl stop openstack-keystone

   STEP 1: 필요 한 소프트웨어 설치
 yum install nginx uwsgi uwsgi-plugin-python

    두 번 째 단계: keystone 은 Python 프로그램 으로 두 포트 에 감청 되 어 있 으 며, keystone kilo 판 은 원생 으로 uwsgi 를 지원 하 며, 인터페이스 가 이미 존재 합 니 다.다만 uwsgi 와 인터페이스 가 필요 합 니 다.
 cp /usr/share/keystone/keystone.wsgi /usr/share/keystone/main
 cp /usr/share/keystone/keystone.wsgi /usr/share/keystone/admin
 chmod ug+x /usr/share/keystone/admin
 chmod ug+x /usr/share/keystone/main


    세 번 째 단계: uwsgi 프로 세 스 설정
 vim /etc/uwsgi.ini
[uwsgi]
uid = root
gid = root
socket = /var/run/uwsgi/uwsgi.socket
pidfile = /var/run/uwsgi/uwsgi.pid
emperor = /etc/uwsgi.d
#emperor-tyrant = true
master = true
autoload = true
log-date = true
logto = /var/log/uwsgi/uwsgi-emperor.log


    uid 와 gid, uwsgi 자체 프로 세 스 가 실 행 될 때 사용 할 권한 을 설정 합 니 다.nginx 와 일치 하 는 권한 을 루트 로 설정 합 니 다.
   emperor: uwsgi 는 군주 제 도 를 사용 하여 vassal 을 관리 할 수 있 습 니 다.이 값 은 vassal 의 프로필 경 로 를 지정 합 니 다.
   emperor - tyrant: boole 값, vassal 에 실행 권한 이 있 는 지, 이 값 이 true 라면 설정 해 야 합 니 다.
   cap = setgid,setuid;또한 vassal 에 uid 와 gid 를 설정 해 야 합 니 다.여 기 는 단독 지정 권한 을 사용 하지 않 습 니 다.   루트 로
    STEP 4: vassal 설정
  vim /etc/uwsgi.d/admin.ini   #이 경 로 는 위의 emperor 와 일치 해 야 합 니 다.
[uwsgi]
chmod-socket = 666
master = true
plugin = python
socket = /run/uwsgi/keystone-admin.sock
thunder-lock = true
workers = 4
wsgi-file = /usr/share/keystone/admin


 chmod - socket: 여 기 는 666 으로 설정 되 어 있 습 니 다. nginx 가 socket 에 접근 할 수 있 도록 합 니 다.
  plugin: 백 엔 드 가 Python 이기 때문에 plugin = python 을 설정 해 야 합 니 다.
  socket: socket 의 경 로 를 정의 합 니 다. 이 경 로 는 uwsgi 프로 세 스 가 접근 할 수 있 도록 해 야 합 니 다.
  wgi - file: python 인터페이스 파일 의 구체 적 인 경 로 를 지정 합 니 다.
  여기 서 저 는 오랫동안 걸 렸 습 니 다. 나중에 여기 python 파일 의 이름 이 규범 적 이라는 것 을 알 게 되 었 습 니 다. keystone 의 ini 설정 파일 에서 정의 한 api 인터페이스 이름과 일치 해 야 합 니 다. 그렇지 않 으 면 불 러 올 수 없습니다.
  vim /etc/uwsgi/main.ini
[uwsgi]
chmod-socket = 666
master = true
plugin = python
socket = /run/uwsgi/keystone-mainsock
thunder-lock = true
workers = 4
wsgi-file = /usr/share/keystone/main


    다섯 번 째 단계: uwsgi 가 python module 를 정확하게 불 러 올 수 있 는 지 검증 합 니 다.
$: systemctl  start uwsgi
$: systemctl status uwsgi
uwsgi.service - uWSGI Emperor Service
   Loaded: loaded (/usr/lib/systemd/system/uwsgi.service; enabled)
   Active: active (running) since  2016-02-27 16:22:16 CST; 1 day 1h ago
  Process: 11168 ExecStartPre=/bin/chown uwsgi:uwsgi /run/uwsgi (code=exited, status=0/SUCCESS)
  Process: 11166 ExecStartPre=/bin/mkdir -p /run/uwsgi (code=exited, status=0/SUCCESS)
 Main PID: 11172 (uwsgi)
   Status: "The Emperor is governing 2 vassals"
   CGroup: /system.slice/uwsgi.service
           |-11172 /usr/sbin/uwsgi --ini /etc/uwsgi.ini
           |-11175 /usr/sbin/uwsgi --ini /etc/uwsgi.ini
           |-11176 /usr/sbin/uwsgi --ini /etc/uwsgi.ini
           |-11177 /usr/sbin/uwsgi --ini admin.ini
           |-11178 /usr/sbin/uwsgi --ini main.ini
           |-11251 /usr/sbin/uwsgi --ini main.ini
           |-11252 /usr/sbin/uwsgi --ini main.ini
           |-11253 /usr/sbin/uwsgi --ini main.ini
           |-11254 /usr/sbin/uwsgi --ini main.ini
           |-11255 /usr/sbin/uwsgi --ini admin.ini
           |-11256 /usr/sbin/uwsgi --ini admin.ini
           |-11257 /usr/sbin/uwsgi --ini admin.ini
           `-11258 /usr/sbin/uwsgi --ini admin.ini


    systemctl status 출력 이 필요 한 상태 입 니 다. 이 위 에 main. ini admin. ini 를 정확하게 불 러 왔 습 니 다.
    vassal 설정 파일 을 불 러 올 수 없다 는 알림 이 있 으 면 "no python application found, check your startup logs for errors" 와 같은 오류 가 발생 했 습 니 다. python 인터페이스 가 제대로 불 러 올 수 없 기 때 문 입 니 다.대부분 python 을 불 러 오 는 module 의 이름 이 잘못 되 었 습 니 다.
    STEP 6: nginx 설정
   vim / etc / nginx / nginx. conf 참조 줄 추가
http{
.
.
.
.
include /etc/nginx/sites-enabled/*.conf;
}


  vim /etc/nginx/sites-enabled/keystone.conf
server {
  listen                *:35357 ;

  server_name           keystone.com;
  access_log            /var/log/nginx/keystone_wsgi_admin.access.log;
  error_log             /var/log/nginx/keystone_wsgi_admin.error.log;

  location / {
    uwsgi_pass       unix:///run/uwsgi/keystone-admin.sock;
    include          uwsgi_params;
    uwsgi_param      SCRIPT_NAME   "";
  }
}
server {
  listen                *:5000 ;

  server_name           keystone.com;
  access_log            /var/log/nginx/keystone_wsgi_main.access.log;
  error_log             /var/log/nginx/keystone_wsgi_main.error.log;

  location / {
    uwsgi_pass       unix:///run/uwsgi/keystone-main.sock;
    include          uwsgi_params;
    uwsgi_param      SCRIPT_NAME   "";
  }
}


    location 에 uwsgi 를 추가 해 야 합 니 다.param SCRIPT_NAME ""。키스 톤 키 로 버 전 코드 에 이 값 이 필요 해서 SCRIPTNAME。그래서 메시지 에 이 값 을 가지 고 있어 야 돼 요.
    마지막 단계: nginx uwsgi 서 비 스 를 시작 하여 검증 합 니 다.
 $: systemctl  restart nginx
 $: systemctl restart uwsgi
 $: keystone user-list
 +----------------------------------+---------+---------+-------------------+
|                id                |   name  | enabled |       email       |
+----------------------------------+---------+---------+-------------------+
|                                                                                                        |
|                                                                                                        |
+----------------------------------+---------+---------+-------------------+

좋은 웹페이지 즐겨찾기