按需启用 vultr

目前 vultr 上最便宜的 vps 为 1c1g 价格 5 美元,使用https://github.com/justjavac/deno_vultr可以按需启动 vultr,在不用的时候关闭实例,这样可以进一步控制成本.

前置工作

创建一台 vps 实例

创建一台 vsp 实例,并部署好你需要的服务(ss/ssr/v2ray 等等),
我之前创建 v2ray 的文章:https://h123.cf/2020/03/20/2020.03.12.v2ray+traffic_mask/.

创建这台 vps 的 snapshot,并记录下 snapshot id:

img

搭建服务

克隆仓库

1
2

git clone https://github.com/justjavac/deno_vultr

修改配置文件 /config/vultr.ts

1
2
3
export const SNAPSHOTID = "xxxxxxxxxxxxx";

// SNAPSHOTID为之前创建快照时生成的 id

也可以可以自行修改 ./config/app.ts 文件.

运行

1
2

deno run --unstable --allow-net --allow-read --import-map=import_map.json ./mod.ts

img

停止以后实例会被删除,点击开始后会从之前的快照恢复实例.

后记

centos 7 以上运行 deno 出错的问题

安装 deno 运行时报错:

1
When centos7 installs deno, version `GLIBC_2.18' not found

在网上找到一篇文章:
https://www.programmersought.com/article/23921150522/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. Download and extract
wget https://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar -zxvf glibc-2.18.tar.gz


# 2. Compile and install
cd glibc-2.18 && mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install



# 3. Verification
[root@VM_0_7_centos build]# ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 12 Mar 25 09:01 /lib64/libc.so.6 -> libc-2.18.so

重启以后 nginx 权限出错的问题

我在 vps 使用的是 nginx + v2ray,在重启之后发现 nginx 代理出错,查看日志/var/log/nginx/error.log以后发现报错:

1
339 connect()  failed (13: Permission denied) while connecting to upstream

网上查了一下发现是是因为 SeLinux 的限制.

关闭 seLinux

  • 临时关闭: setenforce 0 ##设置 SELinux 成为 permissive 模式
  • 永久关闭: 修改/etc/selinux/config 文件
    SELINUX=enforcing改为SELINUX=disabled并重启机器即可.

centos7 查看/设置/取消开机启动项

查看开机启动项列表(enable 表示开机启动,disabled 表示开机不启动)

1
2

systemctl list-unit-files //开机启动项多时,按空格翻页

过滤查看

1
2
3
4
# 查看启用的开机启动项
systemctl list-unit-files | grep enabled
# 查看 nginx 是否设置为开机启动项
systemctl list-unit-files | grep nginx

添加某个服务为开机自动启动

1
2
3
4
5
systemctl enable *****

# 设置 nginx 为开机启动项

systemctl enable nginx.service

取消服开机启动项

1
2
3
4
5
systemctl  disable *****

# 取消设置 nginx 为开机启动项

systemctl disable nginx.service

centos 7 开机自启动有两种不同的设置方式,如果是 yum 直接安装的软件服务,则直接开启即可,如果是源码编译安装的,则需要在系统服务(system)创建 service 文件,然后才能设置。

用源码编译安装 nginx 时 u 要手动创建 nginx.service 服务文件。开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:

1
/lib/systemd/system/

创建 nginx.service 文件

1
2

vim /lib/systemd/system/nginx.service

写入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

查看 nginx 状态

1
systemctl status nginx.service

其他命令

1
2
3
4
5
6
7
8
9
10
# 启动 nginx 服务
systemctl start nginx.service 
# 停止 nginx 服务
systemctl stop nginx.service 
# 重启 nginx 服务
systemctl restart nginx.service 

# 查看所有服务

systemctl list-units --type=service

参考

https://segmentfault.com/a/1190000022665540

https://github.com/justjavac/deno_vultr

https://www.programmersought.com/article/23921150522/

thank u !