如何在Linux系统部署Dupal CMS结合内网穿透实现无公网IP访问web界面
文章目录
- 前言
- 1. Docker安装Drupal
- 2. 本地局域网访问
- 3 . Linux 安装cpolar
- 4. 配置Drupal公网访问地址
- 5. 公网远程访问Drupal
- 6. 固定Drupal 公网地址
正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。[点击跳转到网站]
前言
Dupal是一个强大的CMS,适用于各种不同的网站项目,从小型个人博客到大型企业级门户网站。它的学习曲线可能相对较陡,但一旦熟悉了它的工作方式,用户就能够充分利用其功能和灵活性。在本文中,我们将介绍如何使用Docker快速部署Drupal,并且结合cpolar内网穿透工具实现公网远程访问
首先,您需要在您的机器上安装Docker,并且启动,可以按照Docker官方文档中的说明进行安装。
1. Docker安装Drupal
docker部署Drupal之前,需要先安装一个数据库,数据库选择mysql 即可,如果本地已经安装mysql,可以跳过,下面命令使用docker启动一个mysql数据库,
docker run --network host -e MYSQL_ROOT_PASSWORD=自己设置密码 \
-v /etc/mysql/data:/var/lib/mysql \
-v /etc/mysql/conf.d:/etc/mysql/conf.d \
--name mysql \
-d mysql:latest
部署启动好数据库后,下面部署Drupal,执行下面命令,直接运行容器,为了方便数据库连接,指定使用宿主机网络:
docker run --network host --name my-drupal -d drupal:latest
执行等待docker 启动完后,输入docker ps 即可看到运行的Drupal容器,同时也看到了mysql容器运行
2. 本地局域网访问
安装运行后,在浏览器访问80端口,即可看到Drupal的安装界面,Drupal就部署安装启动成功了,下面我们继续安装cpolar 工具,完成远程访问,然后再配置Drupal
3 . Linux 安装cpolar
上面我们在docker中成功安装了Drupal,并局域网访问ok,下面我们在Linux安装cpolar内网穿透工具,通过cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤
cpolar官网地址: https://www.cpolar.com
- 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- 向系统添加服务
sudo systemctl enable cpolar
- 启动cpolar服务
sudo systemctl start cpolar
cpolar安装成功后,在外部浏览器上访问Linux 的9200端口即:【http://局域网ip:9200】,使用cpolar账号登录,登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可
4. 配置Drupal公网访问地址
点击左侧仪表盘的隧道管理——创建隧道,创建一个Drupal的cpolar 公网地址隧道!
- 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
- 协议:选择http
- 本地地址:80 (局域网访问的端口)
- 域名类型:免费选择随机域名
- 地区:选择China
点击创建
隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https
5. 公网远程访问Drupal
使用上面的cpolar https公网地址在任意设备的浏览器访问,即可成功看到我们Drupal 界面,这样一个公网地址且可以远程访问就创建好了,下面进行Drupal设置,语言选择简体中文,选择后点击Save and continue
然后选择标准安装
接下来数据库设置,数据库类型选择mysql数据库,接着输入数据库名称(可以自定义),然后填写数据库用户名,默认:root ,接着填写数据库密码,然后打开高级选项,主机参数填写Linux设备局域网ip地址(表示连接本地数据库),填写好后,点击底部按钮保存并继续
然后等待安装完成
安装完成后,我们成功可以看到了Drupal 界面,并且使用了cpolar的公网域名,无需自己购买云服务器,即可发布到公网访问,后续Drupal玩法,可以去参考官方文档进行学习!
6. 固定Drupal 公网地址
由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn已备案】
注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn已备案】
登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称
保留成功后复制保留成功的二级子域名的名称
返回登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
点击更新
(注意,点击一次更新即可,不需要重复提交)
更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名
最后,我们使用固定的公网地址访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了
相关文章:

如何在Linux系统部署Dupal CMS结合内网穿透实现无公网IP访问web界面
文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&a…...
小巧玲珑的SQLite
SQLite是桌面端和移动端的不错选择 前言 SQLite身影无处不在。 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低&a…...
【Android 内存优化】 native内存泄漏监控方案源码分析
文章目录 前言使用效果使用apiJNI的动态注册native方法动态注册 hook的实现android_dlopen_ext和dl_iterate_phdr naive监控的实现nativeGetLeakAllocs 总结 前言 Android的native泄漏怎么检测?下面通过研究开源项目KOOM来一探究竟。 使用效果 未触发泄漏前的日志…...

数据结构 二叉树 力扣例题AC——代码以及思路记录
LCR 175. 计算二叉树的深 某公司架构以二叉树形式记录,请返回该公司的层级数。 AC int calculateDepth(struct TreeNode* root) {if (root NULL){return 0;}else{return 1 fmax(calculateDepth(root->left), calculateDepth(root->right));} } 代码思路 …...
Android 11系统启动流程
在Android 11系统启动流程中,系统启动主要经历了以下几个阶段: 引导加载程序(Bootloader)启动: 当设备加电后,首先运行的是ROM Bootloader,它负责验证操作系统映像的完整性、初始化基本硬件并加…...

python 爬取杭州小区挂牌均价
下载chrome驱动 通过chrome浏览器的 设置-帮助-关于Google Chrome 查看你所使用的Chrome版本 驱动可以从这两个地方找: 【推荐】https://storage.googleapis.com/chrome-for-testing-publichttp://npm.taobao.org/mirrors/chromedriver import zipfile import os import r…...

数据可视化-ECharts Html项目实战(3)
在之前的文章中,我们学习了如何创建堆积折线图,饼图以及较难的瀑布图并更改图标标题。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 …...

【理解机器学习算法】之Clustering算法(K-Means)
实现 K-means 聚类从零开始涉及几个关键步骤:初始化质心、将点分配给最近的质心、根据分配更新质心,以及重复这个过程直到收敛。这里是一个基本的 Python 实现: K-means 算法步骤: 初始化质心:从数据点中随机选择 k …...

Transformer的前世今生 day02(神经网络语言模型、词向量)
神经网络语言模型 使用神经网络的方法,去完成语言模型的两个问题,下图为两层感知机的神经网络语言模型: 假设词典V内有五个词:“判断”、“这个”、“词”、“的”、“词性”,且要输出P(w_next | “判断”、“这个”、…...

【Linux】多线程编程基础
💻文章目录 📄前言🌺linux线程基础线程的概念线程的优缺点线程与进程的区别 线程的创建 🌻linux线程冲突概念互斥锁函数介绍加锁的缺点 📓总结 📄前言 无论你是否为程序员,相信多线程这个词汇应…...

【地图】腾讯地图 - InfoWindow 自定义信息窗口内容时,内容 html 嵌套混乱问题
目录 需求描述问题问题代码页面展示 解决原因解决办法解决代码页面展示 代码汇总注 需求描述 腾讯地图上画点位,点击点位展示弹框信息 问题 问题代码 // 打开弹框 openInfoWindow(position, content) {this.infoWindow new TMap.InfoWindow({map: this.map,posit…...
Vue3、element-plus和Vue2、elementUI的一些转换
插槽 Vue3<template #default"scope"></template> <template #footer></template>Vue2<template slot-scope"scope"></template> <template slot"footer"></template>JS定义 Vue3 <script…...

Go语言gin框架中加载html/css/js等静态资源
Gin框架没有内置静态文件服务,但可以使用gin.Static或gin.StaticFS中间件来提供静态文件服务。 效果图如下: 一、gin 框架加载 Html 模板文件的方法 方式1:加载单个或多个html文件,需要指明具体文件名 r.LoadHTMLFiles("vie…...

#鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
3 月 19 日,#鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行。 现场,深圳市南山区人民政府副区长李志娜发布《2024 年南山区支持鸿蒙原生应用发展首批政策措施清单》,从加强鸿蒙原生应用供给能力、推动鸿蒙原生应用产业集聚、完善鸿蒙原生…...
flask 继续学习
group_by group_by是一种在数据库查询或数据处理中常用的操作,它用于将数据按照指定的列进行分组。通过group_by操作,可以将数据集按照某个列的值进行分类,然后对每个分类进行聚合计算或其他操作。 在SQL语言中,group_by通常与聚…...

DockerFile遇到的坑
CMD 命令的坑 dockerfile 中的 CMD 命令在docker run -it 不会执行 CMD 命令。 FROM golang WORKDIR / COPY . ./All-in-one CMD ["/bin/sh","-c","touch /kkk.txt && ls -la"] RUN echo alias ll"ls -la" > ~/.bashrc(不…...
并网型风光储微电网日前优化调度(MATLAB实现)
考虑了光伏发电、风力发电、电池储能和负荷需求等因素,与主网相连不考虑向主网售电情况。 % 微电网日前优化调度示例代码% 定义时间步长(例如,每小时) time_steps 24;% 生成模拟数据:光伏发电量,风力发电…...

MATLAB环境下基于振动信号的轴承状态监测和故障诊断
故障预测与健康管理PHM分为故障预测和健康管理与维修两部分,PHM首先借助传感器采集关键零部件的运行状态数据,如振动信号、温度图像、电流电压信号、声音信号及油液分析等,提取设备的运行监测指标,进而实现对设备关键零部件运行状…...

流畅的 Python 第二版(GPT 重译)(十二)
第五部分:元编程 第二十二章:动态属性和属性 属性的关键重要性在于,它们的存在使得将公共数据属性作为类的公共接口的一部分完全安全且确实可取。 Martelli、Ravenscroft 和 Holden,“为什么属性很重要” 在 Python 中࿰…...
【Python 48小时速成 2】关键字
文章目录 01. and :逻辑运算符,表示逻辑与操作。02. exec :内置函数,用于执行存储在字符串或文件中的 Python 代码。03. not :逻辑运算符,表示逻辑非操作。04. assert :断言语句,用于…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...