真的是高手在民间,以前见过32M内存的服务器搭建博客,博主自己也在64M内存搭建过,最近见到一个更极致的,只有16MB!基本上运行系统就不错了,别说数据库和PHP等程序的占用了,这篇文章也等于是给出了一个超小内存搭建博客的一个思路。顺便,16MB搭建博客只是折腾,真要搭建一个个人博客还是建议选择更高规格的服务器会更好。
本文由三篇文章组成,博主进行了整理!
博客演示地址:https://16mb.tw/
前言
昨天不知咋的逛到了32mb的网站上,突然想起了以前按照32mb的方法使用32MB小VPS搭建博客的日子,还是挺怀念的!
后来又想,在Proxmox中,最低的内存只允许到16MB,那么使用16MB内存的VPS是否可以搭建出一个个人博客呢?
于是,就有了康康这番闲得蛋疼的纯折腾!!!
系统安装
之前康康就说过撸了一台Hetzner
的独服,所以呢,这次的操作就在这台独服上咯!
独服已安装好Proxmox
环境,直接从官方提供的模板中就可以下载,大小才1.75MB,非常非常精简!
然后创建CT虚拟机(也就是LXC、OpenVZ),输入主机名称、root密码
选择LXC模板,这里康康用的不是Proxmox
官方的,而是自己制作的,与Proxmox
的区别就是康康把openssh
给装上了,而Proxmox
的没有安装,需要自己安装。
选择磁盘大小,这个看自己需求吧,反正我无需太多。
CPU核心,肯定只要1核心啊!
重头戏,内存设置,这里内存仅设置16MB
,而交换分区为普通推荐值,内存的两倍32MB
,其实交换分区设置为16MB
也可以,不过康康试过,那样的话会导致处理速度过慢,访问效果不理想,所以这里还是设置了32MB
。
接着配置下网络,Hetzner
的网络配置康康在上一篇文章里说过,这里就不重复了。
![[转载]在16MB内存服务器上搭建Typecho博客](http://www.yehes.com/wp-content/uploads/2018/09/16mb-proxmox-7.png)
创建完成,可以看到虚拟机状况。
然后开机启动,接下来的操作就以命令行为主了!
环境搭建
由于使用的是Alpine
系统,这系统实在是太迷你了,同时操作方式与平常大家所用的CentOS
、Debian
、Ubuntu
等还是有所区别,所以呢,这里就将的稍微详细点!
系统更新
Alpine
初次使用得更新下,否则可能出现apk
命令无法使用的问题,更新前可以配置下更新源,选择最近的更新源,这样速度能快点。
Alpine
更新源列表:https://mirrors.alpinelinux.org/
更换更新源方法请参照中科大的说明:http://mirrors.ustc.edu.cn/help/alpine.html
系统更新:
1
|
apk update
|
安装PHP
接下来安装PHP,Alpine
上目前支持的最高版本是PHP 7.1,可惜不是7.2,所以只能将就了,其中php7-curl
默认无需安装,由于康康要使用LoveKKComment
插件,所以要安装下。
1
|
apk add php7 php7–fpm php7–opcache php7–ctype php7–pdo_sqlite php7–session php7–curl
|
PHP7配置
PHP7的配置文件位于 /etc/php7/php.ini
,咱们随便配置下。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
cd /etc/php7
sed –i “s@^memory_limit.*@memory_limit = 2M@” php.ini
sed –i ‘s@^output_buffering =@output_buffering = On\noutput_buffering =@’ php.ini
sed –i ‘s@^;cgi.fix_pathinfo.*@cgi.fix_pathinfo=1@’ php.ini
sed –i ‘s@^short_open_tag = Off@short_open_tag = On@’ php.ini
sed –i ‘s@^expose_php = On@expose_php = Off@’ php.ini
sed –i ‘s@^request_order.*@request_order = “CGP”@’ php.ini
sed –i ‘s@^;date.timezone.*@date.timezone = Asia/Shanghai@’ php.ini
sed –i ‘s@^post_max_size.*@post_max_size = 100M@’ php.ini
sed –i ‘s@^upload_max_filesize.*@upload_max_filesize = 50M@’ php.ini
sed –i ‘s@^max_execution_time.*@max_execution_time = 600@’ php.ini
sed –i ‘s@^;realpath_cache_size.*@realpath_cache_size = 2M@’ php.ini
sed –i ‘s@^disable_functions.*@disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen@’ php.ini
|
fpm配置
php-fpm的配置文件位于 /etc/php7/php-fpm.conf
,咱们直接重新编写一个新文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
mv /etc/php7/php–fpm.conf /etc/php7/php–fpm.conf.bak
echo “[global]
pid = /data/run/php–fpm.pid
error_log = /data/log/php–fpm.log
log_level = warning
emergency_restart_threshold = 30
emergency_restart_interval = 60s
process_control_timeout = 5s
daemonize = yes
[www]
listen = /data/run/php–fpm.sock
listen.backlog = –1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 3
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 8192
pm.process_idle_timeout = 10s
request_terminate_timeout = 120
request_slowlog_timeout = 0
pm.status_path = /php–fpm_status
slowlog = /data/log/slow.log
rlimit_files = 1200
rlimit_core = 0
catch_workers_output = yes
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp” > /etc/php7/php–fpm.conf
|
OK,PHP就算是安装配置完成了,不过暂时别启动,稍等会儿~
安装Caddy
Caddy
是一款使用Go
语言编写的Web服务器,很好用,自带Let's Encrypt
的支持,同时非常精简,就一个文件,极度节省系统资源,在咱们这16MB的小内存系统上,肯定是使用它来代替其他Web服务器咯!
Caddy
的安装也很简单,一条命令搞定:
1
|
apk add caddy
|
Caddy配置
Caddy
的配置文件位于 /etc/caddy/caddy.conf
,咱们简单配置下:
1
2
3
4
5
6
7
8
9
10
|
echo “16mb.tw {
gzip
tls admin@lovekk.org
root /data/www
fastcgi / /data/run/php–fpm.sock php
rewrite {
if {path} not_match ^\/admin
to {path} {path}/ /index.php?{query}
}
}” > /etc/caddy/caddy.conf
|
启动文件配置
由于康康在配置的时候指定了专门的目录来保存诸如pid
、sock
等文件,以及日志的路径等等,若不对启动文件进行相应配置,那么就会导致启动、停止出现问题,所以咱们更改下启动文件。
首先是PHP
的启动文件 /etc/init.d/php-fpm7
,更改 pidfile="/data/run/php-fpm.pid"
然后是Caddy
的启动文件 /etc/init.d/caddy
,更改 pidfile="/data/run/caddy.pid"
接着把启动项目加入到系统自启动中:
1
2
|
rc–update add caddy
rc–update add php–fpm7
|
博客创建
环境已经搭建好,不过咱们的博客还没弄呢!
首先创建如下目录
1
2
3
|
mkdir –p /data/run
mkdir –p /data/log
mkdir –p /data/www
|
接着到www
目录中下载Typecho
安装包
1
2
3
4
5
6
7
8
|
cd /data/www/
wget http://typecho.org/downloads/1.1–17.10.30–release.tar.gz
tar zxf 1.1–17.10.30–release.tar.gz
rm –f 1.1–17.10.30–release.tar.gz
cd build/
mv * ../
cd ..
rm –rf build/
|
最后配置下目录权限
1
|
chown –R caddy:caddy /data/www
|
OK,环境搭建完成了,接下来的就是直接按照正常的流程进行博客安装即可!
添加supervisord进程守护避免Caddy挂掉
刚才上来看,发现caddy竟然挂掉了,于是决定增加个进程监控,避免因各种原因导致Web进程挂掉。
1
2
|
apk add supervisord
mkdir /etc/supervisor.d/
|
supervisord的配置文件位于 /etc/supervisord.conf
,根据自己的需求更改下,默认也可以。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
echo “[program:php]
user=root
command=/usr/sbin/php–fpm7 —nodaemonize —fpm–config /etc/php7/php–fpm.conf
startsecs=10
startretries=100
autorstart=true
autorestart=true” > /etc/supervisor.d/php.ini
echo “[program:caddy]
user=root
command=/usr/sbin/caddy –conf /etc/caddy/caddy.conf –log /data/log/caddy.log –agree
startsecs=10
startretries=100
autorstart=true
autorestart=true” > /etc/supervisor.d/caddy.ini
|
内存占用情况
一键脚本
为了方便以后的重复搭建,于是写了一个shell
脚本,脚本功能就是将当前运行的系统转换为Alpine
,并自动搭建Typecho
运行环境。
所有优化等配置调整均以16MB内存作为参照,大内存需要自己调整。
脚本只是为了自己以后搭建方便,并不保证脚本的安全性,且仅在LXC环境下测试过,若使用此脚本出现的任何问题,康康不承担任何责任哦!
项目地址:https://git.wskehao.com/ylqjgm/Alpine
使用方法:
1
|
wget —no–check–certificate https://git.wskehao.com/ylqjgm/Alpine/raw/branch/master/alpine.sh && chm
|
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!