מאז שגוגל התחילה לאהוב אתרי https, נדרש התקנה המונית יותר של SSL במידת האפשר. באופן כללי, בנוסף להטרדה רבה יותר לשרתים, יש לנו גם השפלה במהירות. זה טוב, זֶה HTTP2 התקן משולב בכל שרתי ה- http והדפדפנים הגדולים במשך למעלה משנה וחצי והתמיכה שלו יציבה מספיק. לרוע המזל, stabian של debian אין חבילות התומכות ב- HTTP2 בשרתי ה- http העיקריים. הגרסאות הדרושות לנו כדי ש HTTP2 יעבוד הן כדלקמן:

מבחינתי התערובת גדולה ותלויה באפאצ'י או בנגינקס. טרם שיחקתי בנגן של Apache http2 של debian 8 כמו שלא הייתי חייבת, אבל בתיקים אחוריים הריפו הוא כזה, זה לא יהיה עניין גדול. עבור nginx כבר שיחק אותה כמה פעמים. באופן כללי, השלבים הם כמה ופשוטים יחסית:

  1. אנו מוסיפים את הריפו הרשמי של nginx – ב- debian הגרסה היא 1.6.x 🙄
  2. התקנת openssl מ- backports היא כרגע 1.0.2k – זה מה שאנחנו צריכים ALPN תחזוקה כך שהכל יוכל לעבוד ולהיות מהיר
  3. אנו מתקינים את התסריטים שלנו – הנה הרגע לחלוק אותו אנו נבנה את החבילה שלנו מכיוון שהרשומה שלה מורכבת עם openssl 1.0.1t במקום ש- ALPN לא עובד והדפדפנים לא מגיבים טוב וה- http2 עובד רק אם אתה מכריח אותו
  4. אנו מגדילים את הגרסה כדי לא להחזיק את הצוענים עם החבילות וכשיש גרסה חדשה רק לסנכרון המקורות

נתחיל צעד אחר צעד

הוסף ריפו של nginx

deb http://nginx.org/packages/debian/ codename nginx
deb-src http://nginx.org/packages/debian/ codename nginx

הוספת openssl 1.0.2k וספריית dev אחרת נבנה אותו שוב עם 1.0.1t שאינו המטרה שלנו

echo 'deb http://ftp.debian.org/debian jessie-backports main' | tee /etc/apt/sources.list.d/backports.list

apt update && apt install libssl-dev -t jessie-backports

 

כעת נותר להוסיף את הספריות הדרושות להרכבת nginx

apt install devscripts

apt build-dep nginx

mkdir nginx-build

cd nginx-build

apt-get source nginx

אם עבדת נכון אתה חייב להיות מבנה כמו

~/nginx-build # ll
total 1004
drwxr-xr-x 10 root root   4096 Feb 21 18:37 nginx-1.10.3
-rw-r--r--  1 root root 103508 Jan 31 17:59 nginx_1.10.3-1~jessie.debian.tar.xz
-rw-r--r--  1 root root   1495 Jan 31 17:59 nginx_1.10.3-1~jessie.dsc
-rw-r--r--  1 root root 911509 Jan 31 17:59 nginx_1.10.3.orig.tar.gz

Влизате в папта в която е разархивиран сорса на nginx в моят случай е и nginx-1.10.3 изпълнявате команда с която инкрементирате версията, אני אישית מעדיף להוסיף 1 לבנייה הנוכחית

debchange --newversion 1.10.3-1

לאחר הוספת ה- changelog לפי בחירתך, תוכל להמשיך אל ההדרכה בפועל

debuild -us -uc -i -I -b -j6

הסבר קטן על תצורת הפקודה:

-לנו-uc תגיד לתסריט שלא “שלטים” .קבצי dsc ו- .changes. -אני ו -אני לגרום לתסריט להתעלם מקבצי בקרת גרסאות. לייצר רק חבילה בינארית. -j כמו בכמה תהליכים מקבילים להכין 🙂

 

לאחר השלמת התהליך לעיל, עלינו להתקין את החבילות החדשות שלנו. אם כבר מותקנת nginx, כדאי להסיר אותה

apt remove nginx nginx-*

כדאי גם לגבות את תיקיית ה- nginx ב- / וכו '. בעיקרון כאשר משדרגים מ- 1.6.5 ל 1.10.3 לא היו לי דרמות אבל אתה אף פעם לא יודע. החבילות החדשות ממוקמות בתיקיה ברמה העליונה ויש להתקין אותן עם פקודה כגון:

