PHILIP x BLOG

心有猛虎,细嗅蔷薇


  • 首页

  • 归档

macOS安装mysql

发表于 2018-06-27 |

安装Mysql

安装之前,需要查看你的 macOS 的版本,支持哪些版本的 mysql ,来对应安装,否则会出现不兼容的情况。mysql 的文档列出了各个版本支持的平台,对于 macOS,如下

image-20180627104047807

image-20180627104126873

以我的 macOS 10.13 为例,支持64位8.0、5.7、5.6版本,鉴于8.0正式版本刚发布不久(2018.4),我们这里选择5.7版本来进行安装。

更多详细的平台支持信息,可以去 官网 查询

选择了版本,下面就可以进行安装了。mac 平台主要有2中方式来安装 mysql

  • 原生包安装器 (DMG) 来进行安装。这种方式需要拥有 mac 系统的管理员权限。
  • 使用二进制压缩包来进行安装,安装包格式一般是 mysql-*VERSION*-*OS*.tar.gz 。可以使用 tar 或者 gzip 命令将 mysql 安装在任意目录。注意这种方式可以没有管理员权限。
  • 源码编译安装,需要预先安装 cmake,make,boost c++库等,比较繁琐。

简单起见,我们选择第一种方式(如果你没有管理员权限,则只能选第二种方式)

  1. 下载 .dmg 格式的安装包,一般我们使用社区版本,例如 mysql-5.7.22-macos10.13-x86_64.dmg,下载地址为 mysql5.7下载

  2. 下载完成后双击执行安装,如下

    image-20180627110750323

  3. 安装过程中,会为 root 账户生成一个随机的密码,注意记住该密码,后面会用到。

  4. 安装完成后,我们需要为 root 修改密码,这是因为之前安装时生成的密码自动过期,只能用来登录,而不能进行操作,因此需要使用者再手动修改密码,这样就保障了安全性。

修改root密码

修改密码之前,先手动启动 mysql 服务

mysql 被安装在/usr/local/mysql 目录,我们将 bin 目录添加到 PATH 环境变量以方便执行 mysql 命令

1
2
$ echo 'export PATH=/usr/local/mysql/bin:$PATH' > ~/.bash_profile
$ source ~/.bash_profile

然后就可以使用mysqld_safe 命令手动启动 mysql 进程了

1
$ sudo mysqld_safe --user=mysql &

使用生成的随机密码登录到 mysql

1
$ mysql -uroot -p

为 root 账户设置新的密码

1
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

退出后重新使用新密码登录

1
$ mysql -uroot -p

这样我们就能执行 mysql 的操作了

另外,我们还要将刚才手动启动的 mysql 关闭,然后使用正式方式启动mysql 服务

1
$ sudo mysqladmin -u root -p shutdown

我们使用 macOS 下的服务面板来启动 mysql,依次点击系统左上角的 苹果 图标 ->系统偏好设置->MySQL->Start MySQL Server

image-20180627141058962

新建 user

先使用修改后的 root 密码登录

1
$ mysql -uroot -p

为 root 赋予所有权限

1
mysql> GRANT all ON *.* to root@localhost IDENTIFIED BY 'root_passwd';

新建 philip 用户并赋予 以 db_ 开头命名的库的查询修改等权限

1
2
mysql> GRANT LOCK TABLES,select,insert,update,delete,create,drop,index,alter ON `db\_%`.* to philip@"10.%.%.%" IDENTIFIED BY 'tmpP001';
mysql> FLUSH PRIVILEGES;

新建 query 用户并赋予以 db_oss_开头命名的库的只读权限

1
2
mysql> GRANT select ON `db\_oss\_%`.* to query@"localhost" IDENTIFIED BY '123';
mysql> FLUSH PRIVILEGES;

编码配置

配置文件

在 windows 平台,如果使用安装程序安装,则安装程序会在 mysql 安装目录自动创建一个名为 my.ini 的文件作为mysql 服务的配置文件;如果是使用 zip 压缩包安装,则需要拷贝my-default.ini为 my.ini 作为配置文件(注意,MySQL 5.7.18版本之后的 mysql 压缩包不包括 my-default.ini)

