wiki:Notes/Servers

Servers

http://en.wikipedia.org/wiki/Server_%28computing%29

A server is a running instance of an application (software) capable of accepting requests from the client and giving responses accordingly.

Servers can run on any computer including dedicated computers, which individually are also often referred to as "the server" ...

The advantage of running servers on a dedicated computer is security. For this reason most of the servers are daemon processes and designed in that they can be run on specific computer(s) ...

Typical computing servers are database server, file server, mail server, print server, web server, gaming server, and application server

http://en.wikipedia.org/wiki/Category:Servers_%28computing%29

HTTP Server

Proxy servers too. Either serves content ( usually html or Python ) or passes the request along ... rafts of WSGI issues.

Apache

Love it or not, it's usually all you've got, which is usually OK but not always.

See ServersApache

Lighttpd

The Very Definition of Quick and Easy ( mostly ) - http://www.lighttpd.net/

Lighttpd Compiled for Windows - http://lighttpd.dtech.hu/

Lighttpd Config - http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ConfigurationOptions

http://redmine.lighttpd.net/projects/lighttpd/wiki

Proxy capabilities are not well known or documented but seem to be usable.

https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModProxy

But apparently no native WSGI, either FastCGI or proxy. => https://redmine.lighttpd.net/projects/lighttpd2/wiki/Howto_WSGI

There seems to be some sort of uwsgi option for WSGI - http://uwsgi-docs.readthedocs.org/en/latest/Lighttpd.html

.. but no uwsgi build for Windows without MicrosoftWindows#Cygwin => https://uwsgi-docs.readthedocs.org/en/latest/SupportedPlatforms.html

Vexing, but if proxying to standalone WSGI works, so what.

Search wiki for 'lighttpd'

Nginx

Nginx - http://nginx.org/ ( engine-x )

Windows too ? They say so but ... uwsgi is a cornerstone of Python deployment on Nginx and it is only supported on Windows with Cygwin dependencies - not ideal. Fast CGI ?

http://uwsgi-docs.readthedocs.org/en/latest/SupportedPlatforms.html

Note: Did an Nginx upgrade on the RPi and it wiped out my local index.html file - now gives a chirpy 'Welcome to Nginx!' message. Not ideal. Do I really need an enterprise-grade proxy server ? Would some variation of a Twisted HTTP server work just as well ?

Search wiki for 'nginx'

XAMPP

Not to be confused with Messaging#XMPPMessaging

Apache, MariaDB (MySQL ), PHP, Perl as well as an FTP server.

Mostly Windows but also can work on Linux as a 'download,unzip,run' with user (non-root) permissions. Also Mac.

https://www.apachefriends.org/index.html

XAMPP is a completely free, easy to install Apache distribution containing MySQL, PHP, and Perl

Search wiki for 'xampp'

WT-NMP

http://wtriple.com/wtnmp/

A portable, preconfigured, lightweight, fast and stable server stack for developing php mysql applications on Windows ( only ), based on the excellent webserver Nginx. A lighter alternative to XAMPP and WAMP.

Nginx web server - 1.7.10
Mysql database server - 5.6.23
Php scripting language - 5.4.38 & 5.6.6
HeidiSql database manager
WinSCP SFTP client
Php Extensions: opcache, xdebug, xcache.
MSmtp sendmail smtp client wrapper
Composer dependency manager for php
Adminer web based database manager
Reg.php regular expressions tester
wt-nmp.exe server manager

File Server

http://en.wikipedia.org/wiki/File_server

In computing, a file server is a computer attached to a network that has the primary purpose of providing a location for shared disk access, i.e. shared storage of computer files (such as documents, sound files, photographs, movies, images, databases, etc.) that can be accessed by the workstations that are attached to the same computer network.

http://en.wikipedia.org/wiki/Category:File_sharing_networks

http://en.wikipedia.org/wiki/Shared_resource

FTP Server

So quick and easy ( and portable ), especially if automated.

http://en.wikipedia.org/wiki/File_Transfer_Protocol

Search wiki for 'ftp'

Samba Server

Not ideal from an integration perspective but it is an old standard ...

http://en.wikipedia.org/wiki/Server_Message_Block

http://en.wikipedia.org/wiki/Samba_%28software%29

https://www.samba.org/

Samba is the standard Windows interoperability suite of programs for Linux and Unix.

Since 1992, Samba has provided secure, stable and fast file and print services for all clients using the SMB/CIFS protocol, such as all versions of DOS and Windows, OS/2, Linux and many others.

Samba is software that can be run on a platform other than Microsoft Windows ...

https://help.ubuntu.com/community/Samba/SambaServerGuide

Samba Server Configuration - Simple

Ubuntu Server
Windows XP Server

Samba Server Configuration by GUI

Samba Server Configuration in terminal

Global Settings
File Sharing (Basics)
File Sharing (Advanced)

https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/

https://help.ubuntu.com/10.04/serverguide/windows-networking.html

https://help.ubuntu.com/10.04/serverguide/samba-fileserver.html

http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/soft-fileshrng.html

http://www.howtogeek.com/139433/how-to-turn-a-raspberry-pi-into-a-low-power-network-storage-device/

See LinuxServers#RaspberryPi, PythonClients#Samba

Search wiki for 'samba'

A Note On Samba

I've had mixed experiences with Samba. For simple stuff, it's great but when something goes wrong, it's a bad day.

I used to run multiple connections between machines and it was very confusing and error-ridden.

