Hexo部署到阿里云Unbutu服务器

Rsync

rsync服务是将hexo本地生成的静态文件,同步到服务器的工具。参考hexo-部署

如果未安装,在hexo主目录下:

1
$ npm install hexo-deployer-rsync --save

在站点配置_config中:

1
2
3
4
5
6
7
8
9
deploy:
type: rsync
host: 106.**** #远程主机的地址
user: root #使用者名称
root: /root/blog #远程主机的根目录
port: 22 #端口 默认22
delete: true #删除远程主机上的旧文件
verbose: true #显示调试信息
ignore_errors: false #忽略错误

这里,需要有登录服务器的权限,可以参考Mac SSH免密码登录阿里云Unbutu服务器

这样,就可以通过hexo g -d命令将本地生成public目录上传到服务器。

部署到Nginx

按照指南,在服务端安装Nginx,并启动:

1
2
$ sudo apt-get install nginx
$ systemctl start nginx

在浏览器,输入localhost,就能看到:

ginx_aliyu

其他相关的命令:

1
2
3
4
5
6
7
8
9
查看Nginx的版本号:nginx -V

启动Nginx:start nginx

快速停止或关闭Nginx:nginx -s stop

正常停止或关闭Nginx:nginx -s quit

配置文件修改重装载命令:nginx -s reload

绑定网站域名及网站根目录

配置文件路径:/etc/nginx/sites-available/default

修改server里的server_nameroot

hange_root_di

改变当前网站访问用户

如果没法访问,需要检查下网站根目录用户权限。

sudo vi /etc/nginx/nginx.conf,如下:

1
user www.data;

改为自己当前的用户,我使用的是:

1
user root;

最后,重启:

1
2
3
$ nginx -s reload
$ nginx -s stop
$ start nginx

无法访问

如果网站没法访问,需要查看log:/var/log/nginx/error.log

我两次查到的log如下,分别解决,如果有更多的log,再逐个击破。

1. failed (13: Permission denied)

无法访问,很可能是网站根目录的权限问题。

1
failed (13: Permission denied)

改变网站根目录权限:

1
2
$ find /root/blog/  -type d -exec chmod 755 {} \; 
$ find /root/blog/ -type f -exec chmod 644 {} \;

1
2
// chmod -R <permissionsettings> <dirname>
$ chmod -R 755 /root/blog/

部署到Tomcat

Tomcat安装在此不提及,开启Tomcat。在conf中server.xml中增加:

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
28
29
 <!-- Blog -->
<Service name="Blog">
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />

<Engine name="Blog" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>

<Host name="wenghengcong.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/root/blog" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="blog_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
<Host name="www.wenghengcong.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/root/blog" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="blog_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>

此处,修改的地方有以下几个地方:

  1. 增加了port:80,即网站默认端口号。

  2. 此处,port改为与其他Service不一致即可。

  3. 添加Host name为域名wenghengcong.com,以及www.wenghengcong.com。`

    注意,否则有些网址包含www或者不包含www,造成不能访问。

  4. 添加Context字段,且docBase为网站根目录。

重启Tomcat,即可打开。

域名DNS解析

这个简单,根据DNS解析服务器对应的指导进行。

这一步,可以进行ping,如果没法ping通。注意服务器的ping安全设置

阿里云服务器安全组

注意对应的端口号设置,即安全组设置。参考这里

成功

HTTPS 访问

申请阿里云免费CA证书

首先申请免费的阿里云证书,路径为:CA证书->购买证书。

屏幕快照 2018-06-10 11.43.19

支付后,回到证书控制台:

屏幕快照 2018-06-10 11.43.49

屏幕快照 2018-06-10 11.44.01

点击“补全”,补全证书信息。

域名

注意不要加www前缀。

屏幕快照 2018-06-10 11.44.18

个人信息。

屏幕快照 2018-06-10 11.45.32

上面主要是个人信息,有下面几个点注意下:

  • 域名验证类型
  1. 域名验证类型:DNS,直接通过DNS解析中加记录,顺便勾选“证书绑定的域名…….”,这样就可以不用自己去DNS解析添加记录。最后配置好网站就可以直接访问了。

    如果是文件形式,则需要将文件放入网站目录下。具体步骤参考“?”。

  2. 选择系统生成CSR/自己生成的CSR,默认选择系统生成CSR。

DNS解析记录

博主域名也托管在阿里云上,如果上一步选择了DNS域名验证,则自动会添加一条记录。假如你的域名DNS解析托管在其他网站,需要去增加一条解析记录。如下:

屏幕快照 2018-06-10 14.47.23

下一步,提交审核,系统自动审核,等待即可。

屏幕快照 2018-06-10 11.56.57

下载证书!

配置Tomcat

上一步下载后的证书,解压后得到:

屏幕快照 2018-06-10 14.33.52

在Tomcat的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。

Tomcat增加了一个Service配置如下,注意某些服务器默认的https端口号为8443,此处为443

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
28
29
30
31
<!--HTTPS Blog -->
<Service name="HTTPSBlog">
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
SSLEnabled="true"
keystoreFile="cert/******.pfx"
keystoreType="PKCS12"
keystorePass="*****"
/>
<Engine name="HTTPSBlog" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>

<Host name="wenghengcong.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/root/blog" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="httpsblog_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
<Host name="www.wenghengcong.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/root/blog" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="httpsblog_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>

配置参考:

  1. 阿里云配置CA证书
  2. SSL/TLS Configuration HOW-TO