在非 windows 平台,没有默认的配置文件,mysql 启动时会使用缺省的参数。因此我们需要手动创建 my.cnf 。

以下命令可以查看 mysql 的参数列表以及server 启动时会读取哪些配置文件

1
$ mysqld --verbose --help | less

搜索 my.cnf 可以看到,配置文件读取顺序为

1
2
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

我们选择其中一个目录新建 my.cnf 即可。

存储编码

字符集不仅影响 mysql 的数据存储,也影响 client 程序和 mysql server 的连接交互,因此在考虑设置编码的时候,这两方面都需要考虑。

mysql 5.7 版本默认的存储字符集和字符比较规则为 latin1, latin1_swedish_ci,这与通用的 utf8 标准不兼容,因此我们需要修改 mysql 的默认 character set 和 collation。字符集设置按照层级分为四个:server, database, table, and column。

首先查看现有的设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql> show VARIABLES like '%character%';
+--------------------------+-----------------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.22-macos10.13-x86_64/share/charsets/ |
+--------------------------+-----------------------------------------------------------+
8 rows in set (0.01 sec)

mysql> show VARIABLES like '%collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

可以看到 character_set_database、character_set_server、collation_database、 collation_server 几个选项的值都为 latin1,需要修改为 utf8。

在 HOME 目录创建 my.cnf 文件作为配置文件,添加以下内容

1
2
3
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

完成后使用 mac 偏好设置里 的 mysql launch daemon panel来重新启动 mysql 即可。

image-20180704104726142

注意 这里在配置 my.cnf 的时候需要特别注意两点

  • 假如新建 /etc/my.cnf 作为配置文件,需要将文件 mode 设置为644,否则启动会不成功或者配置被忽略

    1
    $ sudo chmod 644 /etc/my.cnf
  • 只需要设置 character-set-server 和 collation-server 两个选项,并不存在 character_set_database 和 collation_database 选项。原因是 server 级别的选项已经涵盖了 database 级别的设置。如果你需要单独设置某个 database 的编码,在输入 create table SQL语句时单独指定即可,详见 这里

连接编码

除了存储编码,我们每次通过 client 连接到 MySQL server(如 mysql client 或者PHP 脚本等)时,还需要设置该连接的交互字符集为 utf8,执行以下语句

1
mysql> SET NAMES 'utf8';

参考文档

MySQL 官网

Configuring Application Character Set and Collation

服务器断电后自启动

发表于 2018-06-19 |

引子

创业公司的生产资料主要集中在自己搭建的服务器上,由于一些客观因素(没钱,环境差)导致服务器经常断电,一般周末经常性的『技术性』断电重启,导致坑爹的一早来就要手动开机、手动启动虚拟机、手动启动后台进程,不知不觉中一上午就没有了,一次两次可以,次数多了之后难免烦躁,打算一劳永逸解决这件事情。

解决方案

解决这个问题其实就是分别解决下面几个问题:

  • 自动开机
  • 自动开启虚拟机
  • 自动开启进程

通电自动开机

关于自动开机的原理及方式有很多,比如来电自动、鼠标键盘启动、局域网自动唤醒等等,我们这里打算用来电自动的方式。

通电自动开机依赖于服务器的主板支持该功能;对于支持该功能的主板,其BIOS设置里这个功能是一般默认关闭,我们需要在 BIOS 设置里开启该功能。至于具体的设置,由于不同主板设置选项各不相同,本文暂时不做论述,大家可以自行 google 或者在各厂家的产品页面寻求帮助。

虚拟机自启动

为了方便服务器的管理,一般需要在物理机上安装特定的虚拟机管理软件,比较知名的如 citrix 公司的 XenServer、vmware的 vSphere 等。自动开启虚拟机依赖具体的虚拟机管理软件。我们使用开源的XenServer,6.0之后的版本已经支持虚拟机随server启动而启动。XenServer 以 ISO 的形式提供,包含服务端、GUI客户端 XenCenter及命令行工具 xe-cli 等。详细的下载和安装可以参考 官网

通过命令行 xe-cli 可以设置虚拟机在物理机启动后自启动,xe-cli 在 ISO 镜像文件里,以 rpm 的形式提供。以 Centos6 环境为例,安装 xe-cli:

1
$ rpm -ivh xe-cli-7.1.0-137263c.x86_64.rpm

注意,这里的 xe-cli 可以安装在和服务器连接的内网机器上,可以是任意一台虚拟机系统里,其本质和 GUI 形式的客户端管理工具 XenCenter 类似,只不过是命令行形式而已。

我们设置需要连接的服务器物理机 ip (例如10.1.164.37)以及登录用户密码

1
2
3
4
$ cat ~/.xe 
server=10.1.164.37
username=root
password=123456

然后设置资源池 (vm-pool) 允许自动重启,先列出所有 pool 的 uuid,然后设置

1
2
3
4
5
6
7
8
$ xe pool-list
uuid ( RO) : 8f05704a-09be-d56a-0b08-f6f2e8a10d46
name-label ( RW):
name-description ( RW):
master ( RO): b33b36ba-6f9d-43e3-90c9-bb62e27193bf
default-SR ( RW): <not in database>

$ xe pool-param-set uuid=8f05704a-09be-d56a-0b08-f6f2e8a10d46 other-config:auto_poweron=true

最后选择需要自动重启的虚拟机,然后设置为自动重启(同样使用 uuid 来设置):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ xe vm-list
uuid ( RO) : 2548c2b1-103d-8d6a-433d-77cbc8cabfb8
name-label ( RW): Base
power-state ( RO): halted
uuid ( RO) : 756d3025-d365-8de3-6f54-755464534e84
name-label ( RW): svr.test.164.43
power-state ( RO): halted
uuid ( RO) : 68d76d60-9b5b-40fe-b88f-edf0cd8906da
name-label ( RW): Control domain on host: xenserver-fbilcznb
power-state ( RO): running

$ xe vm-param-set uuid=756d3025-d365-8de3-6f54-755464534e84 other-config:auto_poweron:true

$ xe vm-param-set uuid=68d76d60-9b5b-40fe-b88f-edf0cd8906da other-config:auto_poweron:true

详细可以参看 这里

自动启动进程

自动启动进程就比较简单了,通过 chkconfig 命令或者修改 /etc/rc.local 文件就可以在系统启动时候做任何你想做的事情了,我们在这里添加一些启动数据库和服务器进程的操作。

使用 chkconfig

chkconfig 使用说明

1
2
3
4
5
用法:    chkconfig [--list] [--type <type>] [name]
chkconfig --add <name>
chkconfig --del <name>
chkconfig --override <name>
chkconfig [--level <levels>] [--type <type>] <name> <on|off|reset|resetpriorities>

以设置 mysqld 进程自动启动为例

mysqld 自启动

或者

使用 rc.local

修改 /etc/rc.local

添加

/etc/init.d/mysqld start

结尾

至此,我们终于一劳永逸解决这些烦人的问题了,是时候泡杯咖啡好好享受生活了。。。。

参考资料

如何设置BIOS使服务器断电后再来电能自动开机

How to Setup XenServer 6.x to Auto-Start Virtual Machines

未命名

发表于 2018-05-24 |

hexo 博客搭建

发表于 2018-05-21 |

Hexo 是一种快速、简单、强大的博客框架,可以很方便的用来维护个人博客;框架代码开源,使用 Node.js 编写,目前在Github 的 star 数有22000+,可以说十分受欢迎。根据官网的介绍,有下面一些特性:

可以使用 Markdown 格式编写博客源文件,支持 GitHub Flavored Markdown 扩展格式
从 Markdown 源文件到静态网页的渲染速度很快,几百个文件渲染在秒级
一键部署,运行一条命令就可以将博客部署到 Github Pages 或者云主机站点

本文将讲述如何基于 Hexo 搭建一套个人博客,有以下内容:

  • 基础知识
  • 本地搭建
  • 远程部署

基础知识

