最近把hexo搭建到自己服务器上的时候,删过一次nginx。然后服务器就出了点问题,很多站点访问不了了。正好服务器乱七八糟的东西太多了,想着正好有空,干脆给重装了好了。因为之前搞的一些东西都没有记录下来,不知道还能不能复现。所以,这次一定要记录一下。
一、重置服务器
1.进入阿里云应用服务器控制台面板,进入服务器首页之后,点击重置系统;
2.可以点击确认重置重置当前系统,这里顺便更新一下系统,选择新的宝塔面板,然后点击确认更换,等待重装系统完成;
3.好像重装完密码也会变,点击图1中的重置密码进行密码重置;
4.重置密码后,使用XShell链接服务器。
二、配置宝塔面板
1.直接访问ip:8888,会弹出宝塔面板的提示信息,需要在服务器中先进行配置,按图上所说的配置即可;
2.这里输入的第一句命令,会提示下面的信息;
3.按提示信息进入面板之后,直接弹出推荐安装套件,直接安装LNMP(极速安装)即可;
4.然后还有一个弹出框,按提示绑定账号即可;
5.等待的时候修改一下宝塔登录信息,包括用户名和密码(不过还是要等安装完成才可以);
<<<<<<< HEAD
=======
temp
6.点击面板设置进入设置界面,这里打算关掉安全入口,然后设置域名进行访问宝塔面板。但是这里配置完后,访问配置好的域名显示的是没有找到站点。提示查看正确的域名或关闭安全组。因为关闭了安全入口,所以直接在面板删除域名那个配置是不被允许的。所以,直接在SSH端操作,把许可域名删掉就得了。后面我们再通过反向代理手动配置。
7.删除完之后进入面板设置应该是这个样子;
8.进入网站,配置站点;
9.添加站点后,点击设置,然后点击添加反向代理。配置目标url和代理名称后点击确定即完成了相关的配置,由于宝塔默认占用的是8888端口,所以这里反向代理8888端口就可以了。至此,可以通过域名访问宝塔控制面板了。
三、安装青龙面板
为了实现服务器定时运行js脚本,实现京东自动签到的功能。所以在服务器部署青龙面板。参考链接京东挂机 青龙面板多容器的安装与使用
1.安装docker
1 | sudo yum check-update |
2.拉取青龙镜像
1 | docker pull whyour/qinglong:latest |
3.创建实例并运行青龙面板
1 | docker run -dit \ |
4.运行成功后,打开阿里云服务器的5700端口,还有宝塔放行5700端口。使用ip:5700的方式访问青龙面板,如下图所示
5.进入青龙的docker容器( docker exec -it 容器ID bash
)拉取脚本库,进入容器命令如下
6.配置环境变量PUSH_PLUS_TOKEN和JD_COOKIE。如下图所示。
JD_COOKIE通过小黄鸟在手机抓包后,在浏览器控制台执行下面代码,所需环境变量即可复制到剪切板了,进行粘贴即可。
1 | var CV = '抓包内容'; |
7.随便选择一个定时任务,执行一个,看看是否有正常的执行完成通知,有的话到这里,青龙就配置完成了。最后,和宝塔一样,新建一个站点,弄一个反向代理到5700端口就可以了。
四、hexo部署到个人服务器git仓库并展示
之前一直把写的日记部署到github上,用github.io访问。然后配置一个CNAME,用自己域名指向github.io。但是github.io的仓库是公开的,就是说别人也能看到,感觉还是不太好。所以打算迁移到个人服务器的git仓库上,这样隐私一点。参考hexo d部署到个人服务器git仓库上
这里直接更新git好一点,因为Linux似乎自带老版本git。
1.安装git
1 | yum install -y git |
2.创建一个git用户
1 | useradd git |
3.创建仓库
1 | su git # 切换到git用户 |
4.客户端测试git
1 | git clone git@IP:/home/git/hexo-blog.git |
这里报错了,说
因为之前生成过密钥,然后和服务器的ip已经匹配过了,生成了known_host文件,删掉known_host文件就可以了。之前不知道,把三个文件都删了,然后重新生成了密钥,命令如下(输入完,一路回车就可以):
1 | ssh-keygen -t rsa |
然后再测试一下就没有问题了,让输入密码,输入正确后就可以连上了。这里接着就直接把免密给配置了好了。
报错补充:
1 | 报错内容 |
5.配置免密码登录
①服务器端生成密钥(需在git用户下操作)
1 | su git |
②客户端在Git Bash中生成密钥,并推送到服务器端
1 | ssh-keygen -t rsa |
再测试一下应该是可以免密使用Git命令了。
6.用脚本将仓库的资源拉取到nginx代理的对应目录下,让Git仓库每次检测到push行为后,将最新的资源文件Git clone在你要访问的文件夹下,这样达到自动化部署blog项目。
①进入git仓库下的Hooks目录,配置回调post-receive,执行:
1 | cd /home/git/hexo-blog.git/hooks |
②写入以下脚本:
1 | !/bin/sh |
其中public_www就是用于最终存放nginx映射的静态资源文件目录
③修改目录权限(对应的目录,务必保证有权限,否则不能正确执行脚本,不能拷贝对应目录文件):
1 | chmod +x post-receive |
7.nginx配置(此处保证nginx运行账户,拥有/home/git/www/hexo各级目录权限,否则可能出现403)
1 | server { |
这里遇到了很多问题,最后解决的也不好,属于是曲线救国了。
对nginx的理解还是不够透彻啊,而且宝塔的nginx是那种一个主文件包含无数个子文件的那种,所以配置的时候不能按上面的代码段中的配置直接配置到主文件中。据我查资料location /
表示的是所有请求都执行这里的代码,所以配置到主文件的话,全站所有的请求都会被它拦截然后去hexo文件夹里找页面了,但是肯定找不到,所以全站都不能用了。
所以我新建了一个站点,把配置信息写到了站点的配置文件中。然后出现了很奇怪的错误,访问(端口访问)的时候出现unsaft port的错误。搞了好久,甚至重启了服务器也不行。后来查资料才发现原来6001,6000,6666属于安全端口,浏览器一般不让访问。而恰巧,我为了听着好听,用了6666端口……没想到这个问题,是因为之前本科毕业的后端就是部署在了6666端口,毕竟不用通过浏览器,所以也没有出现什么问题。
后来换了一个端口就ok了,但是域名还是解析不到,一访问就说没有当前web站点,就很迷。到最后也没有解决。曲线救国了,就又建了一个站点当跳板,配置了hexo的访问设置之后,在用当前站点做反向代理,跟配置宝塔和青龙的反向代理时候一样了。总算是能用了。
题外话:其实今天重装系统的很大一部分原因就是因为这个nginx,由于之前也是访问不了博客,我还重装了一次nginx,导致好多页面都不能用了。再加上服务器搞的有点乱了,啥东西都有,硬盘也快满了,索性直接重新来过算了。
补充一个问题汇总的链接。重新部署的时候遇到了两个问题,一个是git软连接的那个问题,另一个是nginx部署之后403的问题,是通过修改了nginx主配置文件的第一行,写成了user root root;
来实现了(但是这样不好,不安全据说,先凑合用吧)
五、服务器搭建hexo环境
1.安装Node.js,参考地址
1 | 下载 |
2.安装Git
3.安装hexo
五、搭建Ngrok服务器
因为学校网络没有公网IP,想要访问学校的系统就要内网穿透。之前用第三方的ngrok都不太方便,小米球还算可以的,不过也总是宕机(ngrok的问题)。想着反正自己有服务器,干脆自己搭一个好了。
1.更新Git
①先卸载Linux自带git
1 | yum remove git |
理论上这一句代码就能给卸载掉了,不知道为啥我一直卸不掉,卸了但是没有完全卸。卸了之后,把使用git也是找不到命令。但是安装了新版之后,打印版本号又是旧版本。最后没办法了,我把自己新安装的git覆盖到了/usr/bin/git
。然后git --version
了一下才发现更新了过来了。很神奇。
②下载Git包并安装Git
1 | cd /usr/local/src/ # 先找个下载位置 我好像是放到了 /home/root/downloads 这个是网上找的 |
2.安装FastGithub插件
由于github总是被墙,所以后面编译ngrok的时候需要在github拉文件的时候拉不下来。这里装一个插件就好了。
下载下来之后用XFtp放到服务器上,然后要 chmod -R 755 文件夹
授权一下。然后执行./fastgithub start
就可以了。
3.安装go
1 | wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz --no-check-certificate # 这里直接按网上的装1.8.3版本的没有问题 |
4.获取ngrok源码并安装
1 | git clone https://github.com/inconshreveable/ngrok.git |
至此,ngrok已经在服务端运行起来了。
运行成功的图如下图所示,看上去好像不像是成功。但是没有报错其实就是成功了。
需要注意的是使用云服务器的话,端口不要设置成以下端口里面的任意一个,不然即使在安全组开放了端口也是无济于事的。
1 | 阿里云禁用端口 |
5.ngrok后台运行并自动重启
部署在服务器上的ngrok,时不时会出现内存泄露而导致程序被杀掉,作者也说了有严重的内存泄漏等问题,且不再维护。所以需要自己写一个脚本,并设成一个定时任务来防止这个问题的出现。参考ngrok 1.x 内存泄露 bug 的解决方案
1 | vim auto_restart_ngrok.sh # 我这里就还是在/home/root/ngrok 目录下新建了一个脚本文件 文件内容如下 |
1 |
|
1 | crontab -e # 编辑定时任务工作表 |
6.windows客户端配置并运行
①将/home/root/ngrok/bin
目录下的windows_adm64
文件夹下载到本地(其实里面就只有一个ngrok.exe
);
②将把ngrok.exe
放到一个文件夹里,并新建一个文件名为ngrok.cfg
的文件,文件内容如下
1 | server_addr: "配置的域名:上面配置的tunnelAddr的端口号" |
注:
这样配置完之后用static.配置的域名:上面配置的httpAddr的端口号
就可以实现访问客户端的8889端口的服务了(其实这里配置了域名的话,remote_port
是没用了的)。比如oracle那个,就需要通过配置的域名:6001
来连接。
③客户端直接运行ngrok -config=ngrok.cfg -log=ngrok.log start-all
即可连接上服务端了。不需要日志的话可以删掉log。
7.windows客户端以服务的方式运行
方便起见,先把在windows上的运行命令写成一个bat脚本,就叫start.bat
,内容就写上面的执行命令ngrok -config=ngrok.cfg -log=ngrok.log start-all
就可以。
然后下载nssm。随便把nssm放到一个地方。然后打开cmd切换到nnsm所在目录。执行nssm install 服务名
,会弹出一个窗口,如下图所示
直接在path中选择bat文件的位置,点击Install service
即可安装服务完成。然后去任务管理器里看一下服务就能看到刚刚新建的服务了。可以给设置成开机自启,以后就不用管了。
至此,ngrok部署的所有步骤就已经完成了。
六、搭建网易云解锁灰色音乐代理服务器
是一个能解锁网易云音乐灰色音乐的项目,部署方式有很多,我这里打算用docker(自行编译)进行部署。但是在git clone的时候不知道为啥网络又不好了,明明之前配置了fastGithub。先不看它了,所以我直接在windows上把代码拉下来了,打包成rar的上传到了服务器。这里直接在宝塔的文件目录里解压了,不然还得自己在Linux上装解压rar的工具。
然后安装docker-compose,下载对应版本的docker-compose到Linux服务器上。执行以下语句即可
1 | curl -L "https://github.com/docker/compose/releases/download/版本号/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 下载用这句也行 我是在windows上下载 然后用Xftp传过去的 |
然后之后直接cd UnblockNeteaseMusic
到解压后的项目中,然后vim docker-compose.yml
(这里建议在Xftp里用记事本编辑文件,然后复制它已有的进行修改编辑,因为yml文件对缩进格式的要求很严格)
1 | version: '3' |
最后docker-compose up -d
就可以了,第一次用会拉很多东西,不知道是不是网络问题,等了半个多小时才好。运行成功服务器显示如下图所示。
最后,打开网易云音乐客户端,找到代理。服务器
输入我自己服务器的ip地址,端口
输入自己设置的http
的端口,我这里就是8123。点一下测试,不出意外,应该会提示代理可用。然后点确定,并重启之后就搞定了。如下图所示: