This is a translation of the original English documentation page. Help us make it better.

בניית סוכן Zabbix על Windows

סקירה כללית

סעיף זה מדגים כיצד לבנות קבצים בינאריים של סוכן Zabbix Windows ממקורות עם או בלי TLS.

קומפילציה של OpenSSL

השלבים הבאים יעזרו לך להרכיב OpenSSL ממקורות ב-MS Windows 10 (64 סיביות).

  1. עבור קומפילציה של OpenSSL תצטרך במחשב Windows:
    1. מהדר C (למשל VS 2017 RC),
    2. NASM (https://www.nasm.us/),
    3. פרל (למשל Strawberry Perl מ-http://strawberryperl.com/),
    4. מודול Perl Text::Template (cpan Text::Template).
  2. קבל מקורות OpenSSL מ-https://www.openssl.org/. OpenSSL 1.1.1 משמש כאן.
  3. פרק את מקורות OpenSSL, למשל, ב-E:\openssl-1.1.1.
  4. פתח חלון שורת פקודה למשל. שורת הפקודה של x64 Native Tools עבור VS 2017 RC.
  5. עבור אל ספריית המקור של OpenSSL, למשל. E:\openssl-1.1.1.
    1. ודא שניתן למצוא את NASM:e:\openssl-1.1.1> nasm --version NASM גרסה 2.13.01 הידור ב-1 במאי 2017
  6. הגדר את OpenSSL, עבור דוגמה:e:\openssl-1.1.1> perl E:\openssl-1.1.1\Configure VC-WIN64A no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2- method --api=1.1.0 --prefix=C:\OpenSSL-Win64-111-static --openssldir=C:\OpenSSL-Win64-111-static
    • שימו לב לאפשרות 'ללא שיתוף': אם נעשה שימוש ב'לא משותף' אז ה- ספריות סטטיות של OpenSSL libcrypto.lib ו-libssl.lib יהיו קבצים בינאריים של Zabbix 'עצמאיים' וכתוצאה מכך יכללו OpenSSL בפני עצמם, אין צורך בקובצי OpenSSL DLL חיצוניים. יתרון: ניתן להעתיק קבצים בינאריים של Zabbix לחלונות אחרים מכונות ללא ספריות OpenSSL. חסרון: כאשר חדש גרסת תיקון הבאגים של OpenSSL שוחררה, סוכן Zabbix צריך הידור מחדש והותקן מחדש.
    • אם לא נעשה שימוש ב-'no-shared', אז הספריות הסטטיות libcrypto.lib ו-libssl.lib ישתמשו ב-DLL של OpenSSL ב זמן ריצה. יתרון: כאשר יש גרסה חדשה לתיקון באגים של OpenSSL שוחרר, כנראה שאתה יכול לשדרג רק קובצי OpenSSL DLL, בלי הידור מחדש של סוכן Zabbix. חסרון: העתקת סוכן Zabbix ל מחשב אחר דורש גם העתקת קובצי OpenSSL DLL.
  7. קומפיל את OpenSSL, הרץ בדיקות, התקן:e:\openssl-1.1.1> nmake e:\openssl-1.1.1> nmake test ... כל הבדיקות הצליחו. קבצים=152, בדיקות=1152, 501 שניות שעון קיר (0.67 usr + 0.61 sys = 1.28 CPU) תוצאה: PASS e:\openssl-1.1.1> nmake install_sw'install_sw' מתקין רק רכיבי תוכנה (כלומר ספריות, קובצי כותרות, אך ללא תיעוד). אם אתה רוצה הכל, השתמש "nmake install".

קומפילציה של PCRE

  1. הורד את ספריית PCRE או PCRE2 (נתמכת מאז Zabbix 6.0) ממאגר pcre.org: (https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.zip)
  2. חלץ לספרייה E:\pcre2-10.39
  3. התקן את CMake מ-https://cmake.org/download/, במהלך ההתקנה בחר: וודא ש-cmake\bin נמצא בנתיב שלך (גרסה בדוקה 3.9.4).
  4. צור ספריית בנייה חדשה וריקה, רצוי תת-ספריית במאי המקור. לדוגמה, E:\pcre2-10.39\build.
  5. פתח חלון שורת פקודה למשל. שורת הפקודה של x64 Native Tools עבור VS 2017 ומסביבת מעטפת זו הפעל cmake-gui. אל נסה להפעיל את Cmake מתפריט התחל של Windows, מכיוון שזה יכול להוביל שגיאות.
  6. הזן E:\pcre2-10.39 ו-E:\pcre2-10.39\build עבור המקור ו לבנות ספריות, בהתאמה.
  7. לחץ על כפתור "הגדר".
  8. בעת ציון המחולל עבור פרויקט זה בחר "NMake Makefiles".
  9. צור ספריית התקנה חדשה וריקה. לדוגמה, E:\pcre2-10.39-install.
  10. לאחר מכן, ה-GUI יפרט מספר אפשרויות תצורה. ודא ש האפשרויות הבאות נבחרות:
    • PCRE_SUPPORT_UNICODE_PROPERTIES פועל
    • PCRE_SUPPORT_UTF פועל
    • CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
  11. לחץ שוב על "הגדר". כפתור ה"צור" הסמוך אמור להיות כעת פָּעִיל.
  12. לחץ על "צור".
  13. במקרה שיתרחשו שגיאות, מומלץ למחוק מטמון CMake לפני ניסיון לחזור על תהליך הבנייה של CMake. בממשק המשתמש של CMake, ניתן למחוק את המטמון על ידי בחירת "קובץ > מחק מטמון".
  14. ספריית ה-build צריכה להכיל כעת מערכת בנייה שמישה - Makefile.
  15. פתחו חלון שורת פקודה למשל. שורת הפקודה של x64 Native Tools עבור VS 2017 ונווט אל Makefile שהוזכר לעיל.
  16. הפעל את הפקודה NMake: E:\pcre2-10.39\build> nmake install

קומפילציה של Zabbix

השלבים הבאים יעזרו לך להרכיב את Zabbix ממקורות על MS Windows 10 (64 סיביות). בעת קומפילציה של Zabbix עם/בלי TLS תמכו ב- ההבדל המשמעותי היחיד הוא בשלב 4.

  1. במחשב לינוקס בדוק את המקור ממנו git:$ git clone https://git.zabbix.com/scm/zbx/zabbix.git $ CD zabbix $ ./bootstrap.sh $ ./configure --enable-agent --enable-ipv6 --prefix=`pwd` $ לעשות dbschema $ לעשות dist
  2. העתק ופרק את הארכיון, למשל. zabbix-4.4.0.tar.gz, ב-Windows מְכוֹנָה.
  3. נניח שהמקורות נמצאים ב-e:\zabbix-4.4.0. פתח א חלון שורת הפקודה למשל. שורת הפקודה של x64 Native Tools עבור VS RC 2017. עבור אל E:\zabbix-4.4.0\build\win32\project.
  4. קומפיל את zabbix_get, zabbix_sender ו-zabbix_agent.
    • ללא TLS: E:\zabbix-4.4.0\build\win32\project> nmake /K PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib
    • עם TLS: E:\zabbix-4.4.0\build\win32\project> nmake /K -f Makefile_get TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111- static\lib PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib E:\zabbix-4.4.0\build\win32\project> nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include TLSLIBDIR="C:\OpenSSL-Win64-111 -static\lib" PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib E:\zabbix-4.4.0\build\win32\project> nmake /K -f Makefile_agent TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static \lib PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib
  5. קבצים בינאריים חדשים נמצאים ב-e:\zabbix-4.4.0\bin\win64. מאז OpenSSL הורכב עם אפשרות 'ללא שיתוף', Zabbix binaries מכילים OpenSSL בתוך עצמם וניתן להעתיקם לאחר מכונות שאין להן OpenSSL.

קומפילציה של Zabbix עם LibreSSL

התהליך דומה לקומפילציה עם OpenSSL, אבל אתה צריך לעשות שינויים קטנים בקבצים הממוקמים בספריית build\win32\project:

   * ב-''Makefile_tls'' מחק את ''/DHAVE_OPENSSL_WITH_PSK''. כלומר מצא את <code>

CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK</code>והחליפו אותו ב CFLAGS = $(CFLAGS) /DHAVE_OPENSSL

   * ב-''Makefile_common.inc'' הוסף ''/NODEFAULTLIB:LIBCMT'', כלומר מצא את <code>

/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb</code>והחליפו אותו ב /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT