-
-
Save gwangjinkim/f13bf596fefa7db7d31c22efd1627c7a to your computer and use it in GitHub Desktop.
| This gist I write, because I couldn't find step by step instructions | |
| how to install and start postgresql locally (using conda within a conda environment - with the result | |
| that you can run it without sudo/admin rights on your machine!) | |
| and not globally in the operating system (which requires sudo/admin rights on that machine). | |
| I hope, this will help especially people new to postgresql (and those who don't have sudo/admin rights on a specific machine but want | |
| to run postgresql there)! | |
| #################################### | |
| # create conda environment | |
| #################################### | |
| conda create --name myenv | |
| # enter the environment | |
| conda activate myenv | |
| #################################### | |
| # install postgresql via conda | |
| #################################### | |
| conda install -y -c conda-forge postgresql | |
| #################################### | |
| # create a base database locally | |
| #################################### | |
| initdb -D mylocal_db | |
| ############################## | |
| # now start the server modus/instance of postgres | |
| ############################## | |
| pg_ctl -D mylocal_db -l logfile start | |
| ## waiting for server to start.... done | |
| ## server started | |
| # now the server is up | |
| #################################### | |
| # create a non-superuser (more safety!) | |
| #################################### | |
| createuser --encrypted --pwprompt mynonsuperuser | |
| # asks for name and password | |
| #################################### | |
| # using this super user, create inner database inside the base database | |
| #################################### | |
| createdb --owner=mynonsuperuser myinner_db | |
| #################################### | |
| # in this point, if you run some program, | |
| # you connect your program with this inner database | |
| # e.g. Django | |
| #################################### | |
| # in django (Python) e.g. you open with your favorite editor: | |
| nano <mysite>/settings.py # or instead of nano your favorite editor! | |
| DATABASES = { | |
| 'default': { | |
| 'ENGINE': 'django.db.backends.postgresql', | |
| 'NAME': 'myinner_db', | |
| 'USER': 'mynonsuperuser', | |
| 'PASSWORD': '<mynonsuperuserpassword>', | |
| 'HOST': 'localhost', | |
| 'PORT': '', | |
| } | |
| } | |
| # and it is available for django | |
| # so that you can do | |
| ############################## | |
| # do with the connected program these further steps | |
| ############################## | |
| # first install psycopg2 | |
| # because django requires this for handling postgresql | |
| conda install -c anaconda psycopg2 | |
| # then now you can do: | |
| python manage.py migrate | |
| # to fully integreate the postgresql into your django website | |
| # and to be able to use the database, you also need to create a superuser | |
| python manage.py createsuperuser --username name | |
| ################################ | |
| # stop running the postgres instance under ubuntu | |
| ################################ | |
| # monitor whether a postgres instance/server is running or not | |
| ps aux | grep postgres | |
| # if no instance is running, you will see only one line as the answer to your query - which is from your grep search! | |
| # ending with: grep --color=auto postgres | |
| # ignore this line! | |
| # if an instance of postgresql server is running, then several | |
| # processes are runnng | |
| # you can kill the server by the first number of the leading line! | |
| kill <number> | |
| # e.g. the output of `ps aux | grep postgres` was: | |
| # username 2673 0.0 0.0 14760 512 pts/11 S+ 07:34 0:00 grep --color=auto postgres | |
| # username 30550 0.0 0.0 179144 18996 ? S Jun13 0:01 /home/username/miniconda3/envs/django/bin/postgres -D mylocal_db | |
| # username 30552 0.0 0.0 179276 4756 ? Ss Jun13 0:00 postgres: checkpointer process | |
| # username 30553 0.0 0.0 179144 5216 ? Ss Jun13 0:01 postgres: writer process | |
| # username 30554 0.0 0.0 179144 8464 ? Ss Jun13 0:01 postgres: wal writer process | |
| # username 30555 0.0 0.0 179700 5792 ? Ss Jun13 0:01 postgres: autovacuum launcher process | |
| # username 30556 0.0 0.0 34228 3416 ? Ss Jun13 0:03 postgres: stats collector process | |
| # then # 2673 is just the 'grep --color=auto postgres' so ignore | |
| # the line ending with 'postgres -D /path/to/mylocal_db' is the leading line! | |
| # take first number occuring in this line (PID - process ID number) which is 30550, therefore kill it by: | |
| kill 30550 | |
| #################################### | |
| # run postgres as a non-server in the background | |
| #################################### | |
| postgres -D db_djangogirls & # runs postgres | |
| # press RET (return) to send it to background! | |
| # you can stop and switch to server mode by | |
| # following 'stop running postgres instance under ubuntu' | |
| ############################## | |
| # stop non-server or server modus/instance of postgres | |
| ############################## | |
| ps aux | grep postgres # see detailed instructions for finding the correct <process ID> | |
| # under 'stop running postgres instance under ubuntu'! And then do: | |
| kill <process ID> # to stop postgres | |
| Have fun with your completely locally running - more safe - postgresql!!! | |
Helped me out so much! Thanks for this
I am happy that it helped you, @Sando1!
Thank you for sharing this. It was quite useful. Can be included in POSTGRES documentation.
thank you for sharing.
Is it correct that when I restart the machine it will reset the db?
If I run
pg_ctl -D mylocal_db -l logfile start
I get
pg_ctl: directory "mylocal_db" does not exist
thank you very much
Thank you so much for this step by step guide from virtual environment to django. Exactly what I was looking for.
Thank you for sharing this!
@junecv and @Nellyashley Thank you for your positive feedback!
thank you for sharing.
Is it correct that when I restart the machine it will reset the db?
If I run
pg_ctl -D mylocal_db -l logfile start
I get
pg_ctl: directory "mylocal_db" does not existthank you very much
It should not reset. Did you resolve the problem meanwhile?
Very useful!
This saved me so much time!! Thank you!
By running pg_ctl -D mylocal_db -l logfile start, is the database server running all the time? How about after restarting the machine. Is they any ways to set up a systemctl services here?
Thanks, I had to come over to these instructions yet once again...
Thanks! Finding this saved me from a lot of headache ;-)
Helped me out so much! Thanks for this
Happy that it helped you @chintani @jmmichaud @Isaamarod @yogenderPalChandra !
I get error when I run:
pg_ctl -D mylocal_db -l logfile start
the error:
pg_ctl: could not start server
Examine the log output.
@IceBear0149 Then probably you should examine the log output ;)
This saved my time! thank you
It helped a lot!
Thank you to your help :)
If you don't mind, Let me know reference or document about code?
Thank you to your help :) If you don't mind, Let me know reference or document about code?
Which reference or document you mean? Except the normal instructions for global postgresql - how to do it in the conda environment, I had to found out by trial and error and guessing.
Thank you to your help :) If you don't mind, Let me know reference or document about code?
Which reference or document you mean? Except the normal instructions for global postgresql - how to do it in the conda environment, I had to found out by trial and error and guessing.
Oh, I understood. Thanks.
(Google before asking something so easily google-able - don't be lazy!)