博客系统的架构图如下:

博客架构

我们先需要在本地搭建一套可以访问的静态博客站点,然后将博客推送到远程服务器的仓库里,同时能自动更新到站点目录。

废话不多说,下面开始具体步骤。

本地搭建

准备工作

我们需要提前安装以下工具:

  • Node.js
  • Git
安装 Node.js

目前(截止2018-05)官方推荐安装 Node.js v8 LTS。 有两种安装方法

  1. 包管理器二进制安装
  2. 源码安装

如果使用源码安装,还需要安装 gcc/clang/make 等开发工具,手动编译代码,比较麻烦,因此我们选择二进制方式安装。

对于 Linux 环境(以Centos为例)官方提供了setup 脚本,我们先下载下来执行:

1
$ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

然后安装

1
$ sudo yum -y install nodejs

对于 MacOS 环境,直接使用 Homebrew 包管理器安装:

1
$ brew install node

通过下面的命令可以查看已经成功安装:

1
$ node -v

更多安装信息可以查看这里 安装 Node.js

安装 git 客户端
  • Mac: 使用 Homebrew 安装git:

    1
    $ brew install git

    如果没有安装 Homebrew,好吧,使用以下ruby命令(mac自带 ruby)安装 Homebrew:

    1
    $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew doctor
  • Linux (Fedora, Red Hat, CentOS):

    1
    $ sudo yum install git-core

安装完成

1
$ git version

安装 Hexo

有了前面安装的Node.js,我们就可以用它配套的包管理工具 npm 来安装 hexo 了:

1
2
$ npm install -g hexo-cli
$ hexo version

生成示例博客

1
2
3
$ hexo init demo
$ cd demo
$ npm install

npm会依次安装依赖的模块,最终生成的文件大致有以下这些:

1
2
3
4
5
6
7
8
.
├── _config.yml
├── node_modules
├── package-lock.json
├── package.json
├── scaffolds
├── source
└── themes

_config.yml是 yaml 格式的配置文件,source 目录用来存放博客源文件,themes 用来放置博客主题(默认的主题为landscape);渲染的时候还会生成 public 目录,用来存放渲染后的网页文件如 html, js, css, image 等。

现在我们来添加自己的第一篇博客文章:

1
$ hexo new "hello Hexo"

生成的 Markdown 格式源文件存放在 source/_posts 目录,为 source/_posts/hello-Hexo.md,此时包括自带的 hello-world.md 我们已经有两篇博客:

1
2
$ ls source/_posts/
hello-Hexo.md hello-world.md

我们可以启动本地 server 来进行预览

首先安装 hexo-server

1
2
$ cd demo
$ npm install hexo-server --save

启动 server

1
$ hexo server

浏览器打开 http://localhost:5000/ 就可以看到博客内容了。更多关于 hexo 的使用可以参考 这里

渲染

hexo 提供了命令可以将 Markdown 源文件渲染成博客网页文件,供后面的远程部署使用

1
$ hexo generate

在 public 目录就会生成静态网页文件

1
2
$ ls public
2018 archives css fancybox index.html js

远程搭建

前面提过,我们可以将渲染出的静态博客网页文件放到 Github Pages 或者自有的云主机 vps 上,提供外网浏览服务。

Github Pages 是Github 提供的免费网页托管服务,只需要在你的 Github 账户下新建一个 <username>.github.io 库即可托管博客站点,非常方便;

如果你购买有自己的云主机(国内有阿里云、腾讯云、金山云等),安装常用的 web 服务如 nginx 也可以很简单的搭建一个博客站点。

这里我们以 vps 搭建博客站点为例

新建操作账户

首先在 vps 上新建一个操作账户,如 user00,并赋予其 sudo 权限。注意用 root 用户做如下操作

新建账户并设置密码

1
2
$ adduser user00
$ passwd user00

修改 /etc/sudoers 文件,为 user00 添加 sudo 权限,默认该文件是只读的,我们打开编辑权限

1
2
$ chmod 740 /etc/sudoers
$ vim /etc/sudoers

在文件最后添加下面的内容

