阿里云服务器配环境(Ubuntu 16.04+Nginx+MySQL+PHP)并部署hexo博客

购买服务器

阿里云向学生出售优惠价格的服务器,一个月只需9.5块,具体配置看图吧

更新Ubuntu源,安装Git

1
2
3
sudo apt update
sudo apt upgrade
sudo apt-get install git

配置Nginx

参考链接(转):https://blog.csdn.net/qq_19004627/article/details/80520622

安装Nginx

sudo apt install nginx

开启Nginx服务

sudo service nginx start

在任意设备上使用浏览器访问服务器ip地址,比如我的服务器访问 http://47.102.140.114

如果返回如下界面,则表明Nginx安装成功

安装MySQL

sudo apt install mysql-server

安装过程中需要设置两次密码

安装PHP

sudo apt install php php-fpm php7.0-mysql

安装后,修改Nginx默认配置文件使其支持PHP

sudo vim /etc/nginx/sites-available/default

将下面的代码取消注释

1
2
3
4
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

修改完配置,重启Nginx

sudo service nginx restart

在/usr/share/nginx/html/目录创建info.php文件,测试PHP

sudo vim /usr/share/nginx/html/info.php

输入以下代码

1
2
<?php phpinfo();
?>

在任意浏览器访问服务器 http://服务器ip地址/info.php

如果显示以下内容,则表明配置成功

配置python和MySQL

修改系统默认python,服务器自带python2.7和python3.5,我习惯用3x版本,所以把默认版本改成了它

1
2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

这样,在终端输入python,默认进入的是3.5版本的python

但是python3.5版本不能使用mysql-python的包,因为这个包只适用于2x版本的,所以寻找了另一个相似的包——mysqlclient

先安装依赖

1
2
3
sudo apt-get install libmysql-dev
sudo apt-get install libmysqlclient-dev
sudo apt-get install python3-dev

再安装

sudo pip install mysqlclient

进入python,输入import MySQLdb,检查模块是否可以正常导入,如果没有报错,说明安装成功

hexo 部署到阿里云服务器

参考链接(转):https://segmentfault.com/a/1190000015698357?utm_source=tag-newest (原文链接已经失效了)

新建空的Git仓库

在服务器终端运行

1
2
$ mkdir tombraiderjf.git && cd tombraiderjf.git
$ git init --bare

修改hexo配置

在本地hexo配置_config.yml文件
将第一行注释掉,改为root@服务器ip地址:服务器git路径

1
2
#repository: git@github.com:TombRaiderjf/TombRaiderjf.github.io.git
repository: root@ip_address:/home/admin/tombraiderjf.git

这样,每次进行hexo d 操作就是将本地生成的public文件夹push到服务器的Git仓库里了

自动部署

本地的deploy命令只是把静态文件提交到git仓库,既然有git hooks,那么我们可以在有文件提交上来时,再将文件拷贝到博客网站目录。
进入到git仓库hooks目录,并创建钩子post-receive

1
2
3
cd /www/blog.git/hooks
touch post-receive
vim post-receive

然后编辑post-receive,输入以下脚本

1
2
3
4
5
6
7
8
#!/bin/bash -l
GIT_REPO=/home/admin/tombraiderjf.git
TMP_GIT_CLONE=/home/admin/temp
PUBLIC_WWW=/home/admin/myblog
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

:wq保存并退出

其中/home/admin/tombraiderjf.git为仓库路径,/home/admin/myblog为你的博客网站路径,/home/admin/temp是临时目录,git会先将文件拉到临时目录,然后再将所有文件拷贝到博客网站目录/home/admin/myblog

更改目录权限:

1
2
chmod +x post-receive
chmod 777 -R /www/blog

修改Nginx配置

sudo vim /etc/nginx/sites-availible/default

将server中的root路径修改为博客网站目录

root /home/admin/myblog

将server中的index名称改为自己的博客网页入口html,我的文件名是index.html,所以不需要修改

在本地测试

在本地终端输入 hexo g -d,并输入服务器密码,即可成功部署到服务器上

然后,在本地浏览器访问服务器ip地址,即可看到hexo博客内容

Thank you for every coin~