Обсуждение: Trouble installing Drupal 5 using sockets (a little long)

Поиск
Список
Период
Сортировка

Trouble installing Drupal 5 using sockets (a little long)

От
Bryan
Дата:
Greetings and Hello!

I am trying to get my little ALIX server that is running OpenBSD
4.4-current to run pgsql.  I've been successful in installing 8.3.3,
and since OpenBSD uses a chrooted environment, I intend on using unix
sockets for making database connections.  I read the man pages, ran
"initdb -D /var/postgresql/data -U postgres -A md5 -W" and edited the
/var/postgresql/data/postgresql.conf file to read:
-----------------------------------------------------------------------------------
# - Connection Settings -

listen_addresses = 'localhost'          # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost', '*' = all
                                        # (change requires restart)
#port = 5432                            # (change requires restart)
max_connections = 40                    # (change requires restart)
# Note:  Increasing max_connections costs ~400 bytes of shared memory per
# connection slot, plus lock space (see max_locks_per_transaction).  You might
# also need to raise shared_buffers to support more connections.
#superuser_reserved_connections = 3     # (change requires restart)
unix_socket_directory = '/var/www/tmp'  # (change requires restart)
unix_socket_group = ''                  # (change requires restart)
unix_socket_permissions = 0777          # begin with 0 to use octal notation
                                        # (change requires restart)
#bonjour_name = ''                      # defaults to the computer name
-------------------------------------------------------------------------------------

I only have 256MB of RAM, so my connections will stay low.  I started
pgsql using:
# pg_ctl -D /var/postgresql/data -l logfile start

And the following shows in the /var/postgresql/logfile:
-------------------------------------------------------------------------------------
LOG:  database system was shut down at 2008-08-09 20:33:22 UTC
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
-------------------------------------------------------------------------------------
An output of netstat -a shows the following:

# netstat -a | grep /var
0xd60cab9c stream    0  0 0xd604394c   0x0   0x0  0x0 /var/www/tmp/.s.PGSQL.5432
0xd61f81a8 dgram     0  0 0xd61f3cd0   0x0   0x0  0x0 /var/empty/dev/log

At this point, I think I am good to go, and can continue.

After I installed Drupal 5, I attempted to create the database that
drupal will use in pgsql.  pkginfo -D gives me the following:
-------------------------------------------------------------------------------------
In postgresql, assuming an `admin' account has all rights:

createuser -U admin --pwprompt --no-superuser --createdb --no-createrole drupal
createdb -U drupal -E UTF8 drupal
-------------------------------------------------------------------------------------

When I type the following:

# createuser -U admin --pwprompt --no-superuser --createdb
--no-createrole drupal

I get the following output:

-------------------------------------------------------------------------------------
Enter password for new role:
Enter it again:
createuser: could not connect to database postgres: could not connect
to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

-------------------------------------------------------------------------------------

Now, something in pgsql is still set and is overiding the config that
I set up.  I did do the initdb and then set the socket, is there
something inside the inital database that needs to be set?  After
searching the internet, I found that someone mentioned that a reboot
after some system updates fixed the issue
(http://www.dbforums.com/showthread.php?t=1625811), but I have not
made any systems changes, and restarting pgsql does start the service
and create the socket inside the chroot (/var/www/).

So, is there any other place that I need to change that tells the
system where the unix socket is?

Much obliged,

Bryan Brake

Re: Trouble installing Drupal 5 using sockets (a little long)

От
Frank Bax
Дата:
Bryan wrote:
> I am trying to get my little ALIX server that is running OpenBSD
> 4.4-current to run pgsql.  I've been successful in installing 8.3.3,
> and since OpenBSD uses a chrooted environment, I intend on using unix
> sockets for making database connections.  I read the man pages, ran
> "initdb -D /var/postgresql/data -U postgres -A md5 -W" and edited the
> /var/postgresql/data/postgresql.conf file to read:
> -------------------------------------------------------------------------------------
> In postgresql, assuming an `admin' account has all rights:
>
> createuser -U admin --pwprompt --no-superuser --createdb --no-createrole drupal
> createdb -U drupal -E UTF8 drupal
> -------------------------------------------------------------------------------------
>
> When I type the following:
>
> # createuser -U admin --pwprompt --no-superuser --createdb
> --no-createrole drupal


You are running createuser under your "root" account and root is not a
priviledged user of pgsql under OpenBSD.

1) login as the pgsql "admin" user (I think it's _postgresql; I changed
it on my system).  this was created for you if you used OpenBSD package
to install pgsql.
    # su - _postgresql
2) Issue the createuser and createdb commands from that account.


Re: Trouble installing Drupal 5 using sockets (a little long)