1
user00 ALL=(ALL) NOPASSWD: ALL

保存退出后改回只读状态

1
chmod 400 /etc/sudoers

后面的操作我们就可以避免不安全的 root 账户,使用 user00 账户来操作了。

安装 nginx

以vps 安装了 Centos 为例,直接执行命令

1
2
$ su - user00
$ sudo yum install -y nginx

安装完成后,启动 nginx 服务 (这里以centos6为例,其他系统请自行google)

1
$ sudo /etc/init.d/nginx start

浏览器打开http://your-wan-ip/ 可以看到 nginx 的欢迎页面

image-20181219164916981

your-wan-ip 填写你的 vps 外网 ip

一般云主机默认的安全组会禁止所有端口访问,所以需要在安全组配置80端口的访问权限

自动上传

在上文本地搭建中我们已经可以渲染出可用的博客网页文件了(通过 hexo generate 命令),下面就需要将这些博客文件上传到我们的远程环境,即云 vps 上。

Hexo提供了非常方便的上传方式,支持一键自动部署,在本地运行命令

1
$ hexo deploy

即可部署到远程,当然它还依赖一些部署工具。hexo支持多种部署工具,如 Git、Rsync、SFTP 等,方便起见我们这选择 Git。有其他需求的可以查看 deploy

使用 Git 方式就需要我们在远程 vps 上新建一个 repository 来存放博客文件,然后就可以在本地用 git 上传了。需要以下步骤:

  • 安装 git
  • 创建 git 账户
  • 本地生成密钥对
  • 存储公钥
  • 新建 repository
  • 配置 hexo 上传
安装 git

在远程 vps 上,用刚才的 user00 账户运行安装命令

1
sudo yum install -y git

因为我们需要通过 git 账户来将本地的博客文件上传至远程 vps 上的 repository 里,所以需要在远程 vps 上创建 git 账户

创建 git 账户

在远程 vps 上运行

1
2
$ sudo adduser git
$ sudo passwd git

git 通过 ssh 方式上传文件时,有两种方式访问远端服务器

  • 密码登录
  • 公钥免密码登录

如果使用密码登录方式,每次都需要用户输入密码会非常麻烦,因此我们选择另外一种方式,即公钥方式登录。公钥登录需要本地生成密钥对,然后保存到远端服务器。详细的 ssh 公钥登录原理可以在这里查看 ssh 公钥登录

本地生成密钥对

切换到本地环境,运行密钥生成命令

1
$ ssh-keygen -t rsa -C "your-email@example.com"

your-email@example.com 填写你的邮箱地址即可,然后一路回车,运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub 和 id_rsa。前者是你的公钥,后者是你的私钥。

存储公钥

有了公钥,我们就将其上传到远程 vps 上,存储起来,以后 ssh 访问就不需要密码了。在远程 vps 上,/home/git/.ssh/authorized_keys 文件用来保存公钥。

首先,本地环境复制公钥内容

1
$ cat $HOME/.ssh/id_rsa.pub | pbcopy

远程 vps 上,切换为 git 账户

1
$ sudo su - git

编辑 /home/git/.ssh/authorized_keys 文件

1
2
3
$ cd
$ mkdir -p .ssh
$ vim .ssh/authorized_keys

粘贴刚刚复制的公钥内容,保存退出

完成之后修改该文件权限,只允许 git 账户访问

1
2
$ chmod 600 /home/git/.ssh/authorized_keys 
$ chmod 700 /home/git/.ssh

现在就可以测试是否可以通过 ssh 方式从本地环境免密码登录远程 vps 了

本地环境运行

1
$ ssh -v git@server-ip

这里的 server-ip 填写你 vps 的外网 ip(wanip),运行后显示连接成功。然后 ctrl-D 退出 ssh 登录,回到本地环境。

接下来,我们需要新建一个 repository 目录 (例如 blog.git)来存放博客文件

新建 repository

在远程 vps 上,运行命令创建 git 裸库

1
2
3
4
$ cd
$ mkdir -p blog.git
$ cd blog.git
$ git init --bare

