服务器重装记

重装并不可怕,可怕的是坏了就重装不回来了😀。完美恢复(~ ̄▽ ̄)~

0x1 为什么要重装

在自己的服务器部署一个服务,但是数据库版本过低,备份了其他应用的数据库然后删除了数据库,然后宝塔面板出问题了,无法解析自家的下载地址,经验判断是DNS服务器类似的错误,无奈解决很久无法解决,服务器没有数据库了,当然我可以用docker跑一个,无奈强迫症不能忍,重装!

重装之前备份了数据库,宝塔面板的网站配置,自己的网站目录,jenkins配置,等,但是自己的博客文件夹忘记备份了。图片没了。裂开。

本文包含了

  1. 宝塔面板的安装
  2. 常用运行环境安装(NginxMysqlPhpDocker等等)
  3. Nginx网站配置
  4. TypechoWordpress博客恢复。
    1. Wordpress文章批量替换图片地址。
  5. Ghost博客恢复
  6. Jenkins搭建。
  7. Dockek部署网易云破版权

更新时间:2020-05-05 19:15:43

0x2 重装

阿里后台控制面板,一键重置系统,安装了好几次的Ubuntu,这次换下Centos之前安装Ubuntu因为他的软件包好像要比Centos要好。经历了很多次升级软件出现Bug之后,我也变得谨慎了很多,虽然新版本看着确实舒服,但是更重要的是稳定。说多了都是泪啊。😭

2020-05-05 Ghost博客有和Centos不兼容的部分,无法运行,重新安装回Ubuntu。🤮

0x3 安装宝塔面板

这东西对于我目前前端程序员来说确实方便了太多太多,自带一些调优属性。很nice了。自己也尝试手动搭建过各类环境,但是出现问题需要对Linux非常了解,这个确实有待加强。

宝塔官网 - https://www.bt.cn/

Centos安装命令:

登录服务器执行,版本7.2

yum install -y wget && wget -O install.sh http://123.129.198.197/install/install_6.0.sh && sh install.sh

Ubuntu/Deepin安装命令:

wget -O install.sh http://123.129.198.197/install/install-ubuntu_6.0.sh && sudo bash install.sh

耐心等待安装完毕。拿到面板登录信息。

0x4 基本设置和安装基本软件

  1. 同意协议,登录宝塔面板

  2. 不安装推荐的套件

    因为推荐的数据库版本不适合我了,推荐自己手动一个一个安装,一起安装好像会出现秒完成,无法解析host的错误,当然我找到了解决办法,但是确实是个坑。

  3. 修改安全端口

    我改成了65534,你们根据自己的习惯改就好(1024-65535),会自己跳转到新的端口,无法访问的记得看下自己的服务器安全组,有可能没开端口,外界无法访问。

  4. 安装Lnmp

    这是常用的集成环境,为啥不是Lamp,因为不知道在哪里听过Nginx性能比Apache要高,从此这个观念一直在脑海,而且Nginx设置很方便。容易上手

    1. 安装Nginx - 1.16

      这里可能比较久。

    2. 安装Mysql - 5.7

      这里我的版本是5.7,之前一直用的5.6用的有点问题,也用过MariaDB,对于使用第三方软件的我来说没啥区别。

    3. 安装Php - 7.4

  5. 安装phpMyAdmin - 5.0

    这个东西可有可无,我管理的方式都是通过Navicat进行管理,但是宝塔某些场景好像用到了,那就安装一个吧。安装挺快的。

  6. 安装Docker - 2

    面板显示的2,不知道具体是什么版本,不过在Ssh连接时使用完全没问题的。

    Docker这个东西用上了你就放不下,太方便了。

  7. 安装MongoDB - 4.0

    未来自己开发应用可能需要用到。

  8. 安装Redis - 5.0

    未来自己开发应用可能需要用到。

0x5 软件基本设置

Mysql

  1. 设置root的密码

    面板数据库位置设置下root用户的密码。

  2. 性能优化

    这一步用到的面板自带的功能,因为默认Mysql的配置很保守。

    1. 面板软件商店位置找到Mysql,点击设置。
    2. 找到性能调整,优化方案选择你的服务器配置进行优化。(我的是1-2GB的内存的方案。)
    3. 保存重启数据库。
  3. 开放远程链接

    默认情况下Mysqlroot用户的主机为localhost不允许外网访问,为了安装考虑。

    不过我需要通过Navicat进行管理,所以这里打开远程连接。

    # ssh登录服务器,输入
    mysql -u root -p
    # 输入你的数据库密码,之前设置好的,然后会进入到mysql
    mysql>
    # 选择mysql数据库
    use mysql;
    # 开启远程连接 root:用户名、%:所有人都可以访问、password:数据库密码
    # 记得修改password为你的数据库密码
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
    # 刷新权限表
    FLUSH PRIVILEGES;
    # 然后连接试试,如果不行,在面板重启mysql服务
    # ps:如果需要回到服务器的用户操作输入exit回车就能退出数据库
    
  4. 问题

    1. 为啥开放了远程连接还是无法访问数据库

      需要放开3306(如果你没改就是这个)端口,在面板的安全选项可以放开。

0x6 恢复博客

恢复Typecho博客

