Dynamix - Web Server


Recommended Posts

As explained in the Dynamix webGui topic, more information about Web Server (and email-notifications) is given here in a separate topic.

 

The challenge ahead is the management of slackware packages, or rather the unmanaged way of plugins installing different versions of the same package and interfere with each other.

 

I started with an investigation of two packages "openssl" and "sqlite" which are used by several plugins, including web-server and email-notifications and have caused quite a number of issues.

 

It turns out that most plugins download the version of "openssl" and "sqlite" which is available under slackware 13.37. This contradicts with the requirement of Limetech to install packages from slackware 13.1, however it is a given fact that only a few (none?) of plugins take packages from slackware 13.1, I guess people find them too outdated...

 

The approach I have taken for Dynamix web-server and email-notifications is that the user has the choice from which slackware distribution the packages should be downloaded. I know it is not a true answer to the solution, but it hopefully helps to avoid version conflicts.

 

How does it work?

 

You need to edit the PLG file (for windows users please take an editor which can handle unix file format, notepad++ is an excellent choice).

 

At the top of the PLG file you can find the following line:

 

<!ENTITY dir "13.37">   <!-- select slackware version for packages, see list below -->

 

By default the PLG will use slackware version 13.37 (this is chosen to avoid conflicts with other plugins), but it may be changed to version 13.1 (if you want to follow Limetech recommendations), or version 14.0 (if you want up-to-date packages), or you can choose current if you want to be on the bleeding edge.

 

Inside the web-server PLG file is a table which is used to make the correct selection of the packages. A custom installation script is invoked to read this table and download the package accordingly.

 

# Mandatory packages     13.1                13.37             14.0              current
a openssl-solibs  txz    0.9.8n-i486-1       0.9.8r-i486-3     1.0.1c-i486-3     1.0.1e-i486-1                   # openssl library
n openssl         txz    0.9.8n-i486-1       0.9.8r-i486-3     1.0.1c-i486-3     1.0.1e-i486-1                   # openssl library
d libtool         txz    2.2.6b-i486-2       2.4-i486-1        2.4.2-i486-1      2.4.2-i486-2                    # tools library
d m4              txz    1.4.14-i486-1       1.4.16-i486-1     1.4.16-i486-1     1.4.17-i486-1                   # m4 library
l libmcrypt       txz    2.5.8-i486-1        2.5.8-i486-1      2.5.8-i486-1      2.5.8-i486-1                    # mcrypt library
l pcre            txz    8.02-i486-1         8.12-i486-1       8.12-i486-1       8.33-i486-1                     # pcre library

# Recommended packages   13.1                13.37             14.0              current
ap sqlite         txz    3.6.23.1-i486-1     3.7.5-i486-1      3.7.13-i486-1     3.7.17-i486-1                   # sqlite library (used by SQLITE extension)
l libzip          txz    0.9-i486-2          0.9.3-i486-1      0.9.3-i486-1      0.10.1-i486-1                   # zip library (used by ZIP extension)
l freetype        txz    2.3.12-i486-1       2.4.4-i486-1      2.4.10-i486-1     2.5.0.1-i486-1                  # freetype library (used by GD extension)
l libjpeg         txz    v8a-i486-1          v8a-i486-1        v8a-i486-1        v8a-i486-2                      # jpeg library (used by GD extension)
l libpng          txz    1.4.2-i486-1        1.4.5-i486-1      1.4.12-i486-1     1.4.12-i486-1                   # png library (used by GD extension)
l t1lib           txz    5.1.2-i486-1        5.1.2-i486-2      5.1.2-i486-3      5.1.2-i486-3                    # t1 library (used by GD extension)
x libxcb          txz    1.6-i486-1          1.7-i486-1        1.8.1-i486-1      1.9.1-i486-1                    # xcb library (used by GD extension)
x libX11          txz    1.3.3-i486-1        1.4.3-i486-2      1.5.0-i486-1      1.6.2-i486-1                    # x11 library (used by GD extension)
x libXau          txz    1.0.5-i486-1        1.0.6-i486-1      1.0.7-i486-1      1.0.8-i486-1                    # xau library (used by GD extension)
x libXdmcp        txz    1.0.3-i486-1        1.1.0-i486-1      1.1.1-i486-1      1.1.1-i486-1                    # xdmcp library (used by GD extension)
x libXpm          txz    3.5.8-i486-1        3.5.9-i486-1      3.5.10-i486-1     3.5.11-i486-1                   # xpm library (used by GD extension)