为了使 hexo deploy 命令可以运行,我们还需要做一些工作,让 hexo 通过 git 上传文件

配置 hexo 上传

本地环境,安装插件 hexo-deployer-git

1
2
$ cd demo
$ npm install hexo-deployer-git --save

修改 _config.yaml 配置文件,添加 deploy 相关的字段,格式如下

1
2
3
4
deploy:
type: git
repo: <repository url>
branch: [branch]

type设置为 git,<repository url> 就是我们刚刚搭建好的远程 git 仓库地址,格式为 user@server-ip:/path/to/git-repo

示例配置如下

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: git@120.120.120.120:/home/git/blog.git
branch: master

将 120.120.120.120 替换为你 vps 的外网 ip,保存退出,执行一键部署

1
$ hexo clean && hexo generate --deploy

在远程 vps 的 /home/git/blog.git 目录我们已经可以看到文件已经上传上来了。

自动更新

远程 vps 上 repository 建好之后,nginx 还不能访问到,我们需要借助工具,在 git repository 有文件上传时自动将更新后的文件拷贝到 nginx 的网页目录下,这样博客就会自动更新了。

创建网页目录

在远程 vps 上,使用 user00 账户创建 /var/www/blog,并设置目录为 git 账户所有

1
2
$ sudo mkdir -p /var/www/blog
$ sudo chown -R git:git /var/www/blog
配置Git Hooks

我们需要将 repository 目录 /home/git/blog.git 的文件自动拷贝到 nginx 目录 /var/www/blog 目录,这里我们利用 git 的 hook 机制,在 repository 有更新时,自动运行脚本将文件 checkout 到 nginx 目录

编辑 git repository 的 hook 脚本 post-receive

1
2
3
$ sudo su - git
$ cd /home/git/blog.git
$ vim hooks/post-receive

输入以下 bash 脚本内容

1
2
#!/bin/sh
git --work-tree=/var/www/blog --git-dir=/home/git/blog.git checkout -f

该脚本会在 git repository (/home/git/blog.git) 有上传时自动 checkout 内容到 nginx 网页目录 /var/www/blog

修改完成后,赋予 post-receive 脚本可执行权限

1
$ chmod +x hooks/post-receive

现在,只要 repository 有更新,我们的 hook 脚本就会自动执行了。更多Git Hooks 的使用可以参考 Git Hooks

下面测试一下自动更新是否起效

测试自动更新

本地环境修改一下博客 source/_posts/hello-Hexo.md

1
2
$ cd demo
$ vim source/_posts/hello-Hexo.md

任意输入一些内容,保存退出

hexo 一键部署

1
$ hexo clean && hexo generate --deploy

然后在远程 vps 上查看目录 /var/www/blog,文件已经自动更新过来

如果发现有问题,可以手动运行 git –work-tree=/var/www/blog –git-dir=/home/git/blog.git checkout -f 定位错误,修改后再次测试

修改 nginx 配置使其指向我们的网页目录

配置 nginx

user00账户,编辑配置

1
$ sudo vim /etc/nginx/conf.d/default.conf

内容如下

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
#
# The default server
#

server {
listen 80;
#listen [::]:80 default_server;
server_name www.example.com example.com;
index index.html index.htm index.php default.html default.htm default.php;
root /var/www/blog;

location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf)$
{
access_log off;
expires 1d;
}

location ~ .*\.(js|css|txt|xml)?$
{
access_log off;
expires 12h;
}

location / {
try_files $uri $uri/ =404;
}
}

注意以下几点:

将 www.example.com example.com 替换为你自己的域名
如果监听在默认端口80,域名需要 备案
#listen [::]:80 default_server; 该行务必注释掉,否则会提示 ipv6 监听相关的错误
root 选项请填写网页目录,设置为 /var/www/blog

修改完成后重启 nginx 服务

1
$ sudo /etc/init.d/nginx restart

浏览器打开 http://www.example.com/ 可以看到博客内容

至此,远程存放博客的环境已经搭建完成。

以后更新博客,只需要在本地环境编辑好 Markdown 文件,就可以一键自动部署了

