Systemd postgresql শুরু স্ক্রিপ্ট


14

আমি দ্বিতীয় সার্ভারে পোস্টগ্র্যাস্কল ইনস্টল করার প্রক্রিয়াধীন

পূর্বে আমি পোস্টগ্র্যাস্কল ইনস্টল করেছি এবং তারপরে সরবরাহ করা স্ক্রিপ্টটি ব্যবহার করেছি

./contrib/start-scripts/linux

সঠিক dir মধ্যে স্থাপন করা হয়

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

যা আমি তখন দিয়ে প্রত্যাশা অনুযায়ী কার্যকর করতে পারি

# service postgresql92 start

তবে নতুন মেশিনটি সিস্টেমড ব্যবহার করছে এবং দেখে মনে হচ্ছে এটি করার সম্পূর্ণ ভিন্ন উপায় রয়েছে

আমি এটি হ্যাক করতে চাই না এবং কিছু নষ্ট করতে চাই না তাই আমি ভাবছিলাম যে সেখানে যদি কেউ আমাকে একই ফলাফল কীভাবে অর্জন করতে পারে তার সঠিক দিকে নির্দেশ করতে পারে?

উত্তর:


21

উত্স থেকে ইনস্টল করার সময়, আপনাকে উত্স ইনস্টলের সাথে কাজ করে এমন একটি সিস্টেমযুক্ত ইউনিট ফাইল যুক্ত করতে হবে। RHEL- এর জন্য, ফেডোরার আমার ইউনিট ফাইলটি দেখতে এমন দেখাচ্ছে:

/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

তারপরে পরিষেবাটি প্রারম্ভকালে সক্ষম করুন এবং পোস্টগ্রেএসকিউএল পরিষেবা শুরু করুন:

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

6
# systemctl start postgresql.service

কিছু পরিবেশে অনুবাদ service <name> startকরা হবে systemctl start <name>.service, কিন্তু আপনাকে এটির উপর নির্ভর করতে হবে না।


তবে আমি কোথায় পোস্টগ্রেকস্কেল ৯২ স্ক্রিপ্ট রাখব?
TheLovelySausage

আপনি এটি আর সিস্টেমে ব্যবহার করবেন না। আপনার বিতরণে আপনাকে পোস্টগ্রেকসিএল সিস্টেমড পরিষেবা ফাইল সরবরাহ করতে হবে যাতে আপনি পরিষেবাটি শুরু করতে পারেন।
আমেরিকান

পোস্টগ্র্যাসকিএলটি উত্স থেকে ইনস্টল করা হয়েছিল যদিও, ডিএনএফ ব্যবহার না করে কারণ আমাকে নির্দিষ্ট ডিরেক্টরিতে পোস্টগ্রাসের ৩ টি সংস্করণ ইনস্টল করতে হবে, পোস্টগ্র্রেসকিএল শুরু করার জন্য সরবরাহিত স্টার্ট-স্ক্রিপ্টস লিনাক্স ফাইলটি ব্যবহার করা কি সম্ভব?
TheLovelySausage

আমার বিতরণ হিসাবে এই স্ক্রিপ্ট যোগ /usr/lib/systemd/system/postgresql.service। পোস্টগ্রিস্কল দ্বারা সরবরাহ করা শুরু স্ক্রিপ্টগুলি কেবল কভার বলে মনে হচ্ছে SysV
আমেরিকান

আপনি ডিএনএফ বা ইয়াম ব্যবহার করে পোস্টগ্র্যাগ ইনস্টল করেছেন?
TheLovelySausage

0

উপরের পোস্ট করা সিস্টেমট্যাক্ট ইউনিট ফাইল আমাকে অনেক সাহায্য করে তবে একটি আপনার তৈরি করতে আপনাকে কেবল এটি চাপতে হবে:

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

আপনার ইনস্টল অনুসারে বিনে পিজি_সিটিএল পাথটি পরিবর্তন করার বিষয়ে চিন্তা করুন এবং আপনি যদি অন্য কোনও দৌড়াতে চান তবে আপনাকে অবশ্যই ডিফল্ট শ্রবণ পোর্ট পরিবর্তন করতে হবে:

ExecStart=/usr/local/pgsql/bin/pg_ctl -o "-p 5489"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.