Coding with Titans

so breaking things happens constantly, but never on purpose

XSP na Synology NAS DS411

Jakiś czas temu pokazałem jak skompilować dystrybucję Mono 2.10.9 na swój NAS. Jednak dlaczego nie posunąć się o krok dalej i nie uruchomić stron ASPX na naszym urządzeniu?

Jak zatem skompilować testowy serwer XSP i uruchomić go? Równie dobry opis znajduje się tutaj (tyle, że po rosyjsku).

Zacznijmy zabawę od pobrania i wypakowania źródeł dla serwera XSP:

wget http://download.mono-project.com/sources/xsp/xsp-2.10.2.tar.bz2
tar -xvf xsp-2.10.2.tar.bz2 cd xsp-2.10.2

Upewnijmy się, że kompilator mono jest widoczny, tworząc odpowiednie dowiązania do /opt/bin:

ln -s /opt/mono-2.10.9/bin/dmcs /opt/bin/dmcs
ln -s /opt/mono-2.10.9/bin/gacutil /opt/bin/gacutil
ln -s /opt/mono-2.10.9/bin/mdoc /opt/bin/mdoc

I przechodzimy do konfiguracji (w razie potrzeby instalujemy brakujące pakiety - ja musiałem chociażby pkgconfig). Tutaj tak samo, jak w przypadku instalacji Mono, nie pozwalamy na bezpośrednią instalację do katalogu /opt/bin, tylko wymuszamy folder “mono-2.10.9”. Pozwoli to trzymać serwer XSP razem z odpowiadającą mu wersją Mono, jak i w przyszłości na szybką deinstalację (razem z Mono) poprzez proste usunięcie tego folderu.

ipkg install pkgconfig
export PKG_CONFIG_PATH=/opt/mono-2.10.9/lib/pkgconfig/
./configure --prefix=/opt/mono-2.10.9 --disable-docs

Budujemy i instalujemy:

make
make install


Build Environment
Install prefix: /opt/mono-2.10.9
Datadir: /opt/mono-2.10.9/share
Libdir: /opt/mono-2.10.9/lib
Build documentation: no
Mono 2.0 compiler: /opt/bin/gmcs
Mono 4.0 compiler: /opt/bin/dmcs
Target frameworks: .NET 2.0, .NET 4.0
Build SQLite samples: yes

Na koniec tworzymy jeszcze niezbędne dowiązania, aby łatwiej uruchamiać testowe strony:

ln -s /opt/mono-2.10.9/bin/xsp2 /opt/bin/xsp2
ln -s /opt/mono-2.10.9/bin/xsp4 /opt/bin/xsp4

Finał! Uruchamiamy przykład:

cd /opt/mono-2.10.9/lib/xsp/test
xsp4 --port 8888 --applications /:.

A w oknie przeglądarki wpisujemy: http://my_nas:8888/. Nic prostszego.

Gotowe!