나는 Ubuntu 16.04 LTS에서 ddclient/DDNS를 사용하여 내가 소유한 두 도메인(NameCheap에서)에 대한 DNS 레코드로 IP를 업데이트하고 있습니다(작동합니다).
그런데 문제는 도메인이 두 개이므로 ddclient의 별도 인스턴스 두 개를 실행해야 한다는 것입니다. .service
이를 위해 저는 두 개의 파일을 작성하기 시작했습니다.
/usr/lib/systemd/system/ddclient_website1.service
[Unit]
Description=DDNS client for website1.tld
[Service]
ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website1.conf
[Install]
WantedBy=multi-user.target
/usr/lib/systemd/system/ddclient_website2.service
[Unit]
Description=DDNS client for website2.tld
[Service]
ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website2.conf
[Install]
WantedBy=multi-user.target
ExecStart 명령에 지정된 구성을 다음과 같이 사용합니다.
/etc/ddclient_website1.conf
daemon=1800
use=web, web=dynamicdns.park-your-domain.com/getip
protocol=namecheap
server=dynamicdns.park-your-domain.com
login=domain_1.tld
password=first_ddns_password
server_name
/etc/ddclient_website2.conf
daemon=1800
use=web, web=dynamicdns.park-your-domain.com/getip
protocol=namecheap
server=dynamicdns.park-your-domain.com
login=domain_2.tld
password=second_ddns_password
server_name
systemctl enable ddclient_website1.service
(website2와 동일)을 사용하면 다음이 생성됩니다.
Created symlink from /etc/systemd/system/multi-user.target.wants/ddclient_website1.service to /usr/lib/systemd/system/ddclient_website1.service.
systemctl start ddclient_website1.service
출력을 생성하지 않습니다.
ps -ef | grep ddclient
방금 실행하고 생성한 grep을 나열하세요 systemctl status ddclient_website1.service
.
● ddclient_website1.service - DDNS client for website1.tld
Loaded: loaded (/usr/lib/systemd/system/ddclient_website1.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sun 2016-12-18 15:34:23 EST; 39s ago
Process: 2687 ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website1.conf (code=exited, status=0/SUCCESS)
Main PID: 2687 (code=exited, status=0/SUCCESS)
Dec 18 15:34:23 server_name systemd[1]: Started DDNS client for website1.tld.
다시 시작해도 긍정적인 변화가 나타나지 않습니다.
편집하다:
.service
ddclient 설치 중에 생성된 기본 파일로 파일을 수정 한 후 .service
이제 다음을 수행할 수 있습니다.시작서비스(에 나열되어 있습니다 ps -ef | grep ddclient
.
[Unit]
Description=DDNS client for website1.tld
After=network.target
[Service]
Type=forking
PIDFile=/var/run/ddclient_website1.pid
ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website1.conf
[Install]
WantedBy=default.target
그러나 40~50초 동안 실행한 후 시간이 초과되어 액세스해야 하는 PID 파일이 존재하지 않음을 나타냅니다(두 서비스 모두 동일한 문제).
● ddclient_website1.service - DDNS client for website1.tld
Loaded: loaded (/usr/lib/systemd/system/ddclient_website1.service; enabled; vendor preset: enabled)
Active: failed (Result: timeout) since Sun 2016-12-18 16:04:14 EST; 22s ago
Process: 1347 ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website1.conf (code=exited, status=0/SUCCESS)
Dec 18 16:02:44 server_name systemd[1]: Starting DDNS client for website1.tld...
Dec 18 16:02:44 server_name systemd[1]: ddclient_website1.service: PID file /var/run/ddclient_website1.pid not readable (yet?) after start: No such file or directory
Dec 18 16:04:14 server_name systemd[1]: ddclient_website1.service: Start operation timed out. Terminating.
Dec 18 16:04:14 server_name systemd[1]: Failed to start DDNS client for website1.tld.
Dec 18 16:04:14 server_name systemd[1]: ddclient_website1.service: Unit entered failed state.
Dec 18 16:04:14 server_name systemd[1]: ddclient_website1.service: Failed with result 'timeout'.
나는 touch
편집했고 ddclient_website1.pid
(웹사이트2에서도 작동함) /var/run
동일한 결과를 얻었습니다.
답변1
[제공하다] ExecStart=/usr/sbin/ddclient -파일/etc/ddclient_website1.conf
PIDFile
프로그램의 옵션과 마찬가지로 INI 파일의 및 설정을 사용하는 것이 잘못되었습니다. 많은 프로그램과 마찬가지로 이 프로그램은 실제로 관련 준비 프로토콜을 구현하지 않았습니다.Type=forking
-pid
다른 많은 소프트웨어와 마찬가지로 이를 수행하는 올바른 방법은 프로그램의 -foreground
옵션을 사용하는 것입니다. doco에 따르면 이 옵션은 개정판 113부터 사용할 수 있습니다.
추가 읽기
답변2
이것은 관련이 있을 수 있습니다, [Install]
해당 섹션을 다음으로 변경해 보세요.
[Install]
WantedBy=default.target
답변3
문제는 ddclient의 캐시와 PID 파일의 위치를 지정하지 않았다는 것입니다.
--help
페이지 에 따르면 :
-file path : load configuration information from 'path' (default: /etc/ddclient.conf).
-cache path : record address used in 'path' (default: /var/cache/ddclient/ddclient.cache).
-pid path : record process id in 'path'.
내 ExecStart
명령은 만 지정 하지만 및 -file
도 지정해야 합니다 .-cache
-pid
이것은 내 작업 ddclient_website1.service입니다.
[Unit]
Description=DDNS client for website1.tld
After=network.target
[Service]
Type=forking
PIDFile=/var/run/ddclient_website1.pid
ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website1.conf -pid /var/run/ddclient_website1.pid -cache /var/cache/ddclient/ddclient_website1.cache
[Install]
WantedBy=default.target
ddclient의 구성 파일에서 다음 경로를 지정할 수도 있습니다 /etc/ddclient_website1.conf
.
daemon=1800
use=web, web=dynamicdns.park-your-domain.com/getip
protocol=namecheap
server=dynamicdns.park-your-domain.com
login=website1.tld
password=my_ddns_password
cache=/var/cache/ddclient/ddclient_website1.cache
pid=/var/run/ddclient_website1.pid
@
이제 ddclient를 실행 systemctl enable ddclient_website1.service
하고 systemctl start ddclient_website1.service
작업을 시작할 수 있습니다.