这是我第一个博客首先恢复它。

  1. 上传网站目录备份文件

    1. 用宝塔文件选项上传网站备份到/www/wwwroot/目录下,解压,网站目录应该是恢复了。
  2. 配置Nginx

    1. 面板网站位置
    2. 添加网站
    3. 输入域名typecho.yoouu.cn,其他默认,创建
  3. 恢复数据库

    1. Navicat创建之前博客的数据库,导入数据库备份。
  4. 面板配置下SSL,开启强制Https

  5. 访问:https://typecho.yoouu.cn/

  6. 恢复成功

  7. 问题

    有可能需要开启Nginx的伪静态,面板网站设置有Typecho的规则直接选就可以了。

    1. 恢复完成我发现我文章图片没了,检查发现是我更改域名的问题

    图片资源的地址其实已经变了,不过博客文章的图片地址没有变,此时需要替换图片地址,当然手动可以改,不过文章多了就改不过来了,我们直接替换数据库记录。

    1. Navicat连接Typecho数据库,找到typecho_contents 表。
    2. 点击新建查询
    3. 执行命令:UPDATE typecho_contents SET text = REPLACE( text , "旧域名", "新域名" );
    4. 我执行的:UPDATE typecho_contents SET text = REPLACE( text, "http://typecho.yoouu.cn/usr/uploads/", "https://typecho.yoouu.cn/usr/uploads/" );
    5. 访问文章全部正常

恢复Wordpress博客

这是我的第二个博客

  1. 上传网站目录备份文件

    1. 我之前已经备份了/www/wwwroot/,目录在恢复Typecho的时候已经恢复了网站目录。
  2. 配置Nginx

    1. 面板网站位置
    2. 添加网站
    3. 输入域名wp.yoouu.cn,其他默认,创建
  3. 恢复数据库

    1. Navicat创建之前博客的数据库,导入数据库备份。
  4. 面板网站配置下SSL,开启强制Https

  5. 面板网站配置开启Wordpress伪静态规则

  6. 访问:https://wp.yoouu.cn/

  7. 恢复成功

  8. 问题

    1. 恢复完成我发现我文章图片没了,检查发现是我更改域名的问题

      图片资源的地址其实已经变了,不过博客文章的图片地址没有变,此时需要替换图片地址,当然手动可以改,不过文章多了就改不过来了,我们直接替换数据库记录。

      1. Navicat连接Wordpress数据库,找到wp_posts表。
      2. 点击新建查询
      3. 执行命令:UPDATE wp_posts SET post_content = REPLACE( post_content, "旧域名", "新域名" );
      4. 我执行的:UPDATE wp_posts SET post_content = REPLACE( post_content, "https://yoouu.cn/wp-content/uploads/", "https://wp.yoouu.cn/wp-content/uploads/" );
      5. 访问文章全部正常

恢复Ghost博客

本恢复过程比较复杂,可以参考我的另一篇博文

0x7 Dockek软件安装

配置阿里镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ihe7845m.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker安装Jenkins

Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

官网:https://jenkins.io/zh/

推荐使用docker安装,这样可以方便升级,不用被jdk环境搭建搞得焦头烂额,直接关注使用功能

Docker镜像:https://hub.docker.com/r/jenkins/jenkins

# 拉取长期服务版
docker pull jenkins/jenkins:lts
# 在启动Jenkins时,需要先创建一个Jenkins的配置目录,并且挂载到docker 里的Jenkins目录下
mkdir -p /var/jenkins_home
# 修改目录权限(很重要!)否则jenkins没有读取改目录的权限
chown -R 1000 /var/jenkins_home
# 查看文件夹权限
sudo ls -nd /var/jenkins_home/
# 运行 Jenkins
docker run --name jenkins -p 50001:8080 -u root  -d -v /var/run/docker.sock:/var/run/docker.sock -v /var/jenkins_home:/var/jenkins_home -e JENKINS_UC="	https://updates.jenkins-zh.cn" -e JENKINS_UC_DOWNLOAD="https://mirrors.tuna.tsinghua.edu.cn/jenkins" -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai -v $(which git):/usr/bin/git jenkins/jenkins:lts

配置Jenkins

  1. 配置域名

  2. 宝塔面板新建网站

  3. 填写域名jenkins.yoouu.cnPhp版本选择纯静态,保存

  4. 申请ssl证书

  5. 配置反向代理

    # 目标url:http://localhost:50001
    # 发送域名:$host
    
    # 配置文件如下,记得加上proxy_set_header X-Forwarded-Proto $scheme;
    # 不加上这个jenkins会报反向代理配置错误的提示
    #PROXY-START/
    location  ~* \.(php|jsp|cgi|asp|aspx)$
    {
        proxy_pass http://localhost:50001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
    }
    location /
    {
        proxy_pass http://localhost:50001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header REMOTE-HOST $remote_addr;
        
        add_header X-Cache $upstream_cache_status;
        
        #Set Nginx Cache
        
        	add_header Cache-Control no-cache;
        expires 12h;
    }
    
    #PROXY-END/
    
  6. 访问:https://jenkins.yoouu.cn/ 成功正常运行

  7. 其他配置Vue项目自动化构建另开文章进行编写。https://sunseekerx.yoouu.cn/common/jenkins.html

0x8 恢复完成

在恢复的过程中出现了很多的问题,原来老系统遗留的问题也解决了不少,像混合httphttps的请求、nginx反向代理设置,各种环境搭建等从一开始的参考网上的教程能搭建好到现在的能理解每一步是在干什么,自己能描述出来。对自己来说收获不少。花的时间也值得了。

有人问过我为啥知道这么多,只有自己才知道为啥,因为经常性的一个问题牵扯了很多的问题出来,我得顺藤摸瓜一个一个解决才能往下走,就像这次重装,我的服务器起码重装了5-6次,花费了几天的时间,玩坏了就重装,就像之前的Php的伪静态规则搞了几周,最后解决了。解决不了的问题大部分都是不了解,等你一直摸索摸索慢慢的你就明白了这是为啥,问题在哪里了。

重装并不可怕,可怕的是坏了就重装不回来了😀。完美恢复(~ ̄▽ ̄)~