dpkg -i ../*.deb

אם הכל התנהל בצורה חלקה, כל שעליכם לעשות הוא להפעיל את תהליך ה- nginx ולהגדיר את התצורה של http2, שכבר אינו מטרת המאמר הזה..

חוויתי דרמה קטנה עם הדיסק במחשב הנייד שלי. לאחר תיקון הבעיה בעדכון apt-get, הסוף הבא שלא נעים במיוחד של התהליך האיר

E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/debian.ipacct.com_debian_dists_sid_contrib_binary-i386_Packages
E: The package lists or status file could not be parsed or opened.

כרגיל הבעיה ברורה ביותר / לא ניתן לקרוא נכון /var/lib/apt/lists/debian.ipacct.com_debian_dists_sid_contrib_binary-i386. התיקון פשוט כמו אבחון הבעיה עצמה:

 rf -f /var/lib/apt/lists/*

בסופו של דבר, התוצאה היא סינכרון מאולץ של apt.

עורך הטקסטים החביב עלי הוא ג'יני. זה מינימליסטי מאוד כאן התומך במערך שפות עצום – צדף, php, פיתון, ג … וכו. יש לו גימור משלו ובו בזמן הוא מאוד זריז. חסרה לו הזדמנות נעימה אחרת, אבל כרגע זה די והותר לי. התחלתי קורס מקוון תכנות פייתון על SoftUni – כדי לרענן את הידע שלי ולשדרג אותו מכיוון שלא פיקחתי כראוי על הנעשה בפיתון 3. מרצי הקורס ממליצים PyCharm כ- IDE לתכנות פיטון, אבל אני לא אוהב את זה, כמובן שאני משתמש בג'יני בתרגילים.

במהלך ההרצאות הרגשתי בכאב 2 חסר

  1. השלמה אוטומטית של פיתון נושמת מתיעוד של פונקציות ושיטות
  2. אין אימות עבור תקן pep8

העניין הטוב הוא שג'יני מספיק גמיש להגדרת התצורה וניתן להוסיף אותו בקלות על ידי חסרים.. לִפְעָמִים הוסף תיעוד פיתון ל- IDE שלנו:

  • אנו מושכים התסריט הבא איפשהו ב- PATH שלנו למשל / usr / bin ואל תשכחו להפוך אותו להפעלה
  • ערוך את הקובץ ~ / .config / geany / filenefs / filetypes.python על ידי הוספת השורה הבאה בקטע ההגדרות context_action_cmd = pydocw% s. אם יש להוסיף רק את שם הבינארי מהשלב הקודם. אנו מפעילים מחדש את ג'יני אם הוא ישוחרר.
  • יש לנו כבר פעולת הקשר שתקבל מידע על הפונקציה. Аз си добавих shortcut за да ми е по удобно като не ми е ясно някоя функционалност. אני אוהבת את הגישה הזו הרבה מכיוון שאני מתעצבנת מאוד מהגישה של הרשת נטבנית.

בינתיים הכל טוב. ואז אני באמת רוצה לקבל אימות של הקוד שאני כותב – בין אם אני כותב את זה לפי סטנדרטים מקובלים או שאני כותב מעט כיעור. בעיקרון מצאתי את זה שוב הדרכות איך דברים קורים אבל זה קצת מיושן – לג'יני כל מה שמובנה בתוכו, אתה רק צריך להתקין את חבילת pep8. ב- Debian apt-get להתקין עובד pep8 במחוזות האחרים עליכם לברר בעצמכם כיצד הקסם קורה. בתפריט Build, הכפתור השני (לפחות למעני) הוא מוך לאחר לחיצה עליו תמצא כמה קוד מכוער שיצרת 😀

צילום מסך מ 2016-01-11 20-42-21

להלן המתאר הכללי כיצד לגרום לג'יני שלך לעבוד טוב יותר עם פייתון בעודו עדיין מהיר מבלי לגרום למעבד שלך לרצות למשוך את הכדור.

בגלל כמה (סיבות לא מאוד ברורות לי) שכחתי לשדרג את הדמון של Postgresql בשדרוג ההפצה באחד משרתי הדביאן שלי. לדמון של Postgresql יש את התכונה הנחמדה שלא להתחיל להשתמש בגרסה החדשה שלה (שלא כמו Mysql) עד שאנחנו משוכנעים, כי החדש תואם לחלוטין את ההשקה – שימושי ביותר במאגרי מידע גדולים. תהליך העדכון עצמו מוגבל לדברים הבאים 2 מדרגות:

  • pg_dropcluster
  • pg_upgradecluster

יש להפסיק את הדמון pg לפני שתוכל להוריד את האשכול!

pg_dropcluster 9.4 main

פקודה זו עוברת במהירות, ואז אנו עוברים לחלק המהותי – השדרוג עצמו

pg_upgradecluster 9.1 main
Disabling connections to the old cluster during upgrade...
Restarting old cluster with restricted connections...
Creating new cluster 9.4/main ...
config /etc/postgresql/9.4/main
data   /var/lib/postgresql/9.4/main
locale en_US.UTF-8
Flags of /var/lib/postgresql/9.4/main set as -------------e-C
port   5433
Disabling connections to the new cluster during upgrade...
Roles, databases, schemas, ACLs...
Fixing hardcoded library paths for stored procedures...
Upgrading database postgres...
Analyzing database postgres...
Fixing hardcoded library paths for stored procedures...
Upgrading database template1...
Analyzing database template1...
Fixing hardcoded library paths for stored procedures...
Upgrading database xpqt...
Analyzing database xpqt...
Re-enabling connections to the old cluster...
Re-enabling connections to the new cluster...
Copying old configuration files...
Copying old start.conf...
Copying old pg_ctl.conf...
Copying old server.crt...
Copying old server.key...
Stopping target cluster...
Stopping old cluster...
Disabling automatic startup of old cluster...
Configuring old cluster to use a different port (5433)...
Starting target cluster on the original port...
Success. Please check that the upgraded cluster works. If it does,
you can remove the old cluster with

pg_dropcluster 9.1 main

אם הכל התנהל בצורה חלקה עליכם לקבל הודעה כמו זו שלמעלה שמזמינה אתכם להיפטר מהנתונים הישנים מ- pg.

pg_dropcluster 9.1 main

בסוף Tarpan זה, אתה יכול כעת להתחיל את התהליך שלך שוב. עבורי הבסיסים קטנים ולצערי אני לא יכול להעריך כמה זמן לוקח לשדרוג המשמעותי..

החדש דביאן אורווה עובדה זה כשבוע והידיים שלי גרדו לשדרג את המחשב הווירטואלי שלה אליו אבל לא היה לי זמן עד היום. מאז שהיום שלי התחיל מוקדם, החלטתי להקדיש זמן לשדרוג. Промених сорс листа ми като промених wheezy на jessie

sed -i "s/wheezy/jessie/g" /etc/apt/sources.list && apt-get update

הם רעמו כאן 2 מראות:

  • MariaDB – מהמראה הזו כבר לא צריכה ג'סי כוללת גרסה 10.0.6 בעצמי שלא כל כך אהבתי. לאחר 5.5 micodedb ו- mysql אינם תואמים לחלוטין, וזו הסיבה שחזרתי לרגע ל- mysql 5.5.42 – זה ברירת המחדל בג'סי
  • DotDeb – השתמשתי בזה בעבר ל- php55 גם כאן מיותר כי ג'סי מגיע 5.6.7-1

אחרי שאיבדתי את המראות המיותרות ופניתי מ- MariaDB ל- Mysql apt-get dist-upgrade השתבש, אתחל מחדש ואני כבר הייתי עם דביאן 8.0. פתחתי את שרת האינטרנט שלי ולהפתעתי שזה עבד כאן, הסיפור ארוך – בכמה מילים, ה- Nginx שלי נערך עוד יותר מהמקור עם הנחיות נוספות. dpkg -l nginx- מלא 1.2 mdaaa מישהו שכח לבטל - לא את החבילות. בטל ושדרג הכל בהתאם לתוכנית nginx brak 😆 . Nginx עובד בקשות לעיבוד ותהליך ה- php-fpm פועל ומתבצע מחדש אך קוד ה- php אינו מבצע ולא יורה על שגיאות 🙄 FAVORITE שלי.

לאחר חיפושים אחר מידע על השינויים מצאתי את הקטע הבא

בעיות תצורה של Fastcgi ============================

nginx נשלח fastcgi_params ששונה, שהצהירה על SCRIPT_FILENAME fastcgi_param. קו זה הוסר כעת. מעכשיו אנו גם שולחים fastcgi.conf ממאגר הזרימה, הכולל ערך פרמטר שפוי SCRIPT_FILENAME.

לכן, אם אתה משתמש ב- fastcgi_params, אתה יכול לנסות לעבור ל- fastcgi.conf או להגדיר ידנית את הפרמטרים הרלוונטיים.

בינגו. שיניתי את המארחים הווירטואליים להשתמש fastcgi.conf במקום לבצע התערבויות גסות והכל עבד. ואז פגעתי בהבדל מהיר בכדי לראות את ההבדל בין שני הקונפיגים

diff /etc/nginx/fastcgi_params /etc/nginx/fastcgi.conf
1a2
> fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

מה שהזכיר לי ששפכת תצורות גדולות למארחים וירטואליים אינה רעיון מדליק. נותר רק לחבר מחדש את ה- Nginx שלי עם התוספות שאני רוצה mod_sec + מהירות העמודים אבל זה יכול לחכות. זה הרבה יותר חשוב, שהכלל שלי חוזר על עצמו אם אין לך את הביקורת ממקורות שלישיים והופעות מותאמות אישית שדביאן לא נשבר בזמן השדרוג הרחוק!

https://www.youtube.com/watch?v = gEQCny6zNF0