Hexo博客部署到云服务器
安装nginx-1.20.1(下载)
移动到opt目录下(没有则新增):
下载nginx包:
解压:
如果出现:./configure: error: the HTTP rewrite module requires the PCRE library.
1 | yum -y install libxml2 libxml2-devel libxslt-devel gd gd-devel perl-devel perl-ExtUtils-Embed GeoIP GeoIP-devel GeoIP-data |
安装目录:/usr/local/nginx
建立博客根目录
将博客的页面文件放在/home/www/website/路径下,需要先创建这些文件。
配置nginx路由
建立了博客的根目录后,需要将 nginx 服务器指向这个根目录地址,才能访问到博客页面,所以需要修改 nginx 的配置文件。
阿里云默认的库下载的是基于 fedora 的 nginx,查阅资料发现,默认配置文件位于etc/nginx/下的nginx.conf。
查看 nginx 的默认配置文件:
该目录下的nginx.conf就是默认配置文件。
但不采用直接修改 nginx 配置文件的方式,而是新建一个文件夹,将自己的配置写在新建的文件夹中。再利用include,在配置文件nginx.conf中将文件夹引入进来即可。
这样若有新的需求时,只需在文件夹中添加新需求的配置文件即可,不会再次修改配置文件nginx.conf,提高效率。
切换/etc/nginx/目录,在此目录下创建一个文件夹vhost:
输入vim tale.conf新建tale.conf文件并编辑内容:
1 | server{ |
其中,listen代表监听 80 端口。root是博客的根目录,页面存放的地址。server_name是服务器名称,填域名test.top,将域名和博客的页面根目录绑定。
为了让 http://www.sfzhang.top 也能访问到博客页面,再新建一个配置文件wwwtale.conf,将server_name设置为 www.sfzhang.top :
1 | server{ |
此时,/etc/nginx/vhost目录下就有两个配置文件,tale.conf和wwwtale.conf。
打开/etc/nginx/目录下的nginx.conf文件,添加下面一行代码,将刚才新建的配置文件引入进来。*.conf的意思是将vhost文件夹下的所有.conf后缀的文件都引入了进来。注意:要写在http{}的里面。
1 | include /etc/nginx/vhost/*.conf; |
至此,完成了 nginx 路由的配置,将域名和云服务器指定路径进行了绑定。
安装nodejs
安装命令:
安装完成后执行 node -v 和 npm -v ,如果打印版本号则安装成功。
配置服务端Git
安装Git:
配置Git用户:
修改用户权限命令:
编辑/etc/sudoers:
添加以下代码:
1 | git ALL=(ALL) ALL |
保存退出后,将sudoers文件权限改回原样:
设置 Git 用户的密码:
切换到 git 用户,然后在~目录下创建.ssh文件夹,命令:
配置Git密钥
生成公钥密钥文件命令:
输入后都按回车即可!!!
此时在目录下就会有两个文件,分别是id_rsa和id_rsa.pub,其中id_rsa.pub就是公钥文件,复制一份:
这样目录下就会有一个authorized_keys文件,修改它的权限:
Windows生成密钥
在本地电脑的CMD命令行工具中输入以下命令,一直按回车即可!会在本地电脑的用户文件夹下生成密钥
MacOS生成密钥
第一步
启动台打开终端,输入 cd ~/.ssh 检查是否已经存在了SSH密钥。如果你看到类似id_rsa.pub的文件,说明你已经有了一对公钥和私钥,可以跳过第 2 步和第 3 步。
第二步
在终端输入ssh-keygen -t rsa -C “你的邮箱地址” ,生成新的SSH密钥。你可以直接按回车键使用默认的文件路径和空密码,也可以自己设置。
第三步
在终端输入ssh-add ~/.ssh/id_rsa,添加SSH密钥到 ssh-agent。如果你之前设置了密码,这里需要再次输入。
第四步
在终端输入vim ~/.ssh/id_rsa.pub,查看并复制你的公钥内容。你可以把公钥添加到你需要远程访问的代码仓库网站或服务器上。
生成密钥后:
将本地电脑的id_rsa.pub文件的内容拷贝到云服务器的authorized_keys文件的末尾!!!!可采用的方法有:
• 直接复制内容
• 通过Xftp文件传输工具,先将本地电脑的id_rsa.pub文件传输到云服务器某位置,再在云服务器上该位置执行cat id_rsa.pub >> ~/.ssh/authorized_keys即可
然后我们在本地电脑上,打开 cmd,使用ssh方式连接云服务器,输入:
最后提示Welcome to Alibaba Cloud Elastic Compute Service !,说明不用输入密码也登录成功了,即配置 Git 密钥成功,以后更新博客部署的时候不用输入 Git 密码了!
如果出现
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
则执行以下命令
然后重新尝试连接
输入yes,按下回车,成功连接。
创建Git仓库
创建一个 Git 的仓库,并且新建一个post-receive文件
输入以下内容
1 | git --work-tree=/home/www/tale --git-dir=/home/git/tale.git checkout -f |
保存退出并授予该文件可执行权限,命令:
到此服务器端配置完成。
配置Hexo仓库地址
1 | repo: git@云服务器公网IP:/home/git/tale.git |
问题总结
重启nginx
部署完成后,若打开页面没变化,可以在云服务器输入以下命令重启nginx即可:
静态文件未生成
如果部署后在博客静态文件目录下未生成博客文件则需要给该目录分配写权限(root用户下)
开启https认证
下载SSL证书
在阿里云SSL控制台下载nginx的ssl证书
在nginx服务器安装证书
执行以下命令,在Nginx的conf目录下创建一个用于存放证书的目录:
1 | cd /etc/nginx #进入Nginx默认配置文件目录。该目录为手动编译安装Nginx时的默认目录,如果您修改过默认安装目录或使用其他方式安装,请根据实际配置调整。 |
将证书文件和私钥文件上传到Nginx服务器的证书目录(/etc/nginx/cert)
编辑Nginx配置文件nginx.conf,修改与证书相关的配置:
1 | vi /etc/nginx/nginx.conf |