Systemd postgresql başlangıç ​​komut dosyası


14

İkinci bir sunucuya postgresql yükleme sürecindeyim

Daha önce postgresql'i yükledim ve sonra verilen komut dosyasını kullandım

./contrib/start-scripts/linux

Doğru dizine yerleştirilmiş

# cp ./contrib/start-scripts/linux /etc/rc.d/init.d/postgresql92
# chmod 755 /etc/rc.d/init.d/postgresql92

Hangi daha sonra beklendiği gibi yürütmek

# service postgresql92 start

Ancak yeni makine Systemd kullanıyor ve bunu yapmanın tamamen farklı bir yolu var gibi görünüyor

Bunu kesmek ve bir şeyi mahvetmek istemiyorum, bu yüzden dışarıdaki birinin beni aynı sonuca nasıl ulaşacağına doğru yönde yönlendirip yönlendiremeyeceğini merak ediyordum

Yanıtlar:


22

Kaynaktan kurulum yaparken, kaynak kurulumuyla çalışan bir systemd birim dosyası eklemeniz gerekir. RHEL için, Fedora birim dosyam şöyle görünüyor:

/usr/lib/systemd/system/postgresql.service

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

[Service]
Type=forking

User=postgres
Group=postgres

# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog

# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
# ... but allow it still to be effective for child processes
# (note that these settings are ignored by Postgres releases before 9.5)
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0

# Maximum number of seconds pg_ctl will wait for postgres to start.  Note that
# PGSTARTTIMEOUT should be less than TimeoutSec value.
Environment=PGSTARTTIMEOUT=270

Environment=PGDATA=/usr/local/pgsql/data


ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -w -t ${PGSTARTTIMEOUT}
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA} -s

# Give a reasonable amount of time for the server to start up/shut down.
# Ideally, the timeout for starting PostgreSQL server should be handled more
# nicely by pg_ctl in ExecStart, so keep its timeout smaller than this value.
TimeoutSec=300

[Install]
WantedBy=multi-user.target

Ardından hizmeti başlangıçta etkinleştirin ve PostgreSQL hizmetini başlatın:

$ sudo systemctl daemon-reload # load the updated service file from disk
$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql

6
# systemctl start postgresql.service

Bazı ortamlar çevirmek istiyorum service <name> startiçin systemctl start <name>.service, ancak bunun güvenmek zorunda değilsiniz.


Ama postgresql92 betiğini nereye yerleştiririm?
TheLovelySausage

Artık systemd'de kullanmıyorsunuz. Dağıtımınız size hizmeti başlatabilmeniz için postgresql systemd hizmet dosyasını sağlamalıdır.
Emeric

Postgresql olsa da, dnf kullanarak kaynağından yüklendi, çünkü belirli dizinlere postgres 3 sürümü yüklemem gerekiyor, postgresql başlatmak için sağlanan start-script script linux dosyasını kullanmak mümkün mü?
TheLovelySausage

Dağıtımım bu komut dosyasını olarak ekler /usr/lib/systemd/system/postgresql.service. Postgresql tarafından sağlanan başlangıç ​​komut dosyaları sadece kapsamaktadır SysV.
Emeric

dnf veya yum kullanarak postgres yüklediniz mi?
TheLovelySausage

0

Yukarıdaki sistemctl birim dosyası bana çok yardımcı ama ihtiyacınız olanı oluşturmak için sadece koymak zorunda:

/etc/systemd/system/postgresql92.service
systemctl enable postgresql92.service
systemctl start postgresql92.service

Kurulumunuza göre binay pg_ctl yolunu değiştirmeyi düşünün ve başka bir örnek çalıştırmak istiyorsanız, varsayılan dinleme bağlantı noktasını da değiştirmeniz gerekir:

ExecStart=/usr/local/pgsql/bin/pg_ctl -o "-p 5489"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.