技术标签: git云服务器 nginx 运维 hexo自动部署到服务器 云服务器学习 linux # Sakura
之前用Gitee的Pages对博客进行部署,怎么用也不习惯,今天续费阿里云服务器了,开造~
前期准备:
服务器环境:
端口号3306
+ myphpadmin (hexo是静态页面,用不到的啦;如果是WordPress就需要)端口号80
(之前的页面)修改服务器Apache端口配置文件:
cd /etc/apache2
vi ports.conf
将Listen 80改为82
在阿里云控制台添加安全组规则:添加82端口
重启Apache
sudo /etc/init.d/apache2 restart
回顾一下Hexo发布到gitee(Pages)的流程:
git上传
github或gitee发布Pages
将仓库目录https://gitee.com/cungudafa/cungudafa/index.html
拉取到https://cungudafa.gitee.io/index.html
创建一个git用户,用来运行git服务。(root不安全)
sudo useradd git -m
注意:Ubantu下必须加上-m,才会自动新建用户目录/home/git/(后面配置和博客文件都放在这里)
在/home/git/非常重要,如果出错,可以删除sudo userdel -r git
用户,重新之前的步骤。
设置密码
sudo passwd git
密码是git用户的密码,简单为上啦。
增加git用户执行sudo的权限
chmod 740 /etc/sudoers
vim /etc/sudoers
找到以下内容:root ALL=(ALL) ALL
在下面添加一行
git ALL=(ALL) ALL
保存退出后改回权限:
chmod 400 /etc/sudoers
RSA用公钥加密,私钥解密,成为加密通信。
用私钥加密,公钥解密,就是认证。(这样就能证明消息是你发出的。)
因为:公钥大家都有,私钥就只有一个,在你自己手里。
服务器端:
vim /etc/ssh/sshd_config
在sshd_config中开启以下几项:(前两项yes,后一项修改为如下)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启sshd
systemctl stop sshd.service
systemctl start sshd.service
本地电脑生成秘钥对-》发送公钥到服务器-》本地可免密连接服务器
在本地电脑: 生成密钥对
ssh-keygen -t rsa -C "邮箱"
成功后,会在c盘用户下新建秘钥对:
在服务器: 切换至git用户,创建 ~/.ssh 文件夹
su git
mkdir ~/.ssh
或者root用户直接创建:
cd /home/git/
mkdir .ssh
在本地电脑: 发送公钥 id_rsa.pub 到 /home/git/.ssh/authorzied_keys
ssh-copy-id -i C:/Users/CUNGU/.ssh/id_rsa.pub [email protected] //把公钥发送给服务器
ssh [email protected] // 测试能否登录
本地登录效果:(authorzied_keys是一行一行添加的,显示成功添加一行)
通过ssh能够直接登录操作shell,当然后面要关掉git的这个shell权限的,不然小心异地登录,危险危险。
服务器文件夹也有了公钥:
文件夹权限调整:authorzied_keys
权限为600时才生效
git用户:
su git
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorzied_keys
第二步没有成功,说我没有权限(Permission denied);emmm,root设置好了
root设置第二步:(注意在.ssh目录下)
exit // 退出到 root 登录
sudo chmod 600 authorized_keys
现在就搭建好git桥梁,为后面实现hexo d部署时,可以自动上传啦!
切换到git用户,接下来都是在git用户权限下进行操作:
su git //切换git用户
cd /home/git/
mkdir -p projects/blog //创建你的博客目录
mkdir repos && cd repos
git init --bare blog.git //创建一个空仓库
cd blog.git/hooks
vi post-receive //创建hook钩子函数,输入以下内容
git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f
chmod +x post-receive // 修改钩子函数权限
改变 hexo.git 目录的拥有者为git用户:
sudo chown -R git:git blog.git
添加备份目录
cd /home/git/projects/
mkdir -p tmp/blog
修改钩子的内容:(重点是git clone 克隆到主目录home/git/projects/blog
主目录要配置到nginx中去的)
#!/bin/bash
GIT_REPO=/home/git/repos/blog.git # git仓库
TMP_GIT_CLONE=/home/git/projects/tmp/blog
PUBLIC_WWW=/home/git/projects/blog # 网站目录
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
chmod +x post-receive # 赋予脚本的执行权限
git用户赋权:
su git
chmod +x post-receive
exit // 退出到 root 登录
chown -R git:git /home/git/repos/blog.git // 添加权限
sudo chown git:git -R /home/git/projects/
蓝色为更新后的上传机制:
为了安全起见,我们需要关闭git账号登录shell的权限!!(一开始疏忽了 一个晚上服务器被异常登陆五次!!)建议这一步放在全文步骤配置好,最后最后来做
vim /etc/passwd
找到git账号(一般在最后面)添加:/usr/bin/git-shell
加上git就只能git clone,如需shell操作,撤销/usr/bin/git-shell
即可。
在本地任意一空目录,测试git仓库是否可用(测试步骤,稍后可清除)
git clone [email protected]:/home/git/repos/blog.git
实际拉下来的是你的/home/git/projects/blog
,哈哈哈还是空的~
修改博客根目录配置_config.yml,部署部分,增添repo:(以git用户的身份操作)
deploy:
type: git
message: update
gitee: https://gitee.com/cungudafa/cungudafa.git
repo: [email protected]:/home/git/repos/blog.git
branch: master
接下来,在用hexo clean && hexo g -d
时,就会自动上传啦!
只有在ssh秘钥配置成功,才能成功上传。如果需要修改公钥,要打开git操作shell的权限哦!
vim /etc/passwd
最后一句。及时开,及时关,做到万无一失。
现在public生成的静态文件已经完好推送到阿里云服务器了!
现在需要Pages工作:即将静态页面显示在网站上。
nginx显示blog的index.html:
我直接使用sudo apt install nginx
安装是有问题的,看了n多教程之后,还是选择了源码安装
sudo apt-get update
apt-get install gcc
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g zlib1g-dev zlib1g.dev
apt-get install openssl openssl-dev
sudo apt-get install openssl libssl-dev
下载安装包,解压到常用目录:
cd /usr/local/
wget http://nginx.org/download/nginx-1.8.1.tar.gz
tar -zxvf nginx-1.8.1.tar.gz
#重命名
mv nginx-1.8.1 nginx
cd nginx
#开始配置
./configure --prefix=/usr/local/nginx --with-http_ssl_module
# 编译nginx:
sudo make
# 安装nginx:
sudo make install
如果出错,就是第一步没有做好,缺编译工具。
修改配置:
vi /usr/local/nginx/conf/nginx.conf
启动nginx
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
报错:缺少两个文件:
解决方法:参考
此时已经可以用域名cungudafa.top或者公网ip在浏览器查看到页面咯:
相比较apache,用另一个端口号即可见:cungudafa.top:82,双页面美滋滋~
hexo部署就到此结束了,看看操作流程,配置只配置一次,以后发布就自动发布了,再也不用点gitee的手动部署了。
建议记在小本本上哦!)
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx -s reload
cat /usr/local/nginx/logs/nginx.pid
/usr/local/nginx/sbin/nginx -V
vim /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx -t
参考于:nginx常用的命令
完整: 删除apt install nginx
tips:为 nginx 取别名,后面可直接用
alias nginx='/usr/local/nginx/sbin/nginx'
nginx
nginx -s stop
nginx -s reload
cat /usr/local/nginx/logs/nginx.pid
nginx -V
vim /usr/local/nginx/conf/nginx.conf
nginx -t
git config --global core.autocrlf false
1、移动端遇到的兼容问题(1)安卓浏览器看背景图片,有些设备会模糊:是devicePixelRatio在作怪;解决:背景图代替img标签,背景图是原图2倍,background-size:contain(2)手机中网页放大和缩小:<metaname="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1...
mvc:resources拦截资源显示问题 resource明确不要拦截的资源(静态资源) 不配置会发生这个No mapping found for HTTP request with URI [/web/member/css 1,拦截静态显示问题(mvc的拦截,对
前言: 之前项目用的是原生webview,最近使用公司新框架使用的是x5的webview;正好有需求需要做长截图,踩坑之路开始。1、原生WebView长截图/** * 原生WebView长截图 * * @param webView * @return */ public static Bitmap getWebViewBtpBase64Str(WebView webView) { Bitmap bitmap = null;
千万别把Python的GUI程序命名成tkinter,或者把什么其他的程序命名成tkinter,只要命名成这个,一调用就会报这个错。而且要修复的话目前我知道的只有重装anaconda了。。而且要把这个问题文件重命名,把对应的*.pyd文件也删除。。哈哈哈,贼刺激...
import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import ...
前言今天在学习nacos的源码时发现了一个比较有意思的设计,在此做一个分析。即nacos在提供配置中心功能时,客户端拉取配置时和客户端采用的是长轮询机制主要流程为:客户端发起一个请求给服务端,并附带一个超时时间,为30秒,服务端收到这个请求后会去查询配置的数据是否有更改,如果有更改则会立即返回,如果没有更改则服务端不会立刻返回,直到超时时间到了或者数据在此期间有更改才返回,客户端收到返回后会再次发起一个相同的请求,以此轮询,这就是一种常见的长轮询机制长轮询的优点是客户端是每隔一段时间发起一次请求,不会
作者 :万境绝尘 转载请著名出处eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志;1. 解析 adb logcat 的帮助信息在命令行中输入 adb logcat --help 命令, 就可以显示该命令的帮助信息;[plain] view [email protected]
你好,我是goldsunC让我们一起进步吧!从0到1搭建个人博客-Django(三)在以下链接快速回顾系列文章内容从0到1搭建个人博客-Django(一)从0到1搭建个人博客-Django(二)本篇内容主要是一些框架概念性的东西,需要理解,建议如果没基础的话多读几遍。MVC设计模式说到MVC,它可是Web设计模式的经典制作,我们前文说过Django是遵循MVC模式的,而实际上,Djang...
介绍单片机进行音频ADC DAC调试的方法与过程中用的工具的使用。用到的工具 win 10 64bit PC、信号发生、STM32F405 板卡、稳压电源,示波器、WinHex.exe、ffmpeg.exe、rawConvert.exe、pcm2wav.exe、Keil Array Visualization V1.4.2 Beta.exe音频DAC测试PC自带录音机,录制一段音频record.m4a格式;1:将.m4a转为.wav ;用到工具ffmpegffmpeg -i ..
在linux系统下编写好目标开发板的驱动程序后,需要以模块的方式加入内核。期间交叉编译适合目标板Kernel的模块尤为关键。在此记录编译方法,以免看客和我一样走弯路。1、在宿主机上安装交叉编译器 arm-linux,具体方法百度,一大筐。2、将和目标板的内核原文件在宿主机上编译好(make bzimage)。3、在编译好的内核文件中,输入make modules ARCH=arm C
工作过程中一直想配置一个PHPdebug,但在过程中总是遇到很多奇怪的问题就放弃了(其实是自己比较菜,不懂其中原理),今天重新配置,居然配置成功了。无论是在phpstorm中运行脚本的debug还是通过浏览器访问都一举成功,记录下来给需要的同学参考一哈,如果哪里有问题,还望不吝赐教。安装PHP扩展给PHP环境安装xdebug扩展,下载地址:https://xdebug.org/d...
关于VB其他相关资料Windows编程Com/DCOM组件技术数据库编程(NT,SQL)Ado模型Internet及相关知识(TCP/IP,HTMI,XML)主方向应该理解上机要求需要下载使用msdn帮助MSSQL数据库Office计算机主流语言传统过程式语言:Fortran,Pascal,C,。。。面向对象语言:C++,objectPascal,Ada,。。。数据库管理:Db...