深深的蓝
深蓝个人网站

RouterOS容器安装WordPress全记录

RouterOS容器安装Linux+Nginx+Mysql+PHP完整网站

RouterOS是一个强大的软路由系统,自7.4版后就开始支持Container(也就是Docker)功能,这就给Router OS提供了更多的想象空间。也让我们这次可以通过Docker功能来实现完整网站的功能。

  • 升级RouterOS软路由
    1. 将系统升级到最新的系统。
    2. 打开Mikrotik的官方网站:https://mikrotik.com/download,下载X86的扩展包
    3. 将压缩包中的container.7.xx.npk扩展包,上传到ROS根目录中,然后重启ROS
    4. 重启后,使用WINBOX登录ROS,左侧主菜单中出现Container,就说明Docker的扩展包已经安装成功。
    5. Container容器安装后,默认是关闭的,需要我们开启,打开WINBOX中的终端,运行以下命令:
      /system/device-mode/update container=yes

      命令运行后,需要直接关闭ROS的电源,进行一次硬重启。(不能使用WINBOX中的重启或关闭功能)重启完成后,可以在终端中使用命令来查看容器功能是否已经开启。
      /system/device-mode/print
      如果显示为 container:yes即说明已经开启成功。
  • 创建Docker网络
    1. 创建一个虚拟的接口veth1,IP地址为 172.17.0.2/24,网关172.17.0.1
    2. 创建一个docker的桥接网络,然后将veth1加入该网络

    3. 给docker桥接网络设置一个IP地址172.17.0.1/24,也就是docker网络的网关
    4. 设置docker的NAT映射(如果已经做好了全网的NAT映射,就不需要做这一步)
  • 安装LNMP的Docker镜像

网上可以找到的LNMP容器镜像一般都分为几个不同的包,这样在安装时就会加大困难,所以本人就自己制作了一个Nginx+Mysql+PHP合一的整合包,方便安装,在Docker上的名称为:yhssdl/lnmp,现在容器的安装因为被墙造成安装失败的情况非常普遍,所以也可以直接在蓝奏云上下载容器镜像包:https://ssdl.lanzouj.com/i1tei2bssyti
镜像情况说明:

采用Nginx 容器作为基础,首次运行时使用脚本来安装Mysql+PHP。

/etc/nginx/conf.d/www.conf为网站默认配置文件。

环境变量:MYSQL_ROOT_PASSWORD用于指定Mysql的root账号的密码。

环境变量:MYSQL_DATABASE用于指定创建的数据库名称。

环境变量:MIRRORS_USTC不为空时,使用中科大的软件源。

    1. 设置RouterOS中Container的配置

      如果是在国内,现在使用这个URL一般会被墙,那就可以直接下载镜像包来安装,将下载的lnmp.tar镜像包上传到RouterOS根目录中。
    2. 创建相应的环境变量
    3. 创建挂载目录,主要用于数据持久化
    4. 创建LNMP容器,如果国内Docker被墙,可以使用File:lnmp.tar创建容器,否则直接使用yhssdl/lnmp来远程下载镜像创建容器。
    5. 创建完成后,可以点击Start来启动容器,状态显示为runing则说明运行正常。
    6. 运行成功后,使用容器IP访问,应该可以看到phpinfo的内容
    7. 外网需要访问的话,需要创建端口映射,先创建外网的地址列表WAN_IP,用于端口映射

      如果是PPPOE拨号的动态IP,可以先设置为127.0.0.1,后面使用脚本实时更新该地址。

      第一个页面设置后,切换到Action页面,按下面设置。
    8. 动态域名及WAN_IP的实时更新
      • 动态域名申请:在https://now-dns.com/网站上注册一个账号,登录后就可以创建免费的动态域名。
      • 动态域名脚本,红色字体的内容根据情况修改:
# now-dns.com 动态域名脚本
:local NowUser "账号邮箱"
:local NowPass "账号密码"
:local NowHost1 "xxx.ownip.net"
:local dnsurl "https://now-dns.com/update\3F"
# PPPOE 名称,根据情况修改
:local pppoe "pppoe-out1"
:local ipaddr [/ip address get [/ip address find interface=$pppoe] address]
:set ipaddr [:pick $ipaddr 0 ([len $ipaddr] -3)]
:global wanip
:if ($ipaddr != $wanip) do={
  /ip firewall address-list set [/ip firewall address-list find list="WAN_IP"] address=$ipaddr
  :local result [/tool fetch url=($dnsurl . "hostname=$NowHost1") user=$NowUser password=$NowPass mode=https as-value output=user];
  :if ($result->"status" = "finished") do={
    :set wanip $ipaddr
    :if ($result->"data" = "\"good\"") do={
      :log war ("域名解析成功:".$wanip)
      } else={
      :if ($result->"data" = "\"nochg\"") do={
        :log war ("域名IP无变化:".$wanip)
      } else={
        :log error "域名解析失败。";
      }
    }
  }
}
      • PPPOE连接后自动运行脚本更新域名
      • 定时调用动态域名脚本(双保险,保证域名IP能及时更新)
  • WordPress 博客系统安装
    1. 在容器中安装ssh远程服务
      • 先进入容器,打开Winbox中的终端,使用命令:container/shell number=0(0为第一个容器,1为第二个容器,后面类推)
      • 安装openssh,方便远程管理,该容器基于Alpine,安装软件使用 apk 命令
//安装ssh服务端
apk add openssh sed

//进入/etc/ssh目录后,生成密钥
cd /etc/ssh
ssh-keygen -A

//修改ssh配置,允许root登录
sed -i 's%#PermitRootLogin prohibit-password%PermitRootLogin yes%' /etc/ssh/sshd_config

//启动ssh
/usr/sbin/sshd

//设置root密码,输入passwd后两次输入密码即可。
passwd
      1. 上面安装openssh后,容器重启后ssh不会自动运行,我们还需要将启动命令加入到启动命令中,使用vi编辑器打开vi /docker-entrypoint.sh 文件,滚动到文件最后面,在php-fpm83前面,加入/usr/sbin/sshd启动ssh。
      2. 安装好ssh后,我们就可以使用ssh客户端进行远程管理,也可以对文件进行管理,会方便很多。
    1. 下载wordpress的安装压缩包解压后,然后使用ssh客户端上传到/app/www文件夹中,最后可以看到如下情况:
    2. 再次使用容器IP访问主页,就可以发现已经进入wordpress的安装界面
    3. 将环境变量中设置好的数据库账号等填写到安装程序中,会提示无法写入wp-config.php文件,我们可以运行chmod 777 /app/www修改权限。


      接下来继续填写相关信息就可以完成wordpress的安装。
  • 安装并启用SSL证书
    1. 安装acme.sh证书自动部署脚本。
apk add curl openssl socat
curl https://get.acme.sh | sh

//如果安装失败,可以用gitee上的安装方式。
apk add git openssl socat
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
chmod +x acme.sh
./acme.sh --install -m xxx@example.com

运行上面的命令后,在/root/.acme.sh文件夹中,就已经下载好acme.sh的脚本。

    1. 给wordpress的动态域名网站申请SSL证书
/root/.acme.sh/acme.sh --register-account -m my@example.com
/root/.acme.sh/acme.sh --issue -d xxx.ownip.net --webroot /app/www/ --standalone --httpport 80
    1. 申请成功后,会在/root/.acme.sh/下创建域名开头的子文件夹,内有SSL证书的文件。

    1. 修改/etc/nginx/conf.d/www.conf中的内容,去掉ssl配置部分的#注释,然后将域名修改即可。
    2. 保存配置后,先停止运行,然后再启动容器,让新的配置能生效。至此整个网站的安装与配置已经全部完成,在使用过程中安装插件,上传图片等可能会出现目录权限不够的情况,可以调整目录权限即可。
赞(1)
未经允许不得转载:深深的蓝 » RouterOS容器安装WordPress全记录

评论 抢沙发

评论前必须登录!