<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Slukin</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Slukin"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Slukin"/>
	<updated>2026-05-05T16:34:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd_with_Haserl_and_Lua&amp;diff=13058</id>
		<title>Mini httpd with Haserl and Lua</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd_with_Haserl_and_Lua&amp;diff=13058"/>
		<updated>2016-11-23T12:31:22Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Created page with &amp;quot;{{DISPLAYTITLE:mini_httpd with Haserl and Lua}} [http://acme.com/software/mini_httpd/ mini_httpd] is a small HTTP server. Its performance is not great, but for low or medium t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mini_httpd with Haserl and Lua}}&lt;br /&gt;
[http://acme.com/software/mini_httpd/ mini_httpd] is a small HTTP server. Its performance is not great, but for low or medium traffic sites it&#039;s quite adequate. It implements all the basic features of an HTTP server.&lt;br /&gt;
&lt;br /&gt;
[http://haserl.sourceforge.net/ Haserl] is a small program that uses shell or Lua script to create cgi web scripts. It is intended for environments where PHP or ruby are too big.&lt;br /&gt;
&lt;br /&gt;
[https://www.lua.org Lua] is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.&lt;br /&gt;
&lt;br /&gt;
= mini_httpd setup =&lt;br /&gt;
For setting up mini_httpd please see article [[mini_httpd]]&lt;br /&gt;
&lt;br /&gt;
= Haserl and Lua setup =&lt;br /&gt;
Haserl and Lua packages are available in the Alpine Linux repositories. To install them run:&lt;br /&gt;
{{cmd|apk add haserl lua}}&lt;br /&gt;
&lt;br /&gt;
You need to modify mini_httpd.conf (to add cgipat)&lt;br /&gt;
{{cmd|vi /etc/mini_httpd/mini_httpd.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not leave empty lines in here!&lt;br /&gt;
#host=www.example.org&lt;br /&gt;
port=80&lt;br /&gt;
user=minihttpd&lt;br /&gt;
dir=/www&lt;br /&gt;
cgipat=**.sh|**.cgi|**.lua&lt;br /&gt;
nochroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mini_httpd service should be restarted because we have changed it&#039;s configuration&lt;br /&gt;
{{cmd|rc-service mini_httpd restart}}&lt;br /&gt;
&lt;br /&gt;
Creating sample Lua script&lt;br /&gt;
{{cmd|vi /www/test.lua}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/haserl --shell=lua&lt;br /&gt;
Content-type: text/html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;% &lt;br /&gt;
	t = {&#039;Red&#039;, &#039;Blue&#039;, &#039;Yellow&#039;, &#039;Cyan&#039;}&lt;br /&gt;
	for k,v in ipairs(t) do&lt;br /&gt;
		io.write(&#039;&amp;lt;td bgcolor=&amp;quot;&#039;..v..&#039;&amp;quot;&amp;gt;&#039;..v..&#039;&amp;lt;/td&amp;gt;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
%&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting execution permission&lt;br /&gt;
{{cmd|chmod +x /www/*.lua}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
For troubleshooting you can try running commands:&lt;br /&gt;
{{cmd|lua /www/test.lua}}&lt;br /&gt;
{{cmd|/www/test.lua}}&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;/usr/bin/haserl --shell=lua /www/test.lua&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{cmd|apk add sudo&lt;br /&gt;
sudo -u minihttpd /usr/bin/haserl /www/test.lua}}&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;apk add curl&lt;br /&gt;
curl http://localhost/test.lua&amp;lt;/nowiki&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd_with_Haserl&amp;diff=13057</id>
		<title>Mini httpd with Haserl</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd_with_Haserl&amp;diff=13057"/>
		<updated>2016-11-23T12:31:09Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Created page with &amp;quot;{{DISPLAYTITLE:mini_httpd with Haserl}} [http://acme.com/software/mini_httpd/ mini_httpd] is a small HTTP server. Its performance is not great, but for low or medium traffic s...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mini_httpd with Haserl}}&lt;br /&gt;
[http://acme.com/software/mini_httpd/ mini_httpd] is a small HTTP server. Its performance is not great, but for low or medium traffic sites it&#039;s quite adequate. It implements all the basic features of an HTTP server.&lt;br /&gt;
&lt;br /&gt;
[http://haserl.sourceforge.net/ Haserl] is a small program that uses shell or Lua script to create cgi web scripts. It is intended for environments where PHP or ruby are too big.&lt;br /&gt;
&lt;br /&gt;
= mini_httpd setup =&lt;br /&gt;
For setting up mini_httpd please see article [[mini_httpd]]&lt;br /&gt;
&lt;br /&gt;
= Haserl setup =&lt;br /&gt;
Haserl package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
{{cmd|apk add haserl}}&lt;br /&gt;
&lt;br /&gt;
You need to modify mini_httpd.conf (to add cgipat)&lt;br /&gt;
{{cmd|vi /etc/mini_httpd/mini_httpd.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not leave empty lines in here!&lt;br /&gt;
#host=www.example.org&lt;br /&gt;
port=80&lt;br /&gt;
user=minihttpd&lt;br /&gt;
dir=/www&lt;br /&gt;
cgipat=**.sh|**.cgi&lt;br /&gt;
nochroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mini_httpd service should be restarted because we have changed it&#039;s configuration&lt;br /&gt;
{{cmd|rc-service mini_httpd restart}}&lt;br /&gt;
&lt;br /&gt;
Creating sample bash script&lt;br /&gt;
{{cmd|vi /www/test.sh}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/haserl&lt;br /&gt;
content-type: text/plain&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%# This is a sample &amp;quot;env&amp;quot; script %&amp;gt;&lt;br /&gt;
&amp;lt;% env %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting execution permission&lt;br /&gt;
{{cmd|chmod +x /www/*.sh}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
For troubleshooting you can try running commands:&lt;br /&gt;
{{cmd|/www/test.sh}}&lt;br /&gt;
{{cmd|/usr/bin/haserl /www/test.sh}}&lt;br /&gt;
{{cmd|apk add sudo&lt;br /&gt;
sudo -u minihttpd /usr/bin/haserl /www/test.sh}}&lt;br /&gt;
{{cmd|apk add curl&lt;br /&gt;
curl &amp;lt;nowiki&amp;gt;http://localhost/test.sh&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
= mini_httpd with Haserl and Lua =&lt;br /&gt;
&lt;br /&gt;
[https://www.lua.org Lua] is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.&lt;br /&gt;
&lt;br /&gt;
For setting up mini_httpd with Haserl and Lua, please, see arcticle&lt;br /&gt;
[[Mini_httpd_with_Haserl_and_Lua|mini_httpd with Haserl and Lua]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd&amp;diff=13056</id>
		<title>Mini httpd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd&amp;diff=13056"/>
		<updated>2016-11-23T12:30:07Z</updated>

		<summary type="html">&lt;p&gt;Slukin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mini_httpd}}&lt;br /&gt;
[http://acme.com/software/mini_httpd/ mini_httpd] is a small HTTP server. Its performance is not great, but for low or medium traffic sites it&#039;s quite adequate. It implements all the basic features of an HTTP server.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
mini_httpd package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
{{cmd|apk add mini_httpd}}&lt;br /&gt;
&lt;br /&gt;
Preparing home directory&lt;br /&gt;
{{cmd|mkdir /www&lt;br /&gt;
chown minihttpd /www}}&lt;br /&gt;
&lt;br /&gt;
Before writing your configuration perhaps you may wish to backup original configuration file&lt;br /&gt;
{{cmd|mv /etc/mini_httpd/mini_httpd.conf /etc/mini_httpd/mini_httpd.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Creating mini_httpd configuration file&lt;br /&gt;
{{cmd|vi /etc/mini_httpd/mini_httpd.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not leave empty lines in here!&lt;br /&gt;
#host=www.example.org&lt;br /&gt;
port=80&lt;br /&gt;
user=minihttpd&lt;br /&gt;
dir=/www&lt;br /&gt;
nochroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creating sample .html file&lt;br /&gt;
{{cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting mini_httpd&lt;br /&gt;
{{cmd|rc-service mini_httpd start}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * Starting mini_httpd ...                                               [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
This section is assuming that mini_httpd is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server. You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Server is online&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also test web server with curl&lt;br /&gt;
{{cmd|apk add curl&lt;br /&gt;
curl http://localhost}}&lt;br /&gt;
&lt;br /&gt;
== Adding to runlevel ==&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding mini_httpd to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add mini_httpd default}}&lt;br /&gt;
&lt;br /&gt;
Now mini_httpd should start automatically when you launch your system next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that mini_httpd is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep mini_httpd&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  580 minihttp   0:00 /usr/sbin/mini_httpd -i /var/run/mini_httpd/mini_httpd.pid -C /etc/mini_httpd/mini_httpd.conf -l /var/log/mini_httpd/mini_httpd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= mini_httpd with Haserl =&lt;br /&gt;
[http://haserl.sourceforge.net/ Haserl] is a small program that uses shell or Lua script to create cgi web scripts. It is intended for environments where PHP or ruby are too big.&lt;br /&gt;
&lt;br /&gt;
For setting up mini_httpd with Haserl, please see article [[Mini_httpd_with_Haserl|mini_httpd with Haserl]]&lt;br /&gt;
&lt;br /&gt;
= mini_httpd with Haserl and Lua =&lt;br /&gt;
[http://haserl.sourceforge.net/ Haserl] is a small program that uses shell or Lua script to create cgi web scripts. It is intended for environments where PHP or ruby are too big.&lt;br /&gt;
&lt;br /&gt;
[https://www.lua.org Lua] Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.&lt;br /&gt;
&lt;br /&gt;
For setting up mini_httpd with Haserl and Lua, please see article [[Mini_httpd_with_Haserl_and_Lua|mini_httpd with Haserl and Lua]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd&amp;diff=13055</id>
		<title>Mini httpd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd&amp;diff=13055"/>
		<updated>2016-11-23T11:39:19Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mini_httpd}}&lt;br /&gt;
[http://acme.com/software/mini_httpd/ mini_httpd] is a small HTTP server. Its performance is not great, but for low or medium traffic sites it&#039;s quite adequate. It implements all the basic features of an HTTP server.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
mini_httpd package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
{{cmd|apk add mini_httpd}}&lt;br /&gt;
&lt;br /&gt;
Preparing home directory&lt;br /&gt;
{{cmd|mkdir /www&lt;br /&gt;
chown minihttpd /www}}&lt;br /&gt;
&lt;br /&gt;
Before writing your configuration perhaps you may wish to backup original configuration file&lt;br /&gt;
{{cmd|mv /etc/mini_httpd/mini_httpd.conf /etc/mini_httpd/mini_httpd.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Creating mini_httpd configuration file&lt;br /&gt;
{{cmd|vi /etc/mini_httpd/mini_httpd.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not leave empty lines in here!&lt;br /&gt;
#host=www.example.org&lt;br /&gt;
port=80&lt;br /&gt;
user=minihttpd&lt;br /&gt;
dir=/www&lt;br /&gt;
nochroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creating sample .html file&lt;br /&gt;
{{cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting mini_httpd&lt;br /&gt;
{{cmd|rc-service mini_httpd start}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * Starting mini_httpd ...                                               [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
This section is assuming that mini_httpd is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server. You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Server is online&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also test web server with curl&lt;br /&gt;
{{cmd|apk add curl&lt;br /&gt;
curl http://localhost}}&lt;br /&gt;
&lt;br /&gt;
= Runlevel =&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding mini_httpd to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add mini_httpd default}}&lt;br /&gt;
&lt;br /&gt;
Now mini_httpd should start automatically when you launch your system next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that mini_httpd is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep mini_httpd&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  580 minihttp   0:00 /usr/sbin/mini_httpd -i /var/run/mini_httpd/mini_httpd.pid -C /etc/mini_httpd/mini_httpd.conf -l /var/log/mini_httpd/mini_httpd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= mini_httpd with Haserl =&lt;br /&gt;
[http://haserl.sourceforge.net/ Haserl] is a small program that uses shell or Lua script to create cgi web scripts. It is intended for environments where PHP or ruby are too big.&lt;br /&gt;
&lt;br /&gt;
[[Mini_httpd_with_Haserl#mini_httpd_with_Haserl|Setting Up mini_httpd with Haserl]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd&amp;diff=13054</id>
		<title>Mini httpd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd&amp;diff=13054"/>
		<updated>2016-11-23T11:39:03Z</updated>

		<summary type="html">&lt;p&gt;Slukin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mini_httpd}}&lt;br /&gt;
[http://acme.com/software/mini_httpd/ mini_httpd] is a small HTTP server. Its performance is not great, but for low or medium traffic sites it&#039;s quite adequate. It implements all the basic features of an HTTP server.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
mini_httpd package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
{{cmd|apk add mini_httpd}&lt;br /&gt;
&lt;br /&gt;
Preparing home directory&lt;br /&gt;
{{cmd|mkdir /www&lt;br /&gt;
chown minihttpd /www}}&lt;br /&gt;
&lt;br /&gt;
Before writing your configuration perhaps you may wish to backup original configuration file&lt;br /&gt;
{{cmd|mv /etc/mini_httpd/mini_httpd.conf /etc/mini_httpd/mini_httpd.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Creating mini_httpd configuration file&lt;br /&gt;
{{cmd|vi /etc/mini_httpd/mini_httpd.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not leave empty lines in here!&lt;br /&gt;
#host=www.example.org&lt;br /&gt;
port=80&lt;br /&gt;
user=minihttpd&lt;br /&gt;
dir=/www&lt;br /&gt;
nochroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creating sample .html file&lt;br /&gt;
{{cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting mini_httpd&lt;br /&gt;
{{cmd|rc-service mini_httpd start}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * Starting mini_httpd ...                                               [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
This section is assuming that mini_httpd is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server. You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Server is online&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also test web server with curl&lt;br /&gt;
{{cmd|apk add curl&lt;br /&gt;
curl http://localhost}}&lt;br /&gt;
&lt;br /&gt;
= Runlevel =&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding mini_httpd to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add mini_httpd default}}&lt;br /&gt;
&lt;br /&gt;
Now mini_httpd should start automatically when you launch your system next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that mini_httpd is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep mini_httpd&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  580 minihttp   0:00 /usr/sbin/mini_httpd -i /var/run/mini_httpd/mini_httpd.pid -C /etc/mini_httpd/mini_httpd.conf -l /var/log/mini_httpd/mini_httpd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= mini_httpd with Haserl =&lt;br /&gt;
[http://haserl.sourceforge.net/ Haserl] is a small program that uses shell or Lua script to create cgi web scripts. It is intended for environments where PHP or ruby are too big.&lt;br /&gt;
&lt;br /&gt;
[[Mini_httpd_with_Haserl#mini_httpd_with_Haserl|Setting Up mini_httpd with Haserl]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd&amp;diff=13050</id>
		<title>Mini httpd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd&amp;diff=13050"/>
		<updated>2016-11-22T14:57:17Z</updated>

		<summary type="html">&lt;p&gt;Slukin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mini_httpd}}&lt;br /&gt;
[http://acme.com/software/mini_httpd/ mini_httpd] is a small HTTP server. Its performance is not great, but for low or medium traffic sites it&#039;s quite adequate. It implements all the basic features of an HTTP server.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
Preparing home directory&lt;br /&gt;
{{cmd|mkdir /www&lt;br /&gt;
chown minihttpd /www}}&lt;br /&gt;
&lt;br /&gt;
Before writing your configuration perhaps you may wish to backup original configuration file&lt;br /&gt;
{{cmd|mv /etc/mini_httpd/mini_httpd.conf /etc/mini_httpd/mini_httpd.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Creating mini_httpd configuration file&lt;br /&gt;
{{cmd|vi /etc/mini_httpd/mini_httpd.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not leave empty lines in here!&lt;br /&gt;
#host=www.example.org&lt;br /&gt;
port=80&lt;br /&gt;
user=minihttpd&lt;br /&gt;
dir=/www&lt;br /&gt;
nochroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creating sample .html file&lt;br /&gt;
{{cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting mini_httpd&lt;br /&gt;
{{cmd|rc-service mini_httpd start}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * Starting mini_httpd ...                                               [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
This section is assuming that mini_httpd is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server. You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Server is online&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also test web server with curl&lt;br /&gt;
{{cmd|apk add curl&lt;br /&gt;
curl http://localhost}}&lt;br /&gt;
&lt;br /&gt;
= Runlevel =&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding mini_httpd to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add mini_httpd default}}&lt;br /&gt;
&lt;br /&gt;
Now mini_httpd should start automatically when you launch your system next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that mini_httpd is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep mini_httpd&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  580 minihttp   0:00 /usr/sbin/mini_httpd -i /var/run/mini_httpd/mini_httpd.pid -C /etc/mini_httpd/mini_httpd.conf -l /var/log/mini_httpd/mini_httpd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= mini_httpd with Haserl =&lt;br /&gt;
[http://haserl.sourceforge.net/ Haserl] is a small program that uses shell or Lua script to create cgi web scripts. It is intended for environments where PHP or ruby are too big.&lt;br /&gt;
&lt;br /&gt;
[[Mini_httpd_with_Haserl#mini_httpd_with_Haserl|Setting Up mini_httpd with Haserl]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd&amp;diff=13049</id>
		<title>Mini httpd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Mini_httpd&amp;diff=13049"/>
		<updated>2016-11-22T14:53:52Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Created page with &amp;quot;{{DISPLAYTITLE:mini_httpd}} [http://acme.com/software/mini_httpd/ mini_httpd] is a small HTTP server. Its performance is not great, but for low or medium traffic sites it&amp;#039;s qu...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mini_httpd}}&lt;br /&gt;
[http://acme.com/software/mini_httpd/ mini_httpd] is a small HTTP server. Its performance is not great, but for low or medium traffic sites it&#039;s quite adequate. It implements all the basic features of an HTTP server.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
Preparing home directory&lt;br /&gt;
{{cmd|mkdir /www&lt;br /&gt;
chown minihttpd /www}}&lt;br /&gt;
&lt;br /&gt;
Before writing your configuration perhaps you may wish to backup original configuration file&lt;br /&gt;
{{cmd|mv /etc/mini_httpd/mini_httpd.conf /etc/mini_httpd/mini_httpd.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Creating mini_httpd configuration file&lt;br /&gt;
{{cmd|vi /etc/mini_httpd/mini_httpd.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not leave empty lines in here!&lt;br /&gt;
#host=www.example.org&lt;br /&gt;
port=80&lt;br /&gt;
user=minihttpd&lt;br /&gt;
dir=/www&lt;br /&gt;
nochroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creating sample .html file&lt;br /&gt;
{{cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting mini_httpd&lt;br /&gt;
{{cmd|rc-service mini_httpd start}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * Starting mini_httpd ...                                               [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
This section is assuming that mini_httpd is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server. You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Server is online&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also test web server with curl&lt;br /&gt;
{{cmd|apk add curl&lt;br /&gt;
curl http://localhost}}&lt;br /&gt;
&lt;br /&gt;
= Runlevel =&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding mini_httpd to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add mini_httpd default}}&lt;br /&gt;
&lt;br /&gt;
Now mini_httpd should start automatically when you launch your system next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that mini_httpd is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep mini_httpd&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  580 minihttp   0:00 /usr/sbin/mini_httpd -i /var/run/mini_httpd/mini_httpd.pid -C /etc/mini_httpd/mini_httpd.conf -l /var/log/mini_httpd/mini_httpd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= mini_httpd with Haserl =&lt;br /&gt;
[http://haserl.sourceforge.net/ Haserl] is a small program that uses shell or Lua script to create cgi web scripts. It is intended for environments where PHP or ruby are too big.&lt;br /&gt;
&lt;br /&gt;
[[Mini_httpd_with_Haserl#mini_httpd_with_Haserl|Setting Up mini_httpd with Haserl]]&lt;br /&gt;
&lt;br /&gt;
= mini_httpd with Haserl and Lua =&lt;br /&gt;
[https://www.lua.org Lua] is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.&lt;br /&gt;
&lt;br /&gt;
[[Mini_httpd_with_Haserl_and_Lua#mini_httpd_with_Haserl_and_Lua|Setting Up mini_httpd with Haserl and Lua]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=MariaDB&amp;diff=13048</id>
		<title>MariaDB</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=MariaDB&amp;diff=13048"/>
		<updated>2016-11-22T13:03:34Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Created page with &amp;quot;[https://mariadb.org/ MariaDB] is a community-developed fork of the MySQL relational database management system intended to remain free under the GNU GPL. It is notable for be...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://mariadb.org/ MariaDB] is a community-developed fork of the MySQL relational database management system intended to remain free under the GNU GPL. It is notable for being led by the original developers of MySQL, who forked it due to concerns over its acquisition by Oracle.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
MariaDB packages can be installed by running&lt;br /&gt;
{{cmd|apk add mariadb mariadb-client}}&lt;br /&gt;
&lt;br /&gt;
Defining variables that will be used for setup and configuration&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;DB_DATA_PATH=&amp;quot;/var/lib/mysql&amp;quot;&lt;br /&gt;
DB_ROOT_PASS=&amp;quot;mariadb_root_password&amp;quot;&lt;br /&gt;
DB_USER=&amp;quot;mariadb_user&amp;quot;&lt;br /&gt;
DB_PASS=&amp;quot;mariadb_user_password&amp;quot;&lt;br /&gt;
MAX_ALLOWED_PACKET=&amp;quot;200M&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Installing mysql database&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;mysql_install_db --user=mysql --datadir=${DB_DATA_PATH}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Starting service&lt;br /&gt;
{{cmd|rc-service mariadb start}}&lt;br /&gt;
&lt;br /&gt;
You should get something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * Caching service dependencies ...                       [ ok ]&lt;br /&gt;
 * Starting mariadb ...&lt;br /&gt;
161122 09:23:06 mysqld_safe Logging to syslog.            [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting root password&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;mysqladmin -u root password &#039;${DB_ROOT_PASS}&#039;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Creating new user, removing sequrity sensitive data&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;echo &amp;quot;GRANT ALL ON *.* TO ${DB_USER}@&#039;127.0.0.1&#039; IDENTIFIED BY &#039;${DB_PASS}&#039; WITH GRANT OPTION;&amp;quot; &amp;gt; /tmp/sql&lt;br /&gt;
echo &amp;quot;GRANT ALL ON *.* TO ${DB_USER}@&#039;localhost&#039; IDENTIFIED BY &#039;${DB_PASS}&#039; WITH GRANT OPTION;&amp;quot; &amp;gt;&amp;gt; /tmp/sql&lt;br /&gt;
echo &amp;quot;GRANT ALL ON *.* TO ${DB_USER}@&#039;::1&#039; IDENTIFIED BY &#039;${DB_PASS}&#039; WITH GRANT OPTION;&amp;quot; &amp;gt;&amp;gt; /tmp/sql&lt;br /&gt;
echo &amp;quot;DELETE FROM mysql.user WHERE User=&#039;&#039;;&amp;quot; &amp;gt;&amp;gt; /tmp/sql&lt;br /&gt;
echo &amp;quot;DROP DATABASE test;&amp;quot; &amp;gt;&amp;gt; /tmp/sql&lt;br /&gt;
echo &amp;quot;FLUSH PRIVILEGES;&amp;quot; &amp;gt;&amp;gt; /tmp/sql&lt;br /&gt;
cat /tmp/sql | mysql -u root --password=&#039;${DB_ROOT_PASS}&#039;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Modifying configuration file /etc/mysql/my.cnf&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;sed -i &amp;quot;s|max_allowed_packet\s*=\s*1M|max_allowed_packet = ${MAX_ALLOWED_PACKET}|g&amp;quot; /etc/mysql/my.cnf&lt;br /&gt;
sed -i &amp;quot;s|max_allowed_packet\s*=\s*16M|max_allowed_packet = ${MAX_ALLOWED_PACKET}|g&amp;quot; /etc/mysql/my.cnf&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Normally you want to start the MariaDB server when the system is launching. This is done by adding MariaDB to the needed runlevel.&lt;br /&gt;
{{cmd|rc-update add mariadb default}}&lt;br /&gt;
&lt;br /&gt;
Now MariaDB server should start automatically when you launch your system next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that Nginx and PHP are started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep mysql&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  382 mysql      0:00 /usr/bin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --pid-file=/run/mysqld/mysqld.pid --socket=/run/mysqld/mysqld.sock --port=3306&lt;br /&gt;
  383 root       0:00 logger -t mysqld -p daemon.error&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13047</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13047"/>
		<updated>2016-11-22T08:09:38Z</updated>

		<summary type="html">&lt;p&gt;Slukin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
You may want to make backup of original nginx.conf file before writting your own&lt;br /&gt;
{{Cmd|mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html or .htm files&lt;br /&gt;
{{Cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                         [ ok ]&lt;br /&gt;
 * Starting nginx ...                                   [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding Nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
Now Nginx should start automatically when you boot your machine next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that Nginx is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep nginx&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  263 root       0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf&lt;br /&gt;
  264 www        0:00 nginx: worker process&lt;br /&gt;
  310 root       0:00 grep nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If Nginx is not started check Nginx log file&lt;br /&gt;
{{cmd|less /var/log/nginx/error.log}}&lt;br /&gt;
&lt;br /&gt;
Make sure that configuration file does not contain errors&lt;br /&gt;
{{cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&lt;br /&gt;
== Nginx with PHP ==&lt;br /&gt;
&lt;br /&gt;
[[Nginx_with_PHP#Nginx_with_PHP|Setting Up Nginx with PHP]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Install_Alpine_on_LXC&amp;diff=13046</id>
		<title>Install Alpine on LXC</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Install_Alpine_on_LXC&amp;diff=13046"/>
		<updated>2016-11-22T07:38:21Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Bridge creation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== LXC ==&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/LXC LXC] is an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel.&lt;br /&gt;
&lt;br /&gt;
With LXC you can run Alpine Linux on container and start services in it using native Alpine Linux&#039; init system (openrc).&lt;br /&gt;
&lt;br /&gt;
This is instruction on how to install Alpine Linux on LXC container.&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
=== LXC installation ===&lt;br /&gt;
You have to install &amp;quot;lxc&amp;quot; package on your host system. For example, in Arch Linux you can install it by running:&lt;br /&gt;
{{Cmd|sudo pacman -S lxc}}&lt;br /&gt;
&lt;br /&gt;
=== Bridge creation ===&lt;br /&gt;
You also have to create network bridge on your host.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.archlinux.org/index.php/Network_bridge Setting up bridge in Arch Linux or Arch Linux based systems]&lt;br /&gt;
&lt;br /&gt;
[https://help.ubuntu.com/community/NetworkConnectionBridge Setting up bridge in Ubuntu or Ubuntu based systems]&lt;br /&gt;
&lt;br /&gt;
Here is example, how to setup bridge with netctl:&lt;br /&gt;
&lt;br /&gt;
Copy sample file &amp;quot;bridge&amp;quot;&lt;br /&gt;
{{Cmd|sudo cp /etc/netctl/examples/bridge /etc/netctl/myBridge}}&lt;br /&gt;
&lt;br /&gt;
Modify your bridge configuration file as needed (network interfaces: eno1 and tap0 are, of cource, according to your needs)&lt;br /&gt;
{{Cmd|sudo vim /etc/netctl/myBridge}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Description=&amp;quot;Bridge connection&amp;quot;&lt;br /&gt;
Interface=br0&lt;br /&gt;
Connection=bridge&lt;br /&gt;
BindsToInterfaces=(eno1 tap0)&lt;br /&gt;
IP=dhcp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop active connection&lt;br /&gt;
{{Cmd|sudo systemctl stop dhcpcd}}&lt;br /&gt;
&lt;br /&gt;
Start your bridge	&lt;br /&gt;
{{Cmd|sudo netctl start myBridge}}&lt;br /&gt;
&lt;br /&gt;
Perhaps you may wish to setup your system to start your bridge automatically at boot time.&lt;br /&gt;
&lt;br /&gt;
== Container creation ==&lt;br /&gt;
&lt;br /&gt;
To install Alpine Linux edge version run:&lt;br /&gt;
{{Cmd|sudo lxc-create --name alpine-edge -t alpine -- --release edge}}&lt;br /&gt;
&lt;br /&gt;
You can also configure shared directory which will be accessible from both host and container. In this example we make host&#039;s /media/d directory available in container&lt;br /&gt;
{{Cmd|sudo mkdir /var/lib/lxc/alpine-edge/rootfs/media/d}}&lt;br /&gt;
&lt;br /&gt;
Modify container&#039;s configuration file:&lt;br /&gt;
{{Cmd|sudo nano /var/lib/lxc/alpine-edge/config}}&lt;br /&gt;
&lt;br /&gt;
Add folowing lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lxc.network.type = veth&lt;br /&gt;
lxc.network.flags = up&lt;br /&gt;
lxc.network.link = br0&lt;br /&gt;
lxc.mount.entry=/media/d media/d none bind 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Booting container:&lt;br /&gt;
{{cmd|sudo lxc-start -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
Shutting down container:&lt;br /&gt;
{{cmd|sudo lxc-stop -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
Going to Alpine Linux console:&lt;br /&gt;
{{cmd|sudo lxc-attach -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
== Container setup ==&lt;br /&gt;
&lt;br /&gt;
Modify your apk/repositories configuration file&lt;br /&gt;
{{cmd|vi /etc/apk/repositories}}&lt;br /&gt;
&lt;br /&gt;
It is recommended to include &amp;quot;main&amp;quot;, &amp;quot;testing&amp;quot; and &amp;quot;community&amp;quot; repositories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/main&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/testing&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/community&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upgrading your Alpine Linux system:&lt;br /&gt;
{{cmd|apk update &amp;amp;&amp;amp; apk upgrade}}&lt;br /&gt;
&lt;br /&gt;
Starting services:&lt;br /&gt;
{{Cmd|/etc/init.d/service_name start}}&lt;br /&gt;
or&lt;br /&gt;
{{Cmd|rc-service service_name start}}&lt;br /&gt;
&lt;br /&gt;
Adding services to autostart&lt;br /&gt;
{{Cmd|rc-update add service_name}}&lt;br /&gt;
&lt;br /&gt;
Restarting your container:&lt;br /&gt;
{{Cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Virtualization]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13045</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13045"/>
		<updated>2016-11-22T07:29:08Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Start Nginx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
You may want to make backup of original nginx.conf file before writting your own&lt;br /&gt;
{{Cmd|mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html or .htm files&lt;br /&gt;
{{Cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                         [ ok ]&lt;br /&gt;
 * Starting nginx ...                                   [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding Nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
Now Nginx should start automatically when you boot your machine next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that Nginx is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep nginx&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  263 root       0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf&lt;br /&gt;
  264 www        0:00 nginx: worker process&lt;br /&gt;
  310 root       0:00 grep nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If Nginx is not started check Nginx log file&lt;br /&gt;
{{cmd|less /var/log/nginx/error.log}}&lt;br /&gt;
&lt;br /&gt;
Make sure that configuration file does not contain errors&lt;br /&gt;
{{cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&lt;br /&gt;
== Nginx with PHP ==&lt;br /&gt;
&lt;br /&gt;
[[Nginx_with_PHP|Setting Up Nginx with PHP]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13044</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13044"/>
		<updated>2016-11-22T07:27:11Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
You may want to make backup of original nginx.conf file before writting your own&lt;br /&gt;
{{Cmd|mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html or .htm files&lt;br /&gt;
{{Cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                                                                                   [ ok ]&lt;br /&gt;
 * Starting nginx ...                                                                                             [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding Nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
Now Nginx should start automatically when you boot your machine next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that Nginx is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep nginx&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  263 root       0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf&lt;br /&gt;
  264 www        0:00 nginx: worker process&lt;br /&gt;
  310 root       0:00 grep nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If Nginx is not started check Nginx log file&lt;br /&gt;
{{cmd|less /var/log/nginx/error.log}}&lt;br /&gt;
&lt;br /&gt;
Make sure that configuration file does not contain errors&lt;br /&gt;
{{cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&lt;br /&gt;
== Nginx with PHP ==&lt;br /&gt;
&lt;br /&gt;
[[Nginx_with_PHP|Setting Up Nginx with PHP]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13043</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13043"/>
		<updated>2016-11-22T07:25:39Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
You may want to make backup of original nginx.conf file before writting your own&lt;br /&gt;
{{Cmd|mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html, .htm or php files&lt;br /&gt;
{{Cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                                                                                   [ ok ]&lt;br /&gt;
 * Starting nginx ...                                                                                             [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding Nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
Now Nginx should start automatically when you boot your machine next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that Nginx is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep nginx&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  263 root       0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf&lt;br /&gt;
  264 www        0:00 nginx: worker process&lt;br /&gt;
  310 root       0:00 grep nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If Nginx is not started check Nginx log file&lt;br /&gt;
{{cmd|less /var/log/nginx/error.log}}&lt;br /&gt;
&lt;br /&gt;
Make sure that configuration file does not contain errors&lt;br /&gt;
{{cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&lt;br /&gt;
== Nginx with PHP ==&lt;br /&gt;
&lt;br /&gt;
[[Nginx_with_PHP|Setting Up Nginx with PHP]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx_with_PHP&amp;diff=13042</id>
		<title>Nginx with PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx_with_PHP&amp;diff=13042"/>
		<updated>2016-11-22T07:24:47Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Created page with &amp;quot;{{:Nginx}}  === PHP Installation === PHP packages is available in the Alpine Linux repositories. To install php5 with modules run: {{cmd|apk add php5-fpm php5-mcrypt php5-soap...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Nginx}}&lt;br /&gt;
&lt;br /&gt;
=== PHP Installation ===&lt;br /&gt;
PHP packages is available in the Alpine Linux repositories. To install php5 with modules run:&lt;br /&gt;
{{cmd|apk add php5-fpm php5-mcrypt php5-soap php5-openssl php5-gmp php5-pdo_odbc php5-json php5-dom php5-pdo php5-zip php5-mysql php5-mysqli php5-sqlite3 php5-apcu php5-pdo_pgsql php5-bcmath php5-gd php5-xcache php5-odbc php5-pdo_mysql php5-pdo_sqlite php5-gettext php5-xmlreader php5-xmlrpc php5-bz2 php5-memcache php5-mssql php5-iconv php5-pdo_dblib php5-curl php5-ctype}}&lt;br /&gt;
&lt;br /&gt;
Perhaps you do not need all these PHP modules. Install modules according to your needs.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
Defining ENV variables which will be used in configuration.&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;PHP_FPM_USER=&amp;quot;www&amp;quot;&lt;br /&gt;
PHP_FPM_GROUP=&amp;quot;www&amp;quot;&lt;br /&gt;
PHP_FPM_LISTEN_MODE=&amp;quot;0660&amp;quot;&lt;br /&gt;
PHP_MEMORY_LIMIT=&amp;quot;512M&amp;quot;&lt;br /&gt;
PHP_MAX_UPLOAD=&amp;quot;50M&amp;quot;&lt;br /&gt;
PHP_MAX_FILE_UPLOAD=&amp;quot;200&amp;quot;&lt;br /&gt;
PHP_MAX_POST=&amp;quot;100M&amp;quot;&lt;br /&gt;
PHP_DISPLAY_ERRORS=&amp;quot;On&amp;quot;&lt;br /&gt;
PHP_DISPLAY_STARTUP_ERRORS=&amp;quot;On&amp;quot;&lt;br /&gt;
PHP_ERROR_REPORTING=&amp;quot;E_COMPILE_ERROR\|E_RECOVERABLE_ERROR\|E_ERROR\|E_CORE_ERROR&amp;quot;&lt;br /&gt;
PHP_CGI_FIX_PATHINFO=0&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Modify variables according to your needs.&lt;br /&gt;
&lt;br /&gt;
Modifying configuration file php-fpm.conf&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;sed -i &amp;quot;s|;listen.owner\s*=\s*nobody|listen.owner = ${PHP_FPM_USER}|g&amp;quot; /etc/php5/php-fpm.conf&lt;br /&gt;
sed -i &amp;quot;s|;listen.group\s*=\s*nobody|listen.group = ${PHP_FPM_GROUP}|g&amp;quot; /etc/php5/php-fpm.conf&lt;br /&gt;
sed -i &amp;quot;s|;listen.mode\s*=\s*0660|listen.mode = ${PHP_FPM_LISTEN_MODE}|g&amp;quot; /etc/php5/php-fpm.conf&lt;br /&gt;
sed -i &amp;quot;s|user\s*=\s*nobody|user = ${PHP_FPM_USER}|g&amp;quot; /etc/php5/php-fpm.conf&lt;br /&gt;
sed -i &amp;quot;s|group\s*=\s*nobody|group = ${PHP_FPM_GROUP}|g&amp;quot; /etc/php5/php-fpm.conf&lt;br /&gt;
sed -i &amp;quot;s|;log_level\s*=\s*notice|log_level = notice|g&amp;quot; /etc/php5/php-fpm.conf #uncommenting line &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Modifying configuration file php.ini&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;sed -i &amp;quot;s|display_errors\s*=\s*Off|display_errors = ${PHP_DISPLAY_ERRORS}|i&amp;quot; /etc/php5/php.ini&lt;br /&gt;
sed -i &amp;quot;s|display_startup_errors\s*=\s*Off|display_startup_errors = ${PHP_DISPLAY_STARTUP_ERRORS}|i&amp;quot; /etc/php5/php.ini&lt;br /&gt;
sed -i &amp;quot;s|error_reporting\s*=\s*E_ALL &amp;amp; ~E_DEPRECATED &amp;amp; ~E_STRICT|error_reporting = ${PHP_ERROR_REPORTING}|i&amp;quot; /etc/php5/php.ini&lt;br /&gt;
sed -i &amp;quot;s|;*memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|i&amp;quot; /etc/php5/php.ini&lt;br /&gt;
sed -i &amp;quot;s|;*upload_max_filesize =.*|upload_max_filesize = ${PHP_MAX_UPLOAD}|i&amp;quot; /etc/php5/php.ini&lt;br /&gt;
sed -i &amp;quot;s|;*max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|i&amp;quot; /etc/php5/php.ini&lt;br /&gt;
sed -i &amp;quot;s|;*post_max_size =.*|post_max_size = ${PHP_MAX_POST}|i&amp;quot; /etc/php5/php.ini&lt;br /&gt;
sed -i &amp;quot;s|;*cgi.fix_pathinfo=.*|cgi.fix_pathinfo= ${PHP_CGI_FIX_PATHINFO}|i&amp;quot; /etc/php5/php.ini&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
To add PHP support to Nginx we should modify Nginx configuration file:&lt;br /&gt;
{{cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm index.php;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
        location ~ \.php$ {&lt;br /&gt;
              fastcgi_pass      127.0.0.1:9000;&lt;br /&gt;
              fastcgi_index     index.php;&lt;br /&gt;
              include           fastcgi.conf;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In our configuration we have line: &amp;quot;fastcgi_pass   127.0.0.1:9000&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
It should be corresponing to the line &amp;quot;listen = 127.0.0.1:9000&amp;quot; in PHP configuration file /etc/php5/php-fpm.conf&lt;br /&gt;
&lt;br /&gt;
=== Timezone ===&lt;br /&gt;
For configuring Timezone you may use tzdata package which can be installed by running:&lt;br /&gt;
{{cmd|apk add tzdata}}&lt;br /&gt;
&lt;br /&gt;
Timezone configuration&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;TIMEZONE=&amp;quot;Europe/Helsinki&amp;quot;&lt;br /&gt;
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime&lt;br /&gt;
echo &amp;quot;${TIMEZONE}&amp;quot; &amp;gt; /etc/timezone&lt;br /&gt;
sed -i &amp;quot;s|;*date.timezone =.*|date.timezone = ${TIMEZONE}|i&amp;quot; /etc/php5/php.ini&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Sample PHP page ===&lt;br /&gt;
{{cmd|vi /www/phpinfo.php}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
	phpinfo();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting Nginx with PHP ===&lt;br /&gt;
Nginx should be restarted because we have changed it&#039;s configuration. Restart it by running:&lt;br /&gt;
{{cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
After the installation PHP is not running. Start it by running:&lt;br /&gt;
{{cmd|rc-service php-fpm start}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding Nginx and PHP to the needed runlevel.&lt;br /&gt;
{{cmd|rc-update add nginx default&lt;br /&gt;
rc-update add php-fpm default}}&lt;br /&gt;
&lt;br /&gt;
Now they should start automatically when you boot your machine next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that Nginx and PHP are started run command:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep &#039;nginx\|php-fpm&#039;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  263 root       0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf&lt;br /&gt;
  264 www        0:00 nginx: worker process&lt;br /&gt;
  291 root       0:00 php-fpm: master process (/etc/php5/php-fpm.conf)&lt;br /&gt;
  302 www        0:00 php-fpm: pool www&lt;br /&gt;
  303 www        0:00 php-fpm: pool www&lt;br /&gt;
  310 root       0:00 grep nginx\|php-fpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing Nginx with PHP ===&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/phpinfo.php&amp;quot; is created. Launch a web browser and point it to &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://X.X.X.X/phpinfo.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where X.X.X.X is IP address of your web server&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
If everything was set up correctly, you should see information about your web server.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If PHP is not started check php-fpm log file&lt;br /&gt;
{{cmd|less /var/log/php-fpm.log}}&lt;br /&gt;
&lt;br /&gt;
Make sure that configuration files do not contain errors&lt;br /&gt;
{{cmd|vi /etc/php5/php-fpm.conf&lt;br /&gt;
vi /etc/php5/php.ini}}&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13041</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13041"/>
		<updated>2016-11-22T07:23:03Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Runlevel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
You may want to make backup of original nginx.conf file before writting your own&lt;br /&gt;
{{Cmd|mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html or .htm files&lt;br /&gt;
{{Cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                                                                                   [ ok ]&lt;br /&gt;
 * Starting nginx ...                                                                                             [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding Nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
Now Nginx should start automatically when you boot your machine next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that Nginx is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep nginx&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  263 root       0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf&lt;br /&gt;
  264 www        0:00 nginx: worker process&lt;br /&gt;
  310 root       0:00 grep nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If Nginx is not started check Nginx log file&lt;br /&gt;
{{cmd|less /var/log/nginx/error.log}}&lt;br /&gt;
&lt;br /&gt;
Make sure that configuration file does not contain errors&lt;br /&gt;
{{cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&lt;br /&gt;
== Nginx with PHP ==&lt;br /&gt;
&lt;br /&gt;
[[Nginx_with_PHP|Setting Up Nginx with PHP]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13040</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13040"/>
		<updated>2016-11-22T07:22:43Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Runlevel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
You may want to make backup of original nginx.conf file before writting your own&lt;br /&gt;
{{Cmd|mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html or .htm files&lt;br /&gt;
{{Cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                                                                                   [ ok ]&lt;br /&gt;
 * Starting nginx ...                                                                                             [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding Nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
Now Nginx should start automatically when you boot your machine next time. To test that run:&lt;br /&gt;
{{cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
To make sure that Nginx is started run:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;ps aux | grep &#039;nginx&#039;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should get something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  263 root       0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf&lt;br /&gt;
  264 www        0:00 nginx: worker process&lt;br /&gt;
  310 root       0:00 grep nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If Nginx is not started check Nginx log file&lt;br /&gt;
{{cmd|less /var/log/nginx/error.log}}&lt;br /&gt;
&lt;br /&gt;
Make sure that configuration file does not contain errors&lt;br /&gt;
{{cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&lt;br /&gt;
== Nginx with PHP ==&lt;br /&gt;
&lt;br /&gt;
[[Nginx_with_PHP|Setting Up Nginx with PHP]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13039</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13039"/>
		<updated>2016-11-22T07:20:19Z</updated>

		<summary type="html">&lt;p&gt;Slukin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
You may want to make backup of original nginx.conf file before writting your own&lt;br /&gt;
{{Cmd|mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html or .htm files&lt;br /&gt;
{{Cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                                                                                   [ ok ]&lt;br /&gt;
 * Starting nginx ...                                                                                             [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If Nginx is not started check Nginx log file&lt;br /&gt;
{{cmd|less /var/log/nginx/error.log}}&lt;br /&gt;
&lt;br /&gt;
Make sure that configuration file does not contain errors&lt;br /&gt;
{{cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&lt;br /&gt;
== Nginx with PHP ==&lt;br /&gt;
&lt;br /&gt;
[[Nginx_with_PHP|Setting Up Nginx with PHP]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13038</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13038"/>
		<updated>2016-11-22T06:54:24Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Advanced configurations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
You may want to make backup of original nginx.conf file before writting your own&lt;br /&gt;
{{Cmd|mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html or .htm files&lt;br /&gt;
{{Cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                                                                                   [ ok ]&lt;br /&gt;
 * Starting nginx ...                                                                                             [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nginx with PHP ==&lt;br /&gt;
&lt;br /&gt;
[[Nginx_with_PHP|Setting Up Nginx with PHP]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13037</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13037"/>
		<updated>2016-11-22T06:53:09Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Sample page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
You may want to make backup of original nginx.conf file before writting your own&lt;br /&gt;
{{Cmd|mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html or .htm files&lt;br /&gt;
{{Cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vi /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                                                                                   [ ok ]&lt;br /&gt;
 * Starting nginx ...                                                                                             [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advanced configurations ==&lt;br /&gt;
&lt;br /&gt;
* [[Setting_Up_Nginx_with_PHP|Setting Up Nginx with PHP]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13036</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13036"/>
		<updated>2016-11-22T06:52:24Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
You may want to make backup of original nginx.conf file before writting your own&lt;br /&gt;
{{Cmd|mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig}}&lt;br /&gt;
&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html or .htm files&lt;br /&gt;
{{Cmd|vi /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vim /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                                                                                   [ ok ]&lt;br /&gt;
 * Starting nginx ...                                                                                             [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advanced configurations ==&lt;br /&gt;
&lt;br /&gt;
* [[Setting_Up_Nginx_with_PHP|Setting Up Nginx with PHP]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Install_Alpine_on_LXC&amp;diff=13035</id>
		<title>Install Alpine on LXC</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Install_Alpine_on_LXC&amp;diff=13035"/>
		<updated>2016-11-22T06:48:26Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Container creation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== LXC ==&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/LXC LXC] is an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel.&lt;br /&gt;
&lt;br /&gt;
With LXC you can run Alpine Linux on container and start services in it using native Alpine Linux&#039; init system (openrc).&lt;br /&gt;
&lt;br /&gt;
This is instruction on how to install Alpine Linux on LXC container.&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
=== LXC installation ===&lt;br /&gt;
You have to install &amp;quot;lxc&amp;quot; package on your host system. For example, in Arch Linux you can install it by running:&lt;br /&gt;
{{Cmd|sudo pacman -S lxc}}&lt;br /&gt;
&lt;br /&gt;
=== Bridge creation ===&lt;br /&gt;
You also have to create network bridge on your host.&lt;br /&gt;
Here is example, how to setup bridge with netctl:&lt;br /&gt;
&lt;br /&gt;
Copy sample file &amp;quot;bridge&amp;quot;&lt;br /&gt;
{{Cmd|sudo cp /etc/netctl/examples/bridge /etc/netctl/myBridge}}&lt;br /&gt;
&lt;br /&gt;
Modify your bridge configuration file as needed (network interfaces: eno1 and tap0 are, of cource, according to your needs)&lt;br /&gt;
{{Cmd|sudo vim /etc/netctl/myBridge}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Description=&amp;quot;Bridge connection&amp;quot;&lt;br /&gt;
Interface=br0&lt;br /&gt;
Connection=bridge&lt;br /&gt;
BindsToInterfaces=(eno1 tap0)&lt;br /&gt;
IP=dhcp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop active connection&lt;br /&gt;
{{Cmd|sudo systemctl stop dhcpcd}}&lt;br /&gt;
&lt;br /&gt;
Start your bridge	&lt;br /&gt;
{{Cmd|sudo netctl start myBridge}}&lt;br /&gt;
&lt;br /&gt;
Perhaps you may wish to setup your system to start your bridge automatically at boot time.&lt;br /&gt;
&lt;br /&gt;
== Container creation ==&lt;br /&gt;
&lt;br /&gt;
To install Alpine Linux edge version run:&lt;br /&gt;
{{Cmd|sudo lxc-create --name alpine-edge -t alpine -- --release edge}}&lt;br /&gt;
&lt;br /&gt;
You can also configure shared directory which will be accessible from both host and container. In this example we make host&#039;s /media/d directory available in container&lt;br /&gt;
{{Cmd|sudo mkdir /var/lib/lxc/alpine-edge/rootfs/media/d}}&lt;br /&gt;
&lt;br /&gt;
Modify container&#039;s configuration file:&lt;br /&gt;
{{Cmd|sudo nano /var/lib/lxc/alpine-edge/config}}&lt;br /&gt;
&lt;br /&gt;
Add folowing lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lxc.network.type = veth&lt;br /&gt;
lxc.network.flags = up&lt;br /&gt;
lxc.network.link = br0&lt;br /&gt;
lxc.mount.entry=/media/d media/d none bind 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Booting container:&lt;br /&gt;
{{cmd|sudo lxc-start -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
Shutting down container:&lt;br /&gt;
{{cmd|sudo lxc-stop -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
Going to Alpine Linux console:&lt;br /&gt;
{{cmd|sudo lxc-attach -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
== Container setup ==&lt;br /&gt;
&lt;br /&gt;
Modify your apk/repositories configuration file&lt;br /&gt;
{{cmd|vi /etc/apk/repositories}}&lt;br /&gt;
&lt;br /&gt;
It is recommended to include &amp;quot;main&amp;quot;, &amp;quot;testing&amp;quot; and &amp;quot;community&amp;quot; repositories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/main&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/testing&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/community&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upgrading your Alpine Linux system:&lt;br /&gt;
{{cmd|apk update &amp;amp;&amp;amp; apk upgrade}}&lt;br /&gt;
&lt;br /&gt;
Starting services:&lt;br /&gt;
{{Cmd|/etc/init.d/service_name start}}&lt;br /&gt;
or&lt;br /&gt;
{{Cmd|rc-service service_name start}}&lt;br /&gt;
&lt;br /&gt;
Adding services to autostart&lt;br /&gt;
{{Cmd|rc-update add service_name}}&lt;br /&gt;
&lt;br /&gt;
Restarting your container:&lt;br /&gt;
{{Cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Virtualization]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13034</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13034"/>
		<updated>2016-11-21T13:28:48Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Configuring Nginx to listen to port 80 and process .html or .htm files&lt;br /&gt;
{{Cmd|vim /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vim /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                                                                                   [ ok ]&lt;br /&gt;
 * Starting nginx ...                                                                                             [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advanced configurations ==&lt;br /&gt;
&lt;br /&gt;
* [[Setting_Up_Nginx_with_PHP|Setting Up Nginx with PHP]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13033</id>
		<title>Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nginx&amp;diff=13033"/>
		<updated>2016-11-21T13:05:11Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Nginx setup and configuration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nginx.org/en/ Nginx] (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Nginx package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Creating new user and group &#039;www&#039; for nginx&lt;br /&gt;
{{Cmd|adduser -D -u 1000 -g &#039;www&#039; www}}&lt;br /&gt;
&lt;br /&gt;
Create a directory for html files&lt;br /&gt;
{{Cmd|mkdir /www&lt;br /&gt;
chown -R www:www /var/lib/nginx&lt;br /&gt;
chown -R www:www /www&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
{{Cmd|vim /etc/nginx/nginx.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user                            www;&lt;br /&gt;
worker_processes                1;&lt;br /&gt;
&lt;br /&gt;
error_log                       /var/log/nginx/error.log warn;&lt;br /&gt;
pid                             /var/run/nginx.pid;&lt;br /&gt;
&lt;br /&gt;
events {&lt;br /&gt;
    worker_connections          1024;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
    include                     /etc/nginx/mime.types;&lt;br /&gt;
    default_type                application/octet-stream;&lt;br /&gt;
    sendfile                    on;&lt;br /&gt;
    access_log                  /var/log/nginx/access.log;&lt;br /&gt;
    keepalive_timeout           3000;&lt;br /&gt;
    server {&lt;br /&gt;
        listen                  80;&lt;br /&gt;
        root                    /www;&lt;br /&gt;
        index                   index.html index.htm;&lt;br /&gt;
        server_name             localhost;&lt;br /&gt;
        client_max_body_size    32m;&lt;br /&gt;
        error_page              500 502 503 504  /50x.html;&lt;br /&gt;
        location = /50x.html {&lt;br /&gt;
              root              /var/lib/nginx/html;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample page ==&lt;br /&gt;
{{Cmd|vim /www/index.html}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;HTML5&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    Server is online&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Controlling nginx ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start Nginx ===&lt;br /&gt;
After the installation Nginx is not running. To start Nginx, use &#039;&#039;start&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * /run/nginx: creating directory&lt;br /&gt;
 * /run/nginx: correcting owner                                                                                   [ ok ]&lt;br /&gt;
 * Starting nginx ...                                                                                             [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Nginx ===&lt;br /&gt;
After changing the configuration file nginx needs to be restarted.&lt;br /&gt;
If you want to restart the web server use &#039;&#039;restart&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Stop Nginx ===&lt;br /&gt;
If you want to stop the web server use &#039;&#039;stop&#039;&#039;.&lt;br /&gt;
{{Cmd|rc-service nginx stop}}&lt;br /&gt;
&lt;br /&gt;
=== Runlevel ===&lt;br /&gt;
Normally you want to start the web server when the system is launching. This is done by adding nginx to the needed runlevel.&lt;br /&gt;
{{Cmd|rc-update add nginx default}}&lt;br /&gt;
&lt;br /&gt;
== Testing Nginx ==&lt;br /&gt;
This section is assuming that nginx is running and sample html page &amp;quot;/www/index.html&amp;quot; is created. Launch a web browser and point it to your web server.&lt;br /&gt;
You should get:&lt;br /&gt;
&amp;lt;pre&amp;gt;Server is online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advanced configurations ==&lt;br /&gt;
&lt;br /&gt;
* [[Setting_Up_Nginx_with_PHP|Setting Up Nginx with PHP]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Install_Alpine_on_LXC&amp;diff=13032</id>
		<title>Install Alpine on LXC</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Install_Alpine_on_LXC&amp;diff=13032"/>
		<updated>2016-11-21T12:57:20Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* LXC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== LXC ==&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/LXC LXC] is an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel.&lt;br /&gt;
&lt;br /&gt;
With LXC you can run Alpine Linux on container and start services in it using native Alpine Linux&#039; init system (openrc).&lt;br /&gt;
&lt;br /&gt;
This is instruction on how to install Alpine Linux on LXC container.&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
=== LXC installation ===&lt;br /&gt;
You have to install &amp;quot;lxc&amp;quot; package on your host system. For example, in Arch Linux you can install it by running:&lt;br /&gt;
{{Cmd|sudo pacman -S lxc}}&lt;br /&gt;
&lt;br /&gt;
=== Bridge creation ===&lt;br /&gt;
You also have to create network bridge on your host.&lt;br /&gt;
Here is example, how to setup bridge with netctl:&lt;br /&gt;
&lt;br /&gt;
Copy sample file &amp;quot;bridge&amp;quot;&lt;br /&gt;
{{Cmd|sudo cp /etc/netctl/examples/bridge /etc/netctl/myBridge}}&lt;br /&gt;
&lt;br /&gt;
Modify your bridge configuration file as needed (network interfaces: eno1 and tap0 are, of cource, according to your needs)&lt;br /&gt;
{{Cmd|sudo vim /etc/netctl/myBridge}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Description=&amp;quot;Bridge connection&amp;quot;&lt;br /&gt;
Interface=br0&lt;br /&gt;
Connection=bridge&lt;br /&gt;
BindsToInterfaces=(eno1 tap0)&lt;br /&gt;
IP=dhcp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop active connection&lt;br /&gt;
{{Cmd|sudo systemctl stop dhcpcd}}&lt;br /&gt;
&lt;br /&gt;
Start your bridge	&lt;br /&gt;
{{Cmd|sudo netctl start myBridge}}&lt;br /&gt;
&lt;br /&gt;
Perhaps you may wish to setup your system to start your bridge automatically at boot time.&lt;br /&gt;
&lt;br /&gt;
== Container creation ==&lt;br /&gt;
&lt;br /&gt;
To install Alpine Linux edge version run:&lt;br /&gt;
{{Cmd|sudo lxc-create --name alpine-edge -t alpine -- --release edge}}&lt;br /&gt;
&lt;br /&gt;
You can also configure shared directory which will be accessible from both host and container. In this example we make host&#039;s /media/d directory available in container&lt;br /&gt;
{{Cmd|sudo mkdir /var/lib/lxc/alpine-edge/rootfs/media/d}}&lt;br /&gt;
&lt;br /&gt;
Modify container&#039;s configuration file:&lt;br /&gt;
{{Cmd|sudo nano /var/lib/lxc/alpine-edge/config}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lxc.network.type = veth&lt;br /&gt;
lxc.network.flags = up&lt;br /&gt;
lxc.network.link = br0&lt;br /&gt;
lxc.mount.entry=/media/d media/d none bind 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Booting container:&lt;br /&gt;
{{cmd|sudo lxc-start -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
Shutting down container:&lt;br /&gt;
{{cmd|sudo lxc-stop -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
Going to Alpine Linux console:&lt;br /&gt;
{{cmd|sudo lxc-attach -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
== Container setup ==&lt;br /&gt;
&lt;br /&gt;
Modify your apk/repositories configuration file&lt;br /&gt;
{{cmd|vi /etc/apk/repositories}}&lt;br /&gt;
&lt;br /&gt;
It is recommended to include &amp;quot;main&amp;quot;, &amp;quot;testing&amp;quot; and &amp;quot;community&amp;quot; repositories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/main&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/testing&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/community&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upgrading your Alpine Linux system:&lt;br /&gt;
{{cmd|apk update &amp;amp;&amp;amp; apk upgrade}}&lt;br /&gt;
&lt;br /&gt;
Starting services:&lt;br /&gt;
{{Cmd|/etc/init.d/service_name start}}&lt;br /&gt;
or&lt;br /&gt;
{{Cmd|rc-service service_name start}}&lt;br /&gt;
&lt;br /&gt;
Adding services to autostart&lt;br /&gt;
{{Cmd|rc-update add service_name}}&lt;br /&gt;
&lt;br /&gt;
Restarting your container:&lt;br /&gt;
{{Cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Virtualization]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Developer_Documentation&amp;diff=13031</id>
		<title>Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Developer_Documentation&amp;diff=13031"/>
		<updated>2016-11-21T12:17:37Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Configuring your system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:package_system.svg|right|link=]]&lt;br /&gt;
&lt;br /&gt;
== Package management ==&lt;br /&gt;
&amp;lt;!-- If you edit the following, please coordinate with Tutorials_and_Howtos#Post-Install and Installation#Post-Install.  Note that these three sections are not exact duplicates. --&amp;gt;&lt;br /&gt;
* [[Alpine Linux package management|Package Management (apk)]] &#039;&#039;(How to add/remove packages on your Alpine)&#039;&#039; &amp;lt;!-- &lt;br /&gt;
  [[Alpine Linux package management#Local_Cache|How to enable APK caching]] --&amp;gt;  &amp;lt;!-- includes [[Local APK cache]] --&amp;gt;&lt;br /&gt;
** [[Comparison with other distros]]&lt;br /&gt;
** [[apk spec]]&lt;br /&gt;
* [[Edge|Upgrading to Edge]]&lt;br /&gt;
* [[Alpine local backup|Alpine local backup (lbu)]] &#039;&#039;(Permanently store your modifications in case your box needs reboot)&#039;&#039;&lt;br /&gt;
** [[Back Up a Flash Memory Installation]]&lt;br /&gt;
** [[Manually editing a existing apkovl]]&lt;br /&gt;
&amp;lt;!-- [[Replacing a package]] Obsolete? --&amp;gt;&lt;br /&gt;
* [[How to setup a Alpine Linux mirror]]&lt;br /&gt;
* [[How to use xdelta and download only differential update files]]&lt;br /&gt;
* [[How to make a custom ISO image]]&lt;br /&gt;
** [[Burning ISOs]]&lt;br /&gt;
&lt;br /&gt;
== Init system ==&lt;br /&gt;
* [[Alpine Linux Init System|Init System (OpenRC)]] &#039;&#039;(Configure a service to automatically launch at next reboot)&#039;&#039;&lt;br /&gt;
** [[Multiple Instances of Services]]&lt;br /&gt;
* [[Writing Init Scripts]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
=== Configuring your system ===&lt;br /&gt;
* [[Edge|Upgrading to Edge]] &amp;lt;!-- Pkg and Dev and Installation --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- If you edit the following, please coordinate with Installation#Advanced.  Note that these two sections are not exact duplicates. --&amp;gt;&lt;br /&gt;
* [[Setting up the build environment on HDD]] &amp;lt;!-- Dev and Installation --&amp;gt;&lt;br /&gt;
&amp;lt;!-- [[Setting up the build environment 1.7]] Obsolete, only Dev --&amp;gt;&lt;br /&gt;
** [[Creating_an_Alpine_package#Setup_your_system_and_account|Setup your system and account for building packages]]&lt;br /&gt;
** [[Abuild_and_Helpers#abuild-keygen|Abuild-keygen]]&lt;br /&gt;
&lt;br /&gt;
* [[Installing Alpine Linux in a chroot]] &amp;lt;!-- only Installation --&amp;gt;&lt;br /&gt;
** [[Buildlab]] &#039;&#039;(Tool for creating and managing chroots)&#039;&#039;&lt;br /&gt;
* [[Install Alpine on LXC]]&lt;br /&gt;
* Install Alpine on [[Install Alpine on VirtualBox|VirtualBox]], [[Install Alpine on VMware|VMware]], [[Install Alpine on coLinux|coLinux]], [[Qemu]], &amp;lt;!-- includes [[Install Alpine in Qemu]], [[Running Alpine in Qemu Live mode]], [[Running Alpine Linux As a QEMU networked Guest]] --&amp;gt; or [[Install Alpine on Amazon EC2|Amazon EC2]]&lt;br /&gt;
&lt;br /&gt;
* [[Xen Dom0]] &#039;&#039;(Setting up Alpine as a dom0 for Xen hypervisor)&#039;&#039;&lt;br /&gt;
** [[Xen Dom0 on USB or SD]]&lt;br /&gt;
** [[Create Alpine Linux PV DomU]]&lt;br /&gt;
** [[Xen LiveCD]]&lt;br /&gt;
&lt;br /&gt;
* [[Setting up a basic vserver]] &amp;lt;!-- only Installation --&amp;gt;&lt;br /&gt;
* [[Setting up a compile vserver]] for official or for [[Setting up a compile vserver for third party packages|third party]] packages &amp;lt;!-- Dev and Installation --&amp;gt;&lt;br /&gt;
&amp;lt;!-- [[Create an Alpine 1.9 vserver template]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building from source and creating packages ===&lt;br /&gt;
&lt;br /&gt;
* [[Aports tree]] &amp;lt;!-- &amp;lt;== APKBUILD --&amp;gt;&lt;br /&gt;
* [[Abuild and Helpers]] &#039;&#039;(Scripts for packaging)&#039;&#039;&lt;br /&gt;
  &amp;lt;!-- includes [[Abuild_and_Helpers#apkbuild-cpan|Apkbuild-cpan]] --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- includes [[Abuild_and_Helpers#apkbuild-pypi|Apkbuild-pypi]] --&amp;gt;&lt;br /&gt;
  &amp;lt;!--&lt;br /&gt;
   [[Abuild_and_Helpers#buildrepo|Buildrepo]]&lt;br /&gt;
   [[Abuild_and_Helpers#abuild-sign|Abuild-sign]]&lt;br /&gt;
   [[Abuild_and_Helpers#abuild-tar|Abuild-tar]]&lt;br /&gt;
   [[Abuild_and_Helpers#abump|Abump]]&lt;br /&gt;
   [[Abuild_helpers#apkgrel|Apkgrel]]&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* [[Creating an Alpine package]]&lt;br /&gt;
  &amp;lt;!-- includes [[Setup your system and account for building packages]] --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- includes [[Newapkbuild]]&lt;br /&gt;
       To create the actual APKBUILD file, newapkbuild can give you a template to start with.&lt;br /&gt;
       It will create a directory with the given package name, place an example/template APKBUILD &lt;br /&gt;
       file to the given directory, and fill some variables if those are provided. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- includes [[Local_APK_cache]] --&amp;gt;&lt;br /&gt;
** [[Package policies]]&lt;br /&gt;
** [[Package Maintainers]]&lt;br /&gt;
* [[Custom Kernel]]&lt;br /&gt;
* [[APKBUILD Reference]]&lt;br /&gt;
* [[APKBUILD examples]]&lt;br /&gt;
* [[Alpine package format]]&lt;br /&gt;
* [[Apkindex format]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Development using git]] &amp;lt;!-- includes [[Development using git:Configuration]] [[Development using git:Email]] --&amp;gt;&lt;br /&gt;
** [[Development using git:Basic usage|Basic usage]]&lt;br /&gt;
** [[Package Maintainers]]&lt;br /&gt;
** [[Creating patches]]&lt;br /&gt;
** [[Development using git:Developer repositories|Developer repositories]]&lt;br /&gt;
** [[Development using git:Cgit|Cgit]]&lt;br /&gt;
** [[Cgit|Another cgit page]]&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine Package Testing Suite]] &#039;&#039;work in progress&#039;&#039;&lt;br /&gt;
* [[Alpine Release Testing Checklist]]&lt;br /&gt;
* [[Running glibc programs]]&lt;br /&gt;
&lt;br /&gt;
== Alpine Configuration Framework ==&lt;br /&gt;
{{Draft|Needs to be organized/consolidated.}}&lt;br /&gt;
&lt;br /&gt;
* [[Alpine Configuration Framework Design]] (Why ACF is the way it is)&lt;br /&gt;
* [[Writing User Documentation for ACF]]&lt;br /&gt;
* [[ACF mvc.lua reference|mvc.lua reference]] - mvc.lua is the core of ACF &lt;br /&gt;
* [[ACF mvc.lua example|mvc.lua example]] - build a simple (command-line) application &lt;br /&gt;
* [[ACF acf www-controller.lua reference|acf www-controller reference]] - ACF www application functions &lt;br /&gt;
* [[ACF acf www example|acf www-controller example]] - webify the above examples &lt;br /&gt;
* [[ACF how to write]] - Step by step howto for writing acfs &lt;br /&gt;
* [[ACF core principles]] - Things that are standard across the application &lt;br /&gt;
* [[LuaPosix]] - Documentation for the Lua Posix functions &lt;br /&gt;
* [[ACF Libraries]] - Document the libraries and common functions &lt;br /&gt;
* [[Writing ACF Views]] - Guide for writing a view &lt;br /&gt;
* [[Writing ACF Controllers]] - Guide for writing a controller &lt;br /&gt;
* [[Writing ACF Models]] - Guide for writing a model&lt;br /&gt;
&lt;br /&gt;
* [[ACF css]]&lt;br /&gt;
* [[ACF packages]]&lt;br /&gt;
* [[APKBUILD examples:ACF]]&lt;br /&gt;
* [[Apk.lua]]&lt;br /&gt;
* [[Changing passwords for ACF]]&lt;br /&gt;
* [[Generating SSL certs with ACF]]&lt;br /&gt;
* [[Generating SSL certs with ACF 1.9]]&lt;br /&gt;
* [[Getting started with ACF development]]&lt;br /&gt;
* [[Managing ACF]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alpine-developed Utilities ==&lt;br /&gt;
* [[Alpine Wall]] - [[How-To Alpine Wall]] - [[Alpine Wall User&#039;s Guide]] &#039;&#039;(a new firewall management framework)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Developer_Documentation&amp;diff=13030</id>
		<title>Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Developer_Documentation&amp;diff=13030"/>
		<updated>2016-11-21T12:16:28Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Configuring your system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:package_system.svg|right|link=]]&lt;br /&gt;
&lt;br /&gt;
== Package management ==&lt;br /&gt;
&amp;lt;!-- If you edit the following, please coordinate with Tutorials_and_Howtos#Post-Install and Installation#Post-Install.  Note that these three sections are not exact duplicates. --&amp;gt;&lt;br /&gt;
* [[Alpine Linux package management|Package Management (apk)]] &#039;&#039;(How to add/remove packages on your Alpine)&#039;&#039; &amp;lt;!-- &lt;br /&gt;
  [[Alpine Linux package management#Local_Cache|How to enable APK caching]] --&amp;gt;  &amp;lt;!-- includes [[Local APK cache]] --&amp;gt;&lt;br /&gt;
** [[Comparison with other distros]]&lt;br /&gt;
** [[apk spec]]&lt;br /&gt;
* [[Edge|Upgrading to Edge]]&lt;br /&gt;
* [[Alpine local backup|Alpine local backup (lbu)]] &#039;&#039;(Permanently store your modifications in case your box needs reboot)&#039;&#039;&lt;br /&gt;
** [[Back Up a Flash Memory Installation]]&lt;br /&gt;
** [[Manually editing a existing apkovl]]&lt;br /&gt;
&amp;lt;!-- [[Replacing a package]] Obsolete? --&amp;gt;&lt;br /&gt;
* [[How to setup a Alpine Linux mirror]]&lt;br /&gt;
* [[How to use xdelta and download only differential update files]]&lt;br /&gt;
* [[How to make a custom ISO image]]&lt;br /&gt;
** [[Burning ISOs]]&lt;br /&gt;
&lt;br /&gt;
== Init system ==&lt;br /&gt;
* [[Alpine Linux Init System|Init System (OpenRC)]] &#039;&#039;(Configure a service to automatically launch at next reboot)&#039;&#039;&lt;br /&gt;
** [[Multiple Instances of Services]]&lt;br /&gt;
* [[Writing Init Scripts]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
=== Configuring your system ===&lt;br /&gt;
* [[Edge|Upgrading to Edge]] &amp;lt;!-- Pkg and Dev and Installation --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- If you edit the following, please coordinate with Installation#Advanced.  Note that these two sections are not exact duplicates. --&amp;gt;&lt;br /&gt;
* [[Setting up the build environment on HDD]] &amp;lt;!-- Dev and Installation --&amp;gt;&lt;br /&gt;
&amp;lt;!-- [[Setting up the build environment 1.7]] Obsolete, only Dev --&amp;gt;&lt;br /&gt;
** [[Creating_an_Alpine_package#Setup_your_system_and_account|Setup your system and account for building packages]]&lt;br /&gt;
** [[Abuild_and_Helpers#abuild-keygen|Abuild-keygen]]&lt;br /&gt;
&lt;br /&gt;
* [[Installing Alpine Linux in a chroot]] &amp;lt;!-- only Installation --&amp;gt;&lt;br /&gt;
** [[Buildlab]] &#039;&#039;(Tool for creating and managing chroots)&#039;&#039;&lt;br /&gt;
* [[Install Alpine Linux on LXC]]&lt;br /&gt;
* Install Alpine on [[Install Alpine on VirtualBox|VirtualBox]], [[Install Alpine on VMware|VMware]], [[Install Alpine on coLinux|coLinux]], [[Qemu]], &amp;lt;!-- includes [[Install Alpine in Qemu]], [[Running Alpine in Qemu Live mode]], [[Running Alpine Linux As a QEMU networked Guest]] --&amp;gt; or [[Install Alpine on Amazon EC2|Amazon EC2]]&lt;br /&gt;
&lt;br /&gt;
* [[Xen Dom0]] &#039;&#039;(Setting up Alpine as a dom0 for Xen hypervisor)&#039;&#039;&lt;br /&gt;
** [[Xen Dom0 on USB or SD]]&lt;br /&gt;
** [[Create Alpine Linux PV DomU]]&lt;br /&gt;
** [[Xen LiveCD]]&lt;br /&gt;
&lt;br /&gt;
* [[Setting up a basic vserver]] &amp;lt;!-- only Installation --&amp;gt;&lt;br /&gt;
* [[Setting up a compile vserver]] for official or for [[Setting up a compile vserver for third party packages|third party]] packages &amp;lt;!-- Dev and Installation --&amp;gt;&lt;br /&gt;
&amp;lt;!-- [[Create an Alpine 1.9 vserver template]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building from source and creating packages ===&lt;br /&gt;
&lt;br /&gt;
* [[Aports tree]] &amp;lt;!-- &amp;lt;== APKBUILD --&amp;gt;&lt;br /&gt;
* [[Abuild and Helpers]] &#039;&#039;(Scripts for packaging)&#039;&#039;&lt;br /&gt;
  &amp;lt;!-- includes [[Abuild_and_Helpers#apkbuild-cpan|Apkbuild-cpan]] --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- includes [[Abuild_and_Helpers#apkbuild-pypi|Apkbuild-pypi]] --&amp;gt;&lt;br /&gt;
  &amp;lt;!--&lt;br /&gt;
   [[Abuild_and_Helpers#buildrepo|Buildrepo]]&lt;br /&gt;
   [[Abuild_and_Helpers#abuild-sign|Abuild-sign]]&lt;br /&gt;
   [[Abuild_and_Helpers#abuild-tar|Abuild-tar]]&lt;br /&gt;
   [[Abuild_and_Helpers#abump|Abump]]&lt;br /&gt;
   [[Abuild_helpers#apkgrel|Apkgrel]]&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* [[Creating an Alpine package]]&lt;br /&gt;
  &amp;lt;!-- includes [[Setup your system and account for building packages]] --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- includes [[Newapkbuild]]&lt;br /&gt;
       To create the actual APKBUILD file, newapkbuild can give you a template to start with.&lt;br /&gt;
       It will create a directory with the given package name, place an example/template APKBUILD &lt;br /&gt;
       file to the given directory, and fill some variables if those are provided. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- includes [[Local_APK_cache]] --&amp;gt;&lt;br /&gt;
** [[Package policies]]&lt;br /&gt;
** [[Package Maintainers]]&lt;br /&gt;
* [[Custom Kernel]]&lt;br /&gt;
* [[APKBUILD Reference]]&lt;br /&gt;
* [[APKBUILD examples]]&lt;br /&gt;
* [[Alpine package format]]&lt;br /&gt;
* [[Apkindex format]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Development using git]] &amp;lt;!-- includes [[Development using git:Configuration]] [[Development using git:Email]] --&amp;gt;&lt;br /&gt;
** [[Development using git:Basic usage|Basic usage]]&lt;br /&gt;
** [[Package Maintainers]]&lt;br /&gt;
** [[Creating patches]]&lt;br /&gt;
** [[Development using git:Developer repositories|Developer repositories]]&lt;br /&gt;
** [[Development using git:Cgit|Cgit]]&lt;br /&gt;
** [[Cgit|Another cgit page]]&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine Package Testing Suite]] &#039;&#039;work in progress&#039;&#039;&lt;br /&gt;
* [[Alpine Release Testing Checklist]]&lt;br /&gt;
* [[Running glibc programs]]&lt;br /&gt;
&lt;br /&gt;
== Alpine Configuration Framework ==&lt;br /&gt;
{{Draft|Needs to be organized/consolidated.}}&lt;br /&gt;
&lt;br /&gt;
* [[Alpine Configuration Framework Design]] (Why ACF is the way it is)&lt;br /&gt;
* [[Writing User Documentation for ACF]]&lt;br /&gt;
* [[ACF mvc.lua reference|mvc.lua reference]] - mvc.lua is the core of ACF &lt;br /&gt;
* [[ACF mvc.lua example|mvc.lua example]] - build a simple (command-line) application &lt;br /&gt;
* [[ACF acf www-controller.lua reference|acf www-controller reference]] - ACF www application functions &lt;br /&gt;
* [[ACF acf www example|acf www-controller example]] - webify the above examples &lt;br /&gt;
* [[ACF how to write]] - Step by step howto for writing acfs &lt;br /&gt;
* [[ACF core principles]] - Things that are standard across the application &lt;br /&gt;
* [[LuaPosix]] - Documentation for the Lua Posix functions &lt;br /&gt;
* [[ACF Libraries]] - Document the libraries and common functions &lt;br /&gt;
* [[Writing ACF Views]] - Guide for writing a view &lt;br /&gt;
* [[Writing ACF Controllers]] - Guide for writing a controller &lt;br /&gt;
* [[Writing ACF Models]] - Guide for writing a model&lt;br /&gt;
&lt;br /&gt;
* [[ACF css]]&lt;br /&gt;
* [[ACF packages]]&lt;br /&gt;
* [[APKBUILD examples:ACF]]&lt;br /&gt;
* [[Apk.lua]]&lt;br /&gt;
* [[Changing passwords for ACF]]&lt;br /&gt;
* [[Generating SSL certs with ACF]]&lt;br /&gt;
* [[Generating SSL certs with ACF 1.9]]&lt;br /&gt;
* [[Getting started with ACF development]]&lt;br /&gt;
* [[Managing ACF]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alpine-developed Utilities ==&lt;br /&gt;
* [[Alpine Wall]] - [[How-To Alpine Wall]] - [[Alpine Wall User&#039;s Guide]] &#039;&#039;(a new firewall management framework)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Installation&amp;diff=13029</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Installation&amp;diff=13029"/>
		<updated>2016-11-21T12:15:09Z</updated>

		<summary type="html">&lt;p&gt;Slukin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following information will assist you with the installation of [http://alpinelinux.org/about Alpine Linux].&lt;br /&gt;
[[Image:hdd_mount.png|left|link=]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation Quick-Start in 3 Easy Steps ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; font-size:30px; font-weight:bold;&amp;quot;&amp;gt;&lt;br /&gt;
1st&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:65px; background-color:#EDF2F2; border-style:solid; border-color:#6F7C91; border-width:0px; border-left-width:5px; min-height:55px; padding:5px;&amp;quot;&amp;gt;&lt;br /&gt;
[http://alpinelinux.org/downloads Download] the latest stable-release ISO.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; font-size:30px; font-weight:bold;&amp;quot;&amp;gt;&lt;br /&gt;
2nd&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:65px; background-color:#E0E9E9; border-style:solid; border-color:#606A82; border-width:0px; border-left-width:5px; min-height:55px; padding:5px;&amp;quot;&amp;gt;&lt;br /&gt;
If you have a CD drive from which you can boot, then [[Burning ISOs|burn the ISO onto a blank CD]] using your favorite CD burning software. Else [[Create a Bootable USB|create a bootable USB drive]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; font-size:30px; font-weight:bold;&amp;quot;&amp;gt;&lt;br /&gt;
3rd&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:65px; background-color:#9faecc; border-style:solid; border-color:#324065; border-width:0px; border-left-width:5px; min-height:55px; padding:5px;&amp;quot;&amp;gt;&lt;br /&gt;
Boot from the CD or USB drive, login as root with no password, and voilà! Enjoy Alpine Linux!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
One of the [[Installation#Post-Install|first commands you might want to use]] is &amp;lt;code&amp;gt;[[setup-alpine]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Installation Handbook ==&lt;br /&gt;
=== Basics ===&lt;br /&gt;
Alpine can be used in any of three modes:&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;diskless mode&lt;br /&gt;
&amp;lt;dd&amp;gt;You&#039;ll boot from read-only medium such as the installation CD, a [[Create a Bootable USB|USB drive]], or a [[Create a Bootable Compact Flash|Compact Flash card]]. {{Tip| To prepare either a USB or Compact Flash card, you can use the &amp;lt;code&amp;gt;[[setup-bootable]]&amp;lt;/code&amp;gt; script; see the pages linked above for details.}} When you use Alpine in this mode, you need to use [[Alpine local backup|Alpine Local Backup (lbu)]] to save your modifications between reboots. That requires some writable medium, usually removable. (If your boot medium is, for example, a USB drive, you can save modifications there; you don&#039;t need a separate partition or drive.) See also [[Local APK cache]].&lt;br /&gt;
{{Note| When the &amp;lt;code&amp;gt;[[setup-alpine]]&amp;lt;/code&amp;gt; script asks for a disk, say &amp;quot;none&amp;quot;. It will then prompt whether you&#039;d like to preserve modifications on any writable medium.}}&lt;br /&gt;
&amp;lt;dt&amp;gt;data mode&lt;br /&gt;
&amp;lt;dd&amp;gt;As in diskless mode, your OS is run from a read-only medium. However, here a writable partition (usually on a hard disk) is used to store the data in {{Path|/var}}. That partition is accessed directly, rather than copied into a tmpfs; so this is better-suited to uses where large amounts of data need to be preserved between reboots. {{Note| The &amp;lt;code&amp;gt;[[setup-alpine]]&amp;lt;/code&amp;gt; script handles installing Alpine in this mode, too, when you supply a writable partition instead of &amp;quot;none&amp;quot;, and request mode &amp;quot;data&amp;quot;.}} This mode may be used for mailspools, database and log servers, and so on.&lt;br /&gt;
&amp;lt;dt&amp;gt;sys mode&lt;br /&gt;
&amp;lt;dd&amp;gt;This is a [[Install to disk|traditional hard-disk install]] (see link for details). &amp;lt;!-- includes [[Installing Alpine on HDD overwriting everything]] --&amp;gt; Both the boot system and your modifications are written to the hard disk, in a standard Linux hierarchy. {{Note| The &amp;lt;code&amp;gt;[[setup-alpine]]&amp;lt;/code&amp;gt; script handles installing Alpine in this mode, too, when you supply a writable partition instead of &amp;quot;none&amp;quot;, and request mode &amp;quot;sys&amp;quot;. By default, it will create three partions on your disk, for {{Path|/boot}}, {{Path|/}}, and {{Path|swap}}; however you can also [[Setting up disks manually|partition your disk manually]].&lt;br /&gt;
}} This mode may be used for desktops, development boxes, and virtual servers.&lt;br /&gt;
    &amp;lt;!-- [[Native Harddisk Install 1.6]] Obsolete --&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
* [[Create UEFI boot USB]]&lt;br /&gt;
* [[Tutorials_and_Howtos#Storage|Setting up storage with RAID, LVM, LUKS encryption, iSCSI, or suchlike]]&lt;br /&gt;
* [[Setting up disks manually]]&lt;br /&gt;
* [[Partitioning and Bootmanagers]]&lt;br /&gt;
* [[Migrating data]]&lt;br /&gt;
* Details about [[Alpine setup scripts]]&lt;br /&gt;
&lt;br /&gt;
* [[Installing Alpine on HDD dualbooting|Install to HDD with dual-boot]]&lt;br /&gt;
* [[Replacing non-Alpine Linux with Alpine remotely]]&lt;br /&gt;
&amp;lt;!-- [[Installing Xubuntu using Alpine boot floppy]] Obsolete --&amp;gt;&lt;br /&gt;
&amp;lt;!-- [[Installing Alpine Linux on USB Automated]] Obsolete --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Bootstrapping Alpine Linux]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- If you edit the following, please coordinate with Developer_Documentation#Configuring_your_system.  Note that these two sections are not exact duplicates. --&amp;gt;&lt;br /&gt;
* [[Installing Alpine Linux in a chroot]]&lt;br /&gt;
* [[Install Alpine on LXC]]&lt;br /&gt;
* Install Alpine on [[Install Alpine on VirtualBox|VirtualBox]], [[Install Alpine on VMware|VMware]], [[Install Alpine on coLinux|coLinux]], [[Qemu]], &amp;lt;!-- includes [[Install Alpine in Qemu]], [[Running Alpine in Qemu Live mode]], [[Running Alpine Linux As a QEMU networked Guest]] --&amp;gt;, [[Install Alpine on Amazon EC2|Amazon EC2]], or [[Install Alpine on Rackspace|RackSpace]]&lt;br /&gt;
&lt;br /&gt;
* [[Xen Dom0]] &#039;&#039;(Setting up Alpine as a dom0 for Xen hypervisor)&#039;&#039;&lt;br /&gt;
* [[Xen Dom0 on USB or SD]]&lt;br /&gt;
* [[Create Alpine Linux PV DomU]]&lt;br /&gt;
* [[Xen LiveCD]]&lt;br /&gt;
&lt;br /&gt;
* [[Setting up a basic vserver]]&lt;br /&gt;
* [[Setting up the build environment on HDD]]&lt;br /&gt;
* [[Setting up a compile vserver]] for official or for [[Setting up a compile vserver for third party packages|third party]] packages&lt;br /&gt;
&amp;lt;!-- [[Create an Alpine 1.9 vserver template]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Post-Install ===&lt;br /&gt;
&amp;lt;!-- If you edit this, please coordinate with and Tutorials_and_Howtos#Post-Install and Developer_Documentation#Package_management. Note that these three sections are not exact duplicates. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Configure Networking]] --&amp;gt;&lt;br /&gt;
* [[Tutorials_and_Howtos#Networking|Setting up Networking]]&lt;br /&gt;
* [[Alpine Linux package management|Package Management (apk)]] &#039;&#039;(How to add/remove packages on your Alpine)&#039;&#039;&lt;br /&gt;
   &amp;lt;!-- [[Alpine Linux package management#Local_Cache|How to enable APK caching]] --&amp;gt;&lt;br /&gt;
* [[Alpine local backup|Alpine local backup (lbu)]] &#039;&#039;(Permanently store your modifications in case your box needs reboot)&#039;&#039;&lt;br /&gt;
** [[Back Up a Flash Memory Installation|Back Up a Flash Memory (&amp;quot;diskless mode&amp;quot;) Installation]]&lt;br /&gt;
** [[Manually editing a existing apkovl]]&lt;br /&gt;
* [[Alpine Linux Init System|Init System (OpenRC)]] &#039;&#039;(Configure a service to automatically boot at next reboot)&#039;&#039;&lt;br /&gt;
** [[Multiple Instances of Services]]&lt;br /&gt;
   &amp;lt;!-- [[Writing Init Scripts]] --&amp;gt;&lt;br /&gt;
* [[Alpine setup scripts#setup-xorg-base|Setting up Xorg]]&lt;br /&gt;
&lt;br /&gt;
* [[Upgrading Alpine]]&lt;br /&gt;
&amp;lt;!-- Obsolete&lt;br /&gt;
 [[Upgrading Alpine - v1.9.x]]&lt;br /&gt;
 [[Upgrading Alpine - CD v1.8.x]]&lt;br /&gt;
 [[Upgrading Alpine - HD v1.8.x]]&lt;br /&gt;
 [[Upgrade to repository main|Upgrading to signed repositories]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Setting up a ssh-server]] &#039;&#039;(Using ssh is a good way to administer your box remotely)&#039;&#039;&lt;br /&gt;
* [[setup-acf]] &#039;&#039;(Configures ACF (webconfiguration) so you can manage your box through https)&#039;&#039;&lt;br /&gt;
* [[Hosting services on Alpine]]&#039;&#039;(Links to several mail/web/ssh server setup pages)&#039;&#039;&lt;br /&gt;
* [[Changing passwords for ACF|Changing passwords]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Running glibc programs]] Installation and Dev --&amp;gt;&lt;br /&gt;
* [[Setting the timezone]] &#039;&#039;(Not needed for the default musl- or uClibc-based installs)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Further Help and Information ===&lt;br /&gt;
* [[FAQ|FAQs]]&lt;br /&gt;
* [[Tutorials and Howtos]]&lt;br /&gt;
* [[Contribute|How to Contribute]]&lt;br /&gt;
* [[Developer Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Install_Alpine_on_LXC&amp;diff=13028</id>
		<title>Install Alpine on LXC</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Install_Alpine_on_LXC&amp;diff=13028"/>
		<updated>2016-11-21T12:11:29Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Created page with &amp;quot;== LXC ==  [https://en.wikipedia.org/wiki/ LXC] is an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host u...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== LXC ==&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/ LXC] is an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel.&lt;br /&gt;
&lt;br /&gt;
With LXC you can run Alpine Linux on container and start services in it using native Alpine Linux&#039; init system (openrc).&lt;br /&gt;
&lt;br /&gt;
This is instruction on how to install Alpine Linux on LXC container.&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
=== LXC installation ===&lt;br /&gt;
You have to install &amp;quot;lxc&amp;quot; package on your host system. For example, in Arch Linux you can install it by running:&lt;br /&gt;
{{Cmd|sudo pacman -S lxc}}&lt;br /&gt;
&lt;br /&gt;
=== Bridge creation ===&lt;br /&gt;
You also have to create network bridge on your host.&lt;br /&gt;
Here is example, how to setup bridge with netctl:&lt;br /&gt;
&lt;br /&gt;
Copy sample file &amp;quot;bridge&amp;quot;&lt;br /&gt;
{{Cmd|sudo cp /etc/netctl/examples/bridge /etc/netctl/myBridge}}&lt;br /&gt;
&lt;br /&gt;
Modify your bridge configuration file as needed (network interfaces: eno1 and tap0 are, of cource, according to your needs)&lt;br /&gt;
{{Cmd|sudo vim /etc/netctl/myBridge}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Description=&amp;quot;Bridge connection&amp;quot;&lt;br /&gt;
Interface=br0&lt;br /&gt;
Connection=bridge&lt;br /&gt;
BindsToInterfaces=(eno1 tap0)&lt;br /&gt;
IP=dhcp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop active connection&lt;br /&gt;
{{Cmd|sudo systemctl stop dhcpcd}}&lt;br /&gt;
&lt;br /&gt;
Start your bridge	&lt;br /&gt;
{{Cmd|sudo netctl start myBridge}}&lt;br /&gt;
&lt;br /&gt;
Perhaps you may wish to setup your system to start your bridge automatically at boot time.&lt;br /&gt;
&lt;br /&gt;
== Container creation ==&lt;br /&gt;
&lt;br /&gt;
To install Alpine Linux edge version run:&lt;br /&gt;
{{Cmd|sudo lxc-create --name alpine-edge -t alpine -- --release edge}}&lt;br /&gt;
&lt;br /&gt;
You can also configure shared directory which will be accessible from both host and container. In this example we make host&#039;s /media/d directory available in container&lt;br /&gt;
{{Cmd|sudo mkdir /var/lib/lxc/alpine-edge/rootfs/media/d}}&lt;br /&gt;
&lt;br /&gt;
Modify container&#039;s configuration file:&lt;br /&gt;
{{Cmd|sudo nano /var/lib/lxc/alpine-edge/config}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lxc.network.type = veth&lt;br /&gt;
lxc.network.flags = up&lt;br /&gt;
lxc.network.link = br0&lt;br /&gt;
lxc.mount.entry=/media/d media/d none bind 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Booting container:&lt;br /&gt;
{{cmd|sudo lxc-start -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
Shutting down container:&lt;br /&gt;
{{cmd|sudo lxc-stop -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
Going to Alpine Linux console:&lt;br /&gt;
{{cmd|sudo lxc-attach -n alpine-edge}}&lt;br /&gt;
&lt;br /&gt;
== Container setup ==&lt;br /&gt;
&lt;br /&gt;
Modify your apk/repositories configuration file&lt;br /&gt;
{{cmd|vi /etc/apk/repositories}}&lt;br /&gt;
&lt;br /&gt;
It is recommended to include &amp;quot;main&amp;quot;, &amp;quot;testing&amp;quot; and &amp;quot;community&amp;quot; repositories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/main&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/testing&lt;br /&gt;
http://nl.alpinelinux.org/alpine/edge/community&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upgrading your Alpine Linux system:&lt;br /&gt;
{{cmd|apk update &amp;amp;&amp;amp; apk upgrade}}&lt;br /&gt;
&lt;br /&gt;
Starting services:&lt;br /&gt;
{{Cmd|/etc/init.d/service_name start}}&lt;br /&gt;
or&lt;br /&gt;
{{Cmd|rc-service service_name start}}&lt;br /&gt;
&lt;br /&gt;
Adding services to autostart&lt;br /&gt;
{{Cmd|rc-update add service_name}}&lt;br /&gt;
&lt;br /&gt;
Restarting your container:&lt;br /&gt;
{{Cmd|reboot}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Virtualization]]&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Converting_mediawiki_database_from_postgresql_to_mysql/mariadb&amp;diff=11470</id>
		<title>Converting mediawiki database from postgresql to mysql/mariadb</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Converting_mediawiki_database_from_postgresql_to_mysql/mariadb&amp;diff=11470"/>
		<updated>2015-11-18T06:11:05Z</updated>

		<summary type="html">&lt;p&gt;Slukin: /* Preparing mysql database and wiki user */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Why to use mysql/mariadb instead of postgresql?==&lt;br /&gt;
&lt;br /&gt;
Here is what MediaWiki says [[https://www.mediawiki.org/wiki/Manual:PostgreSQL]]:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Most of the common maintenance scripts work with PostgreSQL however some of the more obscure ones might have problems.&amp;lt;br&amp;gt;&lt;br /&gt;
Is PostgreSQL a good choice for MediaWiki?&amp;lt;br&amp;gt;&lt;br /&gt;
Wikipedia uses MySQL so MediaWiki gets more testing on MySQL than PostgreSQL. While support for PostgreSQL is maintained by volunteers, most core functionality is working.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
====Why not to use dumpBackup.php script in mediawiki? [[https://www.mediawiki.org/wiki/Manual:DumpBackup.php]]====&lt;br /&gt;
If you need to save only mediawiki data and pages modify history then the best and easiest way probably would be:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;php maintenance/dumpBackup.php --full --include-files --uploads &amp;gt; /tmp/wiki.xml&lt;br /&gt;
php maintenance/importDump.php /tmp/wiki.xml&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
However user accounts, user contrubutions, logs, etc will not be migrated this way.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Why not to use tools for converting postgresql databases to mysql?====&lt;br /&gt;
Mediawiki postgresql version is quite different from mysql version. For example: some table names are different, field order, timestamp format (pg: &#039;2015-11-01 08:42:31+00&#039;, mysql: &#039;20151101084231&#039;), many fields that are NULL in postgresql are not allowed to be NULL in mysql. That is why there will be issues when dumping data from postgresql and importing it to mysql.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
There is a script mentioned in http://www.winterrodeln.org/trac/wiki/MediaWikiPostgresqlToMysql that should be converting postgresql database to mysql. However in my case it did not work because of the issues mentioned above (that script was written in 2009-01-16).&lt;br /&gt;
&lt;br /&gt;
==Mediawiki location==&lt;br /&gt;
In this example mediawiki files root is located in &#039;&#039;&#039;/var/www/wiki.wikiname.org/htdocs/w&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Web server is &#039;&#039;&#039;lighttpd&#039;&#039;&#039;. /etc/lighttpd/lighttpd.conf contains lines:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;simple-vhost.server-root = &amp;quot;/var/www&amp;quot;&lt;br /&gt;
simple-vhost.default-host = &amp;quot;wiki.wikiname.org&amp;quot;&lt;br /&gt;
simple-vhost.document-root = &amp;quot;/htdocs/&amp;quot;&lt;br /&gt;
url.rewrite-once = (&lt;br /&gt;
&amp;quot;^/wiki/([^?]*)(?:\?(.*))?&amp;quot; =&amp;gt; &amp;quot;/w/index.php?title=$1&amp;amp;$2&amp;quot;,&lt;br /&gt;
    &amp;quot;^/wiki&amp;quot; =&amp;gt; &amp;quot;/w/index.php&amp;quot;,&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Disallowing editing mediawiki until database is converted==&lt;br /&gt;
{{Cmd|vi /var/www/wiki.wikiname.org/htdocs/w/LocalSettings.php}}&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$wgReadOnly = &#039;This wiki is currently being upgraded to a newer software version.&#039;;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Preparing dump files for importing data to mysql==&lt;br /&gt;
====Making postgresql dump====&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;su - postgres&lt;br /&gt;
	pg_dump wikidb &amp;gt; /tmp/wikidb-pg.dump&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====Making temporary postgresql database looking like mysql====&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;su - postgres&lt;br /&gt;
	echo &amp;quot;CREATE DATABASE tmpdb ENCODING &#039;SQL_ASCII&#039; LC_COLLATE=&#039;C&#039; LC_CTYPE=&#039;C&#039; TEMPLATE=template0;&amp;quot; | psql&lt;br /&gt;
	psql tmpdb &amp;lt; /tmp/wikidb-pg.dump&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====SQL script modifying postgresql database====&lt;br /&gt;
For avoiding issues when importing data to mysql we need to modify mediawiki postgresql database so that it would look like mediawiki mysql database. Basically the script will make field order in pg tables like in mysql and will set non-NULL values to the fields that are not allowed to be NULL in mysql&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;/tmp/pg-prepare-for-mysql.sql&#039;&#039;&#039;&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;/* archive */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ar_id, ar_namespace, ar_title, ar_text, ar_comment, ar_user, ar_user_text, ar_timestamp, ar_minor_edit, ar_flags, ar_rev_id, ar_text_id, ar_deleted, ar_len, ar_page_id, ar_parent_id, ar_sha1, ar_content_model, ar_content_format FROM archive;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set ar_text = &#039;&#039; where ar_text is NULL;&lt;br /&gt;
update tmp_table set ar_comment = &#039;&#039; where ar_comment is NULL;&lt;br /&gt;
update tmp_table set ar_user = 0 where ar_user is NULL;&lt;br /&gt;
update tmp_table set ar_flags = &#039;&#039; where ar_flags is NULL;&lt;br /&gt;
ALTER TABLE archive RENAME TO orig_archive;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO archive;&lt;br /&gt;
&lt;br /&gt;
/* category */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select cat_id, cat_title, cat_pages, cat_subcats, cat_files FROM category;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE category RENAME TO orig_category;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO category;&lt;br /&gt;
&lt;br /&gt;
/* categorylinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select cl_from, cl_to, cl_sortkey, cl_sortkey_prefix, cl_timestamp, cl_collation, cl_type FROM categorylinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set cl_sortkey = &#039;&#039; where cl_sortkey is NULL;&lt;br /&gt;
ALTER TABLE categorylinks RENAME TO orig_categorylinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO categorylinks;&lt;br /&gt;
&lt;br /&gt;
/* change_tag (OK) */&lt;br /&gt;
&lt;br /&gt;
/* externallinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select el_id, el_from, el_to, el_index FROM externallinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE externallinks RENAME TO orig_externallinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO externallinks;&lt;br /&gt;
&lt;br /&gt;
/* filearchive (OK) */&lt;br /&gt;
&lt;br /&gt;
/* image */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select img_name, img_size, img_width, img_height, img_metadata, img_bits, img_media_type, img_major_mime, img_minor_mime, img_description, img_user, img_user_text, img_timestamp, img_sha1 FROM image;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set img_bits = 0 where img_bits is NULL;&lt;br /&gt;
update tmp_table set img_major_mime = &#039;&#039; where img_major_mime is NULL;&lt;br /&gt;
update tmp_table set img_minor_mime = &#039;&#039; where img_minor_mime is NULL;&lt;br /&gt;
ALTER TABLE image RENAME TO orig_image;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO image;&lt;br /&gt;
&lt;br /&gt;
/* imagelinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select il_from, il_from_namespace, il_to FROM imagelinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE imagelinks RENAME TO orig_imagelinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO imagelinks;&lt;br /&gt;
&lt;br /&gt;
/* interwiki */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select iw_prefix, iw_url, iw_api, iw_wikiid, iw_local, iw_trans FROM interwiki;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE interwiki RENAME TO orig_interwiki;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO interwiki;&lt;br /&gt;
&lt;br /&gt;
/* ipblocks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ipb_id, ipb_address, ipb_user, ipb_by, ipb_by_text, ipb_reason, ipb_timestamp, ipb_auto, ipb_anon_only, ipb_create_account, ipb_enable_autoblock, ipb_expiry, ipb_range_start, ipb_range_end, ipb_deleted, ipb_block_email, ipb_allow_usertalk, ipb_parent_block_id FROM ipblocks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set ipb_address = &#039;&#039; where ipb_address is NULL;&lt;br /&gt;
update tmp_table set ipb_user = 0 where ipb_user is NULL;&lt;br /&gt;
update tmp_table set ipb_range_start = &#039;&#039; where ipb_range_start is NULL;&lt;br /&gt;
update tmp_table set ipb_range_end = &#039;&#039; where ipb_range_end is NULL;&lt;br /&gt;
ALTER TABLE ipblocks RENAME TO orig_ipblocks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO ipblocks;&lt;br /&gt;
&lt;br /&gt;
/* iwlinks (OK) */&lt;br /&gt;
&lt;br /&gt;
/* job */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select job_id, job_cmd, job_namespace, job_title, job_timestamp, job_params, job_random, job_attempts, job_token, job_token_timestamp, job_sha1 FROM job;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE job RENAME TO orig_job;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO job;&lt;br /&gt;
&lt;br /&gt;
/* l10n_cache (OK) */&lt;br /&gt;
&lt;br /&gt;
/* langlinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ll_from, ll_lang, ll_title FROM langlinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set ll_lang = &#039;&#039; where ll_lang is NULL;&lt;br /&gt;
update tmp_table set ll_title = &#039;&#039; where ll_title is NULL;&lt;br /&gt;
ALTER TABLE langlinks RENAME TO orig_langlinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO langlinks;&lt;br /&gt;
&lt;br /&gt;
/* logging */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select log_id, log_type, log_action, log_timestamp, log_user, log_user_text, log_namespace, log_title, log_page, log_comment, log_params, log_deleted FROM logging;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set log_user = 0 where log_user is NULL;&lt;br /&gt;
update tmp_table set log_comment = &#039;&#039; where log_comment is NULL;&lt;br /&gt;
update tmp_table set log_params = &#039;&#039; where log_params is NULL;&lt;br /&gt;
ALTER TABLE logging RENAME TO orig_logging;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO logging;&lt;br /&gt;
&lt;br /&gt;
/* log_search (OK) */&lt;br /&gt;
&lt;br /&gt;
/* module_deps (OK) */&lt;br /&gt;
&lt;br /&gt;
/* msg_resource (OK) */&lt;br /&gt;
&lt;br /&gt;
/* msg_resource_links (OK) */&lt;br /&gt;
&lt;br /&gt;
/* objectcache */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select keyname, value, exptime FROM objectcache;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set keyname = &#039;&#039; where keyname is NULL;&lt;br /&gt;
ALTER TABLE objectcache RENAME TO orig_objectcache;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO objectcache;&lt;br /&gt;
&lt;br /&gt;
/* oldimage */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select oi_name, oi_archive_name, oi_size, oi_width, oi_height, oi_bits, oi_description, oi_user, oi_user_text, oi_timestamp, oi_metadata, oi_media_type, oi_major_mime, oi_minor_mime, oi_deleted, oi_sha1 FROM oldimage;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set oi_bits = 0 where oi_bits is NULL;&lt;br /&gt;
update tmp_table set oi_description = &#039;&#039; where oi_description is NULL;&lt;br /&gt;
update tmp_table set oi_user = 0 where oi_user is NULL;&lt;br /&gt;
update tmp_table set oi_major_mime = &#039;&#039; where oi_major_mime is NULL;&lt;br /&gt;
update tmp_table set oi_minor_mime = &#039;&#039; where oi_minor_mime is NULL;&lt;br /&gt;
ALTER TABLE oldimage RENAME TO orig_oldimage;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO oldimage;&lt;br /&gt;
&lt;br /&gt;
/* page */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select page_id, page_namespace, page_title, page_restrictions, page_is_redirect, page_is_new, page_random, page_touched, page_links_updated, page_latest, page_len, page_content_model, page_lang FROM page;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set page_restrictions = &#039;&#039; where page_restrictions is NULL;&lt;br /&gt;
/*update tmp_table set page_touched = &#039;&#039; where page_touched is NULL;*/&lt;br /&gt;
ALTER TABLE page RENAME TO orig_page;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO page;&lt;br /&gt;
&lt;br /&gt;
/* pagelinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select pl_from, pl_from_namespace, pl_namespace, pl_title FROM pagelinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE pagelinks RENAME TO orig_pagelinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO pagelinks;&lt;br /&gt;
&lt;br /&gt;
/* page_props (OK) */&lt;br /&gt;
&lt;br /&gt;
/* page_restrictions */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select pr_id, pr_page, pr_type, pr_level, pr_cascade, pr_user, pr_expiry FROM page_restrictions;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE page_restrictions RENAME TO orig_page_restrictions;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO page_restrictions;&lt;br /&gt;
&lt;br /&gt;
/* protected_titles */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select pt_namespace, pt_title, pt_user, pt_reason, pt_timestamp, pt_expiry, pt_create_perm FROM protected_titles;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set pt_user = 0 where pt_user is NULL;&lt;br /&gt;
/*update tmp_table set pt_expiry = &#039;&#039; where pt_expiry is NULL;*/&lt;br /&gt;
ALTER TABLE protected_titles RENAME TO orig_protected_titles;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO protected_titles;&lt;br /&gt;
&lt;br /&gt;
/* querycache (OK) */&lt;br /&gt;
&lt;br /&gt;
/* querycachetwo (OK) */&lt;br /&gt;
&lt;br /&gt;
/* querycache_info */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select qci_type, qci_timestamp FROM querycache_info;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set qci_type = &#039;&#039; where qci_type is NULL;&lt;br /&gt;
/* update tmp_table set qci_timestamp = &#039;&#039; where qci_timestamp is NULL; */&lt;br /&gt;
ALTER TABLE querycache_info RENAME TO orig_querycache_info;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO querycache_info;&lt;br /&gt;
&lt;br /&gt;
/* recentchanges (rc_cur_time was removed in 1.24wmf6) */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select rc_id, rc_timestamp, rc_user, rc_user_text, rc_namespace, rc_title, rc_comment, rc_minor, rc_bot, rc_new, rc_cur_id, rc_this_oldid, rc_last_oldid, rc_type, rc_source, rc_patrolled, rc_ip, rc_old_len, rc_new_len, rc_deleted, rc_logid, rc_log_type, rc_log_action, rc_params FROM recentchanges;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set rc_user = 0 where rc_user is NULL;&lt;br /&gt;
update tmp_table set rc_comment = &#039;&#039; where rc_comment is NULL;&lt;br /&gt;
update tmp_table set rc_cur_id = 0 where rc_cur_id is NULL;&lt;br /&gt;
/* update tmp_table set rc_ip = &#039;&#039; where rc_ip is NULL; */&lt;br /&gt;
ALTER TABLE recentchanges RENAME TO orig_recentchanges;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO recentchanges;&lt;br /&gt;
&lt;br /&gt;
/* redirect (OK) */&lt;br /&gt;
&lt;br /&gt;
/* revision */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select rev_id, rev_page, rev_text_id, rev_comment, rev_user, rev_user_text, rev_timestamp, rev_minor_edit, rev_deleted, rev_len, rev_parent_id, rev_sha1, rev_content_model, rev_content_format FROM revision;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set rev_page = 0 where rev_page is NULL;&lt;br /&gt;
update tmp_table set rev_text_id = 0 where rev_text_id is NULL;&lt;br /&gt;
update tmp_table set rev_comment = &#039;&#039; where rev_comment is NULL;&lt;br /&gt;
ALTER TABLE revision RENAME TO orig_revision;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO revision;&lt;br /&gt;
&lt;br /&gt;
/* searchindex (does not exists in pg) */&lt;br /&gt;
&lt;br /&gt;
/* sites (OK) */&lt;br /&gt;
&lt;br /&gt;
/* site_identifiers (OK) */&lt;br /&gt;
&lt;br /&gt;
/* site_stats */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ss_row_id, ss_total_edits, ss_good_articles, ss_total_pages, ss_users, ss_active_users, ss_images FROM site_stats;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE site_stats RENAME TO orig_site_stats;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO site_stats;&lt;br /&gt;
&lt;br /&gt;
/* tag_summary (OK) */&lt;br /&gt;
&lt;br /&gt;
/* templatelinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select tl_from, tl_from_namespace, tl_namespace, tl_title FROM templatelinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE templatelinks RENAME TO orig_templatelinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO templatelinks;&lt;br /&gt;
&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select old_id, old_text, old_flags FROM pagecontent;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set old_text = &#039;&#039; where old_text is NULL;&lt;br /&gt;
update tmp_table set old_flags = &#039;&#039; where old_flags is NULL;&lt;br /&gt;
ALTER TABLE pagecontent RENAME TO orig_pagecontent;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO pagecontent;&lt;br /&gt;
&lt;br /&gt;
/* transcache (OK) */&lt;br /&gt;
&lt;br /&gt;
/* updatelog (OK) */&lt;br /&gt;
&lt;br /&gt;
/* uploadstash */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select us_id, us_user, us_key, us_orig_path, us_path, us_source_type, us_timestamp, us_status, us_chunk_inx, us_props, us_size, us_sha1, us_mime, us_media_type, us_image_width, us_image_height, us_image_bits FROM uploadstash;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set us_user = 0 where us_user is NULL;&lt;br /&gt;
update tmp_table set us_key = &#039;&#039; where us_key is NULL;&lt;br /&gt;
update tmp_table set us_orig_path = &#039;&#039; where us_orig_path is NULL;&lt;br /&gt;
update tmp_table set us_path = &#039;&#039; where us_path is NULL;&lt;br /&gt;
/* update tmp_table set us_timestamp = &#039;&#039; where us_timestamp is NULL; */&lt;br /&gt;
update tmp_table set us_status = &#039;&#039; where us_status is NULL;&lt;br /&gt;
update tmp_table set us_size = 0 where us_size is NULL;&lt;br /&gt;
update tmp_table set us_sha1 = &#039;&#039; where us_sha1 is NULL;&lt;br /&gt;
ALTER TABLE uploadstash RENAME TO orig_uploadstash;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO uploadstash;&lt;br /&gt;
&lt;br /&gt;
/* user (in pg it is named mwuser)*/&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select user_id, user_name, user_real_name, user_password, user_newpassword, user_newpass_time, user_email, user_touched, user_token, user_email_authenticated, user_email_token, user_email_token_expires, user_registration, user_editcount, user_password_expires FROM mwuser;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set user_real_name = &#039;&#039; where user_real_name is NULL;&lt;br /&gt;
update tmp_table set user_password = &#039;&#039; where user_password is NULL;&lt;br /&gt;
update tmp_table set user_newpassword = &#039;&#039; where user_newpassword is NULL;&lt;br /&gt;
update tmp_table set user_token = &#039;&#039; where user_token is NULL;&lt;br /&gt;
update tmp_table set user_email = &#039;&#039; where user_email is NULL;&lt;br /&gt;
/* update tmp_table set user_touched = &#039;&#039; where user_touched is NULL; */&lt;br /&gt;
delete from tmp_table where user_id = 0;&lt;br /&gt;
ALTER TABLE mwuser RENAME TO orig_mwuser;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO mwuser;&lt;br /&gt;
/* it cannot be named &#039;user&#039;, like in mysql */&lt;br /&gt;
&lt;br /&gt;
/* user_former_groups */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ufg_user, ufg_group FROM user_former_groups;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set ufg_user = 0 where ufg_user is NULL;&lt;br /&gt;
ALTER TABLE user_former_groups RENAME TO orig_user_former_groups;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO user_former_groups;&lt;br /&gt;
&lt;br /&gt;
/* user_groups */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ug_user, ug_group FROM user_groups;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set ug_user = 0 where ug_user is NULL;&lt;br /&gt;
ALTER TABLE user_groups RENAME TO orig_user_groups;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO user_groups;&lt;br /&gt;
&lt;br /&gt;
/* user_newtalk */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select user_id, user_ip, user_last_timestamp FROM user_newtalk;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set user_ip = &#039;&#039; where user_ip is NULL;&lt;br /&gt;
ALTER TABLE user_newtalk RENAME TO orig_user_newtalk;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO user_newtalk;&lt;br /&gt;
&lt;br /&gt;
/* user_properties */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select up_user, up_property, up_value FROM user_properties;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set up_user = 0 where up_user is NULL;&lt;br /&gt;
ALTER TABLE user_properties RENAME TO orig_user_properties;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO user_properties;&lt;br /&gt;
&lt;br /&gt;
/* valid_tag (OK) */&lt;br /&gt;
&lt;br /&gt;
/* watchlist (OK) */&lt;br /&gt;
&lt;br /&gt;
/* external_user (not needed) */&lt;br /&gt;
ALTER TABLE external_user RENAME TO orig_external_user;&lt;br /&gt;
&lt;br /&gt;
/* hitcounter (removed in MediaWiki 1.25) */&lt;br /&gt;
ALTER TABLE hitcounter RENAME TO orig_hitcounter;&lt;br /&gt;
&lt;br /&gt;
/* mediawiki_version  (&#039;Nobody actually uses it anymore, it just gets silently updated (and only for Postgres at that)&#039;) */&lt;br /&gt;
ALTER TABLE mediawiki_version RENAME TO orig_mediawiki_version;&lt;br /&gt;
&lt;br /&gt;
/* profiling (&#039;It&#039;s only used in an obscure debugging mode.&#039;) */&lt;br /&gt;
ALTER TABLE profiling RENAME TO orig_profiling;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* trackbacks (This feature was removed completely in version MediaWiki 1.19.) */&lt;br /&gt;
ALTER TABLE trackbacks RENAME TO orig_trackbacks;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;su - postgres&lt;br /&gt;
	psql tmpdb &amp;lt; /tmp/pg-prepare-for-mysql.sql&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====Making dump files for mysql import====&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;su - postgres&lt;br /&gt;
	mkdir /tmp/wikidb-pg-dump&lt;br /&gt;
	psql -d wikidb -c &amp;quot;SELECT table_schema || &#039;.&#039; || table_name FROM information_schema.tables WHERE table_type = &#039;BASE TABLE&#039; AND table_schema NOT IN (&#039;pg_catalog&#039;, &#039;information_schema&#039;);&amp;quot; &amp;gt; /tmp/t&lt;br /&gt;
	cat /tmp/t | grep mediawiki | sed &#039;s/ mediawiki.//g&#039; | sort &amp;gt; /tmp/pg-tables.txt&lt;br /&gt;
&lt;br /&gt;
	for t in `cat /tmp/pg-tables.txt`; do echo &amp;quot;dumping $t&amp;quot;; pg_dump -d tmpdb --data-only --inserts -t mediawiki.$t &amp;gt; /tmp/wikidb-pg-dump/$t.sql; done&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====Modifying dump files====&lt;br /&gt;
Postgresql specific sql should be removed&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;cd /tmp/wikidb-pg-dump&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET statement_timeout = 0;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET lock_timeout = 0;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &amp;quot;s/^SET client_encoding = &#039;SQL_ASCII&#039;;$//g&amp;quot; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET standard_conforming_strings = on;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET check_function_bodies = false;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET client_min_messages = warning;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET search_path = mediawiki, pg_catalog;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &amp;quot;s/^SELECT pg_catalog.setval(&#039;filearchive_fa_id_seq&#039;, 25, true);$//g&amp;quot; $f; done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Postgresql table &#039;&#039;&#039;mwuser&#039;&#039;&#039; corresponds to mysql table &#039;&#039;&#039;user&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;for f in *.sql; do sed -i &amp;quot;s/^INSERT INTO mwuser VALUES/INSERT INTO user VALUES/g&amp;quot; $f; done&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Postgresql table &#039;&#039;&#039;pagecontent&#039;&#039;&#039; corresponds to mysql table &#039;&#039;&#039;text&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;for f in *.sql; do sed -i &amp;quot;s/^INSERT INTO pagecontent VALUES/INSERT INTO text VALUES/g&amp;quot; $f; done&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Back slashes should be replaced with double backslashes&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;for f in *.sql; do sed -i &#039;s/\\/\\\\/g&#039; $f; done&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Timestamp format in postgresql is different from mysql (pg: &#039;2015-10-31 10:10:10+00&#039;, mysql: &#039;20151031101010&#039;). All timestamps should be converted to avoid errors like:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;... Language::sprintfDate: The timestamp should be a number&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;for f in *.sql; do sed -i &amp;quot;s/&#039;\([0-9][0-9][0-9][0-9]\)-\([0-9][0-9]\)-\([0-9][0-9]\) \([0-9][0-9]\):\([0-9][0-9]\):\([0-9][0-9]\)[+-][0-9][0-9]&#039;/&#039;\1\2\3\4\5\6&#039;/g&amp;quot; $f; done&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
In postgresql &#039;&#039;&#039;ipblocks&#039;&#039;&#039; table may contain records with duplicated field &#039;&#039;&#039;ipb_address&#039;&#039;&#039;. mysql requires that ipb_address field is unique.&lt;br /&gt;
Check manually &#039;&#039;&#039;ipblocks.sql&#039;&#039;&#039; file. Delete records with duplicated field &#039;&#039;&#039;ipb_address&#039;&#039;&#039; to prevent errors like:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;# ERROR 1062 (23000) at line 152: Duplicate entry &#039;xxxxxx-0-0-0&#039; for key &#039;ipb_address&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Cmd|vi ipblocks.sql}}&lt;br /&gt;
&lt;br /&gt;
==Changing mysql root password, creating user for mediawiki==&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;mysql -u root&lt;br /&gt;
	SET PASSWORD FOR &#039;root&#039;@&#039;localhost&#039; = PASSWORD(&#039;newpassword&#039;);&lt;br /&gt;
	SET PASSWORD FOR &#039;root&#039;@&#039;127.0.0.1&#039; = PASSWORD(&#039;newpassword&#039;);&lt;br /&gt;
	SET PASSWORD FOR &#039;root&#039;@&#039;::1&#039; = PASSWORD(&#039;newpassword&#039;);&lt;br /&gt;
	FLUSH PRIVILEGES;&lt;br /&gt;
	CREATE USER &#039;wikiuser&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;wikiuserpassword&#039;;&lt;br /&gt;
	GRANT ALL PRIVILEGES ON *.* TO &#039;wikiuser&#039;@&#039;localhost&#039; WITH GRANT OPTION;&lt;br /&gt;
	CREATE USER &#039;wikiuser&#039;@&#039;%&#039; IDENTIFIED BY &#039;wikiuserpassword&#039;;&lt;br /&gt;
	GRANT ALL PRIVILEGES ON *.* TO &#039;wikiuser&#039;@&#039;%&#039; WITH GRANT OPTION;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Setting up new mediawiki==&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;cd /var/www/wiki.wikiname.org/htdocs&lt;br /&gt;
wget http://releases.wikimedia.org/mediawiki/1.25/mediawiki-1.25.3.tar.gz&lt;br /&gt;
tar zxf mediawiki-1.25.3.tar.gz&lt;br /&gt;
mv mediawiki-1.25.3 w&lt;br /&gt;
rm mediawiki-1.25.3.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|vi index.php}}&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  header(&#039;Location: /wiki&#039;);&lt;br /&gt;
?&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open your wiki in browser http://wiki.wikiname.org, go through setup process (DB type:mysql, engin: innodb, charset: binary)&amp;lt;br&amp;gt;&lt;br /&gt;
Compare LocalSettings.php file generated by setup process with old mediawiki LocalSettings.php file&amp;lt;br&amp;gt;&lt;br /&gt;
Take needed settings from old LocalSettings.php&amp;lt;br&amp;gt;&lt;br /&gt;
Copy new LocalSettings.php into mediawiki directory /var/www/wiki.wikiname.org/htdocs/w&amp;lt;br&amp;gt;&lt;br /&gt;
Copy needed files from old mediawiki (images/*, extensions/..., resources/...)&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;cd /var/www/wiki.wikiname.org/htdocs/w&lt;br /&gt;
find . -type d &amp;gt; /tmp/d&lt;br /&gt;
while read d; do chmod 755 &amp;quot;$d&amp;quot;; done &amp;lt; /tmp/d&lt;br /&gt;
find . -type f &amp;gt; /tmp/f&lt;br /&gt;
while read f; do chmod 644 &amp;quot;$f&amp;quot;; done &amp;lt; /tmp/f&lt;br /&gt;
chown -R lighttpd:lighttpd .&lt;br /&gt;
cd /var/www/wiki.wikiname.org/htdocs/w&lt;br /&gt;
php maintenance/update.php # it will activate extensions and create needed tables in mysql db&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Clearing mysql tables before import==&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;mysql wikidb -uUSERNAME -pPASSWORD --default-character-set=utf8 -Bse &#039;show tables;&#039; &amp;gt; /tmp/t&lt;br /&gt;
for t in `cat /tmp/t`; do echo &amp;quot;TRUNCATE $t;&amp;quot;; done &amp;gt;/tmp/mysql-clear-tables.sql&lt;br /&gt;
mysql wikidb -uUSERNAME -pPASSWORD --default-character-set=utf8 &amp;lt; /tmp/mysql-clear-tables.sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Importing data into mysql==&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;for t in `cat /tmp/pg-tables.txt`; do echo &amp;quot;importing $t&amp;quot;; mysql wikidb -uUSERNAME -pPASSWORD --default-character-set=utf8 &amp;lt; /path/to/wikidb-pg-dump/$t.sql; done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Running maintenance scripts==&lt;br /&gt;
{{Cmd|php maintenance/update.php&lt;br /&gt;
php maintenance/rebuildrecentchanges.php&lt;br /&gt;
php maintenance/rebuildtextindex.php&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Regenerating cache==&lt;br /&gt;
Old cache in &#039;&#039;&#039;l10n_cache&#039;&#039;&#039; table may couse problems. It can be deleted and regenerated again.&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;echo &amp;quot;TRUNCATE l10n_cache;&amp;quot; | mysql wikidb -uUSERNAME -pPASSWORD --default-character-set=utf8&lt;br /&gt;
cd /var/www/wiki.wikiname.org/htdocs/w&lt;br /&gt;
php maintenance/rebuildLocalisationCache.php&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Converting_mediawiki_database_from_postgresql_to_mysql/mariadb&amp;diff=11460</id>
		<title>Converting mediawiki database from postgresql to mysql/mariadb</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Converting_mediawiki_database_from_postgresql_to_mysql/mariadb&amp;diff=11460"/>
		<updated>2015-11-17T13:46:09Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Created page with &amp;quot;==Why to use mysql/mariadb instead of postgresql?==  Here is what MediaWiki says https://www.mediawiki.org/wiki/Manual:PostgreSQL: &amp;lt;blockquote&amp;gt;Most of the common maintenan...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Why to use mysql/mariadb instead of postgresql?==&lt;br /&gt;
&lt;br /&gt;
Here is what MediaWiki says [[https://www.mediawiki.org/wiki/Manual:PostgreSQL]]:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Most of the common maintenance scripts work with PostgreSQL however some of the more obscure ones might have problems.&amp;lt;br&amp;gt;&lt;br /&gt;
Is PostgreSQL a good choice for MediaWiki?&amp;lt;br&amp;gt;&lt;br /&gt;
Wikipedia uses MySQL so MediaWiki gets more testing on MySQL than PostgreSQL. While support for PostgreSQL is maintained by volunteers, most core functionality is working.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Challenge==&lt;br /&gt;
====Why not to use dumpBackup.php script in mediawiki? [[https://www.mediawiki.org/wiki/Manual:DumpBackup.php]]====&lt;br /&gt;
If you need to save only mediawiki data and pages modify history then the best and easiest way probably would be:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;php maintenance/dumpBackup.php --full --include-files --uploads &amp;gt; /tmp/wiki.xml&lt;br /&gt;
php maintenance/importDump.php /tmp/wiki.xml&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
However user accounts, user contrubutions, logs, etc will not be migrated this way.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Why not to use tools for converting postgresql databases to mysql?====&lt;br /&gt;
Mediawiki postgresql version is quite different from mysql version. For example: some table names are different, field order, timestamp format (pg: &#039;2015-11-01 08:42:31+00&#039;, mysql: &#039;20151101084231&#039;), many fields that are NULL in postgresql are not allowed to be NULL in mysql. That is why there will be issues when dumping data from postgresql and importing it to mysql.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
There is a script mentioned in http://www.winterrodeln.org/trac/wiki/MediaWikiPostgresqlToMysql that should be converting postgresql database to mysql. However in my case it did not work because of the issues mentioned above (that script was written in 2009-01-16).&lt;br /&gt;
&lt;br /&gt;
==Mediawiki location==&lt;br /&gt;
In this example mediawiki files root is located in &#039;&#039;&#039;/var/www/wiki.wikiname.org/htdocs/w&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Web server is &#039;&#039;&#039;lighttpd&#039;&#039;&#039;. /etc/lighttpd/lighttpd.conf contains lines:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;simple-vhost.server-root = &amp;quot;/var/www&amp;quot;&lt;br /&gt;
simple-vhost.default-host = &amp;quot;wiki.wikiname.org&amp;quot;&lt;br /&gt;
simple-vhost.document-root = &amp;quot;/htdocs/&amp;quot;&lt;br /&gt;
url.rewrite-once = (&lt;br /&gt;
&amp;quot;^/wiki/([^?]*)(?:\?(.*))?&amp;quot; =&amp;gt; &amp;quot;/w/index.php?title=$1&amp;amp;$2&amp;quot;,&lt;br /&gt;
    &amp;quot;^/wiki&amp;quot; =&amp;gt; &amp;quot;/w/index.php&amp;quot;,&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Disallowing editing mediawiki until database is converted==&lt;br /&gt;
{{Cmd|vi /var/www/wiki.wikiname.org/htdocs/w/LocalSettings.php}}&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$wgReadOnly = &#039;This wiki is currently being upgraded to a newer software version.&#039;;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Preparing dump files for importing data to mysql==&lt;br /&gt;
====Making postgresql dump====&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;su - postgres&lt;br /&gt;
	pg_dump wikidb &amp;gt; /tmp/wikidb-pg.dump&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====Making temporary postgresql database looking like mysql====&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;su - postgres&lt;br /&gt;
	echo &amp;quot;CREATE DATABASE tmpdb ENCODING &#039;SQL_ASCII&#039; LC_COLLATE=&#039;C&#039; LC_CTYPE=&#039;C&#039; TEMPLATE=template0;&amp;quot; | psql&lt;br /&gt;
	psql tmpdb &amp;lt; /tmp/wikidb-pg.dump&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====SQL script modifying postgresql database====&lt;br /&gt;
For avoiding issues when importing data to mysql we need to modify mediawiki postgresql database so that it would look like mediawiki mysql database. Basically the script will make field order in pg tables like in mysql and will set non-NULL values to the fields that are not allowed to be NULL in mysql&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;/tmp/pg-prepare-for-mysql.sql&#039;&#039;&#039;&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;/* archive */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ar_id, ar_namespace, ar_title, ar_text, ar_comment, ar_user, ar_user_text, ar_timestamp, ar_minor_edit, ar_flags, ar_rev_id, ar_text_id, ar_deleted, ar_len, ar_page_id, ar_parent_id, ar_sha1, ar_content_model, ar_content_format FROM archive;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set ar_text = &#039;&#039; where ar_text is NULL;&lt;br /&gt;
update tmp_table set ar_comment = &#039;&#039; where ar_comment is NULL;&lt;br /&gt;
update tmp_table set ar_user = 0 where ar_user is NULL;&lt;br /&gt;
update tmp_table set ar_flags = &#039;&#039; where ar_flags is NULL;&lt;br /&gt;
ALTER TABLE archive RENAME TO orig_archive;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO archive;&lt;br /&gt;
&lt;br /&gt;
/* category */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select cat_id, cat_title, cat_pages, cat_subcats, cat_files FROM category;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE category RENAME TO orig_category;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO category;&lt;br /&gt;
&lt;br /&gt;
/* categorylinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select cl_from, cl_to, cl_sortkey, cl_sortkey_prefix, cl_timestamp, cl_collation, cl_type FROM categorylinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set cl_sortkey = &#039;&#039; where cl_sortkey is NULL;&lt;br /&gt;
ALTER TABLE categorylinks RENAME TO orig_categorylinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO categorylinks;&lt;br /&gt;
&lt;br /&gt;
/* change_tag (OK) */&lt;br /&gt;
&lt;br /&gt;
/* externallinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select el_id, el_from, el_to, el_index FROM externallinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE externallinks RENAME TO orig_externallinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO externallinks;&lt;br /&gt;
&lt;br /&gt;
/* filearchive (OK) */&lt;br /&gt;
&lt;br /&gt;
/* image */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select img_name, img_size, img_width, img_height, img_metadata, img_bits, img_media_type, img_major_mime, img_minor_mime, img_description, img_user, img_user_text, img_timestamp, img_sha1 FROM image;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set img_bits = 0 where img_bits is NULL;&lt;br /&gt;
update tmp_table set img_major_mime = &#039;&#039; where img_major_mime is NULL;&lt;br /&gt;
update tmp_table set img_minor_mime = &#039;&#039; where img_minor_mime is NULL;&lt;br /&gt;
ALTER TABLE image RENAME TO orig_image;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO image;&lt;br /&gt;
&lt;br /&gt;
/* imagelinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select il_from, il_from_namespace, il_to FROM imagelinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE imagelinks RENAME TO orig_imagelinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO imagelinks;&lt;br /&gt;
&lt;br /&gt;
/* interwiki */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select iw_prefix, iw_url, iw_api, iw_wikiid, iw_local, iw_trans FROM interwiki;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE interwiki RENAME TO orig_interwiki;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO interwiki;&lt;br /&gt;
&lt;br /&gt;
/* ipblocks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ipb_id, ipb_address, ipb_user, ipb_by, ipb_by_text, ipb_reason, ipb_timestamp, ipb_auto, ipb_anon_only, ipb_create_account, ipb_enable_autoblock, ipb_expiry, ipb_range_start, ipb_range_end, ipb_deleted, ipb_block_email, ipb_allow_usertalk, ipb_parent_block_id FROM ipblocks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set ipb_address = &#039;&#039; where ipb_address is NULL;&lt;br /&gt;
update tmp_table set ipb_user = 0 where ipb_user is NULL;&lt;br /&gt;
update tmp_table set ipb_range_start = &#039;&#039; where ipb_range_start is NULL;&lt;br /&gt;
update tmp_table set ipb_range_end = &#039;&#039; where ipb_range_end is NULL;&lt;br /&gt;
ALTER TABLE ipblocks RENAME TO orig_ipblocks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO ipblocks;&lt;br /&gt;
&lt;br /&gt;
/* iwlinks (OK) */&lt;br /&gt;
&lt;br /&gt;
/* job */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select job_id, job_cmd, job_namespace, job_title, job_timestamp, job_params, job_random, job_attempts, job_token, job_token_timestamp, job_sha1 FROM job;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE job RENAME TO orig_job;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO job;&lt;br /&gt;
&lt;br /&gt;
/* l10n_cache (OK) */&lt;br /&gt;
&lt;br /&gt;
/* langlinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ll_from, ll_lang, ll_title FROM langlinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set ll_lang = &#039;&#039; where ll_lang is NULL;&lt;br /&gt;
update tmp_table set ll_title = &#039;&#039; where ll_title is NULL;&lt;br /&gt;
ALTER TABLE langlinks RENAME TO orig_langlinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO langlinks;&lt;br /&gt;
&lt;br /&gt;
/* logging */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select log_id, log_type, log_action, log_timestamp, log_user, log_user_text, log_namespace, log_title, log_page, log_comment, log_params, log_deleted FROM logging;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set log_user = 0 where log_user is NULL;&lt;br /&gt;
update tmp_table set log_comment = &#039;&#039; where log_comment is NULL;&lt;br /&gt;
update tmp_table set log_params = &#039;&#039; where log_params is NULL;&lt;br /&gt;
ALTER TABLE logging RENAME TO orig_logging;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO logging;&lt;br /&gt;
&lt;br /&gt;
/* log_search (OK) */&lt;br /&gt;
&lt;br /&gt;
/* module_deps (OK) */&lt;br /&gt;
&lt;br /&gt;
/* msg_resource (OK) */&lt;br /&gt;
&lt;br /&gt;
/* msg_resource_links (OK) */&lt;br /&gt;
&lt;br /&gt;
/* objectcache */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select keyname, value, exptime FROM objectcache;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set keyname = &#039;&#039; where keyname is NULL;&lt;br /&gt;
ALTER TABLE objectcache RENAME TO orig_objectcache;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO objectcache;&lt;br /&gt;
&lt;br /&gt;
/* oldimage */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select oi_name, oi_archive_name, oi_size, oi_width, oi_height, oi_bits, oi_description, oi_user, oi_user_text, oi_timestamp, oi_metadata, oi_media_type, oi_major_mime, oi_minor_mime, oi_deleted, oi_sha1 FROM oldimage;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set oi_bits = 0 where oi_bits is NULL;&lt;br /&gt;
update tmp_table set oi_description = &#039;&#039; where oi_description is NULL;&lt;br /&gt;
update tmp_table set oi_user = 0 where oi_user is NULL;&lt;br /&gt;
update tmp_table set oi_major_mime = &#039;&#039; where oi_major_mime is NULL;&lt;br /&gt;
update tmp_table set oi_minor_mime = &#039;&#039; where oi_minor_mime is NULL;&lt;br /&gt;
ALTER TABLE oldimage RENAME TO orig_oldimage;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO oldimage;&lt;br /&gt;
&lt;br /&gt;
/* page */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select page_id, page_namespace, page_title, page_restrictions, page_is_redirect, page_is_new, page_random, page_touched, page_links_updated, page_latest, page_len, page_content_model, page_lang FROM page;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set page_restrictions = &#039;&#039; where page_restrictions is NULL;&lt;br /&gt;
/*update tmp_table set page_touched = &#039;&#039; where page_touched is NULL;*/&lt;br /&gt;
ALTER TABLE page RENAME TO orig_page;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO page;&lt;br /&gt;
&lt;br /&gt;
/* pagelinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select pl_from, pl_from_namespace, pl_namespace, pl_title FROM pagelinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE pagelinks RENAME TO orig_pagelinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO pagelinks;&lt;br /&gt;
&lt;br /&gt;
/* page_props (OK) */&lt;br /&gt;
&lt;br /&gt;
/* page_restrictions */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select pr_id, pr_page, pr_type, pr_level, pr_cascade, pr_user, pr_expiry FROM page_restrictions;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE page_restrictions RENAME TO orig_page_restrictions;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO page_restrictions;&lt;br /&gt;
&lt;br /&gt;
/* protected_titles */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select pt_namespace, pt_title, pt_user, pt_reason, pt_timestamp, pt_expiry, pt_create_perm FROM protected_titles;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set pt_user = 0 where pt_user is NULL;&lt;br /&gt;
/*update tmp_table set pt_expiry = &#039;&#039; where pt_expiry is NULL;*/&lt;br /&gt;
ALTER TABLE protected_titles RENAME TO orig_protected_titles;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO protected_titles;&lt;br /&gt;
&lt;br /&gt;
/* querycache (OK) */&lt;br /&gt;
&lt;br /&gt;
/* querycachetwo (OK) */&lt;br /&gt;
&lt;br /&gt;
/* querycache_info */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select qci_type, qci_timestamp FROM querycache_info;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set qci_type = &#039;&#039; where qci_type is NULL;&lt;br /&gt;
/* update tmp_table set qci_timestamp = &#039;&#039; where qci_timestamp is NULL; */&lt;br /&gt;
ALTER TABLE querycache_info RENAME TO orig_querycache_info;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO querycache_info;&lt;br /&gt;
&lt;br /&gt;
/* recentchanges (rc_cur_time was removed in 1.24wmf6) */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select rc_id, rc_timestamp, rc_user, rc_user_text, rc_namespace, rc_title, rc_comment, rc_minor, rc_bot, rc_new, rc_cur_id, rc_this_oldid, rc_last_oldid, rc_type, rc_source, rc_patrolled, rc_ip, rc_old_len, rc_new_len, rc_deleted, rc_logid, rc_log_type, rc_log_action, rc_params FROM recentchanges;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set rc_user = 0 where rc_user is NULL;&lt;br /&gt;
update tmp_table set rc_comment = &#039;&#039; where rc_comment is NULL;&lt;br /&gt;
update tmp_table set rc_cur_id = 0 where rc_cur_id is NULL;&lt;br /&gt;
/* update tmp_table set rc_ip = &#039;&#039; where rc_ip is NULL; */&lt;br /&gt;
ALTER TABLE recentchanges RENAME TO orig_recentchanges;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO recentchanges;&lt;br /&gt;
&lt;br /&gt;
/* redirect (OK) */&lt;br /&gt;
&lt;br /&gt;
/* revision */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select rev_id, rev_page, rev_text_id, rev_comment, rev_user, rev_user_text, rev_timestamp, rev_minor_edit, rev_deleted, rev_len, rev_parent_id, rev_sha1, rev_content_model, rev_content_format FROM revision;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set rev_page = 0 where rev_page is NULL;&lt;br /&gt;
update tmp_table set rev_text_id = 0 where rev_text_id is NULL;&lt;br /&gt;
update tmp_table set rev_comment = &#039;&#039; where rev_comment is NULL;&lt;br /&gt;
ALTER TABLE revision RENAME TO orig_revision;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO revision;&lt;br /&gt;
&lt;br /&gt;
/* searchindex (does not exists in pg) */&lt;br /&gt;
&lt;br /&gt;
/* sites (OK) */&lt;br /&gt;
&lt;br /&gt;
/* site_identifiers (OK) */&lt;br /&gt;
&lt;br /&gt;
/* site_stats */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ss_row_id, ss_total_edits, ss_good_articles, ss_total_pages, ss_users, ss_active_users, ss_images FROM site_stats;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE site_stats RENAME TO orig_site_stats;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO site_stats;&lt;br /&gt;
&lt;br /&gt;
/* tag_summary (OK) */&lt;br /&gt;
&lt;br /&gt;
/* templatelinks */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select tl_from, tl_from_namespace, tl_namespace, tl_title FROM templatelinks;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
ALTER TABLE templatelinks RENAME TO orig_templatelinks;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO templatelinks;&lt;br /&gt;
&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select old_id, old_text, old_flags FROM pagecontent;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set old_text = &#039;&#039; where old_text is NULL;&lt;br /&gt;
update tmp_table set old_flags = &#039;&#039; where old_flags is NULL;&lt;br /&gt;
ALTER TABLE pagecontent RENAME TO orig_pagecontent;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO pagecontent;&lt;br /&gt;
&lt;br /&gt;
/* transcache (OK) */&lt;br /&gt;
&lt;br /&gt;
/* updatelog (OK) */&lt;br /&gt;
&lt;br /&gt;
/* uploadstash */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select us_id, us_user, us_key, us_orig_path, us_path, us_source_type, us_timestamp, us_status, us_chunk_inx, us_props, us_size, us_sha1, us_mime, us_media_type, us_image_width, us_image_height, us_image_bits FROM uploadstash;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set us_user = 0 where us_user is NULL;&lt;br /&gt;
update tmp_table set us_key = &#039;&#039; where us_key is NULL;&lt;br /&gt;
update tmp_table set us_orig_path = &#039;&#039; where us_orig_path is NULL;&lt;br /&gt;
update tmp_table set us_path = &#039;&#039; where us_path is NULL;&lt;br /&gt;
/* update tmp_table set us_timestamp = &#039;&#039; where us_timestamp is NULL; */&lt;br /&gt;
update tmp_table set us_status = &#039;&#039; where us_status is NULL;&lt;br /&gt;
update tmp_table set us_size = 0 where us_size is NULL;&lt;br /&gt;
update tmp_table set us_sha1 = &#039;&#039; where us_sha1 is NULL;&lt;br /&gt;
ALTER TABLE uploadstash RENAME TO orig_uploadstash;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO uploadstash;&lt;br /&gt;
&lt;br /&gt;
/* user (in pg it is named mwuser)*/&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select user_id, user_name, user_real_name, user_password, user_newpassword, user_newpass_time, user_email, user_touched, user_token, user_email_authenticated, user_email_token, user_email_token_expires, user_registration, user_editcount, user_password_expires FROM mwuser;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set user_real_name = &#039;&#039; where user_real_name is NULL;&lt;br /&gt;
update tmp_table set user_password = &#039;&#039; where user_password is NULL;&lt;br /&gt;
update tmp_table set user_newpassword = &#039;&#039; where user_newpassword is NULL;&lt;br /&gt;
update tmp_table set user_token = &#039;&#039; where user_token is NULL;&lt;br /&gt;
update tmp_table set user_email = &#039;&#039; where user_email is NULL;&lt;br /&gt;
/* update tmp_table set user_touched = &#039;&#039; where user_touched is NULL; */&lt;br /&gt;
delete from tmp_table where user_id = 0;&lt;br /&gt;
ALTER TABLE mwuser RENAME TO orig_mwuser;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO mwuser;&lt;br /&gt;
/* it cannot be named &#039;user&#039;, like in mysql */&lt;br /&gt;
&lt;br /&gt;
/* user_former_groups */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ufg_user, ufg_group FROM user_former_groups;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set ufg_user = 0 where ufg_user is NULL;&lt;br /&gt;
ALTER TABLE user_former_groups RENAME TO orig_user_former_groups;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO user_former_groups;&lt;br /&gt;
&lt;br /&gt;
/* user_groups */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select ug_user, ug_group FROM user_groups;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set ug_user = 0 where ug_user is NULL;&lt;br /&gt;
ALTER TABLE user_groups RENAME TO orig_user_groups;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO user_groups;&lt;br /&gt;
&lt;br /&gt;
/* user_newtalk */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select user_id, user_ip, user_last_timestamp FROM user_newtalk;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set user_ip = &#039;&#039; where user_ip is NULL;&lt;br /&gt;
ALTER TABLE user_newtalk RENAME TO orig_user_newtalk;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO user_newtalk;&lt;br /&gt;
&lt;br /&gt;
/* user_properties */&lt;br /&gt;
CREATE VIEW tmp_view AS&lt;br /&gt;
 select up_user, up_property, up_value FROM user_properties;&lt;br /&gt;
SELECT * INTO tmp_table FROM tmp_view;&lt;br /&gt;
DROP VIEW tmp_view;&lt;br /&gt;
update tmp_table set up_user = 0 where up_user is NULL;&lt;br /&gt;
ALTER TABLE user_properties RENAME TO orig_user_properties;&lt;br /&gt;
ALTER TABLE tmp_table RENAME TO user_properties;&lt;br /&gt;
&lt;br /&gt;
/* valid_tag (OK) */&lt;br /&gt;
&lt;br /&gt;
/* watchlist (OK) */&lt;br /&gt;
&lt;br /&gt;
/* external_user (not needed) */&lt;br /&gt;
ALTER TABLE external_user RENAME TO orig_external_user;&lt;br /&gt;
&lt;br /&gt;
/* hitcounter (removed in MediaWiki 1.25) */&lt;br /&gt;
ALTER TABLE hitcounter RENAME TO orig_hitcounter;&lt;br /&gt;
&lt;br /&gt;
/* mediawiki_version  (&#039;Nobody actually uses it anymore, it just gets silently updated (and only for Postgres at that)&#039;) */&lt;br /&gt;
ALTER TABLE mediawiki_version RENAME TO orig_mediawiki_version;&lt;br /&gt;
&lt;br /&gt;
/* profiling (&#039;It&#039;s only used in an obscure debugging mode.&#039;) */&lt;br /&gt;
ALTER TABLE profiling RENAME TO orig_profiling;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* trackbacks (This feature was removed completely in version MediaWiki 1.19.) */&lt;br /&gt;
ALTER TABLE trackbacks RENAME TO orig_trackbacks;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;su - postgres&lt;br /&gt;
	psql tmpdb &amp;lt; /tmp/pg-prepare-for-mysql.sql&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====Making dump files for mysql import====&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;su - postgres&lt;br /&gt;
	mkdir /tmp/wikidb-pg-dump&lt;br /&gt;
	psql -d wikidb -c &amp;quot;SELECT table_schema || &#039;.&#039; || table_name FROM information_schema.tables WHERE table_type = &#039;BASE TABLE&#039; AND table_schema NOT IN (&#039;pg_catalog&#039;, &#039;information_schema&#039;);&amp;quot; &amp;gt; /tmp/t&lt;br /&gt;
	cat /tmp/t | grep mediawiki | sed &#039;s/ mediawiki.//g&#039; | sort &amp;gt; /tmp/pg-tables.txt&lt;br /&gt;
&lt;br /&gt;
	for t in `cat /tmp/pg-tables.txt`; do echo &amp;quot;dumping $t&amp;quot;; pg_dump -d tmpdb --data-only --inserts -t mediawiki.$t &amp;gt; /tmp/wikidb-pg-dump/$t.sql; done&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====Modifying dump files====&lt;br /&gt;
Postgresql specific sql should be removed&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;cd /tmp/wikidb-pg-dump&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET statement_timeout = 0;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET lock_timeout = 0;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &amp;quot;s/^SET client_encoding = &#039;SQL_ASCII&#039;;$//g&amp;quot; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET standard_conforming_strings = on;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET check_function_bodies = false;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET client_min_messages = warning;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &#039;s/^SET search_path = mediawiki, pg_catalog;$//g&#039; $f; done&lt;br /&gt;
for f in *.sql; do sed -i &amp;quot;s/^SELECT pg_catalog.setval(&#039;filearchive_fa_id_seq&#039;, 25, true);$//g&amp;quot; $f; done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Postgresql table &#039;&#039;&#039;mwuser&#039;&#039;&#039; corresponds to mysql table &#039;&#039;&#039;user&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;for f in *.sql; do sed -i &amp;quot;s/^INSERT INTO mwuser VALUES/INSERT INTO user VALUES/g&amp;quot; $f; done&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Postgresql table &#039;&#039;&#039;pagecontent&#039;&#039;&#039; corresponds to mysql table &#039;&#039;&#039;text&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;for f in *.sql; do sed -i &amp;quot;s/^INSERT INTO pagecontent VALUES/INSERT INTO text VALUES/g&amp;quot; $f; done&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Back slashes should be replaced with double backslashes&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;for f in *.sql; do sed -i &#039;s/\\/\\\\/g&#039; $f; done&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Timestamp format in postgresql is different from mysql (pg: &#039;2015-10-31 10:10:10+00&#039;, mysql: &#039;20151031101010&#039;). All timestamps should be converted to avoid errors like:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;... Language::sprintfDate: The timestamp should be a number&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;for f in *.sql; do sed -i &amp;quot;s/&#039;\([0-9][0-9][0-9][0-9]\)-\([0-9][0-9]\)-\([0-9][0-9]\) \([0-9][0-9]\):\([0-9][0-9]\):\([0-9][0-9]\)[+-][0-9][0-9]&#039;/&#039;\1\2\3\4\5\6&#039;/g&amp;quot; $f; done&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
In postgresql &#039;&#039;&#039;ipblocks&#039;&#039;&#039; table may contain records with duplicated field &#039;&#039;&#039;ipb_address&#039;&#039;&#039;. mysql requires that ipb_address field is unique.&lt;br /&gt;
Check manually &#039;&#039;&#039;ipblocks.sql&#039;&#039;&#039; file. Delete records with duplicated field &#039;&#039;&#039;ipb_address&#039;&#039;&#039; to prevent errors like:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;# ERROR 1062 (23000) at line 152: Duplicate entry &#039;xxxxxx-0-0-0&#039; for key &#039;ipb_address&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Cmd|vi ipblocks.sql}}&lt;br /&gt;
&lt;br /&gt;
==Preparing mysql database and wiki user ==&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;mysql -u root&lt;br /&gt;
	SET PASSWORD FOR &#039;root&#039;@&#039;localhost&#039; = PASSWORD(&#039;newpassword&#039;);&lt;br /&gt;
	SET PASSWORD FOR &#039;root&#039;@&#039;127.0.0.1&#039; = PASSWORD(&#039;newpassword&#039;);&lt;br /&gt;
	SET PASSWORD FOR &#039;root&#039;@&#039;::1&#039; = PASSWORD(&#039;newpassword&#039;);&lt;br /&gt;
	FLUSH PRIVILEGES;&lt;br /&gt;
	CREATE USER &#039;wikiuser&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;wikiuserpassword&#039;;&lt;br /&gt;
	GRANT ALL PRIVILEGES ON *.* TO &#039;wikiuser&#039;@&#039;localhost&#039; WITH GRANT OPTION;&lt;br /&gt;
	CREATE USER &#039;wikiuser&#039;@&#039;%&#039; IDENTIFIED BY &#039;wikiuserpassword&#039;;&lt;br /&gt;
	GRANT ALL PRIVILEGES ON *.* TO &#039;wikiuser&#039;@&#039;%&#039; WITH GRANT OPTION;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Setting up new mediawiki==&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;cd /var/www/wiki.wikiname.org/htdocs&lt;br /&gt;
wget http://releases.wikimedia.org/mediawiki/1.25/mediawiki-1.25.3.tar.gz&lt;br /&gt;
tar zxf mediawiki-1.25.3.tar.gz&lt;br /&gt;
mv mediawiki-1.25.3 w&lt;br /&gt;
rm mediawiki-1.25.3.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|vi index.php}}&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  header(&#039;Location: /wiki&#039;);&lt;br /&gt;
?&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open your wiki in browser http://wiki.wikiname.org, go through setup process (DB type:mysql, engin: innodb, charset: binary)&amp;lt;br&amp;gt;&lt;br /&gt;
Compare LocalSettings.php file generated by setup process with old mediawiki LocalSettings.php file&amp;lt;br&amp;gt;&lt;br /&gt;
Take needed settings from old LocalSettings.php&amp;lt;br&amp;gt;&lt;br /&gt;
Copy new LocalSettings.php into mediawiki directory /var/www/wiki.wikiname.org/htdocs/w&amp;lt;br&amp;gt;&lt;br /&gt;
Copy needed files from old mediawiki (images/*, extensions/..., resources/...)&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;cd /var/www/wiki.wikiname.org/htdocs/w&lt;br /&gt;
find . -type d &amp;gt; /tmp/d&lt;br /&gt;
while read d; do chmod 755 &amp;quot;$d&amp;quot;; done &amp;lt; /tmp/d&lt;br /&gt;
find . -type f &amp;gt; /tmp/f&lt;br /&gt;
while read f; do chmod 644 &amp;quot;$f&amp;quot;; done &amp;lt; /tmp/f&lt;br /&gt;
chown -R lighttpd:lighttpd .&lt;br /&gt;
cd /var/www/wiki.wikiname.org/htdocs/w&lt;br /&gt;
php maintenance/update.php # it will activate extensions and create needed tables in mysql db&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Clearing mysql tables before import==&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;mysql wikidb -uUSERNAME -pPASSWORD --default-character-set=utf8 -Bse &#039;show tables;&#039; &amp;gt; /tmp/t&lt;br /&gt;
for t in `cat /tmp/t`; do echo &amp;quot;TRUNCATE $t;&amp;quot;; done &amp;gt;/tmp/mysql-clear-tables.sql&lt;br /&gt;
mysql wikidb -uUSERNAME -pPASSWORD --default-character-set=utf8 &amp;lt; /tmp/mysql-clear-tables.sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Importing data into mysql==&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;for t in `cat /tmp/pg-tables.txt`; do echo &amp;quot;importing $t&amp;quot;; mysql wikidb -uUSERNAME -pPASSWORD --default-character-set=utf8 &amp;lt; /path/to/wikidb-pg-dump/$t.sql; done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Running maintenance scripts==&lt;br /&gt;
{{Cmd|php maintenance/update.php&lt;br /&gt;
php maintenance/rebuildrecentchanges.php&lt;br /&gt;
php maintenance/rebuildtextindex.php&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Regenerating cache==&lt;br /&gt;
Old cache in &#039;&#039;&#039;l10n_cache&#039;&#039;&#039; table may couse problems. It can be deleted and regenerated again.&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;echo &amp;quot;TRUNCATE l10n_cache;&amp;quot; | mysql wikidb -uUSERNAME -pPASSWORD --default-character-set=utf8&lt;br /&gt;
cd /var/www/wiki.wikiname.org/htdocs/w&lt;br /&gt;
php maintenance/rebuildLocalisationCache.php&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User:Slukin&amp;diff=11425</id>
		<title>User:Slukin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User:Slukin&amp;diff=11425"/>
		<updated>2015-11-13T12:13:14Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User:Slukin&amp;diff=11424</id>
		<title>User:Slukin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User:Slukin&amp;diff=11424"/>
		<updated>2015-11-13T11:51:06Z</updated>

		<summary type="html">&lt;p&gt;Slukin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User:Slukin&amp;diff=11423</id>
		<title>User:Slukin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User:Slukin&amp;diff=11423"/>
		<updated>2015-11-13T09:39:07Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User:Slukin&amp;diff=11422</id>
		<title>User:Slukin</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User:Slukin&amp;diff=11422"/>
		<updated>2015-11-13T09:38:05Z</updated>

		<summary type="html">&lt;p&gt;Slukin: Created page with &amp;quot;initial&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;initial&lt;/div&gt;</summary>
		<author><name>Slukin</name></author>
	</entry>
</feed>