完成上篇Wordpress,现在搭建集群下单个宝塔
目的:用阿里云ASK,部署宝塔国际版docker镜像aapanel启动容器,然后mount数据卷,除了宝塔安装目录www,其他一些可挂载的系统目录,都挂载到极速型NAS盘,还能正常安装nodejs,能正常配置root bash,正常修改并保存宝塔设置(并部部署一个hexo静态站),除了不能docker宝塔内再部署docker,和需要deamon或重启启动的参数,如PM2等,其他都和VM的宝塔差不多,目前k8s的容器启动不允许最高特权--privilege=true,但是我们可以写个启动执行脚本,pod启动后sleep个十几秒再运行外挂的外部脚本。
有了前四篇的学习和部署,我们快速的部署一个接近可自由配置的宝塔面板。
部署宝塔国际版aapanel(免注册登录)
拉取aapanel的lnmp标签的镜像来到本地,修改tag,上传到阿里云容器镜像服务。
创建namespace:aapanel
部署无状态aapanel,镜像registry-***.aliyuncs.com/我的空间/ckl-aapanel标签:lnmp,2核4GB
新增端口:20 21 22 80 443 888 3306 7800
增加NAS:
名称:base-aapanel
NAS地址:***.cn-hongkong.extreme.nas.aliyuncs.com
主机路径:/base/aapanel/www
(宝塔下创建文件夹 /mntNAS/base/aapanel/www)
容器路径:/www/wwwroot
下一步创建【服务】,选择【负载均衡】【私网访问】,选择【新建SLB】,这样会在阿里云负载均衡CLB(SLB)自动创建一个实例,之后我们用EIP弹性IP绑定,用来外网访问宝塔面板。外部流量策略选择【Cluster】
端口用到谁开谁,我只开了7800(aapanel国际版宝塔面板端口),443和80
创建后等一会儿,先去负载均衡那里,看到新的SLB实例ID:lb-3************z
创建一个香港EIP,线路类型:BGP(多线)_精品,带宽峰值:200Mbps
绑定新建的SLB,ip举例:***.123.123.***
回到集群-网络-服务,增加aapanel-svc阿里云注解:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port值:https:443,http:80,tcp:7800
记得点右侧【添加】
无状态里进入aapanel这个pod,点击终端进入容器,输入bt 14,显示宝塔细节:
aaPanel default info!aaPanel Internet Address:
http://*.*.*.*:7800/aapanelaaPanel Internal Address:
http://*.*.*.*:7800/aapanel
username: aapanel
password: f4fasd14
这里的ip都不是我们要访问的,我们使用EIP加端口访问
http://*.123.123.*:7800/aapanel
用户名是aapanel,但密码是aapanel123
请忽略password: f4fasd14
且默认root密码也是aapanel123
至此我们登陆进去了aapanel,但是还有很多事情要做:
我们要把大部分的系统目录搬到NAS挂载的/mntNAS/base/aapanel/www目录下
用控制机宝塔创建文件夹 /mntNAS/base/aapanel/www/aapanel-sys
进入pod容器终端,ls /www/wwwroot/ 可以看到aapanel-sys这个文件夹
现在把aapanel-sys想象成根目录。
创建/mntNAS/base/aapanel/www/aapanel-sys/www
cp -a /www/backup/ /www/wwwroot/aapanel-sys/www/
cp -a /www/server/ /www/wwwroot/aapanel-sys/www/
cp -a /www/wwwlogs/ /www/wwwroot/aapanel-sys/www/
cp -a /www/disk.pl /www/wwwroot/aapanel-sys/www/
此时的宝塔安装在容器里/www的全部文件,都被我们复制到了NAS盘
最后别忘了创建空文件夹 /mntNAS/base/aapanel/www/aapanel-sys/www/wwwroot
别急,还有几个容器内的系统目录需要拷贝到NAS,这样未来才方便安装其他软件(某些)
cp -a /home/ /www/wwwroot/aapanel-sys/
cp -a /root/ /www/wwwroot/aapanel-sys/
cp -a /run/ /www/wwwroot/aapanel-sys/
cp -a /srv/ /www/wwwroot/aapanel-sys/
cp -a /usr/ /www/wwwroot/aapanel-sys/
cp -a /var/ /www/wwwroot/aapanel-sys/
cp -a /opt/ /www/wwwroot/aapanel-sys/
cp -a /etc/ /www/wwwroot/aapanel-sys/
退出终端,重新剪辑pod,将复制到NAS的系统目录都挂上去
base-aapanel *** /base/aapanel/www/aapanel-sys/www /www
home *** /base/aapanel/www/aapanel-sys/home /home
root *** /base/aapanel/www/aapanel-sys/root /root
run *** /base/aapanel/www/aapanel-sys/run /run
srv *** /base/aapanel/www/aapanel-sys/srv /srv
usr *** /base/aapanel/www/aapanel-sys/usr /usr
var *** /base/aapanel/www/aapanel-sys/var /var
opt *** /base/aapanel/www/aapanel-sys/opt /opt
etc *** /base/aapanel/www/aapanel-sys/etc /etc
保存后重新部署,再次登录
http://*.123.123.*:7800/aapanel
现在修改安全入口,面板用户密码进入App Store,Tools,安装Linux Tools和Log Cleanup
打开Linux Tools,时区改成上海,root密码修改成自己的
点击Terminal标签,用新密码登录shell
面板首页升级面板,从6.8.24,升级到6.8.25Monitor
监控,打开Security打开需要的端口
Cron计划任务,添加一个清理内存的cron
PHP安装扩展插件
记得在Database标签,点击Root password,submit提交新的密码,mysql才能用
回到阿里云集群,重新部署,再次登录宝塔aapanel,验证刚才的修改都已保存。
下一步安装nodejs
在本集群宝塔aapanel的App Store下安装Node.js version manager
安装LTS ver的最新版,如v16.16.0
可以在环境看到:init.module = /www/server/nodejs/v16.16.0/etc/init-module.js
进入终端查看bin并进行软链接,查看版本:
ls /www/server/nodejs/v16.16.0/bin/
yum install nano
ln -s /www/server/nodejs/v16.16.0/bin/node /usr/bin/node
ln -s /www/server/nodejs/v16.16.0/bin/npm /usr/bin/npm
ln -s /www/server/nodejs/v16.16.0/bin/npx /usr/bin/npx
ln -s /www/server/nodejs/v16.16.0/bin/yarn /usr/bin/yarn
node -v
npm -v
npx -v
yarn -v
不要安装或者尝试使用pm2,在docker里的pm2或者再安装docker不好用。
另外,为了集群宝塔外部ip安全,建立一个 某子域名.wuushu.cn 并将A记录指向该ip
config改成:
server
{
listen 80 default_server;
listen 443 default_server;
server_name 外部ip;
return 444;
index index.php index.html;
#root /www/wwwroot/某子域名.wuushu.cn;
#SSL-START SSL related configuration, do NOT delete or modify the next line of commented-out 404 rules
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START Error page configuration, allowed to be commented, deleted or modified
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP reference configuration, allowed to be commented, deleted or modified
include enable-php-00.conf;
#PHP-INFO-END
#REWRITE-START URL rewrite rule reference, any modification will invalidate the rewrite rules set by the panel
include /www/server/panel/vhost/rewrite/某子域名.wuushu.cn.conf;
#REWRITE-END
# Forbidden files or directories
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
# Directory verification related settings for one-click application for SSL certificate
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log off;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log off;
}
access_log /www/wwwlogs/某子域名.wuushu.cn.log;
error_log /www/wwwlogs/某子域名.wuushu.cn.error.log;
}
aapanel里建立一个hexo.wuushu.cn的静态站
使用 npm 安装 Hexo
cd /www/wwwroot/hexo.wuushu.cn
npm install -g hexo-cli --no-fund
ln -s /www/server/nodejs/v16.16.0/bin/hexo /usr/bin/hexo
hexo init hexowuushucn
cd hexowuushucn
npm install --no-fund
hexo clean
hexo g
生成了静态public文件夹将网站目录指向/www/wwwroot/hexo.wuushu.cn/hexowuushucn/public
cd themes/
git clone https://github.com/blinkfox/hexo-theme-matery.git
cd ..
npm i --save hexo-wordcount --no-fund
nano _config.yml
在theme: 改成hexo-theme-matery
修改文件_config.yml内如url等配置
如https://hexo.wuushu.cn/archives访问不了,是需要修改:
nano themes/hexo-theme-matery/_config.yml
要将archives后面加上archives/index.html
hexo clean
hexo g
ASK-ALLINONE集群的命名空间aapanel下,网路-路由,创建ALB Ingress
名称:hexo-aapanel-albingress
域名:hexo.wuushu.cn
路径:/*
服务信息:aapanel-svc 端口80
勾选开启TLS
自定义注解:alb.ingress.kubernetes.io/ssl-redirect 为 true
测试hexo.wuushu.cn可以正常访问。