http://blog.matchgenius.com/tinycore-nginx-server-with-php-cgi-and-vsftpd/
Create fast testing server with TinyCore. I will be using Microcore (8MB) that resides in RAM and 500MB disk drive for persistence. TinyCore Nginx server with php-cgi and vsftpd can be used for for various testing purposes. My setup will be using another box for mysql. Assuming that you have TinyCore Microcore already installed on hard drive lets proceed to installing nginx. My Tiny Core is already installed and I can ssh to it from local machine.
#1: Install Nginx server
From terminal access application browser and search for nginx.
1
|
tce-ab
|
Select nginx.tcz and install. Press 2 then q and i to install. Along with Nginx other dependencies will be downloaded automatically: readline.tcz and pcre.tcz.
#2: Install php5
While you still inside application browser press s to search and type php5. Select php5.tcz and install. Installation will take a little longer because there are a lot more dependencies.
#3: Install vsftpd
Repeat the same installation process for vsftpd. s type vsftpd. Select vsftpd.tcz or if you want to use ssl version vsftpd-ssl.tcz and install.
#4: Copy configuration files
Copy default nginx.conf file to /usr/local/etc and edit it.
1
|
sudo
cp/usr/local/nginx.conf.default/usr/local/etc/nginx.conf
|
Copy mime.types to /usr/local/etc
1
|
sudo
cp/usr/local/mime.types/usr/local/etc/mime.types
|
Copy fastcgi_params to /usr/local/etc
1
|
sudo
cp/usr/local/fastcgi_params/usr/local/etc/fastcgi_params
|
Create symbolic link to libodbc.so.1 (In my case php-cgi fails to load without it)
1
|
sudo
ln-s/usr/local/lib/libodbc.so/usr/local/lib/libodbc.so.1
|
Create nginx php-cgi startup script in /usr/local/etc/init.d/nginx . I modified my OpenSSH startup script like that:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#!/bin/sh
# nginx php-cgi start script
[$(id-u)=0]||{echo"must be root";exit1;}
start(){
[-f/usr/local/etc/nginx.conf]||{echo"Config file
/usr/local/etc/nginx.conf not found";exit1;}
# Load nginx
server
echo-n"Starting
nginx php-cgi"
/usr/local/sbin/nginx-c/usr/local/etc/nginx.conf
# Load php-cgi server
/usr/local/bin/php-cgi-b127.0.0.1:9000&
}
stop(){
echo"Stopping
nginx"
kill$(pidof nginx)
ifpidof php-cgi>/dev/null;then
echo-n"Stopping php-cgi"
kill$(pidof php-cgi)
fi
}
restart(){
ifpidof nginx>/dev/null;then
stop&&start
else
start
fi
}
case$1in
start)start;;
stop)stop;;
restart)restart;;
*)echo"Usage
$0 {start|stop|restart}";exit1
esac
|
#5: Edit nginx.conf
Edit /usr/local/etc/nginx.conf and make changes inside http{ server{ location / index index.php
1
2
3
4
5
6
7
8
9
10
11
12
|
server{
listen 80;
server_name localhost;
#charset
koi8-r;
#access_log logs/host.access.log main;
location/{
root html;
index index.htmlindex.htmindex.php;
}
|
On the bottom of the same file uncomment whats under pass the PHP scripts to FastCGI
1
2
3
4
5
6
7
8
9
|
#
pass the PHP scripts to FastCGI server listening on
127.0.0.1:9000
#
location~\.php${
root
/usr/local/html;
fastcgi_pass
127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/html$fastcgi_script_name;
include fastcgi_params;
}
|
#6: Edit vsftpd.conf
Configure /usr/local/etc/vsftpd.conf file. You can tweak it as you like and add more things but I will keep it basic for now. Make sure this settings are present.
1
2
3
4
5
|
anonymous_enabled=NO
local_enable=YES
local_umask=002
connect_from_port_20=YES
local_root=/usr/local/html
|
#7: Create test index.php
Just so you can test your server lets create simple page to test if php is working.
1
|
sudo
vi/usr/local/html/index.php
|
1
2
3
4
5
6
7
8
9
|
<?php
$myvar="Tiny
Core simple server test";
?>
<html>
<head><title>TinyCoreserver</title></head>
<body>
<h2><center><?phpecho$myvar;?></center></h2>
</body>
</html>
|
#8: Tiny Core persistence save
All configuration will be lost if we reboot the server so lets make it
persistent.
Edit /opt/.filetool.lst
1
|
sudo
vi/opt/.filetool.lst
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
opt
home
/etc/hostname
/etc/passwd
/etc/shadow
/usr/local/etc/ssh
/usr/local/etc/nginx.conf
/usr/local/etc/mime.types
/usr/local/html/
/usr/local/etc/init.d/nginx
/usr/local/etc/fastcgi_params
/usr/local/lib/libodbc.so.1
/usr/local/etc/vsftpd.conf
|
Edit /opt/bootlocal.sh
1
|
sudo
vi/opt/bootlocal.sh
|
1
2
3
4
5
|
#!/bin/sh
# put other system startup commands here
/usr/local/etc/init.d/openssh start
/usr/local/etc/init.d/nginx start
/usr/local/sbin/vsftpd
|
Add auto bakup before server shutdown in /opt/shutdown.sh
1
|
sudo
vi/opt/shutdown.sh
|
1
2
3
4
5
|
#!/bin/sh
# put user shutdown commands here
/usr/bin/filetool.sh-b
...
|
Save your files to backup
1
|
sudo
filetool.sh-b
|
Now you should be ready for reboot and test.
#9: TinyCore Nginx server test connect from outside
In my setup before I can connect to my TinyCore I have to add NAT in my firewall. Depending on your situation you may have to do it as well. Make sure nothing is blocking your connection. Because Im connecting through middle server that is OpenBSD im going to add NAT in my pf.conf file. Im going to open port 80 for Nginx and 20 and 21 for vsftpd.
1
2
3
4
5
|
$external_nic="re0"
$mylaptop="192.168.0.2"
$tinycore_server="10.10.0.2"
passinon$external_nicprototcpfrom$mylaptoptoanyport80rdr-to$tinycore_server
passinon$external_nicprototcpfrom$mylaptoptoanyport{20,21}rdr-to$tinycore_server
|
Web server test:
1
2
|
lynx
http://192.168.0.10
-dump
Tiny Core simple server test
|
FTP server test:
1
2
3
4
5
6
7
8
9
|
ftp
tc@192.168.0.10
Connected to192.168.0.10.
220(vsFTPd2.3.5)
331Please specify the password.
Password:
230Login successful.
Remote
system typeisUNIX.
Using binary mode totransfer
files.
ftp>
|
TinyCore Nginx server with php-cgi and vsftpd,布布扣,bubuko.com