1
$ hexo clean && hexo generate --deploy

是不是非常方便 ^ ^,赶快行动起来吧!

参考资料:

阿里云VPS搭建自己的的Hexo博客

Hexo官方文档

SSH原理与运用(一):远程登录

Git Hooks 官方文档

博客搭建手记

发表于 2018-05-21 |

总揽

本文将介绍利用Hugo来快速搭建一个简单的个人博客。相对于其他静态网站生成器来说,Hugo 具备如下特点:

极快的页面编译生成速度。( ~1 ms 每页面)
完全跨平台支持,可以运行在 Mac OS X, Linux, Windows, 以及更多!
安装方便 Installation
本地调试 Usage 时通过 LiveReload 自动即时刷新页面
完全的皮肤支持
可以部署在任何的支持 HTTP 的服务器上

在本文你将看到以下内容:

  • 本地搭建: 先搭建一个博客,可以本地预览
  • 远程部署:将博客部署到github上,对外开放浏览

本地搭建

1. 首先利用 hugo 命令行新建一个 website 目录(比如blog),用来放置博客文件。

1
hugo new site blog

生成的 blog 目录结构如下:

1
2
3
4
5
6
7
8
.
├── archetypes
├── config.toml
├── content
├── data
├── layouts
├── static
└── themes

2. 为博客添加一个主题,主题会放置在 blog/themes 目录下。你可以在 themes.gohugo.io 上查找你喜欢的主题,这些主题一般托管在 github 上,我们可以把它下载到 themes 目录下。

这里我们选择一个叫 beautifulhugo 的主题:

1
2
cd themes
git clone https://github.com/halogenica/beautifulhugo.git beautifulhugo

然后设置默认主题为 beautifulhugo:

1
2
cd ..
vim config.toml

添加以下内容到 config.toml:

1
theme = "beautifulhugo"

3. 利用 hugo 命令行在 content 目录中添加一篇博客文章,文章都是用md格式来编辑:

1
hugo new post/first.md

修改 post/first.md 的内容如下:

1
2
3
4
5
### Hello Hugo

1. aaa
2. bbb
3. ccc

4. 利用 hugo 命令构建带 content 的博客,并在本地localhost:1313上启动 server:

1
hugo server -D

5. 浏览器打开http://localhost:1313/可以看到博客内容。

至此本地搭建完成。

部署博客到github

github页面 (github pages) 分两种:

  • User/Organization Pages (https://<USERNAME|ORGANIZATION>.github.io/)
  • Project Pages(https://<USERNAME|ORGANIZATION>.github.io//)

这里我们只介绍 User/Organization 类型的页面,也就是将博客页面托管到以下地址:

https://<USERNAME|ORGANIZATION>.github.io/

以下为步骤:

1. Ctrl+C 停掉本地 server

2. 在 github 上新建一个 repository(例如blog) 用来作为原始博客文件的远程仓库

3. 提交 blog 原始文件到 github :

1
2
3
4
5
6
cd blog
git init
git add -f .
git commit -m "first commit"
git remote add origin git@github.com:<USERNAME>/blog.git
git push -u origin master

后续如果博客有更新,再有修改需要提交,只需要执行:

1
2
3
git add -A
git commit -m "your commit message"
git push origin master

4. 再新建一个repository <USERNAME>.github.io 用来作为渲染后的博客文件的远程仓库

5. 将<USERNAME>.github.io作为 submodule 关联到 public 目录:

1
git submodule add -b master git@github.com:<USERNAME>/<USERNAME>.github.io.git public

6. 利用 hugo命令行 build 生成渲染后的博客文件,文件的默认存放路径就是public

1
hugo -D

7. 提交public目录的渲染文件到github:

1
2
3
4
cd public
git add .
git commit -m "your commit message"
git push

8. 浏览器打开https://<USERNAME>.github.io/可以看到博客内容。

至此博客 github 部署完成。

1…34

philipyao

35 日志
20 标签
GitHub E-Mail
© 2020 philipyao
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4
备案号:沪ICP备17048801号