Skip to content

Commit 018c1c0

Browse files
committed
feat: enhance Makefile with install/uninstall service commands and configuration management
1 parent d41c947 commit 018c1c0

1 file changed

Lines changed: 73 additions & 2 deletions

File tree

Makefile

Lines changed: 73 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
PROJECT_NAME = https_proxy
2+
INSTALL_DIR = /usr/bin
3+
CONFIG_DIR = /etc/$(PROJECT_NAME)
4+
SYSTEMD_DIR = /etc/systemd/system
25

3-
.PHONY: build run clean
6+
.PHONY: build run clean install uninstall install-service uninstall-service start stop restart status enable disable
47

58
build:
69
CGO_ENABLED=0 go build -o $(PROJECT_NAME) main.go
@@ -15,4 +18,72 @@ run:
1518

1619
clean:
1720
rm -f $(PROJECT_NAME)
18-
rm -f $(PROJECT_NAME)_static
21+
rm -f $(PROJECT_NAME)_static
22+
23+
install: build
24+
@echo "Установка $(PROJECT_NAME)..."
25+
install -d $(CONFIG_DIR)
26+
install -m 755 $(PROJECT_NAME) $(INSTALL_DIR)/$(PROJECT_NAME)
27+
@if [ ! -f $(CONFIG_DIR)/config.yaml ]; then \
28+
install -m 644 config.example.yaml $(CONFIG_DIR)/config.yaml; \
29+
echo "Конфиг установлен: $(CONFIG_DIR)/config.yaml"; \
30+
else \
31+
echo "Конфиг уже существует, пропускаем: $(CONFIG_DIR)/config.yaml"; \
32+
fi
33+
install -m 644 packaging/$(PROJECT_NAME).service $(SYSTEMD_DIR)/$(PROJECT_NAME).service
34+
systemctl daemon-reload
35+
systemctl enable $(PROJECT_NAME)
36+
systemctl start $(PROJECT_NAME)
37+
@echo "Установка завершена. Сервис $(PROJECT_NAME) запущен и добавлен в автозагрузку."
38+
39+
uninstall:
40+
@echo "Удаление $(PROJECT_NAME)..."
41+
-systemctl stop $(PROJECT_NAME) 2>/dev/null || true
42+
-systemctl disable $(PROJECT_NAME) 2>/dev/null || true
43+
rm -f $(SYSTEMD_DIR)/$(PROJECT_NAME).service
44+
rm -f $(INSTALL_DIR)/$(PROJECT_NAME)
45+
systemctl daemon-reload
46+
@echo "Удаление завершено."
47+
@echo "Конфигурация сохранена в $(CONFIG_DIR)"
48+
49+
uninstall-full: uninstall
50+
@echo "Удаление конфигурации..."
51+
rm -rf $(CONFIG_DIR)
52+
@echo "Полное удаление завершено."
53+
54+
install-service:
55+
install -m 644 packaging/$(PROJECT_NAME).service $(SYSTEMD_DIR)/$(PROJECT_NAME).service
56+
systemctl daemon-reload
57+
systemctl enable $(PROJECT_NAME)
58+
systemctl start $(PROJECT_NAME)
59+
@echo "Сервис $(PROJECT_NAME) установлен и запущен."
60+
61+
uninstall-service:
62+
-systemctl stop $(PROJECT_NAME) 2>/dev/null || true
63+
-systemctl disable $(PROJECT_NAME) 2>/dev/null || true
64+
rm -f $(SYSTEMD_DIR)/$(PROJECT_NAME).service
65+
systemctl daemon-reload
66+
@echo "Сервис $(PROJECT_NAME) удалён."
67+
68+
start:
69+
systemctl start $(PROJECT_NAME)
70+
@echo "Сервис $(PROJECT_NAME) запущен."
71+
72+
stop:
73+
systemctl stop $(PROJECT_NAME)
74+
@echo "Сервис $(PROJECT_NAME) остановлен."
75+
76+
restart:
77+
systemctl restart $(PROJECT_NAME)
78+
@echo "Сервис $(PROJECT_NAME) перезапущен."
79+
80+
status:
81+
systemctl status $(PROJECT_NAME)
82+
83+
enable:
84+
systemctl enable $(PROJECT_NAME)
85+
@echo "Сервис $(PROJECT_NAME) добавлен в автозагрузку."
86+
87+
disable:
88+
systemctl disable $(PROJECT_NAME)
89+
@echo "Сервис $(PROJECT_NAME) удалён из автозагрузки."

0 commit comments

Comments
 (0)