Ich habe in dem Projekt, an dem ich zuletzt beteiligt war, über PostgreSQL gesprochen. Ich denke, es ist ungefähr 5 Jahre her, seit ich Postgre nicht berührt habe. Ich erinnere mich nicht genau, aber ich denke, der letzte, den ich benutzte, war die 9er Serie. Ich dachte, ich würde nach Hause gehen und nachschlagen, aber ich fragte mich, wo ich nachschlagen sollte. Lassen Sie uns aus der Quelle bauen! Ich beschloss zu teilen, was ich tat. Dieses Mal habe ich es auf Ubuntu 18.04 gebaut. Übrigens habe ich das Ubuntu-Image mit Docker gezogen. Docker ist mir täglich zu Dank verpflichtet.
Hinzugefügt am 8. März: </ font> Es wurde hinzugefügt, wie auf ** CentOS ** aufgebaut werden kann. Ich habe Centos: 7 mit Docker wie oben gezogen.
Die Art und Weise, Ubuntu und CentOS zu erstellen, ist genau die gleiche. Der einzige Unterschied ist der anfängliche Befehl zur Paketinstallation.
PRE INSTALLATION
Aktualisieren Sie zunächst die Datenbank, die das Paket verwaltet. (Das Paket selbst wird nicht aktualisiert.)
Ubuntu.Befehl
root@2b4511afa430:/# apt-get update
Get:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]
Get:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
....
....
Die zum Erstellen erforderlichen Bibliotheken werden auf der folgenden Seite beschrieben. https://www.postgresql.org/docs/12/install-requirements.html
Ubuntu.Befehl
# apt-get install build-essential
CentOS.Befehl
# yum groupinstall "Development Tools"
Es gibt zwei weitere wichtige Pakete. Es ist möglich, ohne sie zu bauen, aber andererseits können einige nützliche Funktionen nicht verwendet werden.
Ubuntu.Befehl
# apt-get install libreadline-dev zlib1g-dev
CentOS.Befehl
# yum install readline-devel zlib-devel
Laden Sie die Quelle für die Version, die Sie erstellen möchten, über den folgenden Link herunter. https://www.postgresql.org/ftp/source/ Dieses Mal werde ich 12.2 verwenden. Laden Sie den folgenden Befehl herunter und entpacken Sie ihn.
# cd /usr/local/src/
# wget https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.gz
# tar zxf postgresql-12.2.tar.gz
Ubuntu.Befehl
# apt-get install wget
CentOS.Befehl
# yum install wget
INSTALLATION Es ist endlich Zeit zu bauen. ① configure Dieses Mal bereiten wir ein separates Verzeichnis für die Erstellung vor. Auf diese Weise können Sie das Verzeichnis löschen und neu erstellen, wenn etwas schief geht, damit die vorherigen Daten nicht im Weg stehen.
root@2b4511afa430:/usr/local/src# cd postgresql-12.2
root@2b4511afa430:/usr/local/src/postgresql-12.2# mkdir tmp_build_dir
root@2b4511afa430:/usr/local/src/postgresql-12.2# cd tmp_build_dir/
root@2b4511afa430:/usr/local/src/postgresql-12.2/tmp_build_dir#
Führen Sie den folgenden Befehl von diesem Speicherort aus.
/usr/local/src/postgresql-12.2/configure --prefix=/opt/postgresql12
** --prefix ** wird später angezeigt, aber wichtige Dateien wie ausführbare Dateien und Bibliotheksdateien werden in dem hier angegebenen Verzeichnis installiert.
Wir führen hier die Datei "configure" im Quellverzeichnis aus und überprüfen die für die Installation erforderlichen Umgebungsvariablen und Bibliotheken. Als Ergebnis der Überprüfung wird MakeFile erstellt.
② make Als nächstes kompilieren Sie basierend auf dem von configure erstellten MakeFile.
# make
Es wird einige Zeit dauern, aber es ist in Ordnung, wenn am Ende die folgende Meldung angezeigt wird.
Kürzung
make[1]: Entering directory '/usr/local/src/postgresql-12.2/tmp_build_dir/config'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/usr/local/src/postgresql-12.2/tmp_build_dir/config'
All of PostgreSQL successfully made. Ready to install.
③ install Installieren Sie dann das oben kompilierte in dem durch ** --prefix ** angegebenen Verzeichnis.
# make install
Wenn Sie die folgende Meldung sehen, ist sie in Ordnung.
Kürzung
/usr/bin/install -c -m 755 /usr/local/src/postgresql-12.2/config/missing '/opt/postgresql12/lib/pgxs/config/missing'
make[1]: Leaving directory '/opt/temp/build_dir/config'
PostgreSQL installation complete.
Der Inhalt des Installationsziels lautet wie folgt.
postgresql12/
|-- bin
|-- include
|-- lib
`-- share
POST INSTALLATION
Fügen Sie das Verzeichnis mit den ausführbaren Dateien zu Ihrem PATH hinzu, damit jedes Tool von überall ausgeführt werden kann. ](Https://qiita.com/dakc/items/e26d7540c98e59c6b101)
export PATH=/opt/postgresql12/bin:$PATH
Die obige Methode ist vorübergehend. Wenn Sie das Timing beendet haben, kehrt der Wert von PATH zum ursprünglichen Wert zurück. Wenn Sie möchten, dass es immer gespeichert wird, müssen Sie den obigen Befehl zu der Datei hinzufügen, die beim Start ausgeführt wird. Zum Beispiel ~ / .bash_profile, / etc / profile ,,
Auf der offiziellen Website wird empfohlen, den Zugriff auf DB-Daten auf nur einen dedizierten Benutzer zu beschränken. ..
As with any server daemon that is accessible to the outside world, it is advisable to run PostgreSQL under a separate user account. This user account should only own the data that is managed by the server, and should not be shared with other daemons.
Fügen Sie einen neuen Benutzer "postgres" hinzu.
# useradd postgres
Unter / home wird ein Home-Verzeichnis für den Benutzer "postgres" erstellt. Wenn es nicht erstellt wurde, löschen Sie es mit ** userdel postgres ** und geben Sie das Home-Verzeichnis wie unten gezeigt an.
# useradd --create-home --home-dir /home/posgtres postgres
# ls -al /home
total 12
drwxr-xr-x 1 root root 4096 Mar 8 04:32 .
drwxr-xr-x 1 root root 4096 Mar 8 04:12 ..
drwx------ 2 postgres postgres 4096 Mar 8 04:32 posgtres
Bereiten Sie dann die Daten und Konfigurationsdateien vor, die zum Starten des Datenbankservers erforderlich sind. Auf der offiziellen Website wird sorgfältig Folgendes angegeben.
Before you can do anything, you must initialize a database storage area on disk. We call this a database cluster. (The SQL standard uses the term catalog cluster.) A database cluster is a collection of databases that is managed by a single instance of a running database server. After initialization, a database cluster will contain a database named postgres, which is meant as a default database for use by utilities, users and third party applications. The database server itself does not require the postgres database to exist, but many external utility programs assume it exists. Another database created within each cluster during initialization is called template1. As the name suggests, this will be used as a template for subsequently created databases; it should not be used for actual work.
Dieser Prozess wird von dem zuvor erstellten Benutzer "postgres" ausgeführt.
# su postgres
Es gibt andere Möglichkeiten, die Daten zu initialisieren, aber ich werde "pg_ctl" verwenden. Mit diesem ** One-Befehl ** können Sie Folgendes tun. ・ Datenbankinitialisierung ・ Starten Sie den Server ・ Stoppen Sie den Server ・ Starten Sie den Server neu Und so weiter Führen Sie zunächst den Initialisierungsprozess mit dem folgenden Befehl aus. ** - pgdata ** gibt das Verzeichnis an, in dem die Daten erstellt werden. Es wird erstellt, auch wenn der angegebene Ordner nicht vorhanden ist, der Benutzer "postgres" jedoch über eine Erstellungsberechtigung verfügen muss. Dieses Mal wird "Daten" direkt unter "/ home / postgres" angegeben. Wenn Sie die Berechtigungen überprüfen, als Sie den Benutzer oben erstellt haben, können Sie sehen, dass "/ home / postgres" über alle Berechtigungen verfügt (Lesen, Schreiben, Ausführen).
$ pg_ctl --pgdata=/home/posgtres/data initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
...
...Kürzung
Success. You can now start the database server using:
/opt/postgresql12/bin/pg_ctl -D /home/posgtres/data -l logfile start
Wie Sie vielleicht bereits bemerkt haben, wird der Befehl zum Starten des DB-Servers tatsächlich ganz am Ende angezeigt, als der Initialisierungsprozess zuvor ausgeführt wurde. Mit Ausnahme des Parameters ** -l ** ist der Initialisierungsbefehl genau der gleiche. Der letzte Parameter ist jedoch "start" anstelle von "initdb". Geben Sie eine Protokolldatei für -l oder --log an. Hier ist ein Punkt zu beachten. Der Benutzer "postgres" muss über die Berechtigung zum Erstellen von Protokolldateien in dem hier angegebenen Pfad verfügen. Führen Sie unter Berücksichtigung dieser Faktoren den folgenden Befehl aus, um den DB-Server zu starten.
$ pg_ctl --pgdata=/home/posgtres/data --log=/home/posgtres/db.log start
waiting for server to start.... done
server started
Es ist einfach, den DB-Server zu stoppen. Geben Sie einfach am Ende den Stopp an.
$ pg_ctl --pgdata=/home/posgtres/data stop
pg_ctl ist neben dem Starten und Stoppen auch für andere Zwecke nützlich. Weitere Informationen finden Sie in der Hilfe.
[postgres@af6184923e89 /]$ pg_ctl --help
pg_ctl is a utility to initialize, start, stop, or control a PostgreSQL server.
Usage:
pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS]
pg_ctl start [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s]
[-o OPTIONS] [-p PATH] [-c]
pg_ctl stop [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
pg_ctl restart [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
[-o OPTIONS] [-c]
pg_ctl reload [-D DATADIR] [-s]
pg_ctl status [-D DATADIR]
pg_ctl promote [-D DATADIR] [-W] [-t SECS] [-s]
pg_ctl logrotate [-D DATADIR] [-s]
pg_ctl kill SIGNALNAME PID
...Kürzung
Starten Sie zunächst den DB-Server unter Bezugnahme auf (3) oben.
$ pg_ctl -D /home/posgtres/data -l /home/posgtres/db.log start
waiting for server to start.... done
server started
Hier wird der Befehl "psql" hinzugefügt. Es scheint ein interaktives PostgreSQL-Terminal zu sein, aber Sie können es sich als ein Tool vorstellen, das das Terminal verwendet, um die Datenbank abzufragen und die Ergebnisse anzuzeigen. Bei der Initialisierung der Datenbank wird eine Datenbank mit dem Namen "postgres" erstellt. Führen Sie einfach den Befehl psql aus, um eine Verbindung zu dieser Datenbank herzustellen. Auch hier ist zu beachten, dass Sie zum Benutzer "posgres" wechseln und ausführen müssen.
$ psql
psql (12.2)
Type "help" for help.
postgres=#
$ psql --host=localhost --port=5432 --username=postgres --no-password --dbname=postgres
Um psql zu beenden, geben Sie "\ q" ein und drücken Sie die Eingabetaste.
$ psql
psql (12.2)
Type "help" for help.
postgres=# \q
$
Ich schrieb über das Erstellen von PostgreSQL und das Herstellen einer Verbindung zum Server. Ich hoffe es wird für Sie hilfreich sein.
Recommended Posts