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.
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 ?
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
WT-NMP
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
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
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
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
Email Server
http://en.wikipedia.org/wiki/Message_transfer_agent
See PythonSMTP
Secure Shell Server
http://en.wikipedia.org/wiki/Secure_Shell
http://en.wikipedia.org/wiki/Comparison_of_SSH_servers
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
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
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
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
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 ...