Run ServiceStack in Fastcgi hosted on nginx
This page has moved to docs.servicestack.net
FastCGI is a protocol for interfacing programs with a web server. In this case we're going to interface with nginx. This guide will show you how to host a simple hello world application in nginx.
The tutorial is written using Ubuntu 12.04. At the time of writing I using the following versions.
- nginx - 1.1.19-1
- mono - 2.10.8.1
- mono-fastcgi-server4 - 2.10.0.0
The easiest way to get started is using apt-get
sudo apt-get install mono
sudo apt-get install mono-fastcgi-server4
sudo apt-get install nginx
The earlier example of Create your first webservice provides us with everything we need for this demo. If you're feeling very lazy you can grab one of the examples.
First start by editing your nginx config
sudo vim /etc/nginx/sites-available/default
replace the server tag with the following config
server {
listen 80; ## listen for ipv4
location / {
root /var/www;
index index.html index.htm;
fastcgi_pass unix:/tmp/SOCK-ServiceStack;
include /etc/nginx/fastcgi_params;
}
}
then restart nginx
sudo /etc/init.d/nginx restart
You need to launch fastcgi from within the directory that has your web.config. You can run fastcgi with the following command
fastcgi-mono-server4 /applications=/:. /filename=/tmp/SOCK-ServiceStack /socket=unix
Alternatively you can provide the path /applications=/:/path/to/web_config_directory
This will run fastcgi-mono-server4 as the current user and will change the permissions on the socket to be that of the current user. You will need to setup your permissions so that the www-data group/user has read-write access to /tmp/SOCK-ServiceStack. To get up and running you can do the following
sudo chgrp www-data /tmp/SOCK-ServiceStack
sudo chmod g+rw /tmp/SOCK-ServiceStack
And that's it you should be up and running. You can now visit your site running on localhost
- [Mono Fast Cgi] (http://www.mono-project.com/FastCGI)
- [Mono Fast Cgi with Nginx] (http://www.mono-project.com/FastCGI_Nginx)
- [nginx] (http://wiki.nginx.org/Main)
- What is the best way to run ServiceStack on Linux / Mono? answered on StackOverflow
- Why ServiceStack?
- Important role of DTOs
- What is a message based web service?
- Advantages of message based web services
- Why remote services should use separate DTOs
-
Getting Started
-
Designing APIs
-
Reference
-
Clients
-
Formats
-
View Engines 4. Razor & Markdown Razor
-
Hosts
-
Security
-
Advanced
- Configuration options
- Access HTTP specific features in services
- Logging
- Serialization/deserialization
- Request/response filters
- Filter attributes
- Concurrency Model
- Built-in profiling
- Form Hijacking Prevention
- Auto-Mapping
- HTTP Utils
- Dump Utils
- Virtual File System
- Config API
- Physical Project Structure
- Modularizing Services
- MVC Integration
- ServiceStack Integration
- Embedded Native Desktop Apps
- Auto Batched Requests
- Versioning
- Multitenancy
-
Caching
-
HTTP Caching 1. CacheResponse Attribute 2. Cache Aware Clients
-
Auto Query
-
AutoQuery Data 1. AutoQuery Memory 2. AutoQuery Service 3. AutoQuery DynamoDB
-
Server Events
-
Service Gateway
-
Encrypted Messaging
-
Plugins
-
Tests
-
ServiceStackVS
-
Other Languages
-
Amazon Web Services
-
Deployment
-
Install 3rd Party Products
-
Use Cases
-
Performance
-
Other Products
-
Future