服务部署的二三事

发布于 2021-10-18  40 次阅读


终于克服懒癌去申请域名备案了,今天折腾着把hexo和其他两个服务部署了上来,记录下操作

Hexo部署到Ubuntu服务器

假设本地端已有hexo环境,仅对服务器和本地推送设置进行配置

服务器Git安装配置

首先安装:sudo apt-get install git(安全起见可以开个git账户并禁用ssh登录)。

建立博客文件夹:mkdir /home/你的用户名/hexoBlog

建立git文件夹:cd /homemkdir git,进入git目录。

初始化一个空仓库:git init --bare hexoBlog.git

进入仓库目录下的hooks文件夹后sudo vim post-receive

键入:

 #!/bin/bash
 git --work-tree=/home/用户名/hexoBlog --git-dir=/home/git/hexoBlog.git checkout -f
 #work-tree的值取决于你最终的博客文件夹的路径,git-dir的值即为刚才建立的仓库路径

保存退出后修改权限:sudo chmod +x /home/git/hexoBlog.git/hooks/post-receive(之前建立的目录可以都改一遍读写权限,以免出现奇怪的问题)

Nginx安装配置

首先安装:sudo apt-get install nginx,然后启动:service nginx start

打开浏览器访问下你的IP,出现Nginx页面即可。

修改Nginx的配置(此处的配置文件位置和文件名,不同机器上可能有所不同,请多找下)

配置域名和https

先下载你的ssl证书文件,解压后将Nginx文件夹下的,后缀crt和key的两个文件放到nginx目录下的cert文件夹下。

修改配置文件:sudo vim /etc/nginx/conf.d/default.conf,键入以下内容(仅为部分必要配置):

server {
    listen 443 ssl;
    #设置监听的端口
    server_name 你的域名;
    #添加监听的主机名
    ssl_certificate 你的crt文件路径;
    #添加SSL证书
    ssl_certificate_key 你的key文件路径;
    #添加SSL证书Key
    ssl_session_timeout 5m;
    #设置session超时时间
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    #设置SSL加密配置
    location / {
        root 你的博客文件夹路径;#设置虚拟主机加载目录
        index index.html;#设置虚拟主机默认加载的首页
    }
}

#设置强制https
server {
    listen 80;
    #设置监听的端口
    server_name 你的域名;
    #添加监听的主机名
    return 301 https://$host$request_uri;
    #重定向到443端口
}

推送配置

默认公钥已部署到服务器

打开_config.yml,修改deploy项:

type: git
  repo: 服务器用户名@服务器IP:博客文件夹路径
  branch: master

尝试本地hexo cleanhexo g -d,然后访问你的域名,此时应该是https下的主页,hexo部署完成。

rssant部署

蚁阅——一个可自行部署的rss应用,这里不赘述具体部署,只讲部署后如何用二级域名访问。

关于蚁阅的部署。部署时请另设一个端口,以免冲突。

假设已经部署在1234端口。

先在域名配置中添加二级域名的解析记录,为方便起见,直接添加所有二级域名:

主机记录 记录类型 记录值
* A 服务器IP

打开nginx配置文件:sudo vim /etc/nginx/conf.d/default.conf.

添加如下记录:

server {
    listen 80;
    server_name 完整域名(包括二级);
    location / {
                proxy_pass http://服务器IP:1234/;
        }
}

此时打开访问完整域名,可打开部署的蚁阅。若要https,按照[配置域名和https](### 配置域名和https)设置即可。

qbittorrent部署

同蚁阅,也只讲二级域名访问

也是在nginx配置文件中添加对应域名和端口号进行反向代理,但我做完这一步,WebUI访问有问题,提示Unauthentic,后来发现是需要添加额外配置,完整如下:

server {
    listen 80;
    server_name 完整域名;
    location / {
                proxy_pass http://服务器IP:端口号/;
                proxy_http_version 1.1;
                proxy_set_header X-Forwarded-Host
                $http_host;
                http2_push_preload on;
        }
}

Nextcloud部署

利用snap可以非常方便地安装、配置网盘服务——nextcloud。

  1. 安装snap:sudo apt-get install snap
  2. 安装snapd:sudo apt-get insatll snapd
  3. 安装nextcloud:sudo snap install nextcloud
  4. 设置运行端口:snap set nextcloud ports.http=目标端口
  5. nginx配置反代理
  6. 安装缩略图生成应用后,以sudo nextcloud.occ preview:generate-all执行,亦可利用定时任务生成

上传文件报“未知错误”

在nginx配置文件中添加:client_max_body_size 10240M;

也可以修改php配置vim /etc/php.ini

max_execution_time = 0         # 默认是30秒,改为0,表示没有上传时间限制
post_max_size = 10800M         # 设定POST数据所允许的最大大小
upload_max_filesize = 10240M   # 表示所上传的文件的最大大小

crontab配置

参见Linux crontab 命令

配置CDN提升访问体验,同时降低服务器压力

利用腾讯CDN服务,具体配置已有文档,不再赘述。

至此,今天折腾完了。