서버 재기동시 postgresql 자동 실행

1. Service 생성

  • 경로 : /usr/lib/systemd/system
  • 명령어 : vi postgresql.service

postgresql.service 내부 작성

[Unit]
Description=PostgreSQL database server
After=syslog.target network.target

[Service]
User=postgres

Environment=PGDATA=/apps/postgresql/data
Environment=PGSQL=/apps/postgresql

ExecStart=/apps/postgresql/bin/ag_ctl -D ${PGDATA} -l ${PGSQL}/logs/psql.log start
ExecStop=/apps/postgresql/bin/ag_ctl -D ${PGDATA} -l ${PGSQL}/logs/psql.log stop
ExecReload=/apps/postgresql/bin/ag_ctl -D ${PGDATA} -l ${PGSQL}/logs/psql.log restart

[Install]
WantedBy=multi-user.target

코드 설명

  1. [Unit]
    1. Description : 해당 서비스에 대한 설명
    2. After : 서비스가 언제 실행될지에 대해 정할 수 있는 부분
      1. syslog.target : 시스템 로그에 관련된 것이 설정된 후
      2. network.target : 네트워크가 연결된 후
  2. [Service]
    1. User : Postgresql을 실행하는 유저
    2. Environment : 변수 생성
      1. PGSQL : 설치되어있는 postgresql 경로
      2. PGDATA : 설치되어있는 postgresql의 data 경로
    3. ExecStart : Postgresql을 실행하는 명령어
    4. ExecStop : Postgresql을 정지시키는 명령어(없어도 괜찮음)
    5. ExecReload : Postgresql을 재시작하는 명령어(없어도 괜찮음)
  3. [Install]
    1. WantedBy : 서비스 run level을 설정하는 부분 ('multi-user.target'은 다중 사용자)

 

2. 서비스 활성화

sudo systemctl enable postgresql.service

 

 

3. 서버 재시작

sudo systemctl reboot

 

 

4. 기타 명령어

서비스 상태 확인

sudo service postgresql status

 

서비스 확인

systemctl