TinyCoreLinux
简介
Tiny Core Linux (官网)是一个轻量级的Linux发行版,它以其小巧、灵活和高度定制化的特点而著称。
用最小的资源做最多的事:Tiny Core Linux软件管理技巧指南
Tiny core Linux 的安装使用与网络配置-优快云博客
安装
网易镜像: http://mirrors.163.com/tinycorelinux/
下载
登录 Tiny Core Linux 下载页面 网站,

- Core: 仅提供命令行界面的基本系统,因此仅建议有经验的用户使用。提供了命令行工具,以便可以添加扩展以创建具有图形桌面环境的系统。非常适合服务器、设备和自定义桌面。
- TinyCore: 是具有有线网络连接的新用户的推荐选项。它包括基本的核心系统以及用于动态FLTK / FLWM图形桌面环境的X / GUI扩展。
- CorePlus: 是安装映像,而不是发行版。建议只能访问无线网络或使用非美式键盘布局的新用户使用。它包括基本的核心系统和安装工具,为设置提供以下选项:7个窗口管理器的选择,通过许多固件文件和ndiswrapper的无线支持,非美国键盘支持和重新制作工具。
点击 Downloads, 下载TinyCore
安装
参考
安装使用TinyCore Linux的一些收获_PurpleEndurer@5lcto的技术博客_51CTO博客
Tiny core Linux 的安装使用与网络配置-优快云博客
配置
内存: 1G
CPU: 4
硬盘:2G


启动虚拟机

切换镜像源


打开 /opt/tcemirrors 编辑

将镜像源
http://repo.tinycorelinux.net
修改为网易镜像源
http://mirrors.163.com/tinycorelinux

返回保存退出,点击下面的Apps图标


点击 Yes 会自动更新镜像源


点击 OK 后,可以通过 UI 界面安装

在搜索框中输入 tc-install

tc: 这是Tiny Core Linux的控制台命令,用于管理系统的各个方面。通过tc命令可以执行一些常见任务,如安装/卸载应用程序,配置网络,管理用户等。tce-load和tce-unload: 用于安装和卸载应用程序和扩展。可以通过tce-load命令从Tiny Core Linux的应用程序仓库中安装应用程序,而tce-unload命令用于卸载已安装的应用程序。sudo: 用于以管理员身份运行命令。在Tiny Core Linux中,默认情况下不会使用root用户来执行命令,而是使用sudo命令来提升权限。ifconfig和iwconfig: 用于配置网络接口。ifconfig用于配置有线网络接口,而iwconfig用于配置无线网络接口。mount和umount: 用于挂载和卸载文件系统。通过mount命令可以将外部存储设备挂载到Tiny Core Linux中,而umount命令用于卸载已挂载的设备。apt-get和yum: 用于安装和管理软件包。尽管Tiny Core Linux没有内置的包管理器,但是可以通过安装特定的软件包管理工具,如apt-get或yum,来进行软件包的管理和安装。iptables: 用于配置防火墙规则。通过iptables命令可以对网络流量进行过滤和控制,以增强系统的安全性。
安装 tc-install-GUI

等待安装完成

安装完成,如下图所示

点击上图的标记1,弹出下图所示界面,然后依次点击下图的 标记2、标记3、标记4 进行安装

点击 上图 标记4后

点击 下一步

继续 下一步


点击 Proceed

等待安装完成,最好是先关闭、卸载镜像后重启,如果没有重启可能会影响后面的设置。
设置
安装ssh
tce-load -wi openssh

进入 /usr/local/etc/ssh 文件夹
cd /usr/local/etc/ssh
复制 sshd_config.orig 文件并命名为 sshd_config
sudo cp sshd_config.ort sshd_config

设置密码和开启 ssh 远程 root 登录权限
TinyCoreLinux默认是没有设置 tc 和 root 账号的密码
输入 passwd 设置 tc 的密码
passwd # 回车后输入两次密码
输入 sudo passwd root 设置 root 的密码
sudo passwd root # 回车后输入两次密码
开启 ssh远程 root 登录权限
sudo vi sshd_config
#PermitRootLogin prohibit-password # 修改为
PermitRootLogin yes
启动 ssh 服务
- 启动 ssh 服务(可以先不做,后面会把启动ssh加入到启动任务中),直接测通过ssh工具进行链接使用
sudo /usr/local/etc/init.d/openssh start

-
设置开机自动启动 ssh 服务
在bootlocal.sh增加ssh的启动命令
vi /opt/bootlocal.sh#!/bin/sh # put other system startup commands here sudo /usr/local/etc/init.d/openssh start
持久化
重启后上面的配置都会丢失,这是因为TinyCoreLinux是内存闪存系统,为保证系统的快速启动运行,所有数据都保存在内存中,所以当重启系统之后对系统的所有修改将被删除。因此需要指定一个tce目录,这样就会自动保存home和opt目录。默认情况下,关机的时候会调用backup utility保存你的文档和设置。backup utility会创建一个包含home和opt目录的压缩文档mydata.tgz。mydata.tgz保存在/tce目录,所以你只要你设定了tce目录,所有修改都将会自动保存。
关机前调用 backup utility.
另外:
/opt/.filetool.lst文件用户设定永久保存的文件或文件夹
/opt/bootlocal.sh文件用于系统启动后自动运行的命令
操作
编辑 /opt/.filefool.lst 文件
vim /opt/.filetool.lst
opt 和 home是文件中原有的,增加 /usr/local/etc/ssh、 /etc/passwd、 /etc/shadow.
opt
home
/usr/local/etc/ssh
/etc/passwd
/etc/shadow
调用 filetool.sh -b 将配置持久化,否则重启后配置就都丢失了。参考 tinycore5.3配置总结_tinycore ssh。
filetool.sh -b

使用tce命令
输入
tce

进入 tce 工具命令行模式, 输入 s 进程搜索界面

输出要搜索关键字,如输入 php 后回车,列出 php 相关的 tcz 包

输入 q 退出当前操作
Nginx安装与配置
安装
tce-load -wi nginx

配置
参考链接 轻量化Tiny Core Linux硬盘安装nginx+php+mysql
cd /usr/local/etc/nginx/
sudo cp original/nginx.conf.default nginx.conf
sudo cp original/fastcgi_params.default fastcgi_params
sudo cp original/mime.types.default mime.types
sudo mkdir /usr/local/html
sudo cp /usr/local/lib/nginx/html/index.html /usr/local/html
配置好启动
sudo /usr/local/etc/init.d/nginx start
系统提示

服务启动失败,需要改动一下nginx.conf文件,将access_log日志文件关闭或重新设置路径。运行命令:
sudo vim /usr/local/etc/nginx/nginx.conf
在http段中,加入 access_log off;来关闭日志文件

修改完毕后,再次启动服务,应该就可以正常启动了。
sudo /usr/local/etc/init.d/nginx start
查看 虚拟机的 IP 地址
ifconfig

在浏览器中输入
http://192.168.1.87

可以看到nginx的欢迎网页,说明nginx已经正常工作了。
开机自动启动nginx服务
sudo vi /opt/bootlocal.sh

