From ef2c1df934ee7720fd1ccacae042f3deb3b7628d Mon Sep 17 00:00:00 2001 From: startxfr Date: Mon, 8 Dec 2014 02:35:03 +0100 Subject: adding function and startup script for last services images : memcache, nodejs, ooconv and postresql --- Services/dockerhub_run.sh | 1 + Services/local_build.sh | 1 + Services/local_run.sh | 4 +- Services/memcache/Dockerfile | 11 +- Services/memcache/README.md | 4 +- Services/memcache/memcache_run.sh | 2 - Services/memcache/sx/memcache.sh | 41 ++ Services/memcache/sx/memcache_run.sh | 7 + Services/nodejs/Dockerfile | 19 +- Services/nodejs/README.md | 2 +- Services/nodejs/app.js | 14 - Services/nodejs/app/app.js | 14 + Services/nodejs/nodejs_run.sh | 2 - Services/nodejs/sx/nodejs.sh | 40 ++ Services/nodejs/sx/nodejs_run.sh | 7 + Services/ooconv/Dockerfile | 22 +- Services/ooconv/sx/ooconv.sh | 40 ++ Services/ooconv/sx/ooconv_run.sh | 7 + Services/postgres/Dockerfile | 29 +- Services/postgres/postgres_modify_pass.sh | 24 -- Services/postgres/postgres_run.sh | 14 - Services/postgres/postgresql.conf | 599 ++++++++++++++++++++++++++++++ Services/postgres/sx/postgresql.sh | 66 ++++ Services/postgres/sx/postgresql_run.sh | 7 + 24 files changed, 875 insertions(+), 102 deletions(-) delete mode 100644 Services/memcache/memcache_run.sh create mode 100644 Services/memcache/sx/memcache.sh create mode 100644 Services/memcache/sx/memcache_run.sh delete mode 100644 Services/nodejs/app.js create mode 100644 Services/nodejs/app/app.js delete mode 100644 Services/nodejs/nodejs_run.sh create mode 100644 Services/nodejs/sx/nodejs.sh create mode 100644 Services/nodejs/sx/nodejs_run.sh create mode 100644 Services/ooconv/sx/ooconv.sh create mode 100644 Services/ooconv/sx/ooconv_run.sh delete mode 100644 Services/postgres/postgres_modify_pass.sh delete mode 100644 Services/postgres/postgres_run.sh create mode 100644 Services/postgres/postgresql.conf create mode 100644 Services/postgres/sx/postgresql.sh create mode 100644 Services/postgres/sx/postgresql_run.sh diff --git a/Services/dockerhub_run.sh b/Services/dockerhub_run.sh index 18c47a2..3b3d06d 100755 --- a/Services/dockerhub_run.sh +++ b/Services/dockerhub_run.sh @@ -6,4 +6,5 @@ docker run -d -p 27017:27017 --name="mongo" startx/sv-mongo docker run -d -p 8000:8000 --name="nodejs" startx/sv-nodejs docker run -d -p 82:80 --name="php" startx/sv-php docker run -d -p 5432:5432 --name="postgres" startx/sv-postgres +docker run -d -p 2002:2002 --name="ooconv" startx/sv-ooconv docker run -d -p 22022:22 --name="ssh" startx/sv-ssh \ No newline at end of file diff --git a/Services/local_build.sh b/Services/local_build.sh index 47d1df6..a87ccb1 100755 --- a/Services/local_build.sh +++ b/Services/local_build.sh @@ -6,4 +6,5 @@ docker build -t sv-mongo Services/mongo/ docker build -t sv-nodejs Services/nodejs/ docker build -t sv-php Services/php/ docker build -t sv-postgres Services/postgres/ +docker build -t sv-ooconv Services/ooconv/ docker build -t sv-ssh Services/ssh/ \ No newline at end of file diff --git a/Services/local_run.sh b/Services/local_run.sh index 8c4a027..8381c59 100755 --- a/Services/local_run.sh +++ b/Services/local_run.sh @@ -6,4 +6,6 @@ docker run -d -p 27018:27017 --name="lbmongo" sv-mongo docker run -d -p 8001:8000 --name="lbnodejs" sv-nodejs docker run -d -p 83:80 --name="lbphp" sv-php docker run -d -p 5433:5432 --name="lbpostgres" sv-postgres -docker run -d -p 22023:22 --name="lbssh" sv-ssh \ No newline at end of file +docker run -d -p 2002:2002 --name="lbooconv" sv-ooconv +docker run -d -p 22023:22 --name="lbssh" sv-ssh + diff --git a/Services/memcache/Dockerfile b/Services/memcache/Dockerfile index 1038c60..b71fb6f 100644 --- a/Services/memcache/Dockerfile +++ b/Services/memcache/Dockerfile @@ -1,13 +1,10 @@ FROM startx/fedora MAINTAINER Christophe LARUE -COPY memcache_run.sh /bin/ -RUN yum -y install memcached \ - && yum clean all \ - && chmod ug+rx /bin/memcache_* +RUN yum -y install memcached memcached-selinux && yum clean all +COPY sx/* /sx/ +RUN chmod ug+rx /sx/memcache* EXPOSE 11211 -#CMD ["memcached" , "-u" ," "daemon"] -CMD ["/bin/memcache_run.sh"] -ONBUILD CMD ["/bin/memcache_run.sh"] \ No newline at end of file +CMD ["/sx/memcache_run.sh"] \ No newline at end of file diff --git a/Services/memcache/README.md b/Services/memcache/README.md index b463346..a1c1fc7 100644 --- a/Services/memcache/README.md +++ b/Services/memcache/README.md @@ -16,6 +16,8 @@ Copy sources in your docker host cd startx-docker-images; git clone https://github.com/startxfr/docker-images.git . +Change configuration and personalize your base image. See sx/memcache_run.sh to perform some usefull when configuring or every time you run a container. + Build the container docker build -t sv-memcache Services/memcache/ @@ -27,7 +29,7 @@ Build the container ## Accessing server access to the container itself - docker exec -it memcache bash + docker exec -it memcache /bin/bash ## Related Resources * [Sources files](https://github.com/startxfr/docker-images/tree/master/Services/memcache) diff --git a/Services/memcache/memcache_run.sh b/Services/memcache/memcache_run.sh deleted file mode 100644 index f41aae1..0000000 --- a/Services/memcache/memcache_run.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exec memcached -u daemon \ No newline at end of file diff --git a/Services/memcache/sx/memcache.sh b/Services/memcache/sx/memcache.sh new file mode 100644 index 0000000..d963a29 --- /dev/null +++ b/Services/memcache/sx/memcache.sh @@ -0,0 +1,41 @@ +#!/bin/bash +export TERM=dumb + +# Begin configuration before starting daemonized process +# and start generating host keys +function begin_config { + echo "=> Begin memcached configuration for host $HOSTNAME" +} + +# End configuration process just before starting daemon +function end_config { + stop_server + echo "=> End memcached configuration ..." +} + +# Start the memcached server in background. Used to perform config +# against the database structure such as user creation +function start_server { + echo "===> Starting memcached server ..." + memcached -u daemon -d & + sleep 8 +} + +# Stop the memcached server running in background. +function stop_server { + echo "===> Stopping memcached server ..." + killall memcached + sleep 8 +} + +# Start the memcached server as a deamon and execute it inside +# the running shell +function start_daemon { + echo "=> Starting memcached daemon ..." + exec memcached -u daemon +} + + +if [[ "$0" == *"memcached.sh" && ! $1 = "" ]];then + eval "$@"; +fi \ No newline at end of file diff --git a/Services/memcache/sx/memcache_run.sh b/Services/memcache/sx/memcache_run.sh new file mode 100644 index 0000000..8108386 --- /dev/null +++ b/Services/memcache/sx/memcache_run.sh @@ -0,0 +1,7 @@ +#!/bin/bash +source /sx/memcache.sh + +begin_config +end_config + +start_daemon \ No newline at end of file diff --git a/Services/nodejs/Dockerfile b/Services/nodejs/Dockerfile index 0dac7de..872648a 100644 --- a/Services/nodejs/Dockerfile +++ b/Services/nodejs/Dockerfile @@ -1,18 +1,17 @@ FROM startx/fedora MAINTAINER Christophe LARUE -COPY nodejs_run.sh /bin/ RUN yum -y install nodejs npm \ && yum clean all \ - && mkdir -p /var/www/html \ - && mkdir -p /var/log/httpd \ - && chmod ug+rx /bin/nodejs_* - -WORKDIR /src -COPY app.js /src/app.js + && mkdir -p /var/nodejs /var/nodejs/app \ + && chmod ug+rx /var/nodejs/app +COPY sx/* /sx/ +COPY app/* /var/nodejs/app/ +RUN chmod ug+rx /sx/nodejs* EXPOSE 8000 +VOLUME ["/var/nodejs/app"] + +ENV MAIN_APP /var/nodejs/app/app.js -#CMD ["node", "/src/app.js"] -CMD ["/bin/nodejs_run.sh"] -ONBUILD CMD ["/bin/nodejs_run.sh"] \ No newline at end of file +CMD ["/sx/nodejs_run.sh"] \ No newline at end of file diff --git a/Services/nodejs/README.md b/Services/nodejs/README.md index e3961df..30c37c0 100644 --- a/Services/nodejs/README.md +++ b/Services/nodejs/README.md @@ -28,7 +28,7 @@ access to the running webserver access to the container itself - docker exec -it nodejs bash + docker exec -it nodejs /bin/bash ## Related Resources * [Sources files](https://github.com/startxfr/docker-images/tree/master/Services/nodejs) diff --git a/Services/nodejs/app.js b/Services/nodejs/app.js deleted file mode 100644 index 1dd5446..0000000 --- a/Services/nodejs/app.js +++ /dev/null @@ -1,14 +0,0 @@ -// Load the http module to create an http server. -var http = require('http'); - -// Configure our HTTP server to respond with Hello World to all requests. -var server = http.createServer(function (request, response) { - response.writeHead(200, {"Content-Type": "text/plain"}); - response.end("Hello World\n"); -}); - -// Listen on port 8000, IP defaults to 127.0.0.1 -server.listen(8000); - -// Put a friendly message on the terminal -console.log("Server running at http://127.0.0.1:8000/"); \ No newline at end of file diff --git a/Services/nodejs/app/app.js b/Services/nodejs/app/app.js new file mode 100644 index 0000000..1dd5446 --- /dev/null +++ b/Services/nodejs/app/app.js @@ -0,0 +1,14 @@ +// Load the http module to create an http server. +var http = require('http'); + +// Configure our HTTP server to respond with Hello World to all requests. +var server = http.createServer(function (request, response) { + response.writeHead(200, {"Content-Type": "text/plain"}); + response.end("Hello World\n"); +}); + +// Listen on port 8000, IP defaults to 127.0.0.1 +server.listen(8000); + +// Put a friendly message on the terminal +console.log("Server running at http://127.0.0.1:8000/"); \ No newline at end of file diff --git a/Services/nodejs/nodejs_run.sh b/Services/nodejs/nodejs_run.sh deleted file mode 100644 index b63a40c..0000000 --- a/Services/nodejs/nodejs_run.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exec node /src/app.js \ No newline at end of file diff --git a/Services/nodejs/sx/nodejs.sh b/Services/nodejs/sx/nodejs.sh new file mode 100644 index 0000000..fcf3ebb --- /dev/null +++ b/Services/nodejs/sx/nodejs.sh @@ -0,0 +1,40 @@ +#!/bin/bash +export TERM=dumb + +# Begin configuration before starting daemonized process +# and start generating host keys +function begin_config { + echo "=> Begin nodejs configuration for host $HOSTNAME" +} + +# End configuration process just before starting daemon +function end_config { + echo "=> End nodejs configuration ..." +} + +# Start the nodejs server in background. Used to perform config +# against the database structure such as user creation +function start_server { + echo "===> Starting nodejs server ..." + node $MAIN_APP & + sleep 4 +} + +# Stop the nodejs server running in background. +function stop_server { + echo "===> Stopping nodejs server ..." + killall node + sleep 4 +} + +# Start the nodejs server as a deamon and execute it inside +# the running shell +function start_daemon { + echo "=> Starting nodejs daemon ..." + exec node $MAIN_APP +} + + +if [[ "$0" == *"nodejs.sh" && ! $1 = "" ]];then + eval "$@"; +fi \ No newline at end of file diff --git a/Services/nodejs/sx/nodejs_run.sh b/Services/nodejs/sx/nodejs_run.sh new file mode 100644 index 0000000..875dea2 --- /dev/null +++ b/Services/nodejs/sx/nodejs_run.sh @@ -0,0 +1,7 @@ +#!/bin/bash +source /sx/nodejs.sh + +begin_config +end_config + +start_daemon \ No newline at end of file diff --git a/Services/ooconv/Dockerfile b/Services/ooconv/Dockerfile index 0a50a0a..699f6de 100644 --- a/Services/ooconv/Dockerfile +++ b/Services/ooconv/Dockerfile @@ -1,12 +1,16 @@ +FROM startx/fedora +MAINTAINER Christophe LARUE +USER root +# Install packages and set up unoconv +RUN yum -y install unoconv libreoffice-headless libreoffice-writer libreoffice-calc pdftk gs \ + && yum clean all \ + && mkdir -p /tmp/ootmp +# Copy startx toolkit +COPY sx/* /sx/ +RUN chmod ug+rx /sx/ooconv* -FROM centos:latest -MAINTAINER startx dev@startx.fr +EXPOSE 2002 +VOLUME ["/tmp/ootmp"] -CMD rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm -CMD yum install --skip-broken -y --enablerepo=rpmforge unoconv libreoffice-headless libreoffice-writer libreoffice-calc -COPY unoconv /unoconv - -EXPOSE [2002] - -CMD ./unoconv --listener +CMD ["/sx/ooconv_run.sh"] \ No newline at end of file diff --git a/Services/ooconv/sx/ooconv.sh b/Services/ooconv/sx/ooconv.sh new file mode 100644 index 0000000..b41447c --- /dev/null +++ b/Services/ooconv/sx/ooconv.sh @@ -0,0 +1,40 @@ +#!/bin/bash +export TERM=dumb + +# Begin configuration before starting daemonized process +# and start generating host keys +function begin_config { + echo "=> Begin ooconv configuration for host $HOSTNAME" +} + +# End configuration process just before starting daemon +function end_config { + echo "=> End ooconv configuration ..." +} + +# Start the ooconv server in background. Used to perform config +# against the database structure such as user creation +function start_server { + echo "===> Starting ooconv server ..." + unoconv --listener & + sleep 4 +} + +# Stop the ooconv server running in background. +function stop_server { + echo "===> Stopping ooconv server ..." + killall unoconv + killall soffice.bin +} + +# Start the ooconv server as a deamon and execute it inside +# the running shell +function start_daemon { + echo "=> Starting ooconv daemon ..." + exec unoconv --listener +} + + +if [[ "$0" == *"ooconv.sh" && ! $1 = "" ]];then + eval "$@"; +fi \ No newline at end of file diff --git a/Services/ooconv/sx/ooconv_run.sh b/Services/ooconv/sx/ooconv_run.sh new file mode 100644 index 0000000..fadc29c --- /dev/null +++ b/Services/ooconv/sx/ooconv_run.sh @@ -0,0 +1,7 @@ +#!/bin/bash +source /sx/ooconv.sh + +begin_config +end_config + +start_daemon \ No newline at end of file diff --git a/Services/postgres/Dockerfile b/Services/postgres/Dockerfile index e863a45..0f2a617 100644 --- a/Services/postgres/Dockerfile +++ b/Services/postgres/Dockerfile @@ -1,24 +1,19 @@ FROM startx/fedora MAINTAINER Christophe LARUE -COPY postgres_run.sh postgres_modify_pass.sh /bin/ -RUN yum -y install \ - mariadb-galera-common \ - mariadb-galera-server \ - mariadb-libs \ - mariadb-server \ - mariadb \ +RUN yum -y install postgresql postgresql-libs postgresql-server \ && yum clean all \ - && mkdir -p /var/log/mysql \ - && touch /var/log/mysql/.keep /var/lib/mysql/.keep \ - && chown -R mysql:mysql /var/log/mysql /var/lib/mysql \ - && chmod ug+rx /bin/postgres_* - -VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"] -USER postgresql + && mkdir -p /var/log/pgsql /var/lib/pgsql \ + && touch /var/log/pgsql/.keep /var/lib/pgsql/.keep \ + && chown -R postgres:postgres /var/log/pgsql /var/lib/pgsql +# Copy startx toolkit +COPY sx/* /sx/ +COPY postgresql.conf /var/lib/pgsql/postgresql.conf +RUN chmod ug+rx /sx/postgres* \ + && chown -R postgres:postgres /sx/postgresql* +USER postgres EXPOSE 5432 +VOLUME ["/var/log/pgsql", "/var/lib/pgsql"] -#CMD ["/usr/libexec/pgsqld"] -CMD ["/bin/postgres_run.sh"] -ONBUILD CMD ["/bin/postgres_run.sh"] \ No newline at end of file +CMD ["/sx/postgresql_run.sh"] \ No newline at end of file diff --git a/Services/postgres/postgres_modify_pass.sh b/Services/postgres/postgres_modify_pass.sh deleted file mode 100644 index d76e189..0000000 --- a/Services/postgres/postgres_modify_pass.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -if [ -f /.postgres_pass_modified ]; then - echo "PostgreSQL 'postgres' user pass already modified!" - exit 0 -fi - -#generate pasword -PASS=${POSTGRES_PASS:-$(pwgen -s 12 1)} -_word=$( [ ${POSTGRES_PASS} ] && echo "preset" || echo "random" ) - -echo "=> Modifying 'postgres' user with a ${_word} password in PostgreSQL" -sudo -u postgres psql -U postgres -d postgres -c "alter user postgres with password '$PASS';" -echo "=> Done!" -touch /.postgres_pass_modified - -echo "========================================================================" -echo "You can now connect to this PostgreSQL Server using:" -echo "" -echo " psql -h -p --username=postgres" -echo "and enter the password '$PASS' when prompted" -echo "" -echo "Please remember to change the above password as soon as possible!" -echo "========================================================================" \ No newline at end of file diff --git a/Services/postgres/postgres_run.sh b/Services/postgres/postgres_run.sh deleted file mode 100644 index dfbc232..0000000 --- a/Services/postgres/postgres_run.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -#change the password -service postgresql start >/dev/null 2>&1 -if [ ! -f /.postgres_pass_modified ]; then - /postgres_modify_pass.sh -fi -service postgresql stop >/dev/null 2>&1 - -#start PostgreSQL -sudo -u postgres /usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf - - -exec /usr/libexec/mysqld \ No newline at end of file diff --git a/Services/postgres/postgresql.conf b/Services/postgres/postgresql.conf new file mode 100644 index 0000000..d297e47 --- /dev/null +++ b/Services/postgres/postgresql.conf @@ -0,0 +1,599 @@ +# ----------------------------- +# PostgreSQL configuration file +# ----------------------------- +# +# This file consists of lines of the form: +# +# name = value +# +# (The "=" is optional.) Whitespace may be used. Comments are introduced with +# "#" anywhere on a line. The complete list of parameter names and allowed +# values can be found in the PostgreSQL documentation. +# +# The commented-out settings shown in this file represent the default values. +# Re-commenting a setting is NOT sufficient to revert it to the default value; +# you need to reload the server. +# +# This file is read on server startup and when the server receives a SIGHUP +# signal. If you edit the file on a running system, you have to SIGHUP the +# server for the changes to take effect, or use "pg_ctl reload". Some +# parameters, which are marked below, require a server shutdown and restart to +# take effect. +# +# Any parameter can also be given as a command-line option to the server, e.g., +# "postgres -c log_connections=on". Some parameters can be changed at run time +# with the "SET" SQL command. +# +# Memory units: kB = kilobytes Time units: ms = milliseconds +# MB = megabytes s = seconds +# GB = gigabytes min = minutes +# h = hours +# d = days + + +#------------------------------------------------------------------------------ +# FILE LOCATIONS +#------------------------------------------------------------------------------ + +# The default values of these variables are driven from the -D command-line +# option or PGDATA environment variable, represented here as ConfigDir. + +#data_directory = 'ConfigDir' # use data in another directory + # (change requires restart) +#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file + # (change requires restart) +#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file + # (change requires restart) + +# If external_pid_file is not explicitly set, no extra PID file is written. +#external_pid_file = '' # write an extra PID file + # (change requires restart) + + +#------------------------------------------------------------------------------ +# CONNECTIONS AND AUTHENTICATION +#------------------------------------------------------------------------------ + +# - Connection Settings - + +listen_addresses = '*' +#listen_addresses = 'localhost' # what IP address(es) to listen on; + # comma-separated list of addresses; + # defaults to 'localhost'; use '*' for all + # (change requires restart) +#port = 5432 # (change requires restart) +# Note: In RHEL/Fedora installations, you can't set the port number here; +# adjust it in the service file instead. +#max_connections = 100 # (change requires restart) +# Note: Increasing max_connections costs ~400 bytes of shared memory per +# connection slot, plus lock space (see max_locks_per_transaction). +#superuser_reserved_connections = 3 # (change requires restart) +#unix_socket_directories = '/tmp' # comma-separated list of directories + # (change requires restart) +#unix_socket_group = '' # (change requires restart) +#unix_socket_permissions = 0777 # begin with 0 to use octal notation + # (change requires restart) +#bonjour = off # advertise server via Bonjour + # (change requires restart) +#bonjour_name = '' # defaults to the computer name + # (change requires restart) + +# - Security and Authentication - + +#authentication_timeout = 1min # 1s-600s +#ssl = off # (change requires restart) +#ssl_ciphers = 'DEFAULT:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers + # (change requires restart) +#ssl_renegotiation_limit = 512MB # amount of data between renegotiations +#ssl_cert_file = 'server.crt' # (change requires restart) +#ssl_key_file = 'server.key' # (change requires restart) +#ssl_ca_file = '' # (change requires restart) +#ssl_crl_file = '' # (change requires restart) +#password_encryption = on +#db_user_namespace = off + +# Kerberos and GSSAPI +#krb_server_keyfile = '' +#krb_srvname = 'postgres' # (Kerberos only) +#krb_caseins_users = off + +# - TCP Keepalives - +# see "man 7 tcp" for details + +#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds; + # 0 selects the system default +#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds; + # 0 selects the system default +#tcp_keepalives_count = 0 # TCP_KEEPCNT; + # 0 selects the system default + + +#------------------------------------------------------------------------------ +# RESOURCE USAGE (except WAL) +#------------------------------------------------------------------------------ + +# - Memory - + +#shared_buffers = 32MB # min 128kB + # (change requires restart) +#temp_buffers = 8MB # min 800kB +#max_prepared_transactions = 0 # zero disables the feature + # (change requires restart) +# Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory +# per transaction slot, plus lock space (see max_locks_per_transaction). +# It is not advisable to set max_prepared_transactions nonzero unless you +# actively intend to use prepared transactions. +#work_mem = 1MB # min 64kB +#maintenance_work_mem = 16MB # min 1MB +#max_stack_depth = 2MB # min 100kB + +# - Disk - + +#temp_file_limit = -1 # limits per-session temp file space + # in kB, or -1 for no limit + +# - Kernel Resource Usage - + +#max_files_per_process = 1000 # min 25 + # (change requires restart) +#shared_preload_libraries = '' # (change requires restart) + +# - Cost-Based Vacuum Delay - + +#vacuum_cost_delay = 0 # 0-100 milliseconds +#vacuum_cost_page_hit = 1 # 0-10000 credits +#vacuum_cost_page_miss = 10 # 0-10000 credits +#vacuum_cost_page_dirty = 20 # 0-10000 credits +#vacuum_cost_limit = 200 # 1-10000 credits + +# - Background Writer - + +#bgwriter_delay = 200ms # 10-10000ms between rounds +#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round +#bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round + +# - Asynchronous Behavior - + +#effective_io_concurrency = 1 # 1-1000; 0 disables prefetching + + +#------------------------------------------------------------------------------ +# WRITE AHEAD LOG +#------------------------------------------------------------------------------ + +# - Settings - + +#wal_level = minimal # minimal, archive, or hot_standby + # (change requires restart) +#fsync = on # turns forced synchronization on or off +#synchronous_commit = on # synchronization level; + # off, local, remote_write, or on +#wal_sync_method = fsync # the default is the first option + # supported by the operating system: + # open_datasync + # fdatasync (default on Linux) + # fsync + # fsync_writethrough + # open_sync +#full_page_writes = on # recover from partial page writes +#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers + # (change requires restart) +#wal_writer_delay = 200ms # 1-10000 milliseconds + +#commit_delay = 0 # range 0-100000, in microseconds +#commit_siblings = 5 # range 1-1000 + +# - Checkpoints - + +#checkpoint_segments = 3 # in logfile segments, min 1, 16MB each +#checkpoint_timeout = 5min # range 30s-1h +#checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0 +#checkpoint_warning = 30s # 0 disables + +# - Archiving - + +#archive_mode = off # allows archiving to be done + # (change requires restart) +#archive_command = '' # command to use to archive a logfile segment + # placeholders: %p = path of file to archive + # %f = file name only + # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' +#archive_timeout = 0 # force a logfile segment switch after this + # number of seconds; 0 disables + + +#------------------------------------------------------------------------------ +# REPLICATION +#------------------------------------------------------------------------------ + +# - Sending Server(s) - + +# Set these on the master and on any standby that will send replication data. + +#max_wal_senders = 0 # max number of walsender processes + # (change requires restart) +#wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables +#wal_sender_timeout = 60s # in milliseconds; 0 disables + +# - Master Server - + +# These settings are ignored on a standby server. + +#synchronous_standby_names = '' # standby servers that provide sync rep + # comma-separated list of application_name + # from standby(s); '*' = all +#vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed + +# - Standby Servers - + +# These settings are ignored on a master server. + +#hot_standby = off # "on" allows queries during recovery + # (change requires restart) +#max_standby_archive_delay = 30s # max delay before canceling queries + # when reading WAL from archive; + # -1 allows indefinite delay +#max_standby_streaming_delay = 30s # max delay before canceling queries + # when reading streaming WAL; + # -1 allows indefinite delay +#wal_receiver_status_interval = 10s # send replies at least this often + # 0 disables +#hot_standby_feedback = off # send info from standby to prevent + # query conflicts +#wal_receiver_timeout = 60s # time that receiver waits for + # communication from master + # in milliseconds; 0 disables + + +#------------------------------------------------------------------------------ +# QUERY TUNING +#------------------------------------------------------------------------------ + +# - Planner Method Configuration - + +#enable_bitmapscan = on +#enable_hashagg = on +#enable_hashjoin = on +#enable_indexscan = on +#enable_indexonlyscan = on +#enable_material = on +#enable_mergejoin = on +#enable_nestloop = on +#enable_seqscan = on +#enable_sort = on +#enable_tidscan = on + +# - Planner Cost Constants - + +#seq_page_cost = 1.0 # measured on an arbitrary scale +#random_page_cost = 4.0 # same scale as above +#cpu_tuple_cost = 0.01 # same scale as above +#cpu_index_tuple_cost = 0.005 # same scale as above +#cpu_operator_cost = 0.0025 # same scale as above +#effective_cache_size = 128MB + +# - Genetic Query Optimizer - + +#geqo = on +#geqo_threshold = 12 +#geqo_effort = 5 # range 1-10 +#geqo_pool_size = 0 # selects default based on effort +#geqo_generations = 0 # selects default based on effort +#geqo_selection_bias = 2.0 # range 1.5-2.0 +#geqo_seed = 0.0 # range 0.0-1.0 + +# - Other Planner Options - + +#default_statistics_target = 100 # range 1-10000 +#constraint_exclusion = partition # on, off, or partition +#cursor_tuple_fraction = 0.1 # range 0.0-1.0 +#from_collapse_limit = 8 +#join_collapse_limit = 8 # 1 disables collapsing of explicit + # JOIN clauses + + +#------------------------------------------------------------------------------ +# ERROR REPORTING AND LOGGING +#------------------------------------------------------------------------------ + +# - Where to Log - + +#log_destination = 'stderr' # Valid values are combinations of + # stderr, csvlog, syslog, and eventlog, + # depending on platform. csvlog + # requires logging_collector to be on. + +# This is used when logging to stderr: +logging_collector = on # Enable capturing of stderr and csvlog + # into log files. Required to be on for + # csvlogs. + # (change requires restart) + +# These are only used if logging_collector is on: +#log_directory = 'pg_log' # directory where log files are written, + # can be absolute or relative to PGDATA +log_filename = 'postgresql-%a.log' # log file name pattern, + # can include strftime() escapes +#log_file_mode = 0600 # creation mode for log files, + # begin with 0 to use octal notation +log_truncate_on_rotation = on # If on, an existing log file with the + # same name as the new log file will be + # truncated rather than appended to. + # But such truncation only occurs on + # time-driven rotation, not on restarts + # or size-driven rotation. Default is + # off, meaning append to existing files + # in all cases. +log_rotation_age = 1d # Automatic rotation of logfiles will + # happen after that time. 0 disables. +log_rotation_size = 0 # Automatic rotation of logfiles will + # happen after that much log output. + # 0 disables. + +# These are relevant when logging to syslog: +#syslog_facility = 'LOCAL0' +#syslog_ident = 'postgres' + +# This is only relevant when logging to eventlog (win32): +#event_source = 'PostgreSQL' + +# - When to Log - + +#client_min_messages = notice # values in order of decreasing detail: + # debug5 + # debug4 + # debug3 + # debug2 + # debug1 + # log + # notice + # warning + # error + +#log_min_messages = warning # values in order of decreasing detail: + # debug5 + # debug4 + # debug3 + # debug2 + # debug1 + # info + # notice + # warning + # error + # log + # fatal + # panic + +#log_min_error_statement = error # values in order of decreasing detail: + # debug5 + # debug4 + # debug3 + # debug2 + # debug1 + # info + # notice + # warning + # error + # log + # fatal + # panic (effectively off) + +#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements + # and their durations, > 0 logs only + # statements running at least this number + # of milliseconds + + +# - What to Log - + +#debug_print_parse = off +#debug_print_rewritten = off +#debug_print_plan = off +#debug_pretty_print = on +#log_checkpoints = off +#log_connections = off +#log_disconnections = off +#log_duration = off +#log_error_verbosity = default # terse, default, or verbose messages +#log_hostname = off +#log_line_prefix = '' # special values: + # %a = application name + # %u = user name + # %d = database name + # %r = remote host and port + # %h = remote host + # %p = process ID + # %t = timestamp without milliseconds + # %m = timestamp with milliseconds + # %i = command tag + # %e = SQL state + # %c = session ID + # %l = session line number + # %s = session start timestamp + # %v = virtual transaction ID + # %x = transaction ID (0 if none) + # %q = stop here in non-session + # processes + # %% = '%' + # e.g. '<%u%%%d> ' +#log_lock_waits = off # log lock waits >= deadlock_timeout +#log_statement = 'none' # none, ddl, mod, all +#log_temp_files = -1 # log temporary files equal or larger + # than the specified size in kilobytes; + # -1 disables, 0 logs all temp files +#log_timezone = 'GMT' + + +#------------------------------------------------------------------------------ +# RUNTIME STATISTICS +#------------------------------------------------------------------------------ + +# - Query/Index Statistics Collector - + +#track_activities = on +#track_counts = on +#track_io_timing = off +#track_functions = none # none, pl, all +#track_activity_query_size = 1024 # (change requires restart) +#update_process_title = on +#stats_temp_directory = 'pg_stat_tmp' + + +# - Statistics Monitoring - + +#log_parser_stats = off +#log_planner_stats = off +#log_executor_stats = off +#log_statement_stats = off + + +#------------------------------------------------------------------------------ +# AUTOVACUUM PARAMETERS +#------------------------------------------------------------------------------ + +#autovacuum = on # Enable autovacuum subprocess? 'on' + # requires track_counts to also be on. +#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and + # their durations, > 0 logs only + # actions running at least this number + # of milliseconds. +#autovacuum_max_workers = 3 # max number of autovacuum subprocesses + # (change requires restart) +#autovacuum_naptime = 1min # time between autovacuum runs +#autovacuum_vacuum_threshold = 50 # min number of row updates before + # vacuum +#autovacuum_analyze_threshold = 50 # min number of row updates before + # analyze +#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum +#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze +#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum + # (change requires restart) +#autovacuum_multixact_freeze_max_age = 400000000 # maximum Multixact age + # before forced vacuum + # (change requires restart) +#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for + # autovacuum, in milliseconds; + # -1 means use vacuum_cost_delay +#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for + # autovacuum, -1 means use + # vacuum_cost_limit + + +#------------------------------------------------------------------------------ +# CLIENT CONNECTION DEFAULTS +#------------------------------------------------------------------------------ + +# - Statement Behavior - + +#search_path = '"$user",public' # schema names +#default_tablespace = '' # a tablespace name, '' uses the default +#temp_tablespaces = '' # a list of tablespace names, '' uses + # only default tablespace +#check_function_bodies = on +#default_transaction_isolation = 'read committed' +#default_transaction_read_only = off +#default_transaction_deferrable = off +#session_replication_role = 'origin' +#statement_timeout = 0 # in milliseconds, 0 is disabled +#lock_timeout = 0 # in milliseconds, 0 is disabled +#vacuum_freeze_min_age = 50000000 +#vacuum_freeze_table_age = 150000000 +#vacuum_multixact_freeze_min_age = 5000000 +#vacuum_multixact_freeze_table_age = 150000000 +#bytea_output = 'hex' # hex, escape +#xmlbinary = 'base64' +#xmloption = 'content' + +# - Locale and Formatting - + +#datestyle = 'iso, mdy' +#intervalstyle = 'postgres' +#timezone = 'GMT' +#timezone_abbreviations = 'Default' # Select the set of available time zone + # abbreviations. Currently, there are + # Default + # Australia + # India + # You can create your own file in + # share/timezonesets/. +#extra_float_digits = 0 # min -15, max 3 +#client_encoding = sql_ascii # actually, defaults to database + # encoding + +# These settings are initialized by initdb, but they can be changed. +#lc_messages = 'C' # locale for system error message + # strings +#lc_monetary = 'C' # locale for monetary formatting +#lc_numeric = 'C' # locale for number formatting +#lc_time = 'C' # locale for time formatting + +# default configuration for text search +#default_text_search_config = 'pg_catalog.simple' + +# - Other Defaults - + +#dynamic_library_path = '$libdir' +#local_preload_libraries = '' + + +#------------------------------------------------------------------------------ +# LOCK MANAGEMENT +#------------------------------------------------------------------------------ + +#deadlock_timeout = 1s +#max_locks_per_transaction = 64 # min 10 + # (change requires restart) +# Note: Each lock table slot uses ~270 bytes of shared memory, and there are +# max_locks_per_transaction * (max_connections + max_prepared_transactions) +# lock table slots. +#max_pred_locks_per_transaction = 64 # min 10 + # (change requires restart) + + +#------------------------------------------------------------------------------ +# VERSION/PLATFORM COMPATIBILITY +#------------------------------------------------------------------------------ + +# - Previous PostgreSQL Versions - + +#array_nulls = on +#backslash_quote = safe_encoding # on, off, or safe_encoding +#default_with_oids = off +#escape_string_warning = on +#lo_compat_privileges = off +#quote_all_identifiers = off +#sql_inheritance = on +#standard_conforming_strings = on +#synchronize_seqscans = on + +# - Other Platforms and Clients - + +#transform_null_equals = off + + +#------------------------------------------------------------------------------ +# ERROR HANDLING +#------------------------------------------------------------------------------ + +#exit_on_error = off # terminate session on any error? +#restart_after_crash = on # reinitialize after backend crash? + + +#------------------------------------------------------------------------------ +# CONFIG FILE INCLUDES +#------------------------------------------------------------------------------ + +# These options allow settings to be loaded from files other than the +# default postgresql.conf. + +#include_dir = 'conf.d' # include files ending in '.conf' from + # directory 'conf.d' +#include_if_exists = 'exists.conf' # include file only if it exists +#include = 'special.conf' # include file + + +#------------------------------------------------------------------------------ +# CUSTOMIZED OPTIONS +#------------------------------------------------------------------------------ + +# Add settings for extensions here diff --git a/Services/postgres/sx/postgresql.sh b/Services/postgres/sx/postgresql.sh new file mode 100644 index 0000000..7b57905 --- /dev/null +++ b/Services/postgres/sx/postgresql.sh @@ -0,0 +1,66 @@ +#!/bin/bash +export TERM=dumb + +# Begin configuration before starting daemonized process +# and start generating host keys +function begin_config { + echo "=> Begin postgresql configuration for host $HOSTNAME" + postgresql-setup initdb + postgresql-setup upgrade + start_server + update_rootuser +} + +# End configuration process just before starting daemon +function end_config { + stop_server + echo "=> End postgresql configuration ..." +} + +# Start the postgresql server in background. Used to perform config +# against the database structure such as user creation +function start_server { + echo "===> Starting postgresql server ..." + /usr/bin/postgres +} + +# Stop the postgresql server running in background. +function stop_server { + echo "===> Stopping postgresql server ..." + killall postgres +} + +# Set new root password and grant permissions to all databases +function update_rootuser { + if [ "$pgsql_newadminpwd" = "" ]; then + export pgsql_newadminpwd=$(pwgen 13 1); + fi + local n=$pgsql_newadminpwd; + echo "===> Update root user password and permission" + sudo -u postgres psql -U postgres -d postgres -c "alter user postgres with password '$pgsql_newadminpwd';" + unset pgsql_newadminpwd; + export PGSQL_ROOTPWD=$n; + echo "========================================================================"; + echo "You can now connect to this PostgresQL Server using the following credentials:"; + echo " "; + echo " user type : administrator"; + echo " username : postgres"; + echo " password : $n"; + echo " "; + echo " psql -h -p --username=postgres; $n"; + echo "========================================================================"; + echo " "; + return 0 +} + +# Start the postgresql server as a deamon and execute it inside +# the running shell +function start_daemon { + echo "=> Starting postgresql daemon ..." + exec /usr/bin/postgres -D /var/lib/pgsql/data -c config_file=/var/lib/pgsql/postgresql.conf +} + + +if [[ "$0" == *"postgresql.sh" && ! $1 = "" ]];then + eval "$@"; +fi \ No newline at end of file diff --git a/Services/postgres/sx/postgresql_run.sh b/Services/postgres/sx/postgresql_run.sh new file mode 100644 index 0000000..9504ff5 --- /dev/null +++ b/Services/postgres/sx/postgresql_run.sh @@ -0,0 +1,7 @@ +#!/bin/bash +source /sx/postgresql.sh + +begin_config +end_config + +start_daemon \ No newline at end of file -- cgit v1.2.3