[转载]在16MB内存服务器上搭建Typecho博客

真的是高手在民间,以前见过32M内存的服务器搭建博客,博主自己也在64M内存搭建过,最近见到一个更极致的,只有16MB!基本上运行系统就不错了,别说数据库和PHP等程序的占用了,这篇文章也等于是给出了一个超小内存搭建博客的一个思路。顺便,16MB搭建博客只是折腾,真要搭建一个个人博客还是建议选择更高规格的服务器会更好。

本文由三篇文章组成,博主进行了整理!

博客演示地址:https://16mb.tw/

前言

昨天不知咋的逛到了32mb的网站上,突然想起了以前按照32mb的方法使用32MB小VPS搭建博客的日子,还是挺怀念的!

后来又想,在Proxmox中,最低的内存只允许到16MB,那么使用16MB内存的VPS是否可以搭建出一个个人博客呢?

于是,就有了康康这番闲得蛋疼的纯折腾!!!

系统安装

之前康康就说过撸了一台Hetzner的独服,所以呢,这次的操作就在这台独服上咯!

独服已安装好Proxmox环境,直接从官方提供的模板中就可以下载,大小才1.75MB,非常非常精简!

[转载]在16MB内存服务器上搭建Typecho博客

然后创建CT虚拟机(也就是LXC、OpenVZ),输入主机名称、root密码

[转载]在16MB内存服务器上搭建Typecho博客

选择LXC模板,这里康康用的不是Proxmox官方的,而是自己制作的,与Proxmox的区别就是康康把openssh给装上了,而Proxmox的没有安装,需要自己安装。

[转载]在16MB内存服务器上搭建Typecho博客

选择磁盘大小,这个看自己需求吧,反正我无需太多。

[转载]在16MB内存服务器上搭建Typecho博客

CPU核心,肯定只要1核心啊!

[转载]在16MB内存服务器上搭建Typecho博客

重头戏,内存设置,这里内存仅设置16MB,而交换分区为普通推荐值,内存的两倍32MB,其实交换分区设置为16MB也可以,不过康康试过,那样的话会导致处理速度过慢,访问效果不理想,所以这里还是设置了32MB

[转载]在16MB内存服务器上搭建Typecho博客

接着配置下网络,Hetzner的网络配置康康在上一篇文章里说过,这里就不重复了。

[转载]在16MB内存服务器上搭建Typecho博客

创建完成,可以看到虚拟机状况。

[转载]在16MB内存服务器上搭建Typecho博客

然后开机启动,接下来的操作就以命令行为主了!

环境搭建

由于使用的是Alpine系统,这系统实在是太迷你了,同时操作方式与平常大家所用的CentOSDebianUbuntu等还是有所区别,所以呢,这里就将的稍微详细点!

系统更新

Alpine初次使用得更新下,否则可能出现apk命令无法使用的问题,更新前可以配置下更新源,选择最近的更新源,这样速度能快点。

Alpine更新源列表:https://mirrors.alpinelinux.org/

更换更新源方法请参照中科大的说明:http://mirrors.ustc.edu.cn/help/alpine.html

系统更新:

apk update

安装PHP

接下来安装PHP,Alpine上目前支持的最高版本是PHP 7.1,可惜不是7.2,所以只能将就了,其中php7-curl默认无需安装,由于康康要使用LoveKKComment插件,所以要安装下。

apk add php7 php7-fpm php7-opcache php7-ctype php7-pdo_sqlite php7-session php7-curl

PHP7配置

PHP7的配置文件位于 /etc/php7/php.ini,咱们随便配置下。

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,咱们直接重新编写一个新文件。

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的安装也很简单,一条命令搞定:

apk add caddy

Caddy配置

Caddy的配置文件位于 /etc/caddy/caddy.conf,咱们简单配置下:

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

启动文件配置

由于康康在配置的时候指定了专门的目录来保存诸如pidsock等文件,以及日志的路径等等,若不对启动文件进行相应配置,那么就会导致启动、停止出现问题,所以咱们更改下启动文件。

首先是PHP的启动文件 /etc/init.d/php-fpm7,更改 pidfile="/data/run/php-fpm.pid"

然后是Caddy的启动文件 /etc/init.d/caddy,更改 pidfile="/data/run/caddy.pid"

接着把启动项目加入到系统自启动中:

rc-update add caddy
rc-update add php-fpm7

博客创建

环境已经搭建好,不过咱们的博客还没弄呢!

首先创建如下目录

mkdir -p /data/run
mkdir -p /data/log
mkdir -p /data/www

接着到www目录中下载Typecho安装包

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/

最后配置下目录权限

chown -R caddy:caddy /data/www

OK,环境搭建完成了,接下来的就是直接按照正常的流程进行博客安装即可!

添加supervisord进程守护避免Caddy挂掉

刚才上来看,发现caddy竟然挂掉了,于是决定增加个进程监控,避免因各种原因导致Web进程挂掉。

apk add supervisord
mkdir /etc/supervisor.d/

supervisord的配置文件位于 /etc/supervisord.conf,根据自己的需求更改下,默认也可以。

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

内存占用情况

[转载]在16MB内存服务器上搭建Typecho博客

[转载]在16MB内存服务器上搭建Typecho博客

一键脚本

为了方便以后的重复搭建,于是写了一个shell脚本,脚本功能就是将当前运行的系统转换为Alpine,并自动搭建Typecho运行环境。

所有优化等配置调整均以16MB内存作为参照,大内存需要自己调整。

脚本只是为了自己以后搭建方便,并不保证脚本的安全性,且仅在LXC环境下测试过,若使用此脚本出现的任何问题,康康不承担任何责任哦!

项目地址:https://git.wskehao.com/ylqjgm/Alpine

使用方法:

wget --no-check-certificate https://git.wskehao.com/ylqjgm/Alpine/raw/branch/master/alpine.sh && chmod +x alpine.sh && ./alpine.sh

关注博客Telegram频道,获取更多资讯:https://t.me/zrj96

本文来自一个神奇的小站,经授权后发布,本文观点不代表初行博客立场,转载请联系原作者。

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
zrj766zrj766
上一篇 2018年7月9日 02:26
下一篇 2018年8月22日 19:47

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

评论列表(9条)

  • 夏目贵志
    夏目贵志 2020年12月30日 15:21

    所以一键脚本 root 密码多少 尴尬啦~

    • zrj766
      zrj766 2020年12月30日 15:22

      @夏目贵志太老了,早就忘记了,小内存可以试试这个https://64mb.net/index.php/archives/44/

  • tvoo
    tvoo 2018年12月12日 23:11

    数据库怎么解决,异地数据库?

    • zrj766
      zrj766 2018年12月12日 23:13

      @tvoo作者没提,以前在64M搭建过,sqlite好一些,mysql这种占用太高。

  • 365cent
    365cent 2018年10月14日 12:51

    围观大佬

  • 企业搜索
    企业搜索 2018年10月6日 17:25

    http://www.websoso.cn 企业搜索软件 想和贵站做个友情链接

  • 康康
    康康 2018年9月2日 20:10

    你好,我是网站作者,因为目前域名已经更换了,是否能将文章中的域名也对应更换一下?
    原16mb.cf已更换为16mb.tw,原16mb.cf做了301跳转。
    是否能将本文中的16mb.cf更换为16mb.tw,谢谢了!