记一次迁移服务器的经历

前言

​ 故事的起源,要从前几个星期说起,我在阿里云购入的为期一年的云服务器正式到期,本来在几个月之前,如果我选择续费的话,还可以享受优惠,只需一百出头就可以再续一年。而天真且极度拖延的我以为到期再续费也是OK的,于是拖着拖着,等到到期时我才得知,我已经错过了续费优惠,我懊悔,我悔恨,我决定不再续费了,贫穷。

而此前我服务器最重要的一项工作,就是跑一份脚本,程序设定每天准点运行,这样我就可以每天都会得到一份图片文件,然后通过nginx服务绑定域名,我在网站上就可以通过域名的形式访问到这张图片 -

https://download.billie52707.cn/pic/main.png

这张图片也就是我在主页的那张每日一图。没错我就是这么无聊。

但这样总是依赖服务器来提供图片文件,总不是长久之计,于是我又萌生了通过前端网页去获取图片的想法。

说干就干,用vue写了一份js,发送请求用的是axios,然而,不出意外地遇到了bug,报错提示No 'Access-Content-Allow-Origin' header is present on the requested requested resource 明显是前端跨域的问题。请教了一下身边的前端大神,大神说可以使用jsonp发送请求来解决,

image-20210418172251280

试了一下,果然可以

<div id="app">
	<img :src="main_url" >
</div>
<!-- vue -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>	
<script src="https://billie-s-blog.oss-cn-beijing.aliyuncs.com/js/axios.min.js"></script>
<script>	
	var vm = new Vue({
		el:"#app", //挂载点
		data: {msg:'pass me',main_url:'',about_url:''},  //数据对象
		methods:{
			getimg(){
				var that = this;
				axios.jsonp('http://open.iciba.com/dsapi/')
				  .then(function (response) {
					  that.main_url = response.fenxiang_img;
					  that.about_url = response.picture4;
				    console.log(response);
				  })
				  .catch(function (error) {
				    console.log(error);
				  });
			}	
		}, // 方法
		mounted(){
			this.getimg();
		}
	})
</script>

但是好景不长,解决了跨域请求的问题,新的问题又接踵而来,这次是http和https混合的问题,,,

image-20210418231046482

ok 这下彻底没招了 🙂🙂🙂

image-20210418230349695

是啊,好歹也是个光荣的打工人啊! 买它!买它!

你可能想问,兴师动众购入一台云服务器,真的只是为了一张主页图片么?

WechatIMG14603(已去底) (2)

goddamn right!

(其实还是有其他一些脚本需要用到服务器跑的 😓

故事的结尾就是我当晚决定买入了,买的是轻量应用服务器,一年不到百元,正好适合我这种穷er。

部署流程

1. 新建用户,安装软件

大概的流程就这样吧,下面是使用到的命令,简单列一下

  • 修改root管理员密码(可以在服务器管理后台修改)

  • 切换到root管理员 - su root

  • 新建用户 - adduser username

  • 设置密码 - passwd username

  • 查看当前用户 - whoami

  • 将用户添加到sudoers文件中 -

    chmod +x /etc/sudoers
    vim /etc/sudoers
    chenxuefan ALL=(ALL) NOPASSWD:ALL # 这句话添加在sudoers文件最后一行
    
  • 查看用户所属的用户组 - groups chenxuefan

  • 将用户追加到sudo用户组 - usermod -a -G sudo chenxuefan

  • 如遇到ssh无法登录的问题,则在本地执行命令 - ssh-keygen -R hostrm -rf ~/.ssh/known_hosts

  • 安装nginx - sudo yum install nginx

  • 安装python - CentOS | python3.7安装指南

  • 更新一下yum - yum update

    image-20210418151511674

2. 文件配置,启动相关服务

  • 查询nginx安装位置 - whereis nginxfind / -name nginx

    image-20210418135457498

  • 更改文件夹权限 - chmod 777 /etc/nginx

  • 备份nginx.conf文件(重要😌) - mv nginx.conf nginx.conf.bak

  • (macOS)使用终端工具从本地机器上传nginx.conf到服务器 - put nginx.conf nginx.conf

    image-20210418141151538/这个是我上一个服务器的nginx.conf文件,在到期之前备份到了本地,应该可以拿来接着用吧,,,🐶/

  • 编辑配置文件 - vim /etc/nginx/nginx.conf

    image-20210418232051014

  • 启动/关闭/nginx服务 - sudo service nginx start/stop

  • 检查nginx运行进程 - ps -aux | grep nginxps -ef | grep nginx

  • 杀死nginx所有进程 - kill nginx

3. 运行脚本

  • 启动python脚本(后台运行模式) - nohup python3 main.py &
  • 启动nginx服务 - sudo service nginx start

成果

执行完上面的流程,就基本差不多了,这个时候就可以访问到这些链接:

awesome!🥰 😘

小坑

  1. 描述:image-20210418132827613

    • 原因:sudoers的权限被改了,改回来就好了
    • 解决:pkexec chmod 0440 /etc/sudoers
  2. 描述:Not found in archive tar: Exiting with failure stat

    • 原因:解压后的文件只有通过设置「-C」(注意要大写)这个参数,C这个参数是:创建新的档案文件
    • 解决:tar解压时 加上-C,例tar -zvxf python3.7.tgz -C python3.7

更多


1523 字