От
Bryan
Дата:
On Thu, Aug 14, 2008 at 12:10 PM, Frank Bax <fbax@sympatico.ca> wrote:
> Bryan wrote:
>>
>> I am trying to get my little ALIX server that is running OpenBSD
>> 4.4-current to run pgsql.  I've been successful in installing 8.3.3,
>> and since OpenBSD uses a chrooted environment, I intend on using unix
>> sockets for making database connections.  I read the man pages, ran
>> "initdb -D /var/postgresql/data -U postgres -A md5 -W" and edited the
>> /var/postgresql/data/postgresql.conf file to read:
>>
>> -------------------------------------------------------------------------------------
>> In postgresql, assuming an `admin' account has all rights:
>>
>> createuser -U admin --pwprompt --no-superuser --createdb --no-createrole
>> drupal
>> createdb -U drupal -E UTF8 drupal
>>
>> -------------------------------------------------------------------------------------
>>
>> When I type the following:
>>
>> # createuser -U admin --pwprompt --no-superuser --createdb
>> --no-createrole drupal
>
>
> You are running createuser under your "root" account and root is not a
> priviledged user of pgsql under OpenBSD.
>
> 1) login as the pgsql "admin" user (I think it's _postgresql; I changed it
> on my system).  this was created for you if you used OpenBSD package to
> install pgsql.
>        # su - _postgresql
> 2) Issue the createuser and createdb commands from that account.
>

Frank,

Thanks for the help.  Unfortunately, I did do it with the _postgresql
user, I just was stupid in the copy paste.  I hit "#", then pasted the
output.  The error you see above is using _postgresql as the user.  I
did run the command again making sure I was _postgresql and the error
above is still valid.

I was further reading about people who were taking the source and
building postgresql. As a option, you can set the socket directory to
be used by the program when you build it?  Shouldn't the
postgresql.conf override that directive?

Regards,
Bryan

Re: Trouble installing Drupal 5 using sockets (a little long)

От
Frank Bax
Дата:
Bryan wrote:
> On Thu, Aug 14, 2008 at 12:10 PM, Frank Bax <fbax@sympatico.ca> wrote:
>> Bryan wrote:
>>> I am trying to get my little ALIX server that is running OpenBSD
>>> 4.4-current to run pgsql.  I've been successful in installing 8.3.3,
>>> and since OpenBSD uses a chrooted environment, I intend on using unix
>>> sockets for making database connections.  I read the man pages, ran
>>> "initdb -D /var/postgresql/data -U postgres -A md5 -W" and edited the
>>> /var/postgresql/data/postgresql.conf file to read:
>>>
>>> -------------------------------------------------------------------------------------
>>> In postgresql, assuming an `admin' account has all rights:
>>>
>>> createuser -U admin --pwprompt --no-superuser --createdb --no-createrole
>>> drupal
>>> createdb -U drupal -E UTF8 drupal
>>>
>>> -------------------------------------------------------------------------------------
>>>
>>> When I type the following:
>>>
>>> # createuser -U admin --pwprompt --no-superuser --createdb
>>> --no-createrole drupal
>>
>> You are running createuser under your "root" account and root is not a
>> priviledged user of pgsql under OpenBSD.
>>
>> 1) login as the pgsql "admin" user (I think it's _postgresql; I changed it
>> on my system).  this was created for you if you used OpenBSD package to
>> install pgsql.
>>        # su - _postgresql
>> 2) Issue the createuser and createdb commands from that account.
>>
>
> Frank,
>
> Thanks for the help.  Unfortunately, I did do it with the _postgresql
> user, I just was stupid in the copy paste.  I hit "#", then pasted the
> output.  The error you see above is using _postgresql as the user.  I
> did run the command again making sure I was _postgresql and the error
> above is still valid.
>
> I was further reading about people who were taking the source and
> building postgresql. As a option, you can set the socket directory to
> be used by the program when you build it?  Shouldn't the
> postgresql.conf override that directive?


OK.  I went back and took a closer look at original email.  Hopefully
you are running all commands as _postgresql.  Did you also read:
/usr/local/share/doc/postgresql/README.OpenBSD
Which suggests a variation to startup command?

You've shown that the socket is at /var/www/tmp/ which is great for apps
running in chroot'd apache; but it's not great for running commands at
the command line which as you can see from the error message indicate
they want to socket at /tmp/

I suspect you might need to create a symbolic link from one to the
other; but I don't know where the "real" one should be.  Perhaps someone
else knows that.

If you only need the command-line to work one-time while you create the
databases; you could modify your config to have socket in /tmp/; cycle
pgsql; create user and db; modify config back to /var/www/tmp/ recycle
pgsql and get on with Drupal testing.

Frank

Re: Trouble installing Drupal 5 using sockets (a little long)

От
Bryan
Дата:
<snipped...>
>
> OK.  I went back and took a closer look at original email.  Hopefully you
> are running all commands as _postgresql.  Did you also read:
> /usr/local/share/doc/postgresql/README.OpenBSD
> Which suggests a variation to startup command?
>

Variation?  You mean setting login class and what not?  I have the
rc.local scripts already in the right places. I don't want to have to
start the database everytime I restart the box (which shouldn't be
often, but still...)



> You've shown that the socket is at /var/www/tmp/ which is great for apps
> running in chroot'd apache; but it's not great for running commands at the
> command line which as you can see from the error message indicate they want
> to socket at /tmp/
>
> I suspect you might need to create a symbolic link from one to the other;
> but I don't know where the "real" one should be.  Perhaps someone else knows
> that.
>

But, the database starts and sees the socket, what part of pgsql is
not seeing the socket?  Could the fact that I did the "initdb" without
the /var/www/tmp socket be causing the issue?  Pgsql d

> If you only need the command-line to work one-time while you create the
> databases; you could modify your config to have socket in /tmp/; cycle
> pgsql; create user and db; modify config back to /var/www/tmp/ recycle pgsql
> and get on with Drupal testing.
>
I will try that, but it looks like a workaround...  I shouldn't have
to do what you propose.  Do the devs look at this list, or do they
just look at the other lists?

I reply back as to the success or failure of this in the near future...

Regards,
Bryan

Re: Trouble installing Drupal 5 using sockets (a little long)

От
Frank Bax
Дата:
Bryan wrote:
>> I suspect you might need to create a symbolic link from one to the other;
>> but I don't know where the "real" one should be.  Perhaps someone else knows
>> that.
>
> But, the database starts and sees the socket, what part of pgsql is
> not seeing the socket?  Could the fact that I did the "initdb" without
> the /var/www/tmp socket be causing the issue?  Pgsql d



The database SERVER creates the socket, so of course it can see it; the
problem is that your database CLIENTS do not see the socket.

When you run createuser and createdb; you are running client interfaces
which expect to communicate with the PG server via the socket at /tmp/
but that's not where it is; it is created in /var/www/tmp/ everytime the
PG server is started.  The conf file tells PG server where to create the
socket; not where the clients should look for it.

Yes, I presented a workaround.  I also suggested that the proper
permanent solution is to include creation of a symbolic link on every
boot; which I don't have the proper syntax for since I've never used it
(I chose to disable chroot instead).  Here's my guess at command you
need to add to startup:

ln /var/www/tmp/.s.PGSQL.5432 /tmp/.s.PGSQL.5432

Frank

Re: Trouble installing Drupal 5 using sockets (a little long)

От
Bryan
Дата:
On Thu, Aug 14, 2008 at 7:53 PM, Frank Bax <fbax@sympatico.ca> wrote:
> Bryan wrote:
>>>
>>> I suspect you might need to create a symbolic link from one to the other;
>>> but I don't know where the "real" one should be.  Perhaps someone else
>>> knows
>>> that.
>>
>> But, the database starts and sees the socket, what part of pgsql is
>> not seeing the socket?  Could the fact that I did the "initdb" without
>> the /var/www/tmp socket be causing the issue?  Pgsql d
>
>
>
> The database SERVER creates the socket, so of course it can see it; the
> problem is that your database CLIENTS do not see the socket.
>
> When you run createuser and createdb; you are running client interfaces
> which expect to communicate with the PG server via the socket at /tmp/ but
> that's not where it is; it is created in /var/www/tmp/ everytime the PG
> server is started.  The conf file tells PG server where to create the
> socket; not where the clients should look for it.
>
> Yes, I presented a workaround.  I also suggested that the proper permanent
> solution is to include creation of a symbolic link on every boot; which I
> don't have the proper syntax for since I've never used it (I chose to
> disable chroot instead).  Here's my guess at command you need to add to
> startup:
>
> ln /var/www/tmp/.s.PGSQL.5432 /tmp/.s.PGSQL.5432
>
Frank, et al...

I just wanted to give an update.  I was able to successfully install
Drupal with pgsql.  The problem still stands though.  I can make it
work with apache not chrooted.  I ran apache not chrooted and was able
to install the DB, do the initial setup for Drupal, and create user#1.

Now, as to the socket, postgresql puts the socket in /tmp.  You cannot
make a symbolic link from /tmp to /var/www/tmp. You receive a "cross
link device" error.  I did attempt to put the socket in
/var/postgresql/data, and make the link to
/var/www/var/postgresql/data.  I rebooted the box (to enable the
chrooting of apache).  Everything starts, but Drupal is unable to
connect to the database.

I intend to continue to play around, but I'd rather not have to run
apache in a way that it was not intended to run.  I would like the
extra security.

Any help would be greatly appreciated...

Bryan