极致精简,图文讲解在16M内存系统上搭建Typecho博客!

演示

演示站地址:https://16mb.tw

由于VPS搭建在德国服务器上,线路问题,打开可能会较慢。

前言

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

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

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

系统安装

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

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

01.jpg

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

02.jpg

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

03.jpg

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

04.jpg

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

05.jpg

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

06.jpg

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

07.jpg

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

08.jpg

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

环境搭建

由于使用的是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@usebsd.com
  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,环境搭建完成了,接下来的就是直接按照正常的流程进行博客安装即可!

内存占用情况

09.jpg

10.jpg

最后修改:2019 年 04 月 27 日 07 : 39 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论

4 条评论

  1. 云武

    ERROR: [pool www] cannot get uid for user 'www'

    Alpine:~# groupadd www
    groupadd: group 'www' already exists
    Alpine:~# useradd -g www www
    useradd: user 'www' already exists

    咋整?

    1. 康康
      @云武

      你www账号已经存在了啊

      1. 云武
        @康康

        情况是这样的:我用PVE搭建alpine,然后教程里的直接复制粘贴,最后修改下 pid,sock路劲,但是无法访问,不知道哪里出问题了

        1. 康康
          @云武

          你可以试试用一键脚本,不过这个是之前的老的,我的站建好之后没动过,不清楚是否还能用,但基本改动不会大,应该是能用的
          https://github.com/ylqjgm/Alpine