blob: 0820a02b201994a0a6d242f74a9acedbe8c6389a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<!DOCTYPE PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/1/DTD/1-strict.dtd">
<html xmlns="http://www.w3.org/1999/" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text; charset=utf-8" />
<title>tilde.institute :: Quick-Start Guide</title>
<link rel="stylesheet" href="tilde.css" type="text/css"/>
<link rel="icon" type="image/png" href="icon.png"/>
</head>
<body>
<div id="container">
<div id="logo">
<img src="logo.png" alt="" /><br />
<div id="logobyline">
of OpenBSD Education
</div>
</div>
<div id="navigation">
<a href="http://tilde.institute">News</a> :: <a href="/signup">Sign Up</a> :: <a href="/irc">IRC</a> :: <a href="/start">BCHS Guide</a> :: <a href="/coc">Code of Conduct</a> :: <a href="https://tilde.zone/@tildeinstitute">Mastodon</a> :: <a href="/wiki/index.php">Wiki</a> :: <a href="https://tildegit.org/institute">Git</a> :: <a href="/stats">Stats</a>
</div>
<div id="content">
<p>This will be a quick-and-dirty guide to getting started with the BCHS stack. More information can be found at:</p>
<ul>
<li><a href="https://learnbchs.org">Learn BCHS</a></li>
<li><a href="http://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/pledge.2">pledge(2)</a></li>
<li><a href="http://man.openbsd.org/unveil.2">unveil(2)</a></li>
<li><a href="https://kristaps.bsd.lv/kcgi/">kcgi</a></li>
<li><a href="https://kristaps.bsd.lv/ksql/">ksql</a></li>
<li><a href="https://kristaps.bsd.lv/kwebapp">kwebapp</a></li>
</ul>
<p>tilde.institute is set up to process all files with the .cgi extension via slowcgi(8). This allows for a multitude of possibilities - any compiled language can be used to develop web applications on an OpenBSD server. It's advised to use C because of the pledge(2) and unveil(2) system calls available, which allow for restricting privileges and restricted filesystem access, respectively.</p>
<p>Keep in mind that if you don't use the previously listed kcgi/ksql/kwebapp libraries, you will need to work with HTTP's eccentricities manually. For an example, here's <a href="helloworld.c.txt">the Hello World code</a> from the LearnBCHS site. And <a href="helloworld.cgi">here it is running</a> as compiled CGI here at the Tilde Institute.</p>
<p>Once you've written your software to be served via CGI, be sure to statically link the executables. Sure, there's a larger file size, but the benefits outweigh that in this case - there's no relying on what I may or may not have installed on the Tilde Institute's server. For example:</p>
<p>$ cc -static -g -W -Wall -o app.cgi app.c</p>
<p>When you've completed compilation, make sure to set permissions properly (755) and move it to the public folder in your home directory. httpd(8) is set to use index as the index file, however this can be changed to index.cgi or what-have-you by contacting ahriman via IRC.</p>
<p>~institute user <code>xvetrd</code> has written a more detailed example on kcgi than is provided on the library's site. It includes an example makefile as well. The KCGI Starter archive <a href="kcgi-start.tar.gz">is available here</a>. Simply <code>curl -O https://tilde.institute/kcgi-start.tar.gz</code> it to your home directory here on ~institute, untar, make, and make install to test the compilation. It installs to ~/public_html with the proper ownership and permissions. View the index.c source and the makefile to see what goes on under the hood! Feel free to adapt it your own projects!</p>
</div>
</div>
</body>
</html>
|