博客网站容器化

news/2024/5/20 12:31:17/文章来源:https://blog.csdn.net/King_DJF/article/details/104198669

文章目录

  • 欢迎关注公众号

原本的VPS是Centos 6的,系统比较老,而且不原生的支持docker。最近疫情肆虐,在家闲着也是闲着,着手把系统升级到7,顺手也把网站的部署容器化。

备份

关于如何备份,查到的资料中,有的说是通过wordpress的插件,有的说是备份wordpress的完整目录,据我观察,比较关键的内容是数据库和wp-content文件夹。据我实际体验,插件会备份一堆乱七八糟的没用的东西,博客网站最重要的是内容,其次是文件,最后是样式,剩下的都不是很紧要。内容在数据库,文件和样式分别对应content和themes的设置。

  1. 备份数据库,看一下wp用的哪个database,用mysqldump -u {username} -p {passwd} --databases {db_name} > wp_db.sql保存数据库的所有数据,大括号圈住的字段是要换成自己的参数,例如mysqldump -u root -p rootpw --databases wp-db > wp_db.sql
  2. 备份wp-content下面你觉得有用的内容,不是所有都需要,uploads文件夹里面是你之前上传过的文件,我只有这个比较重要,所以我直接scp下来了。

升级系统

直接在云厂商的可视化控制台上一键升级

Docker部署wordpress以及https设置

  1. 安装docker engine以及docker compose
  • https://docs.docker.com/install/linux/docker-ce/centos/
  • https://docs.docker.com/compose/install/
  • 选择一个位置新建一个目录,用于存放docker-compose.yaml文件,需要用的几个镜像,分别是
    • mysql 5.7
    • phpmyadmin (可选,mysql的可视化控制台)
    • nginx
    • wordpress
    • https-portal (封装了https ssl证书申请服务的一个镜像)
    • portainer(可选的,这个镜像提供一个可视化的容器管理界面) 目录下新建docker-compose.yaml文件:
    version: '3'services:db:image: mysql:5.7container_name: mysql57volumes:- ./db-data:/var/lib/mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: YOURPASSWDMYSQL_DATABASE: DATABASENAMEMYSQL_USER: USERMYSQL_PASSWORD: PASSWDphpmyadmin:image: phpmyadmin/phpmyadmin:latestcontainer_name: phpmyadminports:- "9090:80"environment:- MYSQL_USER=MYSQLUSER- MYSQL_PASSWORD=USERPASSWD- MYSQL_ROOT_PASSWORD=ROOTPASSWD- PMA_HOST=mysql57links:- dbwordpress:links:- dbimage: wordpress:5-fpmvolumes:- ./php-uploads.ini:/usr/local/etc/php/conf.d/uploads.ini- ./wordpress:/var/www/htmlrestart: alwaysenvironment:WORDPRESS_DB_HOST: db:3306WORDPRESS_DB_USER: DUSERWORDPRESS_DB_PASSWORD: PASSWDWORDPRESS_DB_NAME: DBNAMEweb:image: nginxdepends_on:- wordpressrestart: alwaysvolumes:- ./nginx.conf:/etc/nginx/conf.d/default.conf- ./wordpress:/var/www/html- ./logs:/var/log/nginxhttps-portal:image: steveltn/https-portal:1container_name: https-portaldepends_on:- web- phpmyadminports:- 80:80- 443:443restart: alwaysvolumes:- ./ssl_certs:/var/lib/https-portalenvironment:#DOMAINS: 'localhost -> http://web:80 #local'DOMAINS: 'jeffdingzone.com -> http://web:80 #staging' # Uncomment when you want to test a staging cert.#DOMAINS: 'jeffdingzone.com -> http://web:80 #production' # Uncomment when you are ready for production.CLIENT_MAX_BODY_SIZE: 64Mportainer:image: portainer/portainer:latestcontainer_name: portainer-testrestart: alwaysports:- 9095:9000volumes:- /var/run/docker.sock:/var/run/docker.sock

    这里还有两个文件,nginx.confphp-uploads.ini,一个是nginx的配置文件,一个是php上传文件大小的设置文件,这个根据自己的需要进行设置。

    nginx.conf如下:

    实际的时候,fastcgi_pass这一项需要根据自己wordpress的service来设置,别的不需要改动。注意到这里没有server_name的设置。上一层实际是被https portal容器处理了,所以域名的设置放在了https portal的环境变量里。

    server {listen 80;root /var/www/html;index index.php;access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;client_max_body_size 64M;location / {try_files $uri $uri/ /index.php?$args;}location ~ .php$ {try_files $uri =404;fastcgi_split_path_info ^(.+.php)(/.+)$;fastcgi_pass wordpress:9000;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;}
    }
    

    php-uploads.ini文件如下,因为我有上传大文件的需要,所以值都设置的比较大,自己可以按需进行设置

    #
    # Allow larger file uploads
    #
    file_uploads = On
    memory_limit = 1024M
    upload_max_filesize = 2048M
    post_max_size = 2048M
    max_execution_time = 36000
    • 注意:https-portal镜像申请ssl证书时,使用的是Let's Encrypt网站的证书,由于资源的限制,Let's Encrypt会对每个域名的证书发放频率进行限制,详见:https://letsencrypt.org/docs/rate-limits/。因此他们提供了几个stage进行选择,以供测试,建议一开始先使用localstaging两个stage进行测试,在网站部署成功后,再改为production的stage。这里我自己就因为触发rate limit,导致一个星期之后才能使用production的stage。
    • docker-compose logs service_name可以查看特定的容器的log,用于定位问题。
    1. 最后,在当前目录执行docker-compose up -d,即可启动镜像,关闭的时候,可以执行docker-compose down,成功启动后,执行netstat -plntu查看当前有哪些端口被监听。可以看到目录下会多出几个文件夹,这几个文件夹是容器的挂载文件,用于保证关键数据的持久化,避免容器重启后,数据丢失,并且,如果以后想要迁移网站到新的服务器,只要把整个文件夹整个打包即可。
    2. 浏览器中输入网址,查看网站是否部署成功,成功后,可以将https portal的stage改为production。重启容器即可。如果启动了phpmyadmin和portainer,可以通过http://ip:9090,htt[://ip:9095端口进行查看。

    网站数据恢复

    网站数据原本已经用备份到wp_db.sql了,在部署好网站,设置好wordpress之后,两个方式恢复

    • 本地docker-compose exec mysql-service-name sh进入mysql的容器,然后mysql -u username -p passwd进mysql控制台,用source命令读入wp_db.sql,恢复数据
    • phpmyadmin,点击导入,上传sql文件或者sql文件的压缩文件

    零碎点

    1. cloudfare可以提供DNS和CDN服务,一定程度上防护网站、加快,用于设置dns和cdn,还可以进行简单的防攻击防护。普通网站选择免费套餐就够了。
    2. 本次更改后新增DB管理入口
    3. 本次更改后新增访问数据统计

    欢迎关注公众号

    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_747343.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知道这5个隐藏资源网站的人非常少,难怪总是找不到资源!