Better have a single reliable ( Linux ) server running Samba than multiple servers running on multiple machines.

WebDav

Not a file server exactly, but a possibility for the File Server slot.

http://en.wikipedia.org/wiki/WebDAV

Web Distributed Authoring and Versioning (WebDAV) is an extension of the Hypertext Transfer Protocol (HTTP) that allows clients to perform remote Web content authoring operations ...

The WebDAV protocol makes the Web a readable and writable medium. It provides a framework for users to create, change and move documents on a server, typically a web server or web share.

The most important features of the WebDAV protocol include the maintenance of properties about an author or modification date, namespace management, collections, and overwrite protection. Maintenance of properties includes such things as the creation, removal, and querying of file information.

Namespace management deals with the ability to copy and move web pages within a server’s namespace.

Collections deal with the creation, removal, and listing of various resources. Lastly, overwrite protection handles aspects related to locking of files ...

The protocol consists of a set of new methods and headers for use in HTTP. The added methods include:

PROPFIND — used to retrieve properties, stored as XML, from a web resource. It is also overloaded to allow one to retrieve the collection structure (a.k.a. directory hierarchy) of a remote system.

PROPPATCH — used to change and delete multiple properties on a resource in a single atomic act

MKCOL — used to create collections (a.k.a. a directory)

COPY — used to copy a resource from one URI to another

MOVE — used to move a resource from one URI to another

LOCK — used to put a lock on a resource. WebDAV supports both shared and exclusive locks.

UNLOCK — used to remove a lock from a resource

Search wiki for 'webdav'

Email Server

http://en.wikipedia.org/wiki/Message_transfer_agent

See PythonSMTP

Search wiki for 'email'

Secure Shell Server

http://en.wikipedia.org/wiki/Secure_Shell

http://en.wikipedia.org/wiki/Comparison_of_SSH_servers

Search wiki for 'ssh'

See JavaServers#Mina

Server Types

That is, server types of interest to this project.

http://en.wikipedia.org/wiki/Category:Distributed_computing_architecture

Grid Computing

http://en.wikipedia.org/wiki/Grid_computing

Grid computing is the collection of computer resources from multiple locations to reach a common goal. The grid can be thought of as a distributed system with non-interactive workloads that involve a large number of files.

Grid computing is distinguished from conventional high performance computing systems such as cluster computing in that grid computers have each node set to perform a different task/application.

Grid computers also tend to be more heterogeneous and geographically dispersed (thus not physically coupled) than cluster computers.

Sounds about right.

http://en.wikipedia.org/wiki/Dynamic_infrastructure

See PythonGridComputing

Search wiki for 'grid'

Agent Like Servers

http://en.wikipedia.org/wiki/Software_agent

  • intelligent agents (in particular exhibiting some aspect of artificial intelligence, such as learning and reasoning),
  • autonomous agents (capable of modifying the way in which they achieve their objectives),
  • distributed agents (being executed on physically distinct computers),
  • multi-agent systems (distributed agents that do not have the capabilities to achieve an objective alone and thus must communicate),
  • mobile agents (agents that can relocate their execution onto different processors).

http://en.wikipedia.org/wiki/Intelligent_agent

An autonomous entity which observes through sensors and acts upon an environment using actuators (i.e. it is an agent) and directs its activity towards achieving goals (i.e. it is "rational", as defined in economics[1]). Intelligent agents may also learn or use knowledge to achieve their goals.

http://en.wikipedia.org/wiki/Autonomous_agent

http://en.wikipedia.org/wiki/Multi-agent_system

http://en.wikipedia.org/wiki/Code_mobility

In distributed computing, code mobility is the ability for running programs, code or objects to be migrated (or moved) from one machine or application to another.

http://en.wikipedia.org/wiki/Mobile_agent

... a mobile agent is a composition of computer software and data which is able to migrate (move) from one computer to another autonomously and continue its execution on the destination computer.

See PythonAgents

Search wiki for 'agent'

Cloud Computing

http://en.wikipedia.org/wiki/Cloud_computing

Cloud computing is a recently evolved computing terminology or metaphor based on utility and consumption of computing resources.

Cloud computing involves deploying groups of remote servers and software networks that allow centralized data storage and online access to computer services or resources.

Clouds can be classified as public, private or hybrid.

See CloudComputing

Search wiki for 'cloud'

Peer to Peer Servers

http://en.wikipedia.org/wiki/Peer-to-peer

http://en.wikipedia.org/wiki/Category:Peer-to-peer_computing

http://en.wikipedia.org/wiki/Content_delivery_network

http://en.wikipedia.org/wiki/Collaborative_virtual_environment

http://en.wikipedia.org/wiki/Federated_search

See PeerNetworks

Search wiki for 'peer'

Protocols

http://en.wikipedia.org/wiki/Category:Network_protocols

http://en.wikipedia.org/wiki/Category:Application_layer_protocols

http://en.wikipedia.org/wiki/Category:Internet_Protocol_based_network_software

Usage

Start On Demand

The practice of starting a server when it is needed and then stopping it when session is done. Less resource consumption, more secure.

Implement with a message backplate to drive command processor - No SSH !

Intermittent

A given server may or may not be running ( say a server running on a machine/os that is only occasionally booted. Opportunistic synchronization and update ...

Also See

LinuxServers

Search wiki for 'server'

Last modified 15 months ago Last modified on 02/13/2016 02:56:14 PM