此教程默认你会一些基础的linux系统命令,譬如cd,mkdir, chmod等,以及基础的windows系统常用的cmd命令,如果不清楚这些命令,建议你请不要继续看下去~
前期准备
-
拥有一台阿里云的服务器和已经购买好域名且操作系统镜像为centos7以上
这里默认你已经买好域名且已经实名认证
-
本次教程所需要的软件
a. FileZilla (用于上传和下载服务器文件)https://filezilla-project.org/download.php?type=client
b. Putty (SSH/Telent客户端,用于连接服务器的终端)
https://github.com/larryli/PuTTY/releases
c. git (用于发布Hexo博客到服务器端的软件)
https://git-scm.com/downloads
一切准备就绪后就开始正式的搭建之旅吧~
搭建步骤
在本地计算机安装Hexo环境
博主本地环境:Windows 10 (64位)
- 安装Node.js
自行去Node.js官网下载Windows(X64)长期支持版(LTS)按提示逐步安装。安装完成后打开windows自带的cmd窗口输入以下命令查看版本号验证是否安装成功。C:\Users\用户名> node -v C:\Users\用户名> npm -v
- 在自己电脑上的D盘或E盘创建名为"myblog"的文件夹
- 选中文件夹鼠标右击选择"Git Bash Here"
- 在弹出的CMD框中输入
此命令是用来安装hexo在创建的文件夹中npm install hexo-cli -g
- Hexo安装完成后,在myblog文件夹下新建myblogs项目,并且对其进行初始化的操作
hexo init myblogs cd myblogs npm install
此时,会在myblog的文件夹下新建一个名为myblogs的文件夹,并且还会在此文件夹下生成相应的项目文件,如图所示
6. 返回到git的窗口中,输入以下命令即可在本地启动hexo服务
hexo server
等待出现"INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop."后
打开浏览器,在浏览器地址输入
localhost:4000
即可访问基于Hexo的个人博客主页了~
目前为止本地计算机的操作暂告一段落
服务器端准备工作
此时默认你会使用putty连接服务器且能够在阿里云服务器的控制台添加安全组和更改root密码
在服务器上安装nginx
因为我们需要用nginx作为我们web服务器,所以我们要先安装nginx服务。具体操作如下:
使用root用户远程登录阿里云服务器后,使用yum命令进行安装,首先需安装nginx需要的相关的依赖库~
-
安装gcc gcc-c++
yum install -y gcc gcc-c++
-
安装PCRE库
yum install -y pcre pcre-devel
-
安装openssl、zlib、gcc依赖
yum install -y zlib zlib-devel yum install -y openssl openssl-devel
-
下载nginx安装包
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
-
将安装包解压到/usr/local/目录下
tar -xvf nginx-1.10.1.tar.gz -C /usr/local
-
进入/usr/local目录,确认nginx是否解压到该目录下,进入nginx-1.10.1的目录中,会发现有一个./configure的可执行文件,执行该配置文件
cd /usr/local ls cd nginx-1.10.1/ ./configure
-
编译并安装nginx
make && make install
-
查找nginx安装目录且进入安装目录
whereis nginx cd /usr/local/nginx ls
-
防火墙开启80端口访问(此时你应在阿里云控制台中创建安全组开启所有IP进方向80端口可访问)默认linux不会开启80端口
systemctl status firewalld //检查防火墙是否开启,若显示failed则为开启 systemctl start firewalld //开启为start关闭则改为stop firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload firewall-cmd --list-ports
防火墙其他常用命令
firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
firewall-cmd --remove-port=80/tcp --permanent ##永久移除80端口
firewall-cmd --zone=public --list-ports ##查看已开放的端口
服务器nginx配置
- 首先在home路径中建立www然后进入www再创建website目录
cd /home mkdir www cd www mkdir website
- 进入nginx目录修改nginx.conf文件,将server 80 端口下的root项改为 /home/www/website
cd /usr/local/nginx/conf vi nginx.conf
安装node.js
```
cd ~
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install -y nodejs
```
检查是否安装成功
node -v
npm -v
安装Git
全程依旧使用yum命令安装Git,安装期间提示y/s一律选择yes
- 安装Git及新建Git用户
yum install git git --version adduser git chmod 740 /etc/sudoers vi etc/sudoers
- 在打开的sudoers中如图片所在位置添加以下内容
git ALL=(ALL)ALL
- 执行以下指令更改文件夹权限,切换git用户并建立密钥
这里的步骤至关重要!!!
```
chmod 400 /etc/sudoers
sudo passwd git
su git
cd ~
mkdir .ssh
cd .ssh
vi authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
```
4. 创建git仓库且添加钩子文件
cd ~ git init --bare blog.git vi ~/blog.git/hooks/post-receive
5. 在post-receive中输入
git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f
5. 保存退出给文件加权限
chmod +x ~/blog.git/hooks/post-receive
注意以上指令都需在git用户下执行,若中途断开需重新执行su git指令进入git账户!!
- 在之前root用户中新建的/home/www/website文件夹中添加文件权限
su root chmod 777 /home/www/website chmod 777 /home/www
- 切换到本地电脑,在本地git窗口中输入
ssh -o StrictHostKeyChecking=no git@你的服务器地址
返回结果如下则成功!
本地配置文件修改
- 修改hexo目录下的_config.yml文件
repo: git@服务器地址:/home/git/blog.git
编写nginx启动脚本
在/etc/init.d/路径下添加以下脚本文件,名称改为nginx
#!/bin/bash
#Startup script for the nginx Web Server
#chkconfig: 2345 85 15
nginx=/usr/localinx/sbininx
conf=/usr/localinx/confinx.conf
case $1 in
start)
echo -n "Starting Nginx"
$nginx -c $conf
echo " done."
;;
stop)
echo -n "Stopping Nginx"
killall -9 nginx
echo " done."
;;
test)
$nginx -t -c $conf
echo "Success."
;;
reload)
echo -n "Reloading Nginx"
ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP
echo " done."
;;
restart)
$nginx -s reload
echo "reload done."
;;
*)
echo "Usage: $0 {start|restart|reload|stop|test|show}"
;;
esac
为nginx启动脚本添加权限
chmod +x nginx
脚本控制命令
service nginx start //启动
service nginx stop //停止
service nginx reload //重启
hexo常用命令
hexo s
hexo clean && hexo deploy
git pull
至此搭建完成,可以开始编写自己的博客内容了~~~