添加、保存
sudo /usr/local/etc/init.d/nginx start
持久化
持久化nginx的配置与网页:因为Tiny Core Linux是加载到内存运行的,如果我们不做其它配置,当你重启你的虚拟时后,你会发现所有的nginx配置文件与网页都不见了。在 /opt/.filetool.list 文件中,将需要持久化的文件或文件夹加入到该文件中,在关闭系统时,Tiny Core Linux会自动保存这些文件,下次启动时再加载。
echo "usr/local/etc/nginx/nginx.conf" >> /opt/.filetool.lst
echo "usr/local/etc/nginx/mime.types" >> /opt/.filetool.lst
echo "usr/local/etc/nginx/fastcgi_params" >> /opt/.filetool.lst
echo "usr/local/html" >> /opt/.filetool.lst
调用 filetool.sh -b 将配置持久化。
filetool.sh -b
数据持久化的问题
在上面的安装过程中,文件大都存放在 /home,/usr/local 等文件夹中,其实这些文件夹都是被 Tiny Core Linux 加载到内存中的,所以当文件不多的时候问题还不大,如果文件增加后,特别是网站文件与数据库文件容量增大后,就会大量占用内存,会造成内存不足而出现不同的问题。所以我们需要考虑将网站与数据库直接存放在硬盘而不是内存中。在Tiny Core Linux中,第一个硬盘会挂载到 /mnt/sda1 ,我们可以直接将网站与数据库的文件夹存放在这个下面,这样就不会占用内存空间了。
网站文件夹迁移到硬盘
sudo cp -r /usr/local/html /mnt/sda1
sudo chmod 777 /mnt/sda1/html
sudo rm -r /usr/local/html
修改 nginx.conf 文件,将网站主目录改到 /mnt/sda1/html
sudo vim /usr/local/etc/nginx/nginx.conf

在 /opt/.filetool.lst 文件中,去除原来用于持久化的 /usr/local/html 的内容:
sudo vi /opt/.filetool.lst

删除后,保存文件,如果不删除的话,重启服务器会提示错误信息。
如果是全新安装的话,可以在上面安装过程中,网页直接使用新的 /mnt/sda1/ 中的路径,这样就可以直接将数据放在硬盘,同时网站持久化中 echo “usr/local/html” >> /opt/.filetool.lst 的这一条命令也不再需要执行。
配置虚拟主机
本地域名配置-host文件
本文 host 文件配置如下, 将 host 文件 C:/Windows/System32/drivers/etc 文件夹下
# 127.0.0.1 localhost
# ::1 localhost
192.168.1.87 wk.t15.cn
192.168.1.87 dc.t15.cn
192.168.1.87 www.t15.cn
192.168.1.87 wiki.t15.cn
192.168.1.87 vv.t15.cn
192.168.1.87 re.t15.cn
网站文件夹迁移硬盘
TC 系统还原后, 网站 html 文件还在 /usr/local 目录下,参考 开机自动启动nginx服务 - 网站文件夹迁移到硬盘,本次操作和上述差异是将将多个网站都部署在 webs 文件夹下,所以从头做了一边 html 迁移,可以快速略过这部分内容。
为了后续操作方便以及创建的文件夹、文件是 root 权限,先将用户切换到 root 并进入到 /mnt/sda1 磁盘的文件夹

在 /mnt/sda1 磁盘的文件夹中创建一个 webs 文件夹用于存放所有网站的站点。

cp -r /usr/local/html /mnt/sda1/webs
chmod 777 /mnt/sda1/webs/html
rm -rf /usr/local/html

进入 /usr/local/etc/nginx/ 修改 nginx.conf 文件
cd /usr/local/etc/nginx/
vim nginx.conf

将网站主目录改到 /mnt/sda1/webs/html

执行持久化,重启
filetool.sh -b

重启后登录 192.168.1.87

看到网站,配置正常
配置基于域名的虚拟主机
不修改原有的站(依旧以原有的方式访问),配置增加两个站点,域名分别是
dc.t15.cn
wk.t15.cn
进入 /mnt/sda1/webs 文件夹下,将 html 复制 dc.t15.cn 和 wk.t15.cn

修改 dc.t15.cn 文件下的 index.html 文件,内容如下

修改 wk.t15.cn 文件下的 index.html 文件,内容如下

修改 /usr/local/etc/nginx/nginx.conf 配置文件
vim /usr/local/etc/nginx/nginx.conf
注意,一定要在原有是 server {} 外加
server {
listen 80;
server_name dc.t15.cn;
location / {
root /mnt/sda1/webs/dc.t15.cn;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name wk.t15.cn;
location / {
root /mnt/sda1/webs/wk.t15.cn;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
执行持久化(需要退出 root 用户),重启
filetool.sh -b

访问的电脑 hosts 文件中添加 dc.t15.cn 和 wk.t15.cn 域名的本地解析,参考 本地域名配置-host文件
192.168.1.87 dc.t15.cn
192.168.1.87 wk.t15.cn
在浏览器中输入 192.168.1.87

原来的网站显示还是原来的,正确。
在浏览器中输入 dc.t15.cn

标题和内容都显示 dc.t15.cn,正确。
在浏览器中输入 wk.t15.cn

标题和内容都显示 wk.t15.cn,正确。
简化 nginx.conf 配置文件
当存在多个域名时,所有配置都写在 nginx.conf 主配置文件中,难免会显得杂乱与臃肿。为了方便配置文件的维护,所以需要进行拆分配置。
进入到 /usr/local/etc/nginx 文件下,创建 vhost 文件夹(root),用于存放多个域名的配置
cd /usr/local/etc/nginx
mkdir vhost

cd vhost
进程 vhost 文件夹,创建 web_dc.t15.cn.conf 文件,文件内容如下
server {
listen 80;
server_name dc.t15.cn;
location / {
root /mnt/sda1/webs/dc.t15.cn;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
创建 web_wk.t15.cn.conf 文件,文件内容如下
server {
listen 80;
server_name wk.t15.cn;
location / {
root /mnt/sda1/webs/wk.t15.cn;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
其实就是把 nginx.conf 主配置文件中虚拟主机的配置分别写在各自域名的配置文件中

修改 nginx.conf 主配置文件,使 vhost 文件下的配置生效
cd ..
vim nginx.conf
屏蔽掉 dc.t15.cn 和 wk.t15.cn 虚拟主机的服务,通过 include 引入 vhost 文件下的所有虚拟主机配置文件
include ./vhost/*.conf;

保存,退出后,进行持久化操作,输入
vim /opt/.filetool.lst

编辑 /opt/.filetool.lst 并添加 /usr/local/etc/nginx/vhost,保存并退出
执行持久化(需要退出 root 用户)
filetool.sh -b

为了能达到看到的效果,修改下 dc.t15.cn 和 wk.t15.cn 两个网站的 index.html 内容,内容中分别增加 Hello VHost:

保存,重启(因为网站的文件部署在硬盘中,不会因为重启消失)
在浏览器中输入 dc.t15.cn

可以看到在 dc.t15.cn 网站上增加 Hello VHost: 显示出来,正确
在浏览器中输入 wk.t15.cn

同样,也达到了效果,正确
反向代理
反向代理实例一
实现效果:使用 Nginx 反向代理,访问 wiki.t15.cn 直接跳转到 192.168.1.58:3000
进入 /usr/local/etc/nginx/vhost/ 文件夹下(前面已经配置过 nginx.conf 文件了,所以直接添加一个虚拟主机的方式),通过修改虚拟主机的内容如下
server {
listen 80;
server_name wiki.t15.cn;
location / {
root /mnt/sda1/webs/www;
index index.html index.htm;
proxy_pass http://192.168.1.58:3000; #主要是这句
}
}
如上配置,Nginx 监听 80 端口,访问域名为 wiki.t15.cn (不加端口号时默认为 80端口),故访问该域名时会跳转到 192.168.1.58:3000 路径上。
此处的意思为:nginx 反向代理服务监听 wiki.t15.cn 的80端口,如果有请求过来,则转到proxy_pass配置的对应服务器上,仅此而已。
在location下,同时配置root和proxy_pass选项时,两个选项只会二选一执行
此处不能配置https反向代理

实验结果:

反向代理实例二
实现效果:使用 Nginx 反向代理,根据访问的路径跳转到不同端口的服务中,Nginx 监听端口为 80
访问http://vv.t15.cn/wiki/直接跳转到 192.168.1.58:3000
访问http://vv.t15.cn/wtd/直接跳转到 192.168.1.81
第一步,需要准备两个 网站,一个 3000 端口,一个 80 端口,并准备好测试的页面
第二步,修改 nginx 的配置文件,在 http 块中配置 server
server {
listen 80;
server_name vv.t15.cn;
location ~ /wiki/ {
proxy_pass http://192.168.1.58:3000;
}
location ~ /wtd/ {
proxy_pass http://192.168.1.81;
}
}
根据上面的配置,当请求到达 Nginx 反向代理服务器时,会根据请求路径不同进行分发到不同的服务上。

实验结果
http://vv.t15.cn/wiki 和 http://vv.t15.cn/wtd 都没有起作用。

经实验,要求 目标网站 要有设置的url的路径,在目标网站上建立一个 ur 路径, 并创建一个 index.html 文件,内容如下
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>测试,url的反向代理!</title>
<style>
.container {
width: 60%;
margin: 10% auto 0;
background-color: #f0f0f0;
padding: 2% 5%;
border-radius: 10px
}
ul {
padding-left: 20px;
}
ul li {
line-height: 2.3
}
a {
color: #20a53a
}
</style>
</head>
<body>
<div class="container">
<h1>测试,url的反向代理功!</h1>
<h3>这是默认index.html,本页面由系统自动生成</h3>
<ul>
<li>修改内容,查看是否起作用了</li>
<li>删除</li>
<li>增加</li>
</ul>
</div>
</body>
</html>
在浏览器中测试是否能正常访问 ,如下图所示,正常的url中有一个 ur

修改代理配置如下
server {
listen 80;
server_name vv.t15.cn;
location ~ /ur/ { #这里增加了一个 ur 的路径
proxy_pass http://192.168.1.58:9070;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
}
location ~/wtd/ {
proxy_pass http://192.168.1.58:7099;
}
}
保存、持久化、重启
filetool.sh -b
sudo reboot
再次通过 vv.t15.cn/ur/index.html 访问,可以正常访问

配置重定向
在Nginx中配置重定向通常使用rewrite指令或者return指令。以下是一些常见的重定向场景和相应的配置示例:
永久重定向
重要语句 return 301
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
举例 ,创建 re_dc.conf 文件
sudo vim /usr/local/etc/nginx/vhost/re_dc.conf
文件内容如下
server {
listen 80;
server_name re.t15.cn;
return 301 http://dc.t15.cn$request_uri;
}
持久化和重启
filetool.sh -b
sudo reboot

重启后,打开浏览器,输入 re.t15.cn 然后回车


url路径被重新定向为 dc.t15.cn
临时重定向
重要语句 return 302
server {
listen 80;
server_name oldsite.com;
return 302 http://newsite.com$request_uri;
}
将非www重定向到www
重要语句 return 301
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
将www重定向到非www
重要语句 return 301
server {
listen 80;
server_name www.example.com;
return 301 http://example.com$request_uri;
}
根据条件重定向
server {
listen 80;
server_name example.com;
# 如果请求的是根目录,则重定向到/home
rewrite ^/$ /home redirect;
# 如果请求的是/oldpath,则重定向到/newpath
rewrite ^/oldpath$ /newpath redirect;
}
将HTTP重定向到HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
确保在修改Nginx配置后使用nginx -t命令测试配置文件的正确性,并使用service nginx reload或者systemctl reload nginx来重新加载配置。
location 指令说明
nginx入门教程:location_nginx的location-优快云博客
基本语法
该指令用于匹配 URL, 语法如下:
location [ = | ~ | ~* | ^~ | @] uri {
}
修饰符含义
-
/ : 通用匹配,匹配任何请求。如果没有其他匹配,则采用此配置块。
-
= : 精确匹配。如果请求URI与模式完全匹配,则采用此配置块。
用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求
-
~: 用于表示 uri 包含正则表达式,并且区分大小写
-
~*: 用于表示 uri 包含正则表达式,并且不区分大小写
-
*^~:前缀匹配。如果请求URI以模式开头,并且是最长的匹配,则采用此配置块。
用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求。字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location块中的正则 uri 和请求字符串做匹配。
-
@: 定义一个命名location区段,这些区段客户端无法直接访问,只能由Nginx内部产生的请求来访问,如try_files或error_page等。 用于定义内部子请求的处理规则
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识
server {
listen 80;
server_name example.com;
# 精确匹配 /images 路径
location = /images {
root /var/www/html;
}
# 所有以 / 开始的请求都会匹配这里的 location
location / {
root /var/www/html;
index index.html index.htm;
}
# 正则匹配以 .php 结尾的请求,区分大小写
location ~ \.php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 正则匹配以 .css 结尾的请求,不区分大小写
location ~* \.css$ {
root /var/www/html;
}
# 内部子请求 location
location @named_location {
root /var/www/html;
}
}
匹配顺序和优先级
当Nginx收到一个HTTP请求时,它会按照以下顺序进行location的匹配:
精确匹配:首先检查是否有使用=修饰符的精确匹配。如果有,则立即使用该location块处理请求,并停止搜索。
前缀匹配:如果没有精确匹配,则检查是否有使用^~修饰符的前缀匹配。如果有,且找到最长的匹配,则使用该location块处理请求,并停止搜索。
正则匹配:如果没有前缀匹配,则按照配置文件中的顺序从上到下依次进行正则匹配(或*)。一旦找到第一个匹配的正则表达式,则使用该location块处理请求,并停止搜索。
通用匹配:如果没有任何正则匹配,则使用使用/的通用匹配location块处理请求。
配置示例
server {
listen 80;
server_name example.com;
location = / {
# 只匹配 / 的查询
return 200 'Exact match for /';
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的查询,并停止搜索
return 200 'Match starts with /images/';
}
location ~ \.(gif|jpg|png)$ {
# 匹配任何以 gif, jpg, 或 png 结尾的文件
return 200 'Match for gif, jpg, or png';
}
location / {
# 匹配任何请求,作为默认匹配
return 200 'Default match';
}
}
在这个示例中:
- 访问 http://example.com/ 时,会返回 ‘Exact match for /’,因为存在精确匹配。
- 访问 http://example.com/images/logo.png 时,会返回 ‘Match starts with /images/’ ,因为 ^~ 修饰符导致Nginx停止搜索。
- 访问 http://example.com/docs/file.pdf 时,会返回 ‘Default match’ ,因为没有精确匹配、^~ 匹配或正则匹配(pdf不在指定的正则匹配范围内)。
- 访问 http://example.com/photos/image.jpg 时,会返回 ‘Match for gif, jpg, or png’ ,因为正则表达式匹配成功。
注意事项
- 正则表达式的书写:在使用正则匹配时,要特别注意正则表达式的书写,避免因为正则表达式书写错误而导致匹配失败。
- 匹配顺序和优先级:在配置多个 location 块时,要注意匹配顺序和优先级,确保Nginx能够正确地处理不同的HTTP请求。
- root 与 alias 的区别:如果在配置文件中使用了 root 指令来指定文件路径,要注意 root 指令与 alias 指令的区别。root 是最上层目录的定义,而 alias 是一个目录别名的定义。
高级用法
除了基本的URI匹配外,location 指令还可以与其他Nginx模块结合使用,实现更复杂的请求处理和分发逻辑。例如,结合 proxy_pass 指令可以将请求代理到后端服务器,结合 rewrite 指令可以进行URL重写等。
通过合理利用 location 指令及其修饰符,Nginx能够灵活地处理各种URL请求,实现高效的请求分发和路由控制。掌握 location 指令的路径匹配机制,对于优化Nginx配置、提升Web应用 性能 具有重要意义。
1万+

被折叠的 条评论
为什么被折叠?



