Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

对于仓库中 v2ray.service v2ray@.service 能不能同时使用的问题 #4

Open
unknowndevQwQ opened this issue Jun 4, 2020 · 22 comments

Comments

@unknowndevQwQ
Copy link

就像标题问的那样,我发现 v2ray.service 中的 -confdir 指定的是 /usr/local/etc/v2ray,但是 v2ray@.service 是 -config /usr/local/etc/v2ray/%i.json

如果打算同时使用这两个 .service 的话,是否会带来不便?

@ghost
Copy link

ghost commented Jun 13, 2020

的確是會帶來不便的,這可能會造成配置上的衝突。

因為 v2ray.service 會讀取目錄下的所有配置,之所以保留 v2ray@.service,是為了應對仍要使用單文件配置的情況,所以沒有考慮同時使用 v2ray.servicev2ray@.service 的情景。

@unknowndevQwQ
Copy link
Author

的確是會帶來不便的,這可能會造成配置上的衝突。

因為 v2ray.service 會讀取目錄下的所有配置,之所以保留 v2ray@.service,是為了應對仍要使用單文件配置的情況,所以沒有考慮同時使用 v2ray.servicev2ray@.service 的情景。

原来如此,那未来会做出改变吗?

@ghost
Copy link

ghost commented Jun 14, 2020

我個人更傾向於保持現狀,因為多文件配置可以解決大多使用場景了。

不過,如果你願意,可以對現有的 service 進行修改或是替換,比如 v2ray.service 讀取單獨的一個目錄,v2ray@.service 又讀取單獨的另一個目錄,一個簡單的小腳本,又或是一小部分文檔說明,就可以解決,並且,這可以作為對現有內容的補充,以應對此類問題。

@unknowndevQwQ
Copy link
Author

我個人更傾向於保持現狀,因為多文件配置可以解決大多使用場景了。

不過,如果你願意,可以對現有的 service 進行修改或是替換,比如 v2ray.service 讀取單獨的一個目錄,v2ray@.service 又讀取單獨的另一個目錄,一個簡單的小腳本,又或是一小部分文檔說明,就可以解決,並且,這可以作為對現有內容的補充,以應對此類問題。

例如 config2confdir.sh 吗?

@ghost
Copy link

ghost commented Jun 26, 2020

是的。

@sixg0000d
Copy link
Contributor

sixg0000d commented Jul 5, 2020

安装脚本在升级时好像没有考虑到用户已经在使用v2ray@.service的情况,升级后直接启动了v2ray.service(且升级前没有停止v2ray@.service)。

@unknowndevQwQ
Copy link
Author

unknowndevQwQ commented Jul 7, 2020

安装脚本在升级时好像没有考虑到用户已经在使用v2ray@.service的情况,升级后直接启动了v2ray.service(且升级前没有停止v2ray@.service)。

确实

@ghost ghost closed this as completed Jul 12, 2020
@unknowndevQwQ
Copy link
Author

建议重新打开一下,因为还有一个问题没有解决

@ghost ghost reopened this Jul 13, 2020
@ghost
Copy link

ghost commented Jul 13, 2020

@unknowndev233 可以新建一個文件夾,例如:

/usr/local/etc/v2ray/config/

然後將 v2ray@.service 文件中的 ExecStart 部分修改為:

ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config/%i.json

@unknowndevQwQ
Copy link
Author

@unknowndev233 可以新建一個文件夾,例如:

/usr/local/etc/v2ray/config/

然後將 v2ray@.service 文件中的 ExecStart 部分修改為:

ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config/%i.json

问一下,systemd 文件放在 /usr/local/lib/systemd/system 时 systemd 也可以感知到吗?

@ghost
Copy link

ghost commented Jul 13, 2020

剛剛試了一下,是可以的。

@unknowndevQwQ
Copy link
Author

剛剛試了一下,是可以的。

我有一个想法,把 unit 文件放在那里,然后有个脚本在 /etc/systemd/system/v2ray.service.d 做覆盖

@ghost
Copy link

ghost commented Jul 13, 2020

/etc/systemd/system/
├── v2ray.service -> /usr/local/lib/systemd/system/v2ray.service
└── v2ray@.service -> /usr/local/lib/systemd/system/v2ray@.service

是類似這種結構麼?

@unknowndevQwQ
Copy link
Author

/etc/systemd/system/
├── v2ray.service -> /usr/local/lib/systemd/system/v2ray.service
└── v2ray@.service -> /usr/local/lib/systemd/system/v2ray@.service

是類似這種結構麼?

不是

@unknowndevQwQ
Copy link
Author

在 /etc/systemd/system/xxx.service.d 下创建的 .conf 文件可以覆盖原本 .service 文件的内容

假设有一个 /etc/systemd/system/v2ray.service.d/overlayExecStart.conf 文件,内容如下:
[Service]
ExecStart=/usr/local/bin/v2ray -confdir /etc/v2ray/confdir

@ghost
Copy link

ghost commented Jul 24, 2020

這個可以直接執行:

# systemctl edit unit

這會建立一個子配置文件,但並不是所有參數都會被子配置文件覆蓋,並且,在修改 ExecStart 前必須將其置空。

下面是一個例子:

[Service]
User=v2ray
ExecStart=
ExecStart=/usr/local/bin/v2ray -confdir /etc/v2ray/confdir/

也可執行:

# systemctl edit --full unit

這會打開 /etc/systemd/system/unit


上述方案應由使用者自行判斷。

@unknowndevQwQ
Copy link
Author

unknowndevQwQ commented Jul 29, 2020

這會建立一個子配置文件,但並不是所有參數都會被子配置文件覆蓋,並且,在修改 ExecStart 前必須將其置空。

下面是一個例子:

[Service]
User=v2ray
ExecStart=
ExecStart=/usr/local/bin/v2ray -confdir /etc/v2ray/confdir/

不需要空吧? 实测发现需要

@unknowndevQwQ
Copy link
Author

這個可以直接執行:

# systemctl edit unit

這會建立一個子配置文件,但並不是所有參數都會被子配置文件覆蓋,並且,在修改 ExecStart 前必須將其置空。

下面是一個例子:

[Service]
User=v2ray
ExecStart=
ExecStart=/usr/local/bin/v2ray -confdir /etc/v2ray/confdir/

也可執行:

# systemctl edit --full unit

這會打開 /etc/systemd/system/unit

上述方案應由使用者自行判斷。

或许可以把这部分写进文档里

@unknowndevQwQ
Copy link
Author

额外一提,如果两个配置文件都使用 confdir 的话,那么 v2ray 文件夹可能要考虑创建一个 default 或者类似的文件夹给非模板配置使用

@IceCodeNew
Copy link
Collaborator

@unknowndev233 看看 PR #114 对于解决这个问题是不是足够。

@GleenJi

This comment has been minimized.

@IceCodeNew

This comment has been minimized.

@v2fly v2fly locked as resolved and limited conversation to collaborators Sep 21, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants