大学几年尝试过几台服务器,也尝试过搭建一些环境,服务。但一直没有把这些总结,
正巧本次找到渠道买了三年服务器(2H2G 4M 400多点),为了长久稳定安全使用,便打算细致的配一次环境便有了此文。
本文章内容过于基础,仅作为学习思路供初学小白参考,如有疏漏差错欢迎交流学习。
仅作为过程记录 实际环境各不相同 即便按照下文操作会有各种报错 失败乃成功之母
为什么购买服务器
1、大学生优惠是真的香 2h2g2m 110左右可以接受
在大学生优惠使用结束可以在淘宝购买优惠【通过商家链接注册新用户】439 三年 2h2g4m
当然选择腾讯轻量型服务器的好处 开发票可以自定义额度 其中的奥妙尽在不言之中
1 2
| 抬头:三江学院 税号:12320000MB0150666E
|
2、日常安全练习、渗透时操作需要
3、搭建博客访问速度更快,体验更好,拥有自己的专属域名
4、等等
初用服务器
服务器系统可以选 Debian centos 当然别选最新的系统版本 装不上环境恐怖如斯
Xshell SSH连接 ; winscp 文件传输
进入服务商控制台 重置一下root的密码 记得使用强密码
【之前一个白嫖的服务器没有改默认密码 被爆破攻击但幸运因为服务运行在docker容器中 没有损失】
【不要有侥幸心理 如果服务器内正在运行服务或者存储重要数据 一定要有安全意识】
新建用户
1 2 3 4
| useradd -m -s /bin/bash userName
passwd userName //设置密码,输入此命令后会提示你输入密码
|
新建用户是没有sudo权限的
1
| L0sE2 is not in the sudoers file. This incident will be reported.
|
1、切换至root账号
2、添加sudoers文件的写权限 sudoers
文件默认是只读的,对root来说也是,因此需先添加sudoers文件的写权限,执行下面命令:
3、编辑sudoers文件
找到这行 root ALL=(ALL) ALL
,在他下面添加 ALL=(ALL) ALL
(username是你的用户名)
1 2 3 4
| youuser ALL=(ALL) ALL //允许用户youuser执行sudo命令(需要输入密码). %youuser ALL=(ALL) ALL //允许用户组youuser里面的用户执行sudo命令(需要输入密码). youuser ALL=(ALL) NOPASSWD: ALL //允许用户youuser执行sudo命令,并且在执行的时候不输入密码. %youuser ALL=(ALL) NOPASSWD: ALL //允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.
|
4、撤销sudoers文件写权限
博客
搭建 博客 推荐静态 hexo 之前有师傅动态博客被日穿删库跑路
Nvm
首先安装 nvm nodejs 包管理器 完美解决多版本 nodejs npm的环境问题
nvm/README.md at master · nvm-sh/nvm
因为是新买的服务器多余的便不再赘述 如果有nodejs 删干净
官方文档安装命令写的很清楚
在使用curl下载文件时,关于出现报错,是因为GitHub的raw.githubusercontent.com
域名解析被污染了。
通过https://www.ipaddress.com/查询raw.githubusercontent.com的真实IP。
1 2 3 4 5 6 7 8
| cat <<"EOF" | bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash export PATH=$PATH:$HOME/.nvm/nvm.sh export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion nvm EOF
|
nvm ls-remote 查看可安装版本【须先 nvm install node】nvm list available 为windows
如果 nvm ls-remote / nvm install node 无反应 网速问题换源
1 2 3 4 5 6 7
| 修改 环境变量 sudo vi ~/.bashrc # 在最后添加淘宝镜像 export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node/ export NVM_IOJS_ORG_MIRROR=http://npm.taobao.org/mirrors/iojs # 让配置生效 source ~/.profile
|
Hexo 模板[先安装 hexo模板用于验证网站路径设置 也可以在 博客搭建流程进行]
1 2 3 4
| npm install hexo-cli -g hexo init 输入hexo g生成静态文件,此时public文件夹中生成网页文件(命令也写成hexo generate) 输入hexo s本地测试,默认运行在4000端口上,浏览器输入127.0.0.1:4000出现hexo hello world说明第一步成功了。
|
安装nginx
sudo lsof -i:80
nginx -t 查找nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| nginx #打开 nginx nginx -t #测试配置文件是否有语法错误 nginx -s reopen #重启Nginx nginx -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx nginx -s stop #强制停止Nginx服务 nginx -s quit #停止Nginx服务(即处理完所有请求后再停止服务)
nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
-?,-h : 打开帮助信息 -v : 显示版本信息并退出 -V : 显示版本和配置选项信息,然后退出 -t : 检测配置文件是否有语法错误,然后退出 -q : 在检测配置文件期间屏蔽非错误信息 -s signal : 给一个 nginx 主进程发送信号:stop(强制停止), quit(优雅退出), reopen(重启), reload(重新加载配置文件) -p prefix : 设置前缀路径(默认是:/usr/share/nginx/) -c filename : 设置配置文件(默认是:/etc/nginx/nginx.conf) -g directives : 设置配置文件外的全局指令
|
安装nginx成功后 修改nginx.conf root后面的路径即可
1 2
| include /etc/nginx/conf.d include /etc/nginx/sites-enabled
|
此处包含/etc/nginx/sites-enabled 中的default配置文件
sites-enabled 中的配置文件为 /etc/nginx/sites-available中的软链接
因此修改/etc/nginx/sites-available中的路径即可
1
| root /home/blog/public; //此处路径为hexo渲染生成的静态页面
|
nginx -s reload 访问ip即可看到hexo 模板页面
nginx -s reload 重载的时候遇到
1
| nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
|
先kill一下nginx的进程 因为上面无法找到的文件是配置文件中生成的因此
1
| nginx -c /etc/nginx/nginx.conf
|
主题的配置 【本次选择比较简朴 以及小众的主题 萌新可以选择比较主流 各种插件轮子可以拿来即用】
https://github.com/hooozen/hexo-theme-tranquility
1 2
| cd hexo /此步切换到博客根目录 如果在theme目录里下载需要删除下载文件的 thmem tranquility 两个文件夹 git clone https://github.com/hooozen/hexo-theme-tranquility.git themes/tranquility
|
并配置根目录下 _config.yml
中的 theme
字段为 tranquility
(参考 主题 | Hexo。)
1
| npm install hexo-pagination moment opentype.js
|
关于使用本博客特色功能 案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| subpage: # 开启“子页”功能,详见 README enable: true pages: - name: STUDY # 文章的分类(category)名,如 developer path: study # 若不设置则默认使用 name title: 技术 # 菜单名,如 开发者 icon: /images/icon/icon-code.svg # 图标的路径 description: 网安学生的日常学习 # 描述 - name: POETRY # 文章的分类(category)名,如 developer path: poetry # 若不设置则默认使用 name title: 随笔 # 菜单名,如 开发者 icon: /images/icon/icon-pi.svg # 图标的路径 description: 欢迎来到我的随笔,或许我的观点小众,或许幼稚,但如果能带给你一丝一毫的感同身受,便是我的荣幸之极 # 描述 - name: LIFE # 文章的分类(category)名,如 developer path: life # 若不设置则默认使用 name title: 人生如歌 # 菜单名,如 开发者 icon: /images/icon/icon-pi.svg # 图标的路径 description: 一些我所拍摄的照片 # 描述
|
md文档头部案例
1 2 3 4 5 6 7 8 9 10 11 12 13
| title: 再见 date: 2023-06-30 16:51:45 categories: - STUDY tags: - 测试 cover: /images/cover/sanyueqi.gif toc: 0 // 是否使用目录功能 timeline: article # 展示在列
那么,很高兴再见。<!
|
网易云插件
【小技巧】在网页端听歌的时候 url中的id替换下文中的id 即可享用版权音乐
1 2 3 4
| <div style="display: flex; justify-content: center;">//用于居中 <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1975304314&auto=0&height=66"></iframe>
</div>
|
增加小破站计时功能
themes\tranquility\layout_partials 的layout.njk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| <a href="https://github.com/hooozen/hexo-theme-tranquility">致远</a> 驱动 //此处为主题默认的版权信息 备案后打算改成备案信息 </div> <div style="text-align: center;"> //此处作用为使模块居中 <span id="sitetime"></span> <script language=javascript> function siteTime(){ window.setTimeout("siteTime()", 1000); var seconds = 1000; var minutes = seconds * 60; var hours = minutes * 60; var days = hours * 24; var years = days * 365; var today = new Date(); var todayYear = today.getFullYear(); var todayMonth = today.getMonth()+1; var todayDate = today.getDate(); var todayHour = today.getHours(); var todayMinute = today.getMinutes(); var todaySecond = today.getSeconds();
var t1 = Date.UTC(2023,07,1,0,00,00); //北京时间2018-2-13 00:00:00 var t2 = Date.UTC(todayYear,todayMonth,todayDate,todayHour,todayMinute,todaySecond); var diff = t2-t1; var diffYears = Math.floor(diff/years); var diffDays = Math.floor((diff/days)-diffYears*365); var diffHours = Math.floor((diff-(diffYears*365+diffDays)*days)/hours); var diffMinutes = Math.floor((diff-(diffYears*365+diffDays)*days-diffHours*hours)/minutes); var diffSeconds = Math.floor((diff-(diffYears*365+diffDays)*days-diffHours*hours-diffMinutes*minutes)/seconds); document.getElementById("sitetime").innerHTML="已运行"+diffYears+" 年 "+diffDays+"</font> 天 <font style=color:#f391a9>"+diffHours+"</font> 时 <font style=color:#fdb933> "+diffMinutes+"</font> 分 <font style=color:#a3cf62>"+diffSeconds+"</font> 秒"; } siteTime(); </script>
<div>
|
对于不同的主题文件位置会有所改变
找到页脚部分的代码 并在最下方 备案信息处 新建
添加模块即可
Hexo g 渲染 【更新时间线需要重启hexo】
Hexo s 本地测试即可