Trick lỏ tự khởi chạy lại PaySys khi bị tịt.
Mình tự bùa để sửa cái bug (tính năng) be bé này cho Ae nào cần.
Sửa xong khi mở server lên, mặc định PaySys chạy theo quản lý server, khi nào quản lý Server còn chạy là PaySys còn bị gọi dậy.
Mình giả định rằng Ae đã hiểu công cụ và cách làm, nếu ko hiểu thì ko làm theo.
Bước 1:
winSCP đến server, mở path:
Bước 2:
Sao lưu jx.sh và app.py. Chúng ta sẽ sờ vào 2 file này.
Bước 3:
Mở jx.sh, sửa dòng 17 từ:
Mã:
: "${GAMEPATH:=/home/jxser}"
thành:
Mã:
: "${GAMEPATH:=/home/jxser_vozer}"
Lưu lại.
Đại khái là sửa lại path mặc định cho jx.sh thôi.
Bước 4:
Mở app.py, tìm khối sau:
Python:
def _monitoring_process(self, process_name):
if process_name == "MSSQL":
process_name = "/opt/mssql/bin/sqlservr"
if process_name == "MySQL":
process_name = "mysqld"
if process_name == "PaySys":
process_name = "Sword3PaySys.exe"
if process_name == "RelayServer":
process_name = "S3RelayServer.exe"
# Dummy implementation, replace with actual process checking logic
# For example, using subprocess to check if the process is running
try:
output = subprocess.check_output(['pgrep', '-f', process_name])
return bool(output)
except subprocess.CalledProcessError:
return False
Sửa thành:
Python:
def _monitoring_process(self, process_name):
if process_name == "MSSQL":
exe = "/opt/mssql/bin/sqlservr"
elif process_name == "MySQL":
exe = "mysqld"
elif process_name == "PaySys":
exe = "Sword3PaySys.exe"
elif process_name == "RelayServer":
exe = "S3RelayServer.exe"
else:
exe = process_name
try:
subprocess.check_output(['pgrep', '-f', exe])
return True
except subprocess.CalledProcessError:
# Nếu là PaySys thì tự động restart bằng jx.sh
if process_name == "PaySys":
subprocess.Popen(
["bash", "/root/quanlyserver/2.3.1/jx.sh", "start", "PaySys"],
env=os.environ.copy()
)
return False
Đại khái là dựa vào hàm monitor tiến trình có sẵn của app.py, nếu PaySys tịt thì gọi bash đến jx.sh để bắt PaySys dậy làm việc tiếp.
Lưu ý: Python quan trọng phần thụt thò, cần đảm bảo copy paste đúng và đủ, kiểm lại thụt thò đúng chuẩn trước khi chạy lại server nhé.
Bước 5:
Restart server.
Theo dõi app Quản lý server có khởi chạy không và có gọi PaySys lên không.
Nếu CÓ, là đã làm thành công.
Nếu KHÔNG, trả lại các file đã sao lưu và chờ Ae khác fix.
Cách trên mình đang áp dụng cho server trên PC của mình, Ae có thể tham khảo hoặc bỏ qua tùy ý. Mong là nó hữu dụng cho Ae.