Ở bài trước, tôi đã Hướng dẫn biên dịch và cài đặt PostgreSQL 9.2 trên Ubuntu 12.04 LTS. Tuy nhiên, mỗi lẫn khởi động lại server thì PostgreSQL sẽ không tự khởi chạy và chúng ta sẽ phải khởi chạy bằng phương pháp thủ công (gọi lệnh khởi chạy instance). Thêm nữa, việc gọi lệnh khởi chạy cũng rất "lằng nhằng" do chúng ta phải nhớ đường dẫn (path) của tập tin pg_ctl (như hướng dẫn trước thì đường dẫn là /usr/local/pgsql/bin/pg_ctl
).
Mục tiêu đề ra của bài này là:
- Khởi động Ubuntu Server thì PostgreSQL sẽ tự khởi chạy.
- Để khởi động PostgreSQL ta sẽ sử dụng lệnh
sudo service postgresql start
- Để tắt PostgreSQL ta sẽ sử dụng lệnh
sudo service postgresql stop
- Để khởi động lại PostgreSQL ta sẽ sử dụng lệnh
sudo service postgresql restart
Giả sử:
- Server của bạn chạy Hệ điều hành Ubuntu Server 12.04 LTS
- Khi cài PostgreSQL, bạn làm như hướng dẫn trước
thì cách thực hiện mục tiêu của bài này như sau:
Bước 1: Tạo start-script (shell)
Mã nguồn PostgreSQL 9.2.3 đã bao gồm một start-script sẵn dành cho linux nói chung (gồm cả Ubuntu) có trong thư mục contrib/start-scripts/
. Bạn chỉ việc copy tập tin này vào thư mục /etc/init.d/
và sửa lại nội dung (đường dẫn tới thư mục cài đặt PostgreSQL nếu bạn cài ở thư mục khác thư mục mặc định; username - nếu bạn không đặt là postges) là xong.
sudo cp contrib/start-scripts/linux /etc/init.d/postgresql
Cho phép quyền thực thi đối với tập tin này
sudo chmod +x /etc/init.d/postgresql
Có thể bạn cần sửa các dòng sau cho phù hợp với thực trạng và nhu cầu của bạn(Số thứ tự dòng chỉ đúng nếu bạn đang dùng bản PostgreSQL 9.2.0 đến bạn hiện hành 9.2.3, ở các bản trước đó tôi chưa có điều kiện kiểm tra):
- Dòng số 32: Nếu thư mục bạn cài PostgreSQL không phải là
/usr/local/pgsql
(thư mục mặc định) - Dòng số 35: Nếu Data Directory không phải là thư mục
/usr/local/pgsql/data
như tôi đã hướng dẫn ở bài trước - Dòng số 38: Nếu PostgreSQL superuser của bạn không phải là postges
- Dòng số 41: Nếu bạn muốn thay đổi đường dẫn của tập tin log. Ví dụ:
PGLOG="/var/log/postgresql/serverlog.log"
Lúc này bạn đã có thể Khởi Động, Dừng, Khởi Động Lại, Nạp lại thông số, Xem tình trạng PostgreSQL bằng các lệnh sau:
- Khởi động:
sudo /etc/init.d/postgresql start
- Dừng/Tắt:
sudo /etc/init.d/postgresql stop
- Khởi động lại:
sudo /etc/init.d/postgresql restart
- Nạp lại thông số:
sudo /etc/init.d/postgresql reload
- Xem tình trạng hiện tại của PostgreSQL:
sudo /etc/init.d/postgresql status
Bước 2: Tự động khởi chạy PostgreSQL khi khởi động server Ubuntu
Để khởi động PostgreSQL tự động mỗi khi khởi động máy chủ Ubuntu, bạn cần chạy lệnh sau:
sudo update-rc.d postgresql defaults
Bước 3: Tạo biến môi trường cho các tiện ích client của PostgreSQL
Nếu không qua bước này, để tạo cơ sở dữ liệu, bạn phải gọi tiện ích createdb
với đường dẫn đầy đủ, ví dụ: /usr/local/pgsql/bin/createdb test_database_name
. Để tránh phiền phức vì phải gõ đường dẫn quá dài, ta cần nạp đường dẫn để hệ điều hành có thể gọi chính xác chương trình khi ta gõ lệnh. Cách làm như sau:
Tạo tập tin pg.sh
trong thư mục /etc/profile.d
để lưu thông tin đường dẫn:
sudo sh -c "echo 'PATH=/usr/local/pgsql/bin:\$PATH' > /etc/profile.d/pg.sh"
sudo sh -c "echo 'export PATH' >> /etc/profile.d/pg.sh"
Tạo run time linker
sudo ldconfig /usr/local/pgsql/lib/
Bước 4: Kiểm tra kết quả và enjoy ^_^
Giờ, hãy khởi động lại máy chủ Ubuntu của bạn và kiểm tra kết quả. Việc điều khiển Bật, Tắt, v.v. lúc này đơn giản hơn nhiều:
- Khởi động:
sudo service postgresql start
- Dừng/Tắt:
sudo service postgresql stop
- Khởi động lại:
sudo service postgresql restart
- Nạp lại thông số:
sudo service postgresql reload
- Xem tình trạng hiện tại của PostgreSQL:
sudo service postgresql status
- Tạo một cơ sở dữ liệu có tên
testdb
:sudo su - postgres
createdb testdb
Chúc may mắn!
Mọi bình luận & ý kiến đóng góp để làm cho bài viết này trở nên tốt hơn và hữu ích hơn đều được hoanh nghênh.
Hướng dẫn tạo script bật, tắt, khởi động lại cho PostgreSQL trên Ubuntu
PostgreSQL PostgreSQL 9.2 PostgreSQL Start Script Ubuntu Ubuntu 12.04 LTS