piku/INSTALL-other.html

1123 wiersze
37 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="prev" href="INSTALL-centos-9.html">
<link rel="next" href="INSTALL-raspbian-9.4-stretch-10-buster.html">
<link rel="icon" href="assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.17">
<title>Installation on other platforms - Piku</title>
<link rel="stylesheet" href="assets/stylesheets/main.bcfcd587.min.css">
<script src="assets/external/unpkg.com/iframe-worker/shim.js"></script>
<link rel="stylesheet" href="assets/external/fonts.googleapis.com/css.49ea35f2.css">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#installation-on-other-platforms" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="Piku" class="md-header__button md-logo" aria-label="Piku" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 15.5A3.5 3.5 0 0 1 8.5 12 3.5 3.5 0 0 1 12 8.5a3.5 3.5 0 0 1 3.5 3.5 3.5 3.5 0 0 1-3.5 3.5m7.43-2.53c.04-.32.07-.64.07-.97 0-.33-.03-.66-.07-1l2.11-1.63c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.31-.61-.22l-2.49 1c-.52-.39-1.06-.73-1.69-.98l-.37-2.65A.506.506 0 0 0 14 2h-4c-.25 0-.46.18-.5.42l-.37 2.65c-.63.25-1.17.59-1.69.98l-2.49-1c-.22-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64L4.57 11c-.04.34-.07.67-.07 1 0 .33.03.65.07.97l-2.11 1.66c-.19.15-.25.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1.01c.52.4 1.06.74 1.69.99l.37 2.65c.04.24.25.42.5.42h4c.25 0 .46-.18.5-.42l.37-2.65c.63-.26 1.17-.59 1.69-.99l2.49 1.01c.22.08.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.66Z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Piku
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Installation on other platforms
</span>
</div>
</div>
</div>
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="." title="Piku" class="md-nav__button md-logo" aria-label="Piku" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 15.5A3.5 3.5 0 0 1 8.5 12 3.5 3.5 0 0 1 12 8.5a3.5 3.5 0 0 1 3.5 3.5 3.5 3.5 0 0 1-3.5 3.5m7.43-2.53c.04-.32.07-.64.07-.97 0-.33-.03-.66-.07-1l2.11-1.63c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.31-.61-.22l-2.49 1c-.52-.39-1.06-.73-1.69-.98l-.37-2.65A.506.506 0 0 0 14 2h-4c-.25 0-.46.18-.5.42l-.37 2.65c-.63.25-1.17.59-1.69.98l-2.49-1c-.22-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64L4.57 11c-.04.34-.07.67-.07 1 0 .33.03.65.07.97l-2.11 1.66c-.19.15-.25.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1.01c.52.4 1.06.74 1.69.99l.37 2.65c.04.24.25.42.5.42h4c.25 0 .46-.18.5-.42l.37-2.65c.63-.26 1.17-.59 1.69-.99l2.49 1.01c.22.08.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.66Z"/></svg>
</a>
Piku
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="CONTRIBUTING.html" class="md-nav__link">
<span class="md-ellipsis">
CONTRIBUTING
</span>
</a>
</li>
<li class="md-nav__item">
<a href="DESIGN.html" class="md-nav__link">
<span class="md-ellipsis">
Design Notes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="ENV.html" class="md-nav__link">
<span class="md-ellipsis">
Configuring Piku via ENV
</span>
</a>
</li>
<li class="md-nav__item">
<a href="FAQ.html" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
</li>
<li class="md-nav__item">
<a href="INSTALL-centos-9.html" class="md-nav__link">
<span class="md-ellipsis">
Installation on CentOS 9
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Installation on other platforms
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="INSTALL-other.html" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Installation on other platforms
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#dependencies" class="md-nav__link">
<span class="md-ellipsis">
Dependencies
</span>
</a>
<nav class="md-nav" aria-label="Dependencies">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#raspbian-jessie-debian-8-ubuntu-1604" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Jessie, Debian 8, Ubuntu 16.04
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#raspbian-wheezy" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Wheezy
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#set-up-the-piku-user-set-up-ssh-access" class="md-nav__link">
<span class="md-ellipsis">
Set up the piku user, Set up SSH access
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#uwsgi-installation-debian-linux-variants-any-architecture" class="md-nav__link">
<span class="md-ellipsis">
uWSGI Installation (Debian Linux variants, any architecture)
</span>
</a>
<nav class="md-nav" aria-label="uWSGI Installation (Debian Linux variants, any architecture)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#raspbian-jessie-debian-8" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Jessie, Debian 8
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#raspbian-wheezy_1" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Wheezy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ubuntu-1404-lts" class="md-nav__link">
<span class="md-ellipsis">
Ubuntu 14.04 LTS
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#nginx-installation-raspbian-8-ubuntu-1604" class="md-nav__link">
<span class="md-ellipsis">
nginx Installation (Raspbian 8, Ubuntu 16.04)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#java-8-installation-all-debian-linux-variants-on-raspberry-pi" class="md-nav__link">
<span class="md-ellipsis">
Java 8 Installation (All Debian Linux variants, on Raspberry Pi)
</span>
</a>
<nav class="md-nav" aria-label="Java 8 Installation (All Debian Linux variants, on Raspberry Pi)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#raspbian-jessie" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Jessie
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ubuntu-1604-for-arm" class="md-nav__link">
<span class="md-ellipsis">
Ubuntu 16.04 for ARM
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#go-installation-all-debian-linux-variants-on-raspberry-pi" class="md-nav__link">
<span class="md-ellipsis">
Go Installation (All Debian Linux variants, on Raspberry Pi)
</span>
</a>
<nav class="md-nav" aria-label="Go Installation (All Debian Linux variants, on Raspberry Pi)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#raspbian-wheezyjessie" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Wheezy/Jessie
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="INSTALL-raspbian-9.4-stretch-10-buster.html" class="md-nav__link">
<span class="md-ellipsis">
Installation on Raspbian Stretch or Buster
</span>
</a>
</li>
<li class="md-nav__item">
<a href="INSTALL-ubuntu-18.04-bionic.html" class="md-nav__link">
<span class="md-ellipsis">
Installation on Ubuntu 18.04 LTS (Bionic)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="INSTALL-ubuntu-22.04-jammy.html" class="md-nav__link">
<span class="md-ellipsis">
Installation on Ubuntu 22.04 LTS (Jammy)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="INSTALL.html" class="md-nav__link">
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="PLUGINS.html" class="md-nav__link">
<span class="md-ellipsis">
PLUGINS
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12" >
<label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="0">
<span class="md-ellipsis">
Old
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_12">
<span class="md-nav__icon md-icon"></span>
Old
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="old/RASPBERRY_PI_QUICKSTART.html" class="md-nav__link">
<span class="md-ellipsis">
Setting up a Raspberry Pi Piku Server from Scratch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="old/ROADMAP.html" class="md-nav__link">
<span class="md-ellipsis">
Roadmap
</span>
</a>
</li>
<li class="md-nav__item">
<a href="old/SCRIPTS.html" class="md-nav__link">
<span class="md-ellipsis">
Ubuntu 16.04
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#dependencies" class="md-nav__link">
<span class="md-ellipsis">
Dependencies
</span>
</a>
<nav class="md-nav" aria-label="Dependencies">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#raspbian-jessie-debian-8-ubuntu-1604" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Jessie, Debian 8, Ubuntu 16.04
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#raspbian-wheezy" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Wheezy
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#set-up-the-piku-user-set-up-ssh-access" class="md-nav__link">
<span class="md-ellipsis">
Set up the piku user, Set up SSH access
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#uwsgi-installation-debian-linux-variants-any-architecture" class="md-nav__link">
<span class="md-ellipsis">
uWSGI Installation (Debian Linux variants, any architecture)
</span>
</a>
<nav class="md-nav" aria-label="uWSGI Installation (Debian Linux variants, any architecture)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#raspbian-jessie-debian-8" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Jessie, Debian 8
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#raspbian-wheezy_1" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Wheezy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ubuntu-1404-lts" class="md-nav__link">
<span class="md-ellipsis">
Ubuntu 14.04 LTS
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#nginx-installation-raspbian-8-ubuntu-1604" class="md-nav__link">
<span class="md-ellipsis">
nginx Installation (Raspbian 8, Ubuntu 16.04)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#java-8-installation-all-debian-linux-variants-on-raspberry-pi" class="md-nav__link">
<span class="md-ellipsis">
Java 8 Installation (All Debian Linux variants, on Raspberry Pi)
</span>
</a>
<nav class="md-nav" aria-label="Java 8 Installation (All Debian Linux variants, on Raspberry Pi)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#raspbian-jessie" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Jessie
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ubuntu-1604-for-arm" class="md-nav__link">
<span class="md-ellipsis">
Ubuntu 16.04 for ARM
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#go-installation-all-debian-linux-variants-on-raspberry-pi" class="md-nav__link">
<span class="md-ellipsis">
Go Installation (All Debian Linux variants, on Raspberry Pi)
</span>
</a>
<nav class="md-nav" aria-label="Go Installation (All Debian Linux variants, on Raspberry Pi)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#raspbian-wheezyjessie" class="md-nav__link">
<span class="md-ellipsis">
Raspbian Wheezy/Jessie
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="installation-on-other-platforms">Installation on other platforms</h1>
<blockquote>
<p>This is a standalone, distribution-specific version of <code>INSTALL.md</code>. You do not need to read or follow the original file, but can refer to it for generic steps like setting up SSH keys (which are assumed to be common knowledge here)</p>
</blockquote>
<h2 id="dependencies">Dependencies</h2>
<p>Before running <code>piku</code> for the first time, you need to install the following Python packages at the system level:</p>
<h3 id="raspbian-jessie-debian-8-ubuntu-1604">Raspbian Jessie, Debian 8, Ubuntu 16.04</h3>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>git<span class="w"> </span>python3-virtualenv<span class="w"> </span>python3-pip
sudo<span class="w"> </span>pip3<span class="w"> </span>install<span class="w"> </span>-U<span class="w"> </span>click
</code></pre></div>
<h3 id="raspbian-wheezy">Raspbian Wheezy</h3>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>git<span class="w"> </span>python3
sudo<span class="w"> </span>easy_install3<span class="w"> </span>-U<span class="w"> </span>pip3
sudo<span class="w"> </span>pip3<span class="w"> </span>install<span class="w"> </span>-U<span class="w"> </span>click<span class="w"> </span>virtualenv
</code></pre></div>
<p>These may or may not be installed already (<code>click</code> usually isn't). For Raspbian Wheezy this is the preferred approach, since current <code>apt</code> packages are fairly outdated.</p>
<h2 id="set-up-the-piku-user-set-up-ssh-access">Set up the <code>piku</code> user, Set up SSH access</h2>
<p>See INSTALL.md</p>
<h2 id="uwsgi-installation-debian-linux-variants-any-architecture">uWSGI Installation (Debian Linux variants, any architecture)</h2>
<p><a href="https://github.com/unbit/uwsgi">uWSGI</a> can be installed in a variety of fashions. These instructions cover both pre-packaged and source installs depending on your system.</p>
<h3 id="raspbian-jessie-debian-8">Raspbian Jessie, Debian 8</h3>
<blockquote>
<p><strong>Warning</strong></p>
<p>These OS releases are no longer supported and these instructions are kept for reference purposes only.</p>
</blockquote>
<p>In Raspbian Jessie, Debian 8 and other <code>systemd</code> distributions where <a href="https://github.com/unbit/uwsgi">uWSGI</a> is already available pre-compiled (but split into a number of plugins), do the following:</p>
<p><div class="highlight"><pre><span></span><code><span class="c1"># At the time of this writing, this installs uwsgi 2.0.7 on Raspbian Jessie.</span>
<span class="c1"># You can also install uwsgi-plugins-all if you want to get runtime support for other languages</span>
sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>uwsgi<span class="w"> </span>uwsgi-plugin-python3
<span class="c1"># refer to our executable using a link, in case there are more versions installed</span>
sudo<span class="w"> </span>ln<span class="w"> </span>-s<span class="w"> </span><span class="sb">`</span>which<span class="w"> </span>uwsgi<span class="sb">`</span><span class="w"> </span>/usr/local/bin/uwsgi-piku
<span class="c1"># disable the standard uwsgi startup script</span>
sudo<span class="w"> </span>systemctl<span class="w"> </span>disable<span class="w"> </span>uwsgi
<span class="c1"># add our own startup script</span>
sudo<span class="w"> </span>cp<span class="w"> </span>/tmp/uwsgi-piku.service<span class="w"> </span>/etc/systemd/system/
sudo<span class="w"> </span>systemctl<span class="w"> </span><span class="nb">enable</span><span class="w"> </span>uwsgi-piku
sudo<span class="w"> </span>systemctl<span class="w"> </span>start<span class="w"> </span>uwsgi-piku
<span class="c1"># check it&#39;s running</span>
sudo<span class="w"> </span>systemctl<span class="w"> </span>status<span class="w"> </span>uwsgi-piku.service
</code></pre></div>
<strong>Important Note:</strong> Make sure you run <code>piku.py setup</code> as outlined above before starting the service.</p>
<p>Also, please note that <code>uwsgi-piku.service</code>, as provided, creates a <code>/run/uwsgi-piku</code> directory for it to place socket files and sundry. This is not actually used at the moment, since the <code>uwsgi</code> socket file is placed inside the <code>piku</code> user directory for consistency across OS distributions. This will be cleaned up in a later release.</p>
<h3 id="raspbian-wheezy_1">Raspbian Wheezy</h3>
<blockquote>
<p><strong>Warning</strong></p>
<p>This OS release is no longer supported and these instructions are kept for reference purposes only.</p>
</blockquote>
<p>Since Raspbian Wheezy is a fairly old distribution by now, its <code>uwsgi-*</code> packages are completely outdated (and depend on Python 2.6), so we have to compile and install our own version, as well as using an old-style <code>init</code> script to have it start automatically upon boot.</p>
<p><div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>build-essential<span class="w"> </span>python-dev<span class="w"> </span>libpcre3-dev
<span class="c1"># At the time of this writing, this installs 2.0.12</span>
sudo<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>uwsgi
<span class="c1"># refer to our executable using a link, in case there are more versions installed</span>
sudo<span class="w"> </span>ln<span class="w"> </span>-s<span class="w"> </span><span class="sb">`</span>which<span class="w"> </span>uwsgi<span class="sb">`</span><span class="w"> </span>/usr/local/bin/uwsgi-piku
<span class="c1"># set up our init script</span>
sudo<span class="w"> </span>cp<span class="w"> </span>/tmp/uwsgi-piku.dist<span class="w"> </span>/etc/init.d/uwsgi-piku
sudo<span class="w"> </span>chmod<span class="w"> </span>+x<span class="w"> </span>/etc/init.d/uwsgi-piku
sudo<span class="w"> </span>update-rc.d<span class="w"> </span>uwsgi-piku<span class="w"> </span>defaults
sudo<span class="w"> </span>service<span class="w"> </span>uwsgi-piku<span class="w"> </span>start
</code></pre></div>
<strong>Important Note:</strong> Make sure you run <code>python3 piku.py setup</code> as outlined above before starting the service.</p>
<h3 id="ubuntu-1404-lts">Ubuntu 14.04 LTS</h3>
<blockquote>
<p><strong>Warning</strong></p>
<p>This OS release is no longer supported and these instructions are kept for reference purposes only.</p>
</blockquote>
<p>This is a mix of both the above, and should change soon when we get 16.04. If you have trouble, install <a href="https://github.com/unbit/uwsgi">uWSGI</a> via <code>pip</code> instead.</p>
<div class="highlight"><pre><span></span><code><span class="c1"># At the time of this writing, this installs uwsgi 1.9.17 on Ubuntu 14.04 LTS.</span>
<span class="c1"># You can also install uwsgi-plugins-all if you want to get runtime support for other languages</span>
sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>uwsgi<span class="w"> </span>uwsgi-plugin-python3
<span class="c1"># refer to our executable using a link, in case there are more versions installed</span>
sudo<span class="w"> </span>ln<span class="w"> </span>-s<span class="w"> </span><span class="sb">`</span>which<span class="w"> </span>uwsgi<span class="sb">`</span><span class="w"> </span>/usr/local/bin/uwsgi-piku
<span class="c1"># set up our init script</span>
sudo<span class="w"> </span>cp<span class="w"> </span>/tmp/uwsgi-piku.dist<span class="w"> </span>/etc/init.d/uwsgi-piku
sudo<span class="w"> </span>chmod<span class="w"> </span>+x<span class="w"> </span>/etc/init.d/uwsgi-piku
sudo<span class="w"> </span>update-rc.d<span class="w"> </span>uwsgi-piku<span class="w"> </span>defaults
sudo<span class="w"> </span>service<span class="w"> </span>uwsgi-piku<span class="w"> </span>start
</code></pre></div>
<h2 id="nginx-installation-raspbian-8-ubuntu-1604">nginx Installation (Raspbian 8, Ubuntu 16.04)</h2>
<blockquote>
<p><strong>Warning</strong></p>
<p>These OS releases are no longer supported and these instructions are kept for reference purposes only.</p>
</blockquote>
<p><em>PLEASE NOTE:</em> There is a bug in <code>nginx</code> 1.6.2 under Raspbian 8 that causes it to try to allocate around a gigabyte of RAM when using SSL with SPDY. I seriously recommend using Ubuntu instead, if you can, or disabling SSL altogether.</p>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>nginx
<span class="c1"># Set up nginx to pick up our config files</span>
sudo<span class="w"> </span>cp<span class="w"> </span>/tmp/nginx.default.dist<span class="w"> </span>/etc/nginx/sites-available/default
<span class="c1"># Set up systemd.path to reload nginx upon config changes</span>
sudo<span class="w"> </span>cp<span class="w"> </span>./piku-nginx.<span class="o">{</span>path,<span class="w"> </span>service<span class="o">}</span><span class="w"> </span>/etc/systemd/system/
sudo<span class="w"> </span>systemctl<span class="w"> </span><span class="nb">enable</span><span class="w"> </span>piku-nginx.<span class="o">{</span>path,service<span class="o">}</span>
sudo<span class="w"> </span>systemctl<span class="w"> </span>start<span class="w"> </span>piku-nginx.path
<span class="c1"># Check the status of piku-nginx.service</span>
systemctl<span class="w"> </span>status<span class="w"> </span>piku-nginx.path<span class="w"> </span><span class="c1"># should return `Active: active (waiting)`</span>
<span class="c1"># Restart NGINX</span>
sudo<span class="w"> </span>systemctl<span class="w"> </span>restart<span class="w"> </span>nginx
</code></pre></div>
<h2 id="java-8-installation-all-debian-linux-variants-on-raspberry-pi">Java 8 Installation (All Debian Linux variants, on Raspberry Pi)</h2>
<blockquote>
<p><strong>Warning</strong></p>
<p>OpenJDK 8 is no longer shipping with most distributions and these instructions are kept for reference purposes only.</p>
</blockquote>
<p>To be able to deploy Java apps, we're going to need to install Java (and, since we're going to be doing so on ARM, it's best to use Oracle's runtime). To do that, we're going to use the <code>webupd8team</code> PPA, which has a (cross-platform) Java installer.</p>
<p>First, get rid of OpenJDK and import the PPA key:</p>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>apt-get<span class="w"> </span>remove<span class="w"> </span>openjdk*
sudo<span class="w"> </span>apt-key<span class="w"> </span>adv<span class="w"> </span>--recv-key<span class="w"> </span>--keyserver<span class="w"> </span>keyserver.ubuntu.com<span class="w"> </span>EEA14886
</code></pre></div>
<h3 id="raspbian-jessie">Raspbian Jessie</h3>
<blockquote>
<p><strong>Warning</strong></p>
<p>This OS release is no longer supported and these instructions are kept for reference purposes only.</p>
</blockquote>
<p>For Jessie, we're going to use the <code>trusty</code> version of the installer:</p>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>tee<span class="w"> </span>/etc/apt/sources.list.d/webupd8team.list
deb<span class="w"> </span>http://ppa.launchpad.net/webupd8team/java/ubuntu<span class="w"> </span>trusty<span class="w"> </span>main<span class="w"> </span>
deb-src<span class="w"> </span>http://ppa.launchpad.net/webupd8team/java/ubuntu<span class="w"> </span>trusty<span class="w"> </span>main
^D
</code></pre></div>
<h3 id="ubuntu-1604-for-arm">Ubuntu 16.04 for ARM</h3>
<blockquote>
<p><strong>Warning</strong></p>
<p>This OS release is no longer supported and these instructions are kept for reference purposes only.</p>
</blockquote>
<p>For Xenial, we're going to use its own version:</p>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>tee<span class="w"> </span>/etc/apt/sources.list.d/webupd8team.list
deb<span class="w"> </span>http://ppa.launchpad.net/webupd8team/java/ubuntu<span class="w"> </span>xenial<span class="w"> </span>main<span class="w"> </span>
deb-src<span class="w"> </span>http://ppa.launchpad.net/webupd8team/java/ubuntu<span class="w"> </span>xenial<span class="w"> </span>main
^D
</code></pre></div>
<p>Now perform the actual install:</p>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>apt-get<span class="w"> </span>update
sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>oracle-java8-installer<span class="w"> </span>oracle-java8-set-default
</code></pre></div>
<h2 id="go-installation-all-debian-linux-variants-on-raspberry-pi">Go Installation (All Debian Linux variants, on Raspberry Pi)</h2>
<blockquote>
<p>This is <strong>EXPERIMENTAL</strong> and may not work at all.</p>
</blockquote>
<h3 id="raspbian-wheezyjessie">Raspbian Wheezy/Jessie</h3>
<blockquote>
<p><strong>Warning</strong></p>
<p>Wheezy and Jessie are no longer supported and these instructions are kept for reference purposes only.</p>
</blockquote>
<p>Since Raspbian's Go compiler is version 1.0.2, we need something more up-to-date.</p>
<ol>
<li>Get an <a href="http://dave.cheney.net/unofficial-arm-tarballs">ARM 6 binary tarball</a></li>
<li>Unpack it under the <code>piku</code> user like such:</li>
</ol>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>su<span class="w"> </span>-<span class="w"> </span>piku
tar<span class="w"> </span>-zxvf<span class="w"> </span>/tmp/go1.5.3.linux-arm.tar.gz
<span class="c1"># remove unnecessary files</span>
rm<span class="w"> </span>-rf<span class="w"> </span>go/api<span class="w"> </span>go/blog<span class="w"> </span>go/doc<span class="w"> </span>go/misc<span class="w"> </span>go/test
</code></pre></div>
<ol>
<li>Give it a temporary <code>GOPATH</code> and install <code>godep</code>:</li>
</ol>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>su<span class="w"> </span>-<span class="w"> </span>piku
<span class="nv">GOROOT</span><span class="o">=</span><span class="nv">$HOME</span>/go<span class="w"> </span><span class="nv">GOPATH</span><span class="o">=</span><span class="nv">$HOME</span>/gopath<span class="w"> </span><span class="nv">PATH</span><span class="o">=</span><span class="nv">$PATH</span>:<span class="nv">$HOME</span>/go/bin<span class="w"> </span>go<span class="w"> </span>get<span class="w"> </span>github.com/tools/godep
<span class="c1"># temporary workaround until this is fixed in godep or Go 1.7(?)</span>
<span class="nv">GOROOT</span><span class="o">=</span><span class="nv">$HOME</span>/go<span class="w"> </span><span class="nv">GOPATH</span><span class="o">=</span><span class="nv">$HOME</span>/gopath<span class="w"> </span><span class="nv">PATH</span><span class="o">=</span><span class="nv">$PATH</span>:<span class="nv">$HOME</span>/go/bin<span class="w"> </span>go<span class="w"> </span>get<span class="w"> </span>golang.org/x/sys/unix
</code></pre></div>
<p><em>TODO: complete this.</em></p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
<script id="__config" type="application/json">{"base": ".", "features": ["navigation.instant", "navigation.instant.progress", "navigation.indexes"], "search": "assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="assets/javascripts/bundle.1e8ae164.min.js"></script>
<script src="assets/external/unpkg.com/mermaid@10.7.0/dist/mermaid.min.js"></script>
</body>
</html>