# Optional packages      13.1                13.37             14.0              current           remove this
l aspell          txz    0.60.5-i486-2       0.60.6-i486-1     0.60.6-i486-1     0.60.6-i486-1     no-install    # spelling library (used by PSPELL extension)
l enchant         txz    1.5.0-i486-1        1.5.0-i486-1      1.5.0-i486-1      1.6.0-i486-1      no-install    # enchant library (used by ENCHANT extension)
l libxslt         txz    1.1.26-i486-1       1.1.26-i486-1     1.1.26-i486-2     1.1.28-i486-1     no-install    # xslt library (used by XSL extension)
a xz              tgz    4.999.9beta-i486-1  5.0.2-i486-1      5.0.4-i486-1      xz-5.0.5-i486-1   no-install    # xz utility (used by XSL extension)
n curl            txz    7.20.1-i486-1       7.21.4-i486-1     7.27.0-i486-2     7.31.0-i486-1     no-install    # curl library (used by CURL extension)
n net-snmp        txz    5.5-i486-2          5.6.1-i486-1      5.6.1-i486-5      5.7.2-i486-2      no-install    # snmp library (used by SNMP extension)

 

There is an option to install or *not* install a package. Anything 'mandatory' must be installed, either by the web-server plugin or another plugin.

 

A number of recommended packages is installed too, but you may choose not to install them (for example when no use of the GD extension is required). If so then add "no-install" for the particular package.

 

The optional packages can be installed by removing the "no-install" text.

 

Hopefully this helps people in making the right choice and avoid conflicts (though not guaranteed)  ;D

Link to comment
  • Replies 92
  • Created
  • Last Reply

Top Posters In This Topic

Part of the reason why we have these package conflicts to begin with is due to Slackware's philosophy of "let the user manage package versions". This turns out of be quite questionable in practice and puts the burden of choice on the user and no accountability on the developer. This is high risk for the user and makes for unreliable software and a poor experience.

 

It is the developer's responsibility to know what the potential package conflicts are and know what required packages are truly compatible with the deliverable. That means you need to do a TON of testing.

 

Your blanket method above may or may not work. You may need to allow some packages from each Slackware release. For example, in my application, I had to use glibc from 13.1, kernel-headers from 13.37, and libyaml from 14.0.

 

Just because a package is newer, doesn't mean it's incompatible. Conversely, just because a package is older doesn't mean it's more reliable.

 

Shameless plug: Part of the reason I built boiler was to deal with dependency resolution in plugins. It has a sophisticated method for dealing with dependency versions that makes it easy for devs. If devs could work together to build a more homogeneous ecosystem, we could avoid a lot of these dependency issues.

 

Just my two cents.

Link to comment

I am not saying my approach is the best, it is just a way of dealing with the problem :)

 

I am following your 'boiler' initiative and think it has good potential, to make it truly work it should become 'standard' in unRAID and give developers an incentive to start using it.

 

At the moment there are too few rules to follow (my 2 cents)...

Link to comment

Or Tom  change so we have unraid backed in to a another distro (OpenSuse, Arch ,centOS)

 

Then we might not need all this "user plugins"  ;)  but that perhaps that is another discussion we might discus somewhere else  ;D

 

//Peter

 

I couldn't agree more, at a bit of a loose end was going to update my server so i could run an unRaid VM and another VM with a Linux distro running webserver, ownclould, transmission and what ever else i could put on it.

 

Never been a fan of all these plugins makes things problematic on a solid system, anyway back to topic.

Link to comment

Right, I really apologize for this guys.  Here's what I'm aiming for:

 

1/ Publish 5.0.5 - this has a couple minor fixes

2a/ Publish 5.1-beta1 - this is 5.0.5 with latest 'webGui' integrated.

2b/ Push this 'webGui' onto github as 'webGui-master'.

3/ Publish 6.1-beta1 - this is 64-bit unRaid with numerous updates including 'webGui-master' and virtualization support.

 

Idea is webGui will run on both platforms.

 

Lets hope the timescale isn't the same a version 5 final :)

Link to comment

Did you put the web server plugin in the folder /boot/config/plugins ?

 

yeah, and i'm using unraid 5.0.4

 

How did you install the web server plugin, did you use CLI and the command "installplg" ?

 

Can you execute the following (telnet into your system) and post the results:

lighttpd -f /etc/lighttpd.conf

 

php -v

 

 

Link to comment

 

How did you install the web server plugin, did you use CLI and the command "installplg" ?

 

Can you execute the following (telnet into your system) and post the results:

lighttpd -f /etc/lighttpd.conf

 

php -v

 

lighttpd -f /etc/lighttpd.conf => 2014-01-02 12:00:05: (log.c.166) server started

php -v => php: error while loading shared libraries: libmcrypt.so.4: cannot open shared object file: No such file or directory

 

 

 

Link to comment

[LimeTech GUI and LimeTech Enhanced GUI]

I cant tell if these webGUI's are different.

Great Question.

The GUIs are different, but DYNAMIX builds upon and reuses the structure of the stock GUI.

There are bound to be lots of questions about inter-compatibility.  Perhaps it would be good to keep track of these--this question is bound to recur.

 

 

I ensured compatibility by removing SimpleFeatures, unMENU, and the LimeTech enhanced GUI just to be sure that there were no conflicts.

 

 

Link to comment

The notes on the Dynamix web page state the following:

 

Dynamix webGui completely replaces the stock unRAID GUI which comes with version 5.0, do not use Dynamix webGui on any earlier versions - including the earlier RC candidates of unRAID. Do not mix Dynamix and SimpleFeatures plugins, these are not compatible. ...

 

... The following plugins can be used to further enhance the functionality of Dynamix. They all require the Dynamix webGui to be present (installation of the add-on will be aborted when the Dynamix webGui isn't detected).

 

When installing the Dynamix webGui it will delete the Limetech updated webGui (if present) to avoid conflicts, you guessed it - these two don't work together.

Link to comment

 

How did you install the web server plugin, did you use CLI and the command "installplg" ?

 

Can you execute the following (telnet into your system) and post the results:

lighttpd -f /etc/lighttpd.conf

 

php -v

 

lighttpd -f /etc/lighttpd.conf => 2014-01-02 12:00:05: (log.c.166) server started

php -v => php: error while loading shared libraries: libmcrypt.so.4: cannot open shared object file: No such file or directory

 

The PHP error refers to a problem in the OPENSSL library, either PHP or OPENSSL didn't get installed properly, or you have another plugin installed which may have a conflicting openssl package installed.

 

Can you telnet into your server and do  the following:

 

rm /boot/config/plugins/dynamix.web.server*.plg

rm /boot/config/plugins/dynamix/dynamix.web.server*

rm /boot/packages/openssl*

 

Reboot your system to complete the uninstall of the web server and associated packages.

 

Next download the latest PLG file (right-click and choose "save link as" - store it in /boot/config/plugins

 

And re-install the web server plugin

 

cd /boot/config/plugins

installplg dynamix.web.server-2.0.2-noarch-bergware.plg

 

Also make sure there are no *competing* plugins installing openssl as well.

Link to comment

by removing openssl in packages everything is working perfect!

i must say, finally curl is also working :)

 

no i still have to install mysql, and then i'm good to go :)

 

thx!!

 

Good to hear  :)

 

By default the mySQL extension in PHP is disabled, you need to edit the file /boot/config/plugins/dynamix/dynamix.php.cfg and remove the ';' for the mysql extension.

 

extension=mysql.so

extension=mysqli.so

 

Please use an editor which can handle linux file format (e.g. notepad++).

 

Link to comment

everything works good until I install my xbmcsalud plugin, once I install that I lose the gui? any idea why?

 

xbmcsalud installs a number of libraries which conflict with the installation of Dynamix web server.

 

It breaks the updated version of PHP, used by the GUI, resulting in the loss of the GUI.

 

You can try to install Dynamix web server using slackware build 13.1. Therefore you need to edit the PLG file and change:

 

<!ENTITY dir "13.37">

into

 

<!ENTITY dir "13.1">

After that install the package:

 

cd /boot/config/plugins

installplg dynamix.web.server-2.0.2-noarch-bergware.plg

 

I don't use xbmc myself, but maybe others can chime in...

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.