现在的互联网是开放的,我们可以通过网络下载到很多自己需要的东西,但是有些网站因为不够知名而被忽视,但是里面的资源还是很不错的。 今天小编就来跟大家分享几个隐藏的资源网站: Aio search国外的一个BT资源站,资源非…

快速找出网站中可能存在的XSS漏洞实践(一)

一、背景 笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些XSS漏洞的挖掘过程记录下来,方便自己也方便…

干货满满:小团队(网站和APP)没有数据方面的预算,推广运营人员如何用数据提升业务?...

先说结论:没有钱,没有预算照样可以做好数字运营,数字营销。想解决这个棘手的问题,要么花钱,要么花时间咯。下文中会具体讲花时间(精力)的方法。 1.先从付费类的软件说起: 截止2018年…

知识问答网站---邮件发送失败--debug

发送邮件失败的原因:授权码过期 注意,邮箱设置的密码是授权码,并不是自己登录的时候用的账号密码。 转载于:https://www.cnblogs.com/lchzls/p/7072738.html

由 12306.cn 谈谈高并发+高负载网站性能技术

2019独角兽企业重金招聘Python工程师标准>>> 12306.cn 网站挂了,被全国人民骂了。我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题。因为仓促,而且完全基于本人有限的经验和了解, 所以&…

忘记密码,如何在登陆过的网站查看加密后的密码

以谷歌浏览器为例,查看经过页面加密处理过的密码。 1、打开网站页面,按F12打开 开发者工具 2、点击开发者工具左上角的箭头图标,然后点击密码输入框 3、可以看到开发者工具的Elements里有淡蓝色标识的一行html代码 4、在这一行代码里有个 ty…

《网站开发基础与提高》studyNote

首先,你可以在豆瓣看到关于这本书的介绍:http://www.douban.com/subject/1970152 这本书因为一些事情和个人情感,拖了很长时间前天才看完。所谓个人情感,是因为书里所讲的内容对于我来说基本上都已经掌握,所以看得也不…

三.搭建安全

三. 搭建安全拓展 涉及知识: 常见搭建平台脚本启用 域名IP目录解析安全问题 常见文件后缀解析对应安全 常见安全测试中的安全防护 WEB后门与用户及文件权限 访问网站 :ip/域名。 域名扫描只能扫描出来域名文件,而域名文件只是占服务器资源的一小…

简易任务调度实现--可用于windows服务/asp.net网站执行后台计算

在项目开发中经常会遇到后台定时任务调度执行计算的需求,为此我实现了一个简易的任务调度框架。 首先,我只实现的简易调度框架,原则上在同一时间点只执行一个任务,实现在每天指定的时间段内执行一次或固定频率(只是相对…

网站快照被劫持怎么解决?

网站安全服务 网站安全是重中之重对此我们Sinesafe对于网站被挂马被黑的防范意识,如何判断网站被黑,网站被挂马,网站快照被劫持,网站快照被篡改,导致被百度网址安全中心提醒您:该页面可能存在违法信息。 网站服务是否稳定,对用户、站方和搜索引擎来说都非…

网站开发最好用的画折线图、饼状图、柱状图方法

一、FusionChartsFree 是我用过最方便,最有效的网页开发中画统计图方案。完全免费而且开源。因基于FLASH,所以支持ASP/JS/ASP.NET/PHP/JSP...等等等等。下载地址:http://www.fusioncharts.com/free/download/ 【只需要简单注册一下就可以down…

30多个国外电子商务网站欣赏

30多个设计精良的电子商务网站。国外知名的开源网店程序有Magento、OSCommerce、Zen-cart、opencart等,国内的 有Ecshop和ShopEX等,在遵守相关的授权协议的情况下,你可以免费的使用这些程序搭建一个网店。一个设计精良的电子商务网站显然将给…

Piwik 1.9 发布,网站访问统计系统

Piwik 1.9 发布了,该版本包含三个主要功能:网页过渡、网站搜索分析和更简单的地理位置配置,详情请看 Piwik 1.9 release blog post 同时发布的还有 Piwik Mobile 1.9 Piwik是一套基于PhpMySQL技术构建的开源网站访问统计系统,前身…

服务器里如何查杀网站后门文件

收到阿里云的短信提醒说是网站存在后门,webshell恶意通信行为,紧急的安全情况,我第一时间登录阿里云查看详情,点开云盾动态感知,查看了网站木马的详细路径以及webshell的特征,网站从来没有出现过这种情况&a…

社交系统ThinkSNS+在研发过程中,如何做到 Laravel 配置可以网站后台配置

什么是ThinkSNS ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案。 本文分享下利用 Laravel 的 Bootstrapping 达到网站后台设置 laravel 配置。 需求场景 首先,ThinkSNS 作为一个用…

大型网站技术架构(八)网站的安全架构

2019独角兽企业重金招聘Python工程师标准>>> 从互联网诞生起,安全威胁就一直伴随着网站的发展,各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。 1、XSS攻击 XSS攻击即跨站点脚本攻击(…

创业团队如何保护自己的网站安全?

今天在知乎上有人邀请我回答一个问题:创业团队如何在低成本的情况下保护自己的网站安全? 简略答一下。 一般来说,很多安全专家都会告诉你没有绝对的安全,如果黑客一定要长期盯着你的公司有针对性的渗透,很少有可以幸免…

55个漂亮的蓝色风格网站设计作品欣赏(下篇)

蓝色非常纯净,通常让人联想到海洋、天空、水、宇宙。纯净的蓝色表现出一种美丽、冷静、理智、安详与广阔。今天,本文收集了30个漂亮的蓝色风格的网站设计作品与大家分享,一起欣赏。 icebrrg powerset Birdie designchuchi.ch StrawPoll lucin…

【转】https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题...

正需要这个,写的很好,就转过来了 转自: http://www.cnblogs.com/naniannayue/ 一:什么是https SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间&#x…

如何让你的网站支持 IE9 Pinned Site (Part 2 - 实战)

该如何展示 IE9 Pinned Site 呢?我可以写一个新的应用,完全是为了展示 Pinned Site 的特性,但这样就像是为了实现这些特性而利用这些特性。所以我想还是升级一个现有的网站好了,这样更能说明 Pinned Site 是如何起到优化用户体验的…