I've started digging into debian packaging of Newscoop. Before opening ticktes, I'd like to discuss a few issues:
The main concern is that the document-root needs to be writable by the www-user. Besides being a big potential security issue. This is only useful if there is going to be a self-update feature for non-packaged installations.
Debian & Ubuntu would store the fixed system in /usr and the variable data (templates_cache, files, plugins, etc) would be symlinks to /var. I can come up with a patch for the installer that'd make it detect if it's installed to /usr and override the "Document Root needs to be writable) check. Is that an option?
A 2nd blocker is that CampInstallation.php only searches the current PHP session for a config.db. It'd be very useful if the database-user/password could be created on package installation using debian's dbconfig and pre-saved in conf/database_conf.php.
currently the installer does not honor info that is already present there. Could this be implemented in the installer?
A few notes for http://booki.flossmanuals.net/newscoop/_v/1.0/command-line-i nstallation/
* the database-user creation lacks a `FLUSH PRIVILEGES`.
* don't use /etc/apache2/conf.d/ - use /etc/apache2/sites-available/ and `a2ensite` instead of `a2enmod`
* custom PHP overrides can be done in /etc/php5/conf.d/ without modifying the main php.ini file. Otherwise there will be conflicts that require manual interaction when updating PHP.
* the last part `cp -r src/*` is outdated.
best,
robin
PS. Until the licensing issues discussed elsewhere are resolved this will remain an unofficial package.
1) Could _all_ folders that need to be writable by the webserver be moved to <ns-docroot>/local/ (or <ns-docroot>/var/)?
2) Making the packages depending on a mysql and creating a db-user during installation might not be a good idea after all. It may turn out that most installations use a dedicated database-server which is not on the same host as the webserver. For .deb's this can become a question during postinst. Not sure about rpm's though. - What do you think?
Hi Robin, I will give you some feedback on this soon, thanks.
On Mon, Jan 24, 2011 at 8:52 AM, Robin Gareus
<newscoop-dev@lists.sourcefabric.org> wrote:
>
> a few more thoughts:
>
> 1) Could _all_ folders that need to be writable by the webserver be moved to <ns-docroot>/local/ (or <ns-docroot>/var/)?
>
> 2) Making the packages depending on a mysql and creating a db-user during installation might not be a good idea after all. It may turn out that most installations use a dedicated database-server which is not on the same host as the webserver. For .deb's this can become a question during postinst. Not sure about rpm's though. - What do you think?
>
> This is only
> useful if there is going to be a self-update feature for non-packaged
> installations.
Actually it seems that the assumption that the DocumentRoot directory
should be writable is found in several places in the code, not just
during software updates. That's why the above ticket is not likely to be
fixed for 3.5 GA.
> Debian & Ubuntu would store the fixed system in /usr and the variable
> data (templates_cache, files, plugins, etc) would be symlinks to /var. I
> can come up with a patch for the installer that'd make it detect if it's
> installed to /usr and override the "Document Root needs to be writable)
> check.
Given the short time available before the GA release, my suggestion
would be that we create a package which follows the existing
installation model, complete with its flaws. Then experiment with these
improvements after the 3.5 GA release and check for regressions.
Along with the licensing fixes, we will then be in a much better
position to get Newscoop into Debian/Ubuntu/Fedora as an official package.
> A 2nd blocker is that CampInstallation.php only searches the current PHP
> session for a config.db. It'd be very useful if the
> database-user/password could be created on package installation using
> debian's dbconfig and pre-saved in conf/database_conf.php.
Yes, that would be much slicker. The current assumption of the Newscoop
installer is that users will enter a username and password with database
create permissions, and yet the installer specifically advises users not
to use the MySQL root user account (as it should). That's why I've added
a section to the instructions on manually creating a non-root database
user account limited to operating on a specific database.
> currently the installer does not honor info that is already present
> there.
That would definitely be an improvement - do you think that could be
implemented this week? Please open a ticket on http://dev.sourcefabric.org/ in any case.
I did wonder about that, but according to: http://dev.mysql.com/doc/refman/5.1/en/adding-users.html it is not
necessary to do a FLUSH PRIVILEGES when using CREATE USER and GRANT,
only when using INSERT. It worked for me, but I'm happy to be corrected,
as always :-)
> * don't use /etc/apache2/conf.d/ - use /etc/apache2/sites-available/
That's also an improvement, thanks. Previously, both Campcaster and
Campsite put their configs in /etc/apache2/conf.d/ but this creates
global settings which override /etc/apache2/sites-available/ - making
multiple virtual servers tricky.
> and
> `a2ensite` instead of `a2enmod`
I have added a couple of steps about using a2ensite and a2dissite, but I
still need the a2enmod command to enable the rewrite module, don't I?
> * custom PHP overrides can be done in /etc/php5/conf.d/ without
> modifying the main php.ini file. Otherwise there will be conflicts that
> require manual interaction when updating PHP.
Good point, I added a mention of that.
> * the last part `cp -r src/*` is outdated.
Works for me, but which syntax would you recommend?
> 1) Could _all_ folders that need to be writable by the webserver be
> moved to <ns-docroot>/local/
I thought local/ paths were not suitable for files and directories
installed from .deb packages, e.g. /usr/local/bin?
I suppose there are two groups of directories that need to be writeable
by the web server user: those which only need to be written during some
sysadmin operation, such as conf/ plugins/ templates/ and backup/, and
those which need to be written to constantly, such as files/ images/ and
videos/. Maybe there's scope for handling these two types differently.
There are also some scattered files such as system_preferences.php in
the DocumentRoot directory. I would hope that at least that file would
be locked down after installation on a production system.
> (or <ns-docroot>/var/)?
Do you have any objections to /var/www/newscoop/ for the served files?
e.g. /var/www/newscoop/images/ being writable so that users can upload
images through the browser?
> It may turn out
> that most installations use a dedicated database-server which is not on
> the same host as the webserver.
I don't know about *most*, but we could ask about this in the debconf
questions because the target server may also contain multiple databases
- so it's not safe to assume which one contains the correct Newscoop data.
We could pre-fill those fields if the information had already been
gathered by debconf. But then if the user still needs to run through the
native installer questions, is the work required to adapt the Newscoop
config files to work with debconf redundant?
> Not sure about rpm's though.
As I understand it, RPMs do not ask questions of users, as a matter of
policy, e.g:
If we install Newscoop in the correct paths, the RHEL6 user will still
be able to run through the steps in the native Newscoop installer. It
just won't be as automated - for instance, they will have to create a
database user manually if they don't have one set up already. I'd be
very reluctant to leave that database setup operation to a
non-interactive script, it could do damage.
The lowest-common-denominator approach would be to not have the
Debian/Ubuntu package do this database setup either, and rely on the
user having to do some manual post-install configuration. Seems like a
waste of debconf goodness though!
On 01/24/2011 12:55 PM, Daniel James wrote:
>
> Hi Robin,
Hello Daniel,
>> The main concern is that the document-root needs to be writable by the
>> www-user.
>
> I have opened a ticket for this at:
> http://dev.sourcefabric.org/browse/CS-2465
ack. well I wanted to discuss this first before opening a ticket. In
particular since newscoop GA seems to be in feature- and ticket-freeze mode.
>> This is only
>> useful if there is going to be a self-update feature for non-packaged
>> installations.
>
> Actually it seems that the assumption that the DocumentRoot directory
> should be writable is found in several places in the code, not just
> during software updates. That's why the above ticket is not likely to be
> fixed for 3.5 GA.
Too bad. I did mention this issue over a year ago at the meeting in Prague.
>> Debian & Ubuntu would store the fixed system in /usr and the variable
>> data (templates_cache, files, plugins, etc) would be symlinks to /var. I
>> can come up with a patch for the installer that'd make it detect if it's
>> installed to /usr and override the "Document Root needs to be writable)
>> check.
>
> Given the short time available before the GA release, my suggestion
> would be that we create a package which follows the existing
> installation model, complete with its flaws. Then experiment with these
> improvements after the 3.5 GA release and check for regressions.
The problem with this solution is that we can not [easily] make updates
work properly.
The package-update from 3.5.0 to any later version would need to check
the old location and separate existing local modifications. It'll be a
great mess.
Right now I'm thinking about putting everything in /var/lib/newscoop/
and make /usr/share/newscoop/ a symlink to it.
> Along with the licensing fixes, we will then be in a much better
> position to get Newscoop into Debian/Ubuntu/Fedora as an official package.
>
>> A 2nd blocker is that CampInstallation.php only searches the current PHP
>> session for a config.db. It'd be very useful if the
>> database-user/password could be created on package installation using
>> debian's dbconfig and pre-saved in conf/database_conf.php.
>
> Yes, that would be much slicker. The current assumption of the Newscoop
> installer is that users will enter a username and password with database
> create permissions, and yet the installer specifically advises users not
> to use the MySQL root user account (as it should). That's why I've added
> a section to the instructions on manually creating a non-root database
> user account limited to operating on a specific database.
>
>> currently the installer does not honor info that is already present
>> there.
>
> That would definitely be an improvement - do you think that could be
> implemented this week? Please open a ticket on
> http://dev.sourcefabric.org/ in any case.
I don't know the internals of the installer well enough, but I'd say ~10
mins to implement, 1-2 hour to test for an experienced Newscoop developer.
Anyway this is just a /nice to have/ feature which would simplify
initial setup [in case the database is on the same server as the
webserver]. It's a one time task and pointing the site-admin to
documentation how to create the mysql account is IMHO just fine for now.
I did this from my memory - I've been around for too many mysql
versions. It looks like it is an improvement in mysql5 - I'll flush the
'FLUSH PRIVILEGES' from my old habits :)
>> * don't use /etc/apache2/conf.d/ - use /etc/apache2/sites-available/
>
> That's also an improvement, thanks. Previously, both Campcaster and
> Campsite put their configs in /etc/apache2/conf.d/ but this creates
> global settings which override /etc/apache2/sites-available/ - making
> multiple virtual servers tricky.
exactly.
>> and
>> `a2ensite` instead of `a2enmod`
>
> I have added a couple of steps about using a2ensite and a2dissite, but I
> still need the a2enmod command to enable the rewrite module, don't I?
yes. That's because rewrite is an apache-module.
a2ensite and a2dissite are for sites/vhosts.
>> * custom PHP overrides can be done in /etc/php5/conf.d/ without
>> modifying the main php.ini file. Otherwise there will be conflicts that
>> require manual interaction when updating PHP.
>
> Good point, I added a mention of that.
>
>> * the last part `cp -r src/*` is outdated.
>
> Works for me, but which syntax would you recommend?
With the latest newscoop-3.5.0-rc2.tar.gz (from sourceforge) and also
with the git source it is:
On 01/24/2011 02:11 PM, Daniel James wrote:
>
> Hi Robin,
>
>> 1) Could _all_ folders that need to be writable by the webserver be
>> moved to <ns-docroot>/local/
>
> I thought local/ paths were not suitable for files and directories
> installed from .deb packages, e.g. /usr/local/bin?
I did not mean /usr/local/ - but WWW-DOCUMENT-ROOT/local.
"local" was just a suggestion. "var", "data" or "custom" or "blafasel"
will also work. It should be intuitive: so 'local' or 'data' are
probably the best choices.
The ideal system will use /usr/share/newscoop/ as [read-only]
document-root with
/usr/share/newscoop/data/ -> symlink to /var/lib/newscoop/
which is read-write and owned by the www-user or PHP-suid user.
> Do you have any objections to /var/www/newscoop/ for the served files?
yes [not me personally, but] Debian and Ubunutu guidelines say it's a no-go.
>> It may turn out
>> that most installations use a dedicated database-server which is not on
>> the same host as the webserver.
>
> I don't know about *most*, but we could ask about this in the debconf
> questions because the target server may also contain multiple databases
> - so it's not safe to assume which one contains the correct Newscoop data.
That is exactly my idea. During installation the admin is asked if a
local DB should be created - and if so: the db-user/pass is pre-saved to
the newscoop-config.
As for *most* - I'd think that every professional setup that cares about
performance, db-replication and backups will do so. It might not be the
majority, but AFAIU that's our main target group.
I guess there are very few LAMP home-users who do run a journalist site.
> This question is currently asked by the native installer, see the third
> step here: http://booki.flossmanuals.net/newscoop/_v/1.0/installation-s
> teps/
>
> We could pre-fill those fields if the information had already been
> gathered by debconf.
Exactly.
> But then if the user still needs to run through the
> native installer questions. is the work required to adapt the Newscoop
> config files to work with debconf redundant?
I don't understand what you mean.
Debconf will only create the database-user but not the database.
Currently the newscoop installer does not read previous config-files it
temporarily saves pre-entered values in the PHP-session. Changing this
requires work in newscoop.
Generating the db-config file from debconf is trivial. Debconf will
never read the "real" config-file: it stores the data in its own db or
debian-specific files. IIRC there was discussion to relax this policy,
but AFAIK debconf must not read 3rd party config files and may only
check for their existence. e.g run `dpkg-reconfigure exim4-config`.
I remembered that, but was not sure (it's been almost a decade since I
last used RPMs) Thanks for the link.
> If we install Newscoop in the correct paths, the RHEL6 user will still
> be able to run through the steps in the native Newscoop installer. It
> just won't be as automated - for instance, they will have to create a
> database user manually if they don't have one set up already. I'd be
> very reluctant to leave that database setup operation to a
> non-interactive script, it could do damage.
>
> The lowest-common-denominator approach would be to not have the
> Debian/Ubuntu package do this database setup either, and rely on the
> user having to do some manual post-install configuration. Seems like a
> waste of debconf goodness though!
quite, but let's KISS for now.
I'll work on a 3.5.0~rc2-1 debian package now which does _not_ include
the debconf db-setup (since upstream newscoop does not support it yet)
and we add it to 3.5.0-rc2-2 or ~rc3-1 or even later..
>> Given the short time available before the GA release, my suggestion
>> would be that we create a package which follows the existing
>> installation model
>
> The problem with this solution is that we can not [easily] make updates
> work properly.
You're right, better to 'start as we mean to go on'. For comparison,
Drupal 6 is installed pretty much all under /usr/share/ except for a few
pieces in /etc, which include the writable files/ directory.
Presumably there's some symlink to that, but it seems a little odd to
put it in /etc because files/ is not really anything to do with system
settings, and needs to be web server writeable.
> "local" was just a suggestion. "var", "data" or "custom" or "blafasel"
> will also work.
I like the sound of blafasel :-)
> It should be intuitive: so 'local' or 'data' are
> probably the best choices.
'local' to me suggests a locally compiled program, 'data' sounds much
more appropriate.
> The ideal system will use /usr/share/newscoop/ as [read-only]
> document-root with
> /usr/share/newscoop/data/ -> symlink to /var/lib/newscoop/
> which is read-write and owned by the www-user or PHP-suid user.
Sounds good, let's work towards that.
> During installation the admin is asked if a
> local DB should be created - and if so: the db-user/pass is pre-saved to
> the newscoop-config.
As a first step, we could make this work without modifying Newscoop
itself - the user would just have to remember what they entered, or take
a look at the newscoop-config file on their server.
> As for *most* - I'd think that every professional setup that cares about
> performance, db-replication and backups will do so. It might not be the
> majority, but AFAIU that's our main target group.
Good point, running the db on the localhost isn't likely to be adequate
for a serious site.
>> But then if the user still needs to run through the
>> native installer questions. is the work required to adapt the Newscoop
>> config files to work with debconf redundant?
>
> I don't understand what you mean.
I'm suggesting that with an optimal debconf setup, the user won't need
to run through the steps of the native installer as well. That way, we
can do fully automated server installs by preseeding debconf, getting
sites up and running on the first boot. That may be some way off :-)
> Debconf will only create the database-user but not the database.
> Currently the newscoop installer does not read previous config-files it
> temporarily saves pre-entered values in the PHP-session. Changing this
> requires work in newscoop.
We can lay the foundations for that though.
> we add it to 3.5.0-rc2-2 or ~rc3-1
There is no -rc3 on the roadmap, it's -rc2 then GA next Monday.
On 01/24/2011 05:00 PM, Daniel James wrote: [..]
>> During installation the admin is asked if a
>> local DB should be created - and if so: the db-user/pass is pre-saved to
>> the newscoop-config.
>
> As a first step, we could make this work without modifying Newscoop
> itself - the user would just have to remember what they entered, or take
> a look at the newscoop-config file on their server.
>
I've just added this feature to the postinst script, it is still
commented out because it also requires some additional explanations and
notes during debconf setup. And those should probably also be translated
as well.
[..]
> I'm suggesting that with an optimal debconf setup, the user won't need
> to run through the steps of the native installer as well. That way, we
> can do fully automated server installs by preseeding debconf, getting
> sites up and running on the first boot. That may be some way off :-)
not at all. I like the idea. That will even work with current newscope
without any patches! The only downside is that every future change to
the installer also needs to make it into the postinst/debconf script.
IMHO we should wait until the installer is stable before digging into
this, otherwise it'll mean lots of maintenance work, esp. if we're going
to include translations.
>> Debconf will only create the database-user but not the database.
>
> dbconfig-common can do the lot:
Indeed, it's more versatile than most swiss army knives. Maybe you know
now why I took me almost a day to learn how to use its features.
>
> There is no -rc3 on the roadmap, it's -rc2 then GA next Monday.
ack. let's hope that there'll be a 3.5.1 very soon then :)
Posts: 389Member, Administrator, Sourcefabric Team
Hi guys -
Can you compile a list of the install issues, file them in JIRA and let us
know about them ASAP? We definitely want all of this fixed by 3.5.1, if not
sooner.
>
> On 01/24/2011 05:00 PM, Daniel James wrote:
> [..]
>
> >> During installation the admin is asked if a
> >> local DB should be created - and if so: the db-user/pass is pre-saved to
> >> the newscoop-config.
> >
> > As a first step, we could make this work without modifying Newscoop
> > itself - the user would just have to remember what they entered, or take
> > a look at the newscoop-config file on their server.
> >
> I've just added this feature to the postinst script, it is still
> commented out because it also requires some additional explanations and
> notes during debconf setup. And those should probably also be translated
> as well.
>
> [..]
>
> > I'm suggesting that with an optimal debconf setup, the user won't need
> > to run through the steps of the native installer as well. That way, we
> > can do fully automated server installs by preseeding debconf, getting
> > sites up and running on the first boot. That may be some way off :-)
>
> not at all. I like the idea. That will even work with current newscope
> without any patches! The only downside is that every future change to
> the installer also needs to make it into the postinst/debconf script.
>
> IMHO we should wait until the installer is stable before digging into
> this, otherwise it'll mean lots of maintenance work, esp. if we're going
> to include translations.
>
>
> >> Debconf will only create the database-user but not the database.
> >
> > dbconfig-common can do the lot:
>
> Indeed, it's more versatile than most swiss army knives. Maybe you know
> now why I took me almost a day to learn how to use its features.
>
>
> >
> > There is no -rc3 on the roadmap, it's -rc2 then GA next Monday.
>
> ack. let's hope that there'll be a 3.5.1 very soon then :)
>
> --
> robin
>
>
>
On 01/24/2011 06:49 PM, Paul Baranowski wrote:
> Hi guys -
> Can you compile a list of the install issues, file them in JIRA and let us
> know about them ASAP? We definitely want all of this fixed by 3.5.1, if
> not sooner.