saz saba



Apache Tomcat یک سرور مجازی وب و کانتینر servlet است که برای ارائه برنامه های جاوا استفاده می شود. Tomcat یک اجرای منبع باز از فناوری های Java Servlet و JavaServer Pages است که توسط بنیاد نرم افزار Apache منتشر شده است. این آموزش شامل نصب اولیه و برخی از تنظیمات آخرین نسخه Tomcat 9 در سرور مجازی Debian 10 میباشد.
پیش نیازها
قبل از شروع این راهنما ، باید یک کاربر غیر ریشه با امتیازات sudo در سرور مجازی خود داشته باشید. می توانید با تکمیل راهنمای تنظیم اولیه سرور مجازی Debian 10 ما این کار را یاد بگیرید.
مرحله 1 – جاوا را نصب کنید
Tomcat نیاز دارد که جاوا را روی سرور مجازی نصب باشد تا هر کد برنامه وب جاوا قابل اجرا باشد. ما می توانیم با نصب OpenJDK با apt ، این نیاز را برآورده سازیم.
ابتدا ایندکس بسته apt خود را به روز کنید:
⦁ $ sudo apt update

سپس بسته توسعه جاوا را با apt نصب کنید:
⦁ $ sudo apt install default-jdk

اکنون که جاوا نصب شده است ، می توانیم یک کاربر tomcat ایجاد کنیم که برای اجرای سرویس Tomcat استفاده خواهد شد.
مرحله 2 – ایجاد کاربر Tomcat
برای اهداف امنیتی ، Tomcat باید به عنوان یک کاربر بدون امتیازات اجرا شود (یعنی root نباشد). ما یک کاربر و گروه جدید ایجاد خواهیم کرد که سرویس Tomcat را اجرا کند.
ابتدا ، یک گروه tomcat جدید ایجاد کنید:
⦁ $ sudo groupadd tomcat

سپس ، یک کاربر جدید Tomcat ایجاد میکنیم. این کاربر را عضو گروه Tomcat میکنیم با دیرکتوری هوم / opt / tomcat (جایی که Tomcat را نصب خواهیم کرد) و یک پوسته / bin / false (تا هیچ کس نتواند وارد حساب شود):
⦁ $ sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

اکنون که کاربر Tomcat ما تنظیم شده است ، اجازه دهید Tomcat را دانلود و نصب کنیم.
مرحله 3 – Tomcat را نصب کنید
بهترین راه برای نصب Tomcat 9 دانلود آخرین نسخه باینری و سپس پیکربندی دستی آن است.
آخرین نسخه Tomcat 9 را در صفحه دانلود Tomcat 9 پیدا کنید. در زمان نوشتن این مقاله، آخرین نسخه 9.0.27 است ، اما در صورت وجود باید از نسخه پایدار بعدی استفاده کنید. در زیر بخش توزیع های باینری ، و سپس در زیر لیست Core  ، لینک tar.gz” را کپی کنید.
در مرحله بعدی ، به بخش SSH خود بازگردید و به دیرکتوری / tmp در سرور مجازی خود بروید. این یک دیرکتوری خوب برای دانلود موارد زودگذر است ، مانند تاربال Tomcat ، که ما پس از اکسترکت مطالب Tomcat نیازی به آن نداریم:
⦁ $ cd /tmp

برای دانلود تاربال از ابزار خط فرمان curl استفاده خواهیم کرد. curl را نصب کنید:
⦁ $ sudo apt install curl

اکنون ، برای دانلود پیوندی که از وب سایت Tomcat کپی کرده اید ، از curl استفاده کنید:
⦁ $ curl -O http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.11/bin/apache-tomcat-9.0.11.tar.gz

ما Tomcat را در دیرکتوری / opt / tomcat نصب خواهیم کرد. این دایرکتوری را ایجاد کنید ، سپس بایگانی را با این دستورات در آن اکسترکت کنید:
⦁ $ sudo mkdir /opt/tomcat

⦁ $ sudo tar xzvf apache-tomcat-9*tar.gz -C /opt/tomcat –strip-components=1

در مرحله بعد ، مجوزهای کاربری مناسب را برای نصب خود تنظیم خواهیم کرد.
مرحله 4 – به روز رسانی مجوزها
کاربر Tomcat که ایجاد کردیم نیاز به دسترسی به نصب Tomcat دارد. اکنون آن را تنظیم خواهیم کرد.
به دایرکتوری بروید که در آن نصب Tomcat را باز نکردیم:
⦁ $ cd /opt/tomcat

مالکیت گروه tomcat را به کل دیرکتوری نصب بدهید:
⦁ $ sudo chgrp -R tomcat /opt/tomcat

در مرحله بعد ، به گروه tomcat دسترسی به دیرکتوری conf و کلیه محتویات آن بدهید و دسترسی به دیرکتوری خود را اجرا کنید:
⦁ $ sudo chmod -R g+r conf

⦁ $ sudo chmod g+x conf

کاربر Tomcat را به مالک دیرکتوری های webapps, work, temp, و  logs تبدیل کنید:
⦁ $ sudo chown -R tomcat webapps/ work/ temp/ logs/

اکنون که مجوزهای مناسب تنظیم شده است ، یک فایل سرویس systemd را برای مدیریت فرایند Tomcat ایجاد خواهیم کرد.
مرحله 5 – یک فایل خدمات systemd ایجاد کنید
ما می خواهیم بتوانیم Tomcat را به عنوان یک سرویس اجرا کنیم ، بنابراین فایل سرویس systemd را تنظیم خواهیم کرد.
Tomcat باید بداند جاوا در کجا نصب شده است. این مسیر معمولاً به JAVA_HOME اشاره می کند. آسانترین راه برای جستجوی آن مکان با اجرای این دستور است:
⦁ $ sudo update-java-alternatives -l

Output
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64

JAVA_HOME شما خروجی آخرین ستون است (در بالا هایلایت شده است). با توجه به مثال بالا ، JAVA_HOME صحیح برای این سرور مجازی به این صورت خواهد بود:
AVA_HOME
/usr/lib/jvm/java-1.11.0-openjdk-amd64

JAVA_HOME شما ممکن است متفاوت باشد.
با این اطلاعات می توانیم فایل سرویس systemd را ایجاد کنیم. با تایپ دستور زیر فایلی به نام tomcat.service در دیرکتوری / etc / systemd / system باز کنید:
⦁ $ sudo nano /etc/systemd/system/tomcat.service

محتوای زیر را در فایل سرویس خود پیست کنید. در صورت وم مقدار JAVA_HOME را اصلاح کنید تا با مقدار یافت شده در سیستم شما مطابقت داشته باشد. همچنین بهتر است تنظیمات تخصیص حافظه را که در CATALINA_OPTS مشخص شده است اصلاح کنید:
/etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment=’CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC’
Environment=’JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom’

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

پس از اتمام ، فایل را ذخیره کنید و ببندید.
سپس ، Daemon systemd را مجدد لود کنید تا از تغییرات فایل سرویس ما مطلع شود:
⦁ $ sudo systemctl daemon-reload

سرویس Tomcat را با تایپ دستور زیر شروع کنید:
⦁ $ sudo systemctl start tomcat

با تایپ دستور زیر مجدد بررسی کنید که بدون خطا شروع شده است:
⦁ $ sudo systemctl status tomcat

باید خروجی مشابه زیر را ببینید:
Output
● tomcat.service – Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2019-10-24 17::11 UTC; 4s ago
Process: 5962 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 5970 (java)
Tasks: 44 (limit: 2377)
Memory: 4.2M
CGroup: /system.slice/tomcat.service
└─5970 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.u

Oct 24 17::10 tomcat systemd[1]: Starting Apache Tomcat Web Application Container…
Oct 24 17::11 tomcat startup.sh[5962]: Tomcat started.
Oct 24 17::11 tomcat systemd[1]: Started Apache Tomcat Web Application Container.

این خروجی تأیید می کند که Tomcat در سرور مجازی شما فعال و در حال اجرا است.
مرحله 6 – فایروال را تنظیم کرده و سرور مجازی Tomcat را تست کنید
اکنون که سرویس Tomcat آغاز شده است ، می توانیم آزمایش کنیم تا مطمئن شویم که صفحه پیش فرض در دسترس است.
قبل از انجام این کار ، باید فایروال را تنظیم کنیم تا درخواست های ما بتوانند به این سرویس برسند. اگر پیش نیازها را رعایت کرده باشید ، در حال حاضر یک فایروال ufw فعال شده دارید.
Tomcat از پورت 8080 برای پذیرش درخواستها استفاده می کند. با تایپ کردن دستور زیر اجازه دسترسی به آن پورت را بدهید:
⦁ $ sudo ufw allow 8080

با اصلاح فایروال ، می توانید با رفتن به دامنه یا آدرس IP خود پس از 8080: در مرورگر وب، به صفحه splash پیش فرض دسترسی پیدا کنید:
Open in web browser
http://server_domain_or_IP:8080

علاوه بر اطلاعات دیگر ، صفحه پیش فرض Tomcat splash را نیز خواهید دید. با این حال ، اگر به عنوان مثال روی پیوندها برای برنامه Manager کلیک کنید ، از دسترسی محروم خواهید شد. ما میتوانیم این دسترسی را در مرحله بعد پیکربندی کنیم.
اگر توانستید با موفقیت به Tomcat دسترسی پیدا کنید ، اکنون زمان مناسبی برای فعال کردن فایل خدمات است به گونه ای که Tomcat به طور خودکار از بوت شروع شود:
⦁ $ sudo systemctl enable tomcat

مرحله 7 – رابط مدیریت وب Tomcat را پیکربندی کنید
برای استفاده از برنامه وب منیجر که همراه Tomcat است ، باید وارد سرور مجازی Tomcat خود شویم. این کار را با ویرایش فایل tomcat-users.xml انجام خواهیم داد:
⦁ $ sudo nano /opt/tomcat/conf/tomcat-users.xml

بهتر است کاربری را اضافه کنید که بتواند به manager-gui و admin-gui دسترسی پیدا کند (برنامه های وب که با Tomcat همراه هستند). شما می توانید این کار را با تعریف یک کاربر ، مشابه مثال زیر ، بین برچسب های tomcat-users انجام دهید. حتماً نام کاربری و رمز عبور را به چیزی امن تغییر دهید:
tomcat-users.xml
<tomcat-users>
. . .
<user username=”admin” password=”password” roles=”manager-gui,admin-gui”/>
</tomcat-users>

پس از اتمام فایل را ذخیره کنید و ببندید.
به طور پیش فرض ، نسخه های جدیدتر Tomcat دسترسی به برنامه های Manager و Host Manager را به اتصالات سرور مجازی خود محدود می کند. از آنجا که ما روی یک دستگاه از راه دور آن را نصب می کنیم ، احتمالاً می خواهید این محدودیت را حذف کنید یا تغییر دهید. برای تغییر محدودیت های آدرس IP در این مورد ، فایل های مناسب.xml را باز کنید.
برای برنامه منیجر ، تایپ کنید:
⦁ $ sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml

برای برنامه هاست منیجر ، تایپ کنید:
⦁ $ sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

در داخل ، محدودیت آدرس IP را باطل کنید تا از هرجای دیگر بتوانید اتصالات برقرار کنید. از طرف دیگر ، اگر مایل هستید به اتصالات حاصل از آدرس IP شخصی خود دسترسی بدهید، می توانید آدرس IP عمومی خود را به این لیست اضافه کنید:
context.xml files for Tomcat webapps
<Context antiResourceLocking=”false” privileged=”true” >
<!–<Valve className=”org.apache.catalina.valves.RemoteAddrValve”
allow=”127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1″ />–>
</Context>

پس از اتمام ، فایل ها را ذخیره کنید و ببندید.
برای اعمال تغییرات خود ، سرویس Tomcat را مجدداً راه اندازی کنید:
⦁ $ sudo systemctl restart tomcat

مرحله 8 – دسترسی به رابط وب
اکنون که یک کاربر ایجاد کرده ایم ، می توانیم دوباره در یک مرورگر وب به رابط مدیریت وب دسترسی پیدا کنیم. یک بار دیگر ، می توانید با وارد کردن نام دامنه سرور مجازی یا آدرس IP همراه با پورت 8080 در مرورگر خود ، به رابط صحیح برسید:
Open in web browser
http://server_domain_or_IP:8080

صفحه ای که می بینید باید همان صفحه ای باشد که هنگام آزمایش قبلی به شما نشان داده شده است:

بیایید نگاهی به برنامه منیجر بیندازیم که از طریق لینک یا http: // server_domain_or_IP: 8080 / manager / html قابل دسترسی است. لازم است اعتبارات حساب که به فایل tomcat-users.xml اضافه کردید را وارد نمایید. پس از آن ، باید صفحه ای را مشاهده کنید که به شکل زیر است:

Web Application Manager برای مدیریت برنامه های جاوا استفاده می شود. می توانید در اینجا اقدام به شروع ، توقف ، بارگیری مجدد ، استقرار و عدم استقرار نمایید. همچنین می توانید برخی از تشخیص ها را در برنامه های خود اجرا کنید (مثلا پیدا کردن نشت حافظه). در آخر ، اطلاعات مربوط به سرور مجازی شما در انتهای همین صفحه موجود است.
حال اجازه دهید، از طریق لینک یا http://server_domain_or_IP:8080/host-manager/html/ نگاهی به هاست منیجر بیندازیم.

از صفحه Virtual Host Manager ، می توانید میزبان های مجازی را برای ارائه برنامه های خود اضافه کنید.
نتیجه
نصب شما از Tomcat پایان یافته است! اکنون می توانید برنامه های وب جاوا خود را مستقر کنید.
در حال حاضر ، نصب Tomcat شما کاربردی است ، اما کاملاً بدون رمزگذاری میباشد. این بدان معنی است که تمام داده ها ، از جمله موارد حساس مانند گذرواژه‌ها ، با متن ساده ارسال می شوند که توسط طرفین دیگر در اینترنت قابل رهگیری و خواندن هستند. برای جلوگیری از وقوع این اتفاق ، اکیداً توصیه می شود که اتصالات خود را با SSL رمزگذاری کنید. با پیروی از این راهنما می توانید نحوه رمزگذاری اتصالات خود با Tomcat را یاد بگیرید (توجه داشته باشید: این راهنما رمزگذاری Tomcat 8 را در Ubuntu 16.04 پوشش می دهد).

 

برچسب‌ها:


هنگامی که شما برای اولین بار یک سرور مجازی Debian 10 جدید ایجاد می کنید ، چند مرحله پیکربندی وجود دارد که باید آنها را به عنوان بخشی از ستاپ اولیه انجام دهید. این کار باعث افزایش امنیت و قابلیت استفاده سرور مجازی شما می شود و پایه و اساس محکمی را برای اقدامات بعدی به شما می دهد.
در این آموزش یاد خواهیم گرفت که چگونه به عنوان کاربر اصلی وارد سرور مجازی خود شویم ، کاربر جدیدی با امتیازات ادمین ایجاد کنیم و یک فایروال پایه تنظیم کنیم.
مرحله 1 – ورود به عنوان Root
برای ورود به سرور مجازی خود ، باید آدرس IP عمومی سرور مجازی خود را بدانید. در صورت نصب کلید SSH برای تأیید اعتبار ، یعنی کلید خصوصی برای حساب کاربر root، به گذرواژه نیز احتیاج دارید. اگر قبلاً به سرور مجازی خود وارد نشده اید ، ممکن است بخواهید راهنمای ما در مورد نحوه اتصال به دراپلت خود را با SSH دنبال کنید ، که این لینک روند را با جزئیات پوشش می دهد.
اگر قبلاً به سرور مجازی خود وصل نشده اید ، پیش بروید و با استفاده از دستور زیر به عنوان کاربر اصلی وارد سیستم شوید (بخش هایلایت شده فرمان را با آدرس IP عمومی سرور مجازی خود جایگزین کنید):
$ ssh root@your_server_ip

در صورت وجود هشدار درباره تایید صحت میزبان آن را بپذیرید. اگر از تأیید اعتبار گذرواژه استفاده می کنید ، رمز ورود ریشه خود را وارد کنید. اگر از یک کلید SSH استفاده می کنید که عبارت عبور آن محافظت شده است ، ممکن است اولین باری که از هر کلید استفاده می کنید از شما خواسته شود کلمه عبور را وارد کنید. اگر اولین بار است که با گذرواژه وارد سرور مجازی می شوید ، ممکن است از شما خواسته شود رمزعبور root را تغییر دهید.
درباره ریشه
کاربر ریشه کاربر ادمین در محیط لینوکس است که امتیازات بسیار گسترده ای دارد. به دلیل امتیازات زیاد حساب ریشه ، استفاده منظم از آن توصیه نمیشود. این امر به این دلیل است که بخشی از قدرت ذاتی حساب ریشه ، توانایی ایجاد تغییرات بسیار مخرب ، حتی به طور تصادفی است.
قدم بعدی راه اندازی یک حساب کاربری جایگزین با حوزه تاثیرات کمتر برای کارهای روزانه است. بعداً ، توضیح خواهیم داد که چگونه می توانید در مواقعی که به آنها احتیاج دارید ، امتیازات بیشتری را دریافت کنید.
مرحله 2 – ایجاد یک کاربر جدید
پس از ورود به عنوان root ، آماده هستیم تا حساب کاربری جدیدی را اضافه کنیم که از این پس برای ورود به سیستم استفاده خواهیم کرد .
این مثال یک کاربر جدید به نام sammy ایجاد می کند ، اما شما باید آن را با نام کاربری که دوست دارید جایگزین کنید:
# adduser sammy

با شروع رمز ورود به حساب ، چند سؤال از شما پرسیده خواهد شد.
یک رمز عبور قوی وارد کنید و به صورت اختیاری ، هر یک از اطلاعات اضافی را که می خواهید پر کنید. این مورد نیاز نیست و می توانید ENTER را در هر زمینه ای که مایل به عبور هستید ، بزنید.
در مرحله بعدی ، این کاربر جدید را با امتیازات ادمین تنظیم خواهیم کرد.
مرحله 3 – اعطای امتیازات ادمین
اکنون ، ما یک حساب کاربری جدید با امتیازات معمول حساب ایجاد کرده ایم. با این حال ، ممکن است گاهی اوقات نیاز به انجام کارهای اجرایی با آن داشته باشیم.
برای جلوگیری از خروج از حساب کاربری عادی و ورود به سیستم به عنوان حساب اصلی ، می توانیم برای حساب عادی خود چیزی به اسم superuser ایجاد کنیم یا امتیازات اصلی را به آن بدهیم. این کار به کاربر عادی ما امکان می دهد با قرار دادن کلمه sudo قبل از دستور ، دستوراتی را با امتیازات ادمین اجرا کند.
برای افزودن این امتیازات به کاربر جدید خود ، باید کاربر جدید را به گروه sudo اضافه کنیم. به طور پیش فرض ، در Debian 10 ، کاربرانی که به گروه sudo تعلق دارند مجاز به استفاده از دستور sudo هستند.
به عنوان root ، این دستور را اجرا کنید تا کاربر جدید خود را به گروه sudo اضافه کنید (کلمه هایلایت شده را با کاربر جدید خود جایگزین کنید):
# usermod -aG sudo sammy

اکنون ، هنگامی که به عنوان کاربر معمولی خود وارد سیستم شدید ، می توانید قبل از دستورات sudo را تایپ کنید تا دستور را با امتیازات superuser اجرا کنید.
مرحله 4 – تنظیم فایروال پایه
سرور مجازی های دبیان می توانند از فایروال ها استفاده کنند تا اطمینان حاصل شود که فقط اتصالات خاصی به سرویس های خاص مجاز هستند. در این راهنما ، فایروال UFW را برای کمک به تنظیم رویکرد فایروال و مدیریت استثناعات، نصب و استفاده خواهیم کرد.
می توانیم از مدیر بسته apt برای نصب UFW استفاده کنیم. فهرست محلی را به روز کنید تا آخرین اطلاعات در مورد بسته های موجود را بازیابی کنید و سپس با تایپ کردن دستور زیر نرم افزار فایروال UFW را نصب کنید:
# apt update

# apt install ufw

توجه: اگر سرور مجازی های شما روی vpsgol در حال اجرا هستند ، می توانید به طور اختیاری به جای فایروال UFW از فایروال های vpsgol Cloud استفاده کنید. توصیه می کنیم فقط از یک فایروال به طور هم زمان استفاده کنید تا از قوانین متناقض برای اشکال زدایی جلوگیری شود.

پروفایل های فایروال به UFW اجازه می دهد مجموعه ای از قوانین فایروال را برای برنامه های نصب شده مدیریت کند. پروفایل برخی از نرم افزارهای رایج بصورت پیش فرض با UFW همراه شده و بسته ها می توانند پروفایل های اضافی را با UFW در طی مراحل نصب ثبت کنند. OpenSSH ، سرویسی که به ما امکان اتصال کنونی به سرور مجازی خود را می دهد ، دارای پروفایل فایروال است که می توانیم از آن استفاده کنیم.
با تایپ کردن دستور زیر تمام پروفایل های موجود را لیست می کنید:
# ufw app list

Output
Available applications:
. . .
OpenSSH
. . .

باید اطمینان حاصل کنیم که فایروال امکان اتصالات SSH را می دهد تا بتوانیم دفعه دیگر وارد سیستم شویم. می توانیم با تایپ این دستور اجازه این اتصالات را فراهم کنیم:
# ufw allow OpenSSH

پس از آن ، می توانیم با تایپ کردن دستور زیر فایروال را فعال کنیم:
# ufw enable

y را تایپ کرده و ENTER را برای ادامه فشار دهید. با تایپ کردن دستور زیر می توانید ببینید که اتصالات SSH هنوز مجاز هستند:
# ufw status

Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

از آنجا که فایروال در حال حاضر همه اتصالات به جز SSH را مسدود می کند ، در صورت نصب و پیکربندی سرویس های اضافی ، باید تنظیمات فایروال را برای ایجاد ترافیک قابل قبول را تنظیم کنید. شما می توانید برخی از عملیات معمول UFW را در راهنمای ضروریات UFW بیاموزید.
مرحله 5 – فعال کردن دسترسی خارجی برای کاربر معمولی شما
اکنون که ما یک کاربر معمولی برای استفاده روزانه داریم ، باید اطمینان حاصل کنیم که می توانیم مستقیماً SSH را وارد حساب کاربری خود کنیم.
توجه: تا زمانی که تأیید نکنید که می توانید با کاربر جدید خود وارد سیستم شوید و از sudo استفاده کنید ، توصیه می کنیم به عنوان root وارد شوید. به این ترتیب ، اگر مشکل دارید می توانید به عنوان ریشه عیب یابی کرده و هرگونه تغییر لازم را انجام دهید. اگر از Droplet vpsgol استفاده می کنید و در ارتباط با اتصال SSH ریشه خود مشکل دارید ، می توانید با استفاده از کنسول vpsgol وارد Droplet شوید.

روند پیکربندی دسترسی SSH برای کاربر جدید شما به این بستگی دارد که آیا حساب اصلی سرور مجازی شما از رمز عبور یا کلیدهای SSH برای تأیید اعتبار استفاده می کند.
اگر حساب Root از احراز هویت رمز عبور استفاده می کند
اگر با استفاده از گذرواژه وارد حساب اصلی خود شده اید ، تأیید رمز عبور برای SSH فعال می شود. با باز کردن بخش ترمینال جدید و استفاده از SSH با نام کاربری جدید خود می توانید به حساب کاربری جدید، SSH کنید:
$ ssh sammy@your_server_ip

بعد از وارد کردن رمزعبور معمولی کاربر ، وارد سیستم می شوید. به یاد داشته باشید اگر نیاز به اجرای یک فرمان با امتیازات اداری دارید ، قبل از این کار sudo را تایپ کنید:
$ sudo command_to_run

برای اولین بار در هر بخش (و به صورت دوره ای بعد از آن) رمزعبور کاربر معمولی از شما خواسته می شود.
برای تقویت امنیت سرور مجازی خود ، به شدت توصیه می کنیم به جای استفاده از احراز هویت رمز عبور ، کلیدهای SSH را تنظیم کنید. برای یادگیری نحوه پیکربندی احراز هویت مبتنی بر کلید ، راهنمای ما در مورد تنظیم کلیدهای SSH در Debian 10 را دنبال کنید.
اگر حساب Root از احراز هویت کلید SSH استفاده می کند
اگر با استفاده از کلیدهای SSH به حساب اصلی خود وارد شده اید ، تأیید رمز عبور برای SSH غیرفعال است. برای ورود موفقیت آمیز به سیستم ، باید یک نسخه از کلید عمومی محلی خود را در فایل ~/.ssh/authorized_keys کاربر جدید اضافه کنید.
از آنجا که کلید عمومی شما قبلاً در فایل ~/.ssh/authorized_keys حساب ریشه در سرور مجازی است ، می توانیم در بخش موجود با دستور cp آن فایل و ساختار دیرکتوری را در حساب کاربری جدید خود کپی کنیم. پس از آن ، می توانیم مالکیت فایل ها را با استفاده از دستور chown تنظیم کنیم.
اطمینان حاصل کنید که قسمت هایلایت شده فرمان زیر را تغییر دهید تا با نام کاربر معمولی شما مطابقت داشته باشد:
# cp -r ~/.ssh /home/sammy

#
chown -R sammy:sammy /home/sammy/.ssh

دستور cp -r کل دایرکتوری را در دیرکتوری هوم کاربر جدید کپی می کند ، و دستور chown -R صاحب آن دیرکتوری (و هر چیزی را که در داخل آن است) را به username:groupname مشخص شده تغییر می دهد (دبیان به طور پیش فرض گروهی را با همین نام کاربری شما ایجاد می کند).
اکنون ، یک بخش ترمینال جدید را باز کرده و از طریق SSH با نام کاربری جدید خود وارد شوید:
$ ssh sammy@your_server_ip

بدون استفاده از رمز ورود باید به حساب کاربری جدید وارد شوید. به یاد داشته باشید ، اگر نیاز به اجرای یک فرمان با امتیازات ادمین دارید ، sudo را قبل از آن تایپ کنید:
$ sudo command_to_run

برای اولین بار در هر بخش (و به صورت دوره ای بعد از آن) رمزعبور کاربر معمولی از شما خواسته می شود.
از اینجا به کجا برویم؟
در این مرحله ، شما یک پایه محکم برای سرور مجازی خود دارید. اکنون می توانید هرکدام از نرم افزارهای مورد نیاز خود را بر روی سرور مجازی خود نصب کنید.

 

برچسب‌ها:


در این آموزش می آموزید که چگونه عناصر را با JSX توصیف کنید. JSX انتزاعی است که به شما امکان می دهد دستور مشابه HTML را در کد جاوا اسکریپت خود بنویسید و شما را قادر میسازد تا مولفه های React را که شبیه علائم استاندارد HTML هستند ، بسازید. JSX زبان تمپلیت مولفه های React است و بنابراین پایه و اساس هر نشانه گذاری ای است که React به برنامه شما ارائه می دهد.
از آنجایی که JSX شما را قادر می سازد جاوا اسکریپت را نیز در نشانه گذاری خود بنویسید ، می توانید از توابع و روش های JavaScript ، از جمله نگاشت آرایه و ارزیابی اتصال کوتاه برای شرطی ها استفاده کنید.
به عنوان بخشی از آموزش ، رویدادهای کلیک را مستقیماً در نشانه گذاری روی دکمه ها ضبط می کنید و مواردی را مشاهده می کنید که ترکیب دقیقاً مطابق با HTML استاندارد نباشد ، مانند کلاس های CSS. در پایان این آموزش ، یک برنامه کاری دارید که از انواع مختلفی از ویژگیهای JSX استفاده می کند تا لیستی از مولفه هایی را که دارای یک شنونده کلیک داخلی هستند ، نمایش دهد. این یک الگوی رایج در برنامه های React است که شما اغلب در طول یادگیری چارچوب استفاده خواهید کرد. همچنین می توانید عناصر استاندارد HTML را با جاوا اسکریپت مخلوط کنید تا ببینید چگونه React به شما امکان ایجاد کد های کوچک و قابل استفاده مجدد را می دهد.
پیش نیازها
• به محیط توسعه در حال اجرای Node.js نیاز دارید. این آموزش بر روی Node.js نسخه 10.19.0 و npm نسخه 6.13.4 تست شده است. برای نصب این برنامه در macOS یا Ubuntu .04 ، مراحل نحوه نصب Node.js و ایجاد محیط توسعه محلی را در macOS یا نصب با استفاده از بخش PPA در آموزش نحوه نصب Node.js در اوبونتو .04 را دنبال کنید.
• باید با  Create React App قادر به ایجاد برنامه باشید. می توانید دستورالعمل نصب را در نحوه ایجاد یک پروژه React با  Create React App پیدا کنید.
• همچنین به دانش پایه از JavaScript نیاز خواهید داشت که می توانید در نحوه کدنویسی در JavaScript بیاموزید و به دانش پایه از HTML و CSS نیز احتیاج دارید. یک منبع مناسب برای HTML و CSS ، شبکه توسعه دهنده Mozilla میباشد.
مرحله 1 – اضافه کردن نشانه گذاری به یک مولفه React
همانطور که قبلاً نیز اشاره شد ، React یک زبان نشانه گذاری خاص به نام JSX دارد. پ ترکیبی از نحو HTML و JavaScript است که چیزی شبیه به این میباشد:
<div>
{inventory.filter(item => item.available).map(item => (
<Card>
<div className=”title”}>{item.name}</div>
<div className=”price”>{item.price}</div>
</Card>
))
}
</div>

برخی از قابلیت های JavaScript مانند .filter و .map و همچنین برخی HTML های استاندارد مانند <div> را خواهید شناخت. اما بخش های دیگری مانند <card> و className نیز وجود دارند که شبیهHTML و JavaScript به نظر می رسد.
این زبان JSX است ، یعنی زبان نشانه گذاری ویژه ای که به مولفه های React حس HTML را با قدرت JavaScript می دهد.
در این مرحله ، می آموزید که ترکیب HTML مانند پایه را به مولفه موجود React اضافه کنید. برای شروع ، مولفه های HTML استاندارد را به یک تابع JavaScript اضافه خواهید کرد ، سپس کد کامپایل شده را در یک مرورگر مشاهده می کنید. همچنین عناصر را گروه بندی می کنید تا React بتواند آنها را با حداقل نشانه گذاری کامپایل کند ، و HTML تمیزی را ارائه کند.
برای شروع ، یک پروژه جدید درست کنید. در خط فرمان خود ، اسکریپت زیر را اجرا کنید تا یک پروژه تازه با استفاده از create-react-app نصب کنید:
⦁ $ npx create-react-app jsx-tutorial

پس از اتمام پروژه ، دایرکتوری را تغییر دهید:
⦁ $ cd jsx-tutorial

در یک ترمینال یا پنجره جدید ، پروژه را با استفاده از اسکریپت شروع Create React App شروع کنید. مرورگر بعد از تغییرات مجدداً ریفرش میشود ، بنابراین در تمام مدت کار شما این اسکریپت را رها میکند:
⦁ $ npm start

یک سرور مجازی محلی در حال اجرا دریافت خواهید کرد. اگر پروژه در پنجره مرورگر باز نشد ، می توانید آن را در http: // localhost: 3000 / پیدا کنید. اگر این کار را از یک سرور مجازی از راه دور انجام می دهید ، آدرس http: // your_IP_address: 3000 خواهد بود.
مرورگر شما با یک برنامه React به عنوان بخشی از Create React App لود می شود.

شما در حال ساخت مجموعه کاملاً جدیدی از مولفه های سفارشی هستید ، بنابراین باید با پاک کردن برخی از کد های متن استاندارد شروع کنید تا بتوانید یک پروژه خالی داشته باشید. برای شروع App.js ار در ویرایشگر متن باز کنید. این قسمت اصلی است که به صفحه تزریق می شود. همه مؤلفه ها از اینجا شروع می شوند.
در یک ترمینال جدید ، وارد پوشه پروژه شوید و src / App.js را با دستور زیر باز کنید:
⦁ $ nano src/App.js

فایلی مانند این را مشاهده خواهید کرد:
jsx-tutorial/src/App.js
import React from ‘react’;
import logo from ‘./logo.svg’;
import ‘./App.css’;

function App() {
return (
<div className=”App”>
<header className=”App-header”>
<img src={logo} className=”App-logo” alt=”logo” />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className=”App-link”
href=”https://reactjs.org”
target=”_blank”
rel=”noopener noreferrer”
>
Learn React
</a>
</header>
</div>
);
}

export default App;

اکنون پس از عبارت بازگشت در تابع ، خط import logo from ‘./logo.svg و هر چیز دیگر را حذف کنید. آن را به null تغییر دهید. کد نهایی به شرح زیر خواهد بود:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return null;
}

export default App;

ویرایشگر متن را ذخیره کرده و از آن خارج شوید.
در آخر ، لوگو را حذف کنید. در پنجره ترمینال دستور زیر را تایپ کنید:
⦁ $ rm src/logo.svg

شما در برنامه خود از این فایل SVG استفاده نخواهید کرد و باید هنگام کار ، فایل های بلااستفاده را حذف کنید. بهتر است در طولانی مدت کد خود را سازماندهی کنید.
اکنون که این قسمت از پروژه شما حذف شده است ، می توانید به جستجو در جنبه های دیگر JSX بپردازید. این زبان نشانه گذاری توسط React کامپایل شده و در نهایت تبدیل به HTML می شود که در یک صفحه وب مشاهده می کنید. بدون وارد شدن عمیق داخلی React ، JSX را می گیرد و الگویی از صفحه شما را ایجاد می کند ، سپس عناصر لازم را ایجاد کرده و آنها را به صفحه اضافه می کند.
این بدان معنی است که می توانید چیزی را بنویسید که شبیه HTML است و انتظار داشته باشید که HTML ارائه شده مشابه باشد. با این حال ، چند مرحله وجود دارد.
ابتدا ، اگر به سربرگ یا پنجره سرور مجازی خود نگاه کنید ، این را مشاهده خواهید کرد
Output

./src/App.js
Line 1:8: ‘React’ is defined but never used no-unused-vars

این linter به شما می گوید که از کد React وارد شده استفاده نمی کنید. هنگامی که خط import React from ‘react’ را به کد خود اضافه می کنید ، کد JavaScript را وارد می کنید که JSX را به React code تبدیل می کند. اگر JSX وجود نداشته باشد ، دیگر نیازی به ورودی نیست.
بیایید با اضافه کردن مقدار کمی JSX این مسئله را تغییر دهیم. با جایگزین کردن null با یک مثال hello, world شروع کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return <h1>Hello, World</h1>;
}

export default App;

فایل را ذخیره کنید. اگر به ترمینال با سرور مجازی در حال اجرا نگاه کنید ، پیام اخطار از بین خواهد رفت. اگر از مرورگر خود بازدید کنید ، پیام را به عنوان مولفه h1 مشاهده خواهید کرد.

سپس ، در زیر برچسب <h1> ، یک برچسب پاراگراف اضافه کنید که شامل رشته I am writing JSX است. کد به صورت زیر خواهد بود:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return(
<h1>Hello, World</h1>
<p>I am writing JSX</p>
)
}

export default App;

از آنجایی که JSX چندین خط دارد ، نیاز است عبارت در پرانتز قرار داده شود.
فایل را ذخیره کنید. هنگامی که این کار را کردید، خطایی در اجرای سرور مجازی خود در ترمینال مشاهده می کنید:
Output
./src/App.js
Line 7:5: Parsing error: Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>…</>?

5 | return(
6 | <h1>Hello, World</h1>
> 7 | <p>I am writing JSX</p>
| ^
8 | )
9 | }
10 |

وقتی JSX را از یک تابع یا عبارت باز می گردانید ، باید یک مولفه واحد را برگردانید. این مولفه ممکن است بخش های لانه گزیده باشد ، اما اگر یک مولفه سطح بالا باشد. در این حالت ، دو مولفه را بر می گردانید.
fix یک تغییر کد جزیی است. با یک برچسب خالی کد را محصور کنید. برچسب خالی یک مولفه HTML است که هیچ کلمه ای ندارد. به این شکل: <> </>
به./src/App.js در ویرایشگر خود بروید و برچسب خالی را اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return(
<>
<h1>Hello, World</h1>
<p>I am writing JSX</p>
</>
)
}

export default App;

برچسب خالی یک مولفه واحد ایجاد می کند ، اما وقتی کد کامپایل شد ، به نشانه گذاری نهایی اضافه نمی شود. این کار باعث می شود کدهای شما در عین حال که یک مولفه واحد به React می دهند ، صحیح باقی بمانند.
توجه: شما می توانید به جای برچسب های خالی ، کد را با یک div محصور کنید ، مادامی که کد یک مولفه را برگرداند. در این مثال ، یک برچسب خالی این مزیت را دارد که نشانه گذاری اضافی به خروجی تجزیه نشده اضافه نمی کند.

کد را ذخیره کرده و از فایل خارج شوید. مرورگر شما صفحه به روز شده را با مولفه پاراگراف نشان می دهد. علاوه بر این ، هنگام تبدیل کد ، برچسب های خالی از بین می روند:

اکنون JSX اساسی را به مؤلفه خود اضافه کرده اید و یاد گرفته اید که چگونه باید همه JSX در یک مؤلفه مستقر شود. در مرحله بعد ، یک ظاهر طراحی را به مؤلفه خود اضافه می کنید.
مرحله 2 – اضافه کردن طراحی به یک مولفه به همراه ویژگی ها
در این مرحله ، به عناصر موجود در مؤلفه خود می پردازید تا یاد بگیرید که چگونه ویژگی های HTML با JSX کار می کنند. در React گزینه های بسیاری برای طراحی وجود دارد. برخی از آنها شامل نوشتن CSS در جاوا اسکریپت است، بو رخی دیگر از پیش پردازنده استفاده می کنند. در این آموزش با کلاس های CSS و CSS وارد شده کار خواهید کرد.
اکنون که کد خود را دارید ، وقت آن است که یک ظاهر طراحی شده اضافه کنید. App.css را در ویرایشگر متن خود باز کنید:
⦁ $ nano src/App.css

از آنجا که شما با JSX جدید شروع می کنید ، CSS فعلی به عناصری اشاره می کند که دیگر وجود ندارند. از آنجا که به CSS احتیاج ندارید ، می توانید آن را حذف کنید.
پس از حذف کد ، فایلی خالی خواهید داشت.
در مرحله بعد ، می توانید طراحی به مرکز متن اضافه کنید. در src / App.css کد زیر را اضافه کنید:
jsx-tutorial/src/App.css
.container {
display: flex;
flex-direction: column;
align-items: center;
}

در این بلوک کد ، شما  CSS class selector را با نام .container ایجاد کرده اید و از آن برای در مرکز قرار دادن محتوا با استفاده از display: flex استفاده کرده اید.
فایل را ذخیره کرده و خارج شوید. مرورگر بروزرسانی می شود ، اما هیچ چیز تغییر نخواهد کرد. قبل از مشاهده تغییر ، باید کلاس CSS را به مؤلفه React خود اضافه کنید. کد JavaScript مولفه را انتخاب کنید:
⦁ $ nano src/App.js

کد CSS قبلاً با خط import ‘./App.css’ وارد شده است. این بدان معنی است که webpack برای ساختن یک صفحه طراحی نهایی، کد را وارد می کنند ، اما برای اعمال CSS روی عناصر خود ، باید کلاس ها را اضافه کنید.
ابتدا ، در ویرایشگر متن ، برچسب های خالی ، <> را به <div> تغییر دهید.
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return(
<div>
<h1>Hello, World</h1>
<p>I am writing JSX</p>
</div>
)
}

export default App;

در این کد تگ های خالی – <> – را با برچسب های div جایگزین کرده اید. تگ های خالی برای گروه بندی کد شما بدون اضافه کردن برچسب های اضافی مفید هستند ، اما در اینجا شما باید از div استفاده کنید زیرا برچسب های خالی هیچ ویژگی HTML را نمی پذیرند.
در مرحله بعد باید نام کلاس را اضافه کنید. اینجاست که JSX شروع به واگرایی از HTML می کند. اگر می خواهید یک کلاس را به یک مولفه HTML معمولی اضافه کنید ، این کار را اینگونه انجام می دهید:
<div class=”container”>
Copy

اما از آنجا که JSX جاوا اسکریپت است ، محدودیت هایی دارد. یکی از محدودیت ها این است که جاوا اسکریپت کلمات کلیدی خود را رزرو کرده است. این بدان معناست که شما نمی توانید از کلمات خاصی در هر کد JavaScript استفاده کنید. به عنوان مثال ، شما نمی توانید یک متغیر به نام null ایجاد کنید زیرا این کلمه در حال حاضر محفوظ است.
یکی از کلمات رزرو شده class است. React با کمی تغییر دادن این کلمه کار خود را انجام میدهد. به جای اضافه کردن مشخصه class ، className را اضافه می کنید. به عنوان یک قاعده ، اگر یک مشخصه (attribute) همانطور که انتظار می رود کار نمی کند ، سعی کنید نسخه camel case را اضافه کنید. مشخصه دیگری که کمی متفاوت است مشخصه for میباشد که برای برچسب ها استفاده میکنید. چند مورد دیگر نیز وجود دارد ، اما خوشبختانه این لیست نسبتاً کوتاه است.
توجه: در React ، مشخصه ها اغلب prps خوانده می شوند. Props داده هایی هستند که می توانید به سایر مؤلفه های سفارشی منتقل کنید. آنها مشابه مشخصه ها هستند به جز اینکه با هیچ یک از مشخصات HTML مطابقت ندارند. در این آموزش ، آنها را مشخصه می نامیم زیرا عمدتا مانند مشخصه های استاندارد HTML استفاده می شوند. این امر آنها را از propهایی که مانند مشخصه های HTML رفتار نمی کنند ، متمایز می کند ، که بعداً در این مجموعه پوشش داده می شود.

اکنون که می دانید چگونه از مشخصه calss در React استفاده می شود ، می توانید کد خود را به روز کنید تا طراحی ها را درج کنید. در ویرایشگر متن خود ، className=”container” را به برچسب div اضافه کنید
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return(
<div className=”container”>
<h1>Hello, World</h1>
<p>I am writing JSX</p>
</div>
)
}

export default App;

فایل را ذخیره کنید. با انجام این کار ، صفحه مجدد لودد می شود و محتوا در مرکز قرار می گیرد

ویژگی className در React بی نظیر است. شما می توانید اکثر ویژگیهای HTML را بدون هیچ تغییری به JSX اضافه کنید. به عنوان نمونه ، به ویرایشگر متن خود برگردید و شناسه greeting را به مولفه <h1> خود اضافه کنید. مانند HTML استاندارد به نظر می رسد:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return(
<div className=”container”>
<h1 id=”greeting”>Hello, World</h1>
<p>I am writing JSX</p>
</div>
)
}

export default App;

صفحه را ذخیره کرده و مرورگر را مجدد لود کنید. مشابه قبلی خواهد بود.
تاکنون ، JSX به عنوان نشانه گذاری استاندارد به نظر می رسید ، اما مزیت JSX این است که حتی اگر شبیهHTML به نظر می رسد ، قدرت جاوا اسکریپت را دارد. این بدان معناست که می توانید متغیرها را اختصاص دهید و آنها را در مشخصه های خود ارجاع دهید. برای ارجاع به یک مشخصه ، آن را به جای نقل قولها در پرانتزهای به شکل {} قرار دهید.
در ویرایشگر متن خود ، خطوط هایلایت شده زیر را به عنوان یک مشخصه اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
const greeting = greeting”;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
<p>I am writing JSX</p>
</div>
)
}

export default App;

در این کد ، در بالای عبارت return یک متغیر به نام greeting با مقدار greeting” ایجاد کرده اید ، سپس متغیر را در مشخصه id برچسب <h1> خود ارجاع داده اید.
فایل را ذخیره کنید و از آن خارج شوید. صفحه همان خواهد بود، اما برچسب id خواهد داشت.

تاکنون با چند مولفه به تنهایی کار کرده اید ، اما می توانید از JSX همچنین برای اضافه کردن بسیاری از عناصر HTML استفاده کرده و آنها را برای ایجاد صفحات پیچیده مستقر نمایید.
برای نشان دادن این موضوع ، می توانید با لیستی از ایموجی ها صفحه ای ایجاد کنید. این شکلک ها با یک مولفه <button> محصور می شوند. هنگامی که روی ایموجی ها کلیک می کنید ، نام کوتاه CLDR آنها را دریافت خواهید کرد.
برای شروع ، باید چند مولفه دیگر به صفحه اضافه کنید. . src / App.js را در ویرایشگر متن خود باز کنید. در طول این مرحله آن را باز نگه دارید.
⦁ $ nano src/App.js

ابتدا با افزودن خطوط هایلایت شده زیر لیستی از ایموجی ها را اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
const greeting = greeting”;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
<p>I am writing JSX</p>
<ul>
<li>
<button>
<span role=”img” aria-label=”grinning face” id=”grinning face”></span>
</button>
</li>
<li>
<button>
<span role=”img” aria-label=”party popper” id=”party popper”></span>
</button>
</li>
<li>
<button>
<span role=”img” aria-label=”woman dancing” id=”woman dancing”></span>
</button>
</li>
</ul>
</div>
)
}

export default App;

در اینجا شما برای نگه داشتن لیستی از ایموجی ها برچسب <ul> ایجاد کرده اید. هر ایموجی در یک مولفه <li> جداگانه قرار دارد و با یک مولفه <button> احاطه شده است. در مرحله بعد رویدادی را به این دکمه اضافه خواهید کرد.
همچنین ایموجی ها را با یک برچسب <span> محاصره کرده اید که دارای چند ویژگی دیگر است. هر span دارای مشخصه role میباشد که روی img تنظیم شده است. این به نرم افزار در دسترس سیگنال میفرستد که این عنصر به شکل تصویر عمل میکند. علاوه بر این ، هر <span> همچنین دارای یک aria-label و یک ویژگی id با نام ایموجی است. aria-label آنچه نمایش داده می شود را به بازدید کنندگان می گوید. در مرحله بعدی از id در حین نوشتن رویداد استفاده خواهید کرد.
وقتی کد را به این روش می نویسید ، از عناصر معنایی استفاده می کنید ، که به شما کمک می کند صفحه را در دسترس قرار دهید و دنبال کردن آن برای صفحه خوان (screen readers) راحت باشد.
فایل را ذخیره کنید و از آن خارج شوید. مرورگر شما ریفرش می شود و این تصویر را مشاهده خواهید کرد:

اکنون کمی طراحی اضافه کنید. کد CSS را در ویرایشگر متن خود باز کنید:
⦁ $ nano src/App.css

کد هایلایت شده زیر را اضافه کنید تا ضمن افزایش اندازه فونت ، پیش زمینه و حاشیه پیش فرض دکمه ها را حذف کنید:
jsx-tutorial/src/App.css
.container {
display: flex;
flex-direction: column;
align-items: center;
}

button {
font-size: 2em;
border: 0;
padding: 0;
background: none;
cursor: pointer;
}

ul {
display: flex;
padding: 0;
}

li {
margin: 0 20px;
list-style: none;
padding: 0;
}

در این کد از تنظیمات اندازه قلم ، حاشیه و پارامترهای دیگر برای تنظیم ظاهر دکمه های خود و تغییر فونت استفاده کرده اید. همچنین سبک های لیست را حذف کرده و display: flex را به مولفه <ul>اضافه می کنید تا افقی شود.
فایل CSS را ذخیره کنید و ببندید. مرورگر شما ریفرش می شود و شما این را مشاهده خواهید کرد:

اکنون با چندین مولفه JSX کار کرده اید که مانند HTML معمولی به نظر می رسند. شما کلاس ها ، شناسه ها و برچسب های Aria را اضافه کرده اید و با داده ها به عنوان رشته ها و متغیرها کار کرده اید. اما React همچنین از ویژگیهایی برای تعریف نحوه پاسخگویی عناصر شما به رویدادهای کاربر استفاده می کند. در مرحله بعدی ، با افزودن رویدادها به دکمه ، صفحه را به صورت تعاملی خواهید ساخت.
مرحله 3 – افزودن رویدادها به عناصر
در این مرحله ، با استفاده از ویژگی های خاص ، رویدادها را به عناصر اضافه می کنید و یک رویداد کلیک را روی یک مولفه دکمه دریافت می کنید. یاد می گیرید که چگونه اطلاعات را از این رویداد دریافت کنید تا عملی دیگر ارسال شود یا از سایر اطلاعات در دامنه فایل استفاده کند.
اکنون که یک صفحه اصلی با اطلاعات دارید ، زمان آن رسیده که چند رویداد را به آن اضافه کنید. event handler بسیاری وجود دارند که می توانید به عناصر HTML اضافه کنید. React به شما امکان دسترسی به همه اینها را می دهد. از آنجا که کد جاوا اسکریپت همراه با نشانه گذاری شما است ، می توانید ضمن نگه داشتن نظم کد خود ، به سرعت رویدادها را اضافه کنید.
برای شروع ، کنترل کننده رویداد onclick را اضافه کنید. به شما امکان می دهد به جای ضمیمه کردن شنونده رویداد (event listener) ، تعدادی کد جاوا اسکریپت را مستقیماً به مولفه خود اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
const greeting = greeting”;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
<p>I am writing JSX</p>
<ul>
<li>
<button
onClick={event => alert(event.target.id)}
>
<span role=”img” aria-label=”grinning face” id=”grinning face”></span>
</button>
</li>
<li>
<button
onClick={event => alert(event.target.id)}
>
<span role=”img” aria-label=”party popper” id=”party popper”></span>
</button>
</li>
<li>
<button
onClick={event => alert(event.target.id)}
>
<span role=”img” aria-label=”woman dancing” id=”woman dancing”></span>
</button>
</li>
</ul>
</div>
)
}

export default App;

از آنجا که این JSX است ، onclick را به صورت camelCased درمی آورید ، به این معنی که آن را به صورت onClick اضافه کرده اید. این مشخصه onClick از یک تابع ناشناس برای بازیابی اطلاعات در مورد آیتمی که کلیک شده است استفاده می کند.
شما یک تابع فلش ناشناس اضافه کردید که این رویداد را از روی دکمه کلیک شده دریاقن می کند و رویداد دارای هدفی خواهد بود که مولفه <span> است. اطلاعات مورد نیاز در مشخصه id است که می توانید با event.target.id به آنها دسترسی پیدا کنید. با تابع () alert می توانید هشدار را فعال کنید.
فایل را ذخیره کنید. در مرورگر خود ، روی یکی از ایموجی ها کلیک کرده و هشداری را به همراه نام دریافت خواهید کرد.

می توانید با یکبار اعلام تابع و انتقال آن به هر تابع onClick ، ​​ تکرار را کاهش دهید. از آنجایی که این تابع به چیزی غیر از ورودی و خروجی متکی نیست ، می توانید آن را خارج از تابع مؤلفه اصلی اعلام کنید. به عبارت دیگر ، تابع نیازی به دسترسی به حوزه مولفه ندارد. مزیت جدا کردن آنها این است که تابع کامپوننت شما کمی کوتاه تر است و می توانید در صورت نیاز بعدا تابع را به یک فایل جداگانه منتقل کنید.
در ویرایشگر متن خود ، تابعی به نام displayEmojiName ایجاد کنید که این رویداد را بگیرد و تابع ()alert را با شناسه فراخوانی کند. سپس تابع را به هر مشخصه onClick منتقل کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

const displayEmojiName = event => alert(event.target.id);

function App() {
const greeting = greeting”;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
<p>I am writing JSX</p>
<ul>
<li>
<button
onClick={displayEmojiName}
>
<span role=”img” aria-label=”grinning face” id=”grinning face”></span>
</button>
</li>
<li>
<button
onClick={displayEmojiName}
>
<span role=”img” aria-label=”party popper” id=”party popper”></span>
</button>
</li>
<li>
<button
onClick={displayEmojiName}
>
<span role=”img” aria-label=”woman dancing” id=”woman dancing”></span>
</button>
</li>
</ul>
</div>
)
}

export default App;

فایل را ذخیره کنید. در مرورگر خود ، روی emoji کلیک کنید و همان هشدار را مشاهده خواهید کرد.
در این مرحله ، شما به هر مولفه رویدادهایی اضافه کردید. همچنین دیدید که چگونه JSX از اسامی کمی متفاوت برای رویدادهای مولفه استفاده می کند ، و با گرفتن تابع و استفاده مجدد از آن بر روی چندین مولفه ، شروع به نوشتن کد قابل استفاده مجدد کردید. در مرحله بعد ، یک تابع قابل استفاده مجدد خواهید نوشت که به جای نوشتن هر مولفه به صورت دستی، عناصر JSX را برمی گرداند. این امر بیشتر باعث کاهش تکرار خواهد شد.
مرحله 4 – نگاشت روی داده ها برای ایجاد عناصر
در این مرحله ، استفاده از JSX فراتر از نشانه گذاری ساده خواهد رفت. یاد می گیرید که آن را با جاوا اسکریپت ترکیب کنید تا نشانه گذاری پویا ایجاد کنید که کد را کوچک می کند و خوانایی را بهبود می بخشد. می توانید کد خود را در آرایه ای که برای ایجاد عناصر HTML حلقه می کنید ، آنالیز کنید.
JSX شما را به یک ترکیب مشابه HTML محدود نمی کند. همچنین امکان استفاده مستقیم از JavaScript را در نشانه گذاری به شما می دهد. این کار را تا حدی با وارد کردن توابع به مشخصه ها امتحان کرده اید. همچنین از متغیرها برای استفاده مجدد از داده ها استفاده کرده اید. اکنون زمان آن رسیده که JSX را مستقیماً از داده ها با استفاده از کد استاندارد JavaScript بسازید.
در ویرایشگر متن خود ، باید آرایه ای از داده های ایموجی را در فایل src / App.js ایجاد کنید. اگر بسته است ، فایل را مجدداً باز کنید:
⦁ $ nano src/App.js

آرایه ای را اضافه کنید که شامل آبجکت های دارای ایموجی و نام ایموجی باشد. توجه داشته باشید که ایموجی ها باید با علامت نقل قول احاطه شوند. این آرایه را فراتر از تابع app ایجاد کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

const displayEmojiName = event => alert(event.target.id);
const emojis = [
{
emoji: ”,
name: grinning face”
},
{
emoji: ”,
name: party popper”
},
{
emoji: ”,
name: woman dancing”
}
];

function App() {

}

export default App;

اکنون که داده دارید می توانید از طریق آن حلقه بزنید. برای استفاده از JavaScript در داخل JSX ، باید آن را در پرانتز {} قرار دهید. مشابه زمانی است که توابع را به مشخصه ها اضافه کردید.
برای ایجاد مؤلفه های React ، باید داده ها را به عناصر JSX تبدیل کنید. برای انجام این کار ، روی داده ها نگاشت می کنید و یک مولفه JSX را برمی گردانید. چند نکته وجود دارد که هنگام نوشتن کد باید آنها را به خاطر بسپارید.
ابتدا ، یک گروه از آیتم ها باید توسط یک کانتینر <div> احاطه شوند. سپس ، هر آیتم به یک مشخصه خاص به نام key نیاز دارد. Key نیاز به یک سری داده منحصر به فرد دارد که React می تواند از آنها استفاده کند تا عناصر را ردیابی کند و بداند چه موقع به روز رسانی این مؤلفه را انجام دهد. این کلید از HTML کامپایل شده خارج می شود ، زیرا فقط برای اهداف داخلی است. هر زمان که با حلقه کار می کنید ، باید یک رشته ساده را به عنوان کلید اضافه کنید.
در اینجا مثال ساده ای وجود دارد که لیستی از نام ها را در یک <div> نگاشت می کند:

const names = [
Atul Gawande”,
Stan Sakai”,
Barry Lopez”
];

return(
<div>
{names.map(name => <div key={name}>{name}</div>)}
</div>
)

HTML حاصل از این قرار است:

<div>
<div>Atul Gawande</div>
<div>Stan Sakai</div>
<div>Barry Lopez</div>
</div>

تبدیل لیست ایموجی مشابه خواهد بود. <ul> کانتینر خواهد بود. روی داده ها نگاشت می کنید و <li> را با کلید نام کوتاه ایموجی برمیگردانید. شما داده های به سختی کد شده را در برچسب های <button> و <span> با اطلاعات حلقه جایگزین می کنید.
در ویرایشگر متن خود موارد زیر را اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

const displayEmojiName = event => alert(event.target.id);
const emojis = [
{
emoji: ‘’,
name: test grinning face”
},
{
emoji: ‘’,
name: party popper”
},
{
emoji: ‘’,
name: woman dancing”
}
];

function App() {
const greeting = greeting”;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
<p>I am writing JSX</p>
<ul>
{
emojis.map(emoji => (
<li key={emoji.name}>
<button
onClick={displayEmojiName}
>
<span role=”img” aria-label={emoji.name} id={emoji.name}>{emoji.emoji}</span>
</button>
</li>
))
}
</ul>
</div>
)
}
export default App;
Copy

در این کد ، شما بر روی آرایه emojis در برچسب <ul> نگاشت کردید و <li> را برگرداندید. در هر <li> از نام ایموجی به عنوان مشخصه key استفاده کرده اید. دکمه همان تابع عادی را خواهد داشت. در مولفه <span> ، aria-label و id را با name جایگزین کنید. محتوای برچسب <span> باید ایموجی باشد.
فایل را ذخیره کنید. پنجره شما ریفرش خواهد شد و داده ها را مشاهده خواهید کرد. توجه کنید که کلید در HTML تولید شده وجود ندارد.

ترکیب JSX با استاندارد JavaScript ابزارهای زیادی را در اختیار شما قرار می دهد تا بصورت دینامیکی محتوا را ایجاد کنید و می توانید از هر JavaScript استاندارد مورد نظر خود استفاده کنید. در این مرحله ، JSX سخت کد گذاری شده را با یک آرایه و یک حلقه جایگزین کردید تا HTML به صورت پویا ایجاد شود. در مرحله بعد ، با استفاده از اتصال کوتاه ، اطلاعات را به صورت مشروط نشان می دهید.
مرحله 5 – نمایش مشروط عناصر با اتصال کوتاه
در این مرحله ، از اتصال کوتاه برای نمایش مشروط عناصر HTML استفاده خواهید کرد. این کار به شما امکان می دهد تا مؤلفه هایی ایجاد کنید که بتوانند HTML را بر اساس اطلاعات اضافی پنهان کند یا نشان دهد ، و به انعطاف پذیری مولفه های شما برای رسیدگی به موقعیت های مختلف می پردازند.
مواقعی وجود دارد که شما برای نشان دادن اطلاعات در بعضی آیتم ها به مؤلفه نیاز دارید و در آیتم های دیگر احتیج نیست. به عنوان مثال ، فقط در صورت صحت برخی موارد ممکن است بخواهید برای کاربر پیام هشدار نشان دهید ، یا ممکن است بخواهید برخی از اطلاعات حساب را برای ادمین نمایش دهید که نمی خواهید یک کاربر عادی آن را ببیند.
برای این کار از گردش کوتاه استفاده خواهید کرد. این بدان معناست که شما از یک شرط استفاده خواهید کرد و اگر قسمت اول صادق باشد ، اطلاعات را در قسمت دوم برمی گرداند.
در اینجا یک مثال مطرح شده است. اگر می خواهید یک دکمه را فقط در صورت ورود کاربر به سیستم نشان دهید ، این مولفه را در پرانتز {} قرار دهید و شرایط را قبل از آن اضافه می کنید.
{isLoggedIn && <button>Log Out</button>}
Copy

در این مثال ، شما در حال استفاده از عملگر && هستید که اگر همه چیز صادق باشد ، آخرین مقدار را به شما بازمی گرداند. در غیر این صورت ، false را برگردانده ، که به React می گویند هیچ نشانه گذاری اضافی را برنگرداند. اگر isLoggedIn صادق باشد ، React دکمه را نشان می دهد. اگر isLoggedIn غلط باشد ، دکمه را نشان نمی دهد.
برای امتحان کردن این مسئله ، خطوط هایلایت شده زیر را اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
const greeting = greeting”;
const displayAction = false;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
{displayAction && <p>I am writing JSX</p>}
<ul>

</ul>
</div>
)
}

export default App;

در ویرایشگر متن خود متغیری به نام displayAction با مقدار false ایجاد کرده اید. سپس برچسب <p> را در {} قرار دادید. در شروع پرانتزها ، برای ایجاد شرط ، displayAction && را اضافه کردید.
فایل را ذخیره کنید و خواهید دید که مولفه در مرورگر شما ناپدید می شود. مهم است بدانید ، در HTML تولید شده نیز ظاهر نمی شود. این مخفی کردن یک مولفه با CSS نیست. اصلاً در نشانه گذاری نهایی وجود نخواهد داشت.

در حال حاضر مقدار displayAction سخت کدنویسی شده است ، اما می توانید آن مقدار را به عنوان حالت ذخیره کرده یا آن را به عنوان یک پایه در قسمت مولفه های بالاسری منتقل کنید.
در این مرحله یاد گرفتید که چگونه عناصر را به صورت مشروط نشان دهید. این به شما امکان می دهد تا مؤلفه هایی را تنظیم کنید که براساس اطلاعات دیگر قابل تنظیم هستند.
نتیجه
در این آموزش ، یک برنامه سفارشی با JSX ایجاد کردید. آموختید که چگونه عناصر HTML مانند، را به مولفه های خود اضافه کنید ، یک ظاهر طراحی را به آن عناصر اضافه کنید ، ویژگی هایی را برای ایجاد نشانه گذاری معنایی و در دسترس اضافه کنید و رویدادها را به مؤلفه ها اضافه نمایید. سپس جاوا اسکریپت را با JSX خود ترکیب کردید تا کد تکراری را کاهش داده و عناصر را به طور مشروط نشان داده و مخفی کند.
این مبنایی است که شما برای ساختن مولفه های آینده نیاز دارید. با استفاده از ترکیبی از JavaScript و HTML ، می توانید مولفه های پویا ایجاد کنید که قابل انعطاف باشند و به شما امکان می دهد برنامه تان رشد و تغییر یابد.
اگر می خواهید در مورد React اطلاعات بیشتری کسب کنید ، از صفحه موضوع React ما دیدن کنید.

 

برچسب‌ها:,


ساخت تصاویر و باینری های دارای CPU فشرده ، فرایندی بسیار کند و زمان بری است که می تواند در بعضی مواقع لپ تاپ شما را به بخاری تبدیل کند. وارد کردن تصاویر Docker با اتصال آهسته ، مدت زمان زیادی طول می کشد. خوشبختانه ، رفع این مشکلات آسان است. Docker به شما امکان می دهد تمام کارها را به یک سرور مجازی از راه دور بسپارید تا دستگاه محلی شما مجبور به انجام آن کار سخت نباشد.
این ویژگی در Docker .09 معرفی شده است. این نسخه پشتیبانی اتصال به یک میزبان Docker از راه دور از طریق SSH را به همراه دارد. به تنظیمات بسیار کمی در کلاینت احتیاج دارد و فقط به یک سرور مجازی Docker معمولی و بدون هیچگونه تنظیم خاص در حال اجرا بر روی یک دستگاه از راه دور نیاز خواهد داشت. قبل از Docker .09 ، باید از دستگاه Docker برای ایجاد یک سرور مجازی Docker از راه دور استفاده کرده و سپس محیط محلی Docker را پیکربندی کنید تا از آن استفاده کنید. این روش جدید آن پیچیدگی اضافی را از بین می برد.
در این آموزش ، شما یک Droplet ایجاد می کنید تا میزبان سرور مجازی Docker از راه دور باشید و دستور docker را روی دستگاه محلی خود پیکربندی کنید تا از آن استفاده نمایید.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
یک حساب DigitalOcean. اگر قبلاً حساب کاربری ندارید می توانید یک حساب کاربری ایجاد کنید.
Docker که روی دستگاه محلی یا سرور مجازی توسعه شما نصب شده باشد. اگر با Ubuntu .04 کار می کنید ، مراحل 1 و 2 نحوه نصب و استفاده از Docker را در اوبونتو .04 دنبال کنید. در غیر این صورت ، برای کسب اطلاعات در مورد نصب در سیستم عامل های دیگر ، مطالب رسمی را دنبال کنید. حتماً کاربر غیر ریشه خود را به گروه docker اضافه کنید ، همانطور که در مرحله 2 از آموزش مربوطه توضیح داده شده است.
مرحله 1 – ایجاد هاست Docker
برای شروع کار ، Droplet را با مقدار مناسب قدرت پردازش راه اندازی کنید. برنامه های بهینه سازی CPU برای این منظور ایده آل هستند ، اما برنامه های استاندارد دیگر نیز به خوبی کار می کنند. اگر برنامه هایی با منابع فشرده را کامپایل می کنید ، برنامه های بهینه سازی CPU هسته های CPU اختصاصی را ارائه می دهند که امکان ساخت سریع تر را فراهم می کنند. در غیر این صورت ، برنامه های استاندارد نسبت CPU به RAM متعادل تری را ارائه می دهند.
Docker One-click image از همه تنظیمات مربوطه برای ما مراقبت می کند. این لینک را دنبال کنید تا یک دراپلت بهینه سازی شده با CPU 16 GB / 8vCPU با Docker از کنترل پنل ایجاد کنید.
از طرف دیگر ، می توانید برای ایجاد Droplet از خط فرمان محلی خود ، از doctl استفاده کنید. برای نصب آن ، دستورالعمل موجود در فایل README doctl را در GitHub دنبال کنید.
دستور زیر یک دراپلت جدید بهینه شده با CPU 16GB/8vCPU در ناحیه FRA1 را بر اساس تصویر تک کلیک Docker ایجاد می کند:
$ doctl compute droplet create docker-host \

$ –image docker--04 \

$ –region fra1 \

$ –size c-8 \

$ –wait \

$ –ssh-keys $(doctl compute ssh-key list –format ID –no-header | sed ‘s/$/,/’ | tr -d ‘\n’ | sed ‘s/,$//’)

دستور doctl از مقدار ssh-keys استفاده می کند تا مشخص کند کدام کلید SSH را باید برای Droplet جدید خود اعمال کند. برای بازیابی کلیدهای SSH مرتبط با حساب DigitalOcean از یک زیرپوسته استفاده می کنیم تا doctl compute ssh-key-list را فراخوانی کنیم و سپس نتایج را با استفاده از دستور sed و tr تجزیه و تحلیل می کنیم تا داده ها را در قالب صحیح قالب بندی کنیم. این دستور شامل کلیه کلیدهای SSH حساب شما می باشد ، اما می توانید دستور فرعی هایلایت شده را با اثرانگشت هر کلید موجود در حساب خود جایگزین کنید.
پس از ایجاد دراپلت ، آدرس IP آن را در بین سایر جزئیات مشاهده خواهید کرد:
Output
ID Name Public IPv4 Private IPv4 Public IPv6 Memory VCPUs Disk Region Image Status Tags Features Volumes
148681562 docker-host your_server_ip 16384 8 100 fra1 Ubuntu Docker 5:.09.6~3 on .04 active

می توانید اطلاعات بیشتری در مورد استفاده از دستور doctl در آموزش نحوه استفاده از doctl ، کلاینت خط فرمان رسمی DigitalOcean دریافت کنید.
وقتی دراپلت ایجاد شد ، آماده استفاده از سرور مجازی Docker خواهید بود. برای اهداف امنیتی ، یک کاربر لینوکس ایجاد کنید تا به جای root استفاده شود.
ابتدا با SSH به عنوان کاربر اصلی به دراپلت وصل شوید:
$ ssh root@your_server_ip
پس از اتصال ، یک کاربر جدید اضافه کنید. این دستور شخصی را به نام SAMMY اضافه می کند:
# adduser sammy

سپس کاربر را به گروه docker اضافه کنید تا به وی اجازه اجرای دستورات روی هاست Docker را بدهد.
# sudo usermod -aG docker sammy

در آخر با تایپ کردن exit از سرور مجازی راه دور خارج شوید.
اکنون که سرور مجازی آماده است ، اجازه دهید دستور docker محلی را برای استفاده از آن پیکربندی کنیم.
مرحله 2 – پیکربندی Docker برای استفاده از میزبان از راه دور
برای استفاده از میزبان از راه دور به عنوان میزبان Docker خود به جای دستگاه محلی ، متغیر محیط DOCKER_HOST را تنظیم کنید تا به میزبان از راه دور اشاره کند. این متغیر به کلاینت Docker CLI دستور می دهد تا به سرور مجازی از راه دور متصل شود.
$ export DOCKER_HOST=ssh://sammy@your_server_ip

اکنون هر دستور Docker که اجرا می کنید ، روی Droplet اجرا می شود. به عنوان مثال ، اگر یک کانتینر وب سرور مجازی راه اندازی کنید و یک پورت را در معرض دید قرار دهید ، روی Droplet اجرا خواهد شد و از طریق درگاهی که در آدرس IP Droplet به نمایش گذاشته اید ، قابل دسترسی خواهد بود.
برای تأیید اینکه به Droplet به عنوان میزبان Docker دسترسی دارید ، docker info را اجرا کنید.
$ docker info

نام میزبان Droplet خود را که در قسمت Name ذکر شده است ، مشاهده خواهید کرد:
Output

Name: docker-host

نکته ای که باید در نظر داشته باشید اینست که وقتی دستور docker build را اجرا می کنید ، محتوای ساخت (کلیه فایل ها و پوشه های قابل دسترسی از Dockerfile) به هاست ارسال می شود و سپس مراحل ساخت اجرا می شود. بسته به اندازه محتوای ساخت و میزان فایل ها ، ممکن است در مقایسه با ساخت تصویر روی یک دستگاه محلی زمان بیشتری طول بکشد. یکی از راه حل ها این است که یک دایرکتوری جدید اختصاص داده شده به تصویر Docker ایجاد کنید و فقط فایل هایی را که در تصویر استفاده خواهد شد کپی کنید یا پیوند دهید تا هیچ فایلغیر ضروری به صورت سهوی آپلود نشود.
هنگامی که متغیر DOCKER_HOST را با استفاده از export تنظیم کردید ، مقدار آن برای مدت زمان بخش پوسته دوام خواهد داشت. در صورت نیاز به استفاده مجدد از سرور مجازی محلی Docker ، می توانید متغیر را با دستور زیر پاک کنید:
unset DOCKER_HOST
نتیجه
شما یک میزبان Docker از راه دور ایجاد کرده اید و به صورت محلی به آن متصل هستید. دفعه بعد که باتری لپ تاپ شما رو به کاهش بود یا مجبور بودید یک تصویر سنگین Docker بسازید ، به جای دستگاه محلی خود از سرور مجازی از راه دور Docker خود استفاده کنید.
همچنین ممکن است علاقه مند به یادگیری در مورد چگونگی بهینه سازی تصاویر Docker برای تولید یا چگونگی بهینه سازی آنها به طور خاص برای Kubernetesباشید.

 

برچسب‌ها:


یک نرم افزار مانیتورینگ منبع باز برای شبکه ها و برنامه ها است. این برنامه نظارت بر هزاران معیار (metricها) جمع آوری شده از سرور مجازی ها ، ماشین های مجازی ، دستگاه های شبکه و برنامه های وب را در زمان واقعی ارائه می دهد. این معیارها به شما کمک می کند تا سلامت فعلی زیرساخت IT خود را تعیین کنید و قبل از شکایت مشتریان مشکلات سخت افزار یا اجزای نرم افزاری را تشخیص دهید. اطلاعات مفید در یک پایگاه داده ذخیره می شود ، بنابراین می توانید داده ها را با گذشت زمان تجزیه و تحلیل کرده و کیفیت خدمات ارائه شده را بهبود بخشید ، یا برای ارتقاء برنامه های خود تصمیم گیری کنید.
Zabbix از گزینه های مختلفی برای جمع آوری معیارها استفاده می کند ، از جمله آن می توان به نظارت بدون عامل بر خدمات کاربر و معماری کلاینت-سرور مجازی اشاره کرد. برای جمع آوری متریک سرور مجازی ، از یک عامل کوچک در سرویس گیرنده تحت نظارت برای جمع آوری داده ها و ارسال آن به سرور مجازی Zabbix استفاده می کند. Zabbix از ارتباط رمزگذاری شده بین سرور مجازی و کلاینت های متصل پشتیبانی می کند ، بنابراین هنگام گذر از شبکه های ناایمن ، از داده های شما محافظت می شود.
سرور مجازی Zabbix داده های خود را در یک پایگاه داده رابطه ای ایجاد می کند که توسط MySQL ، PostgreSQL یا Oracle تهیه می شود. همچنین می توانید داده های تاریخی را در پایگاه های داده nosql مانند Elasticsearch و TimescaleDB ذخیره کنید. Zabbix یک رابط وب فراهم می کند تا بتوانید داده ها را مشاهده کرده و تنظیمات سیستم را پیکربندی کنید.
در این آموزش دو ماشین پیکربندی خواهید کرد. یکی به عنوان سرور مجازی پیکربندی می شود و دیگری به عنوان کلاینت که بر آن نظارت می کنید. سرور مجازی از یک پایگاه داده MySQL برای ضبط داده های مانیتورینگ استفاده می کند و از Apache برای سرویس رابط وب استفاده می شود.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
• دو سرور مجازی CentOS 7 که با طبق مقاله نحوه راه اندازی سرور مجازی اولیه با CentOS تنظیم شده باشد ، و شامل یک کاربر غیر ریشه با امتیازات sudo و فایروال باشد. روی یک سرور مجازی ، Zabbix را نصب می کنید. این آموزش به این سرور مجازی، سرور مجازی Zabbix خواهد گفت. در واقع سرور مجازی دوم شما را کنترل می کند. به این سرور مجازی دوم سرور مجازی دوم CentOS گفته می شود.
• سرور مجازی Zabbix به نصب Apache ، MySQL و PHP نیاز دارد. نحوه نصب Linux ، Apache ، MySQL ، PHP (LAMP) را بر روی CentOS 7 دنبال کنید تا این موارد را روی سرور مجازی Zabbix پیکربندی کنید.
توجه: CentOS به جای MySQL از MariaDB استفاده می کند ، اما در دنبال کردن این آموزش مشکلی ایجاد نمی کند.

علاوه بر این ، از آنجا که شما از سرور مجازی Zabbix برای دسترسی به اطلاعات با ارزش در مورد زیرساخت های خود استفاده می کنید که نمی خواهید کاربران غیرمجاز به آنها دسترسی پیدا کنند ، مهم است که با نصب گواهی TLS / SSL ، سرور مجازی خود را ایمن نگه دارید. این کار اختیاری است اما به شدت توصیه میشود. برای به دست آوردن گواهینامه رایگان TLS / SSL می توانید راهنمای Let’s Encrypt on CentOS 7 را دنبال کنید.
مرحله 1 – نصب سرور مجازی Zabbix
ابتدا باید Zabbix را روی سرور مجازی ی که MySQL ،Apache و PHP را نصب کرده اید ، نصب کنید. به عنوان کاربر غیر ریشه خود به این دستگاه وارد شوید:
⦁ $ ssh sammy@zabbix_server_ip_address

Zabbix به طور پیش فرض در مدیر بسته موجود نیست ، بنابراین بسته بندی پیکربندی مخزن را با استفاده از مخزن رسمی Zabbix برای CentOS نصب کنید. در این آموزش از نسخه 4.2 Zabbix استفاده می شود:
⦁ $ sudo rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm

خروجی زیر را مشاهده خواهید کرد:
Output
Retrieving https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.WXsYNB: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:zabbix-release-4.2-1.el7 ################################# [100%]

فعلا همه ورودی های مخازن فعال را از حافظه نهان پاک کنید:
⦁ $ sudo yum clean all

سپس سرور مجازی Zabbix و Web Frontend را با پشتیبانی پایگاه داده MySQL نصب کنید:
⦁ $ sudo yum install zabbix-server-mysql zabbix-web-mysql

در طی مراحل نصب از شما در مورد وارد کردن یک کلید GPG سؤال می شود. این کلید صحت بسته ای را که نصب می کنید تأیید می کند. برای پایان دادن به نصب ، کلید GPG را با تایپ y و فشار دادن ENTER هنگام درخواست، بپذیرید.

همچنین ، عامل Zabbix را نصب کنید ، که به شما امکان می دهد اطلاعات مربوط به وضعیت سرور مجازی Zabbix را جمع کنید.
⦁ $ sudo yum install zabbix-agent

قبل از استفاده از Zabbix ، شما باید یک بانک اطلاعاتی را تنظیم کنید تا داده هایی را که سرور مجازی Zabbix از عاملین آن جمع آوری خواهد کرد ، نگه دارید. می توانید این کار را در مرحله بعدی انجام دهید.
مرحله 2 – پیکربندی پایگاه داده MySQL برای Zabbix
باید یک پایگاه داده MySQL جدید ایجاد کرده و آن را با برخی از اطلاعات اصلی پر کنید تا برای Zabbix مناسب باشد. همچنین یک کاربر خاص برای این بانک اطلاعات ایجاد خواهید کرد تا Zabbix با حساب ریشه وارد MySQL نشود.
به عنوان کاربر ریشه با استفاده از رمز ریشه که هنگام نصب سرور مجازی MySQL تنظیم کرده اید به MySQL وارد شوید:
⦁ mariaDB [(none)]> mysql -uroot -p

پایگاه داده Zabbix را با پشتیبانی کاراکتر UTF-8 ایجاد کنید:
⦁ mariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;

سپس کاربری ایجاد کنید که سرور مجازی Zabbix از آن استفاده کند ، به آن دسترسی به پایگاه داده جدید را بدهید و رمز عبور را برای کاربر تنظیم کنید:
⦁ mariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by ‘your_zabbix_mysql_password’;

سپس این مجوزهای جدید را اعمال کنید:
⦁ mariaDB [(none)]> flush privileges;

این امر از کاربر و بانک اطلاعاتی مراقبت میکند. از کنسول پایگاه داده خارج شوید:
⦁ mariaDB [(none)]> quit;

در مرحله بعد ، طرح و داده های اولیه را وارد کنید. نصب Zabbix فایلی را در اختیارتان قرار می دهد.
برای تنظیم شماتیک و وارد کردن داده ها به پایگاه داده zabbix ، دستور زیر را اجرا کنید. ازzcat  استفاده کنید چرا که اطلاعات موجود در فایل ، فشرده است.
⦁ $ zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

رمزعبور را برای کاربر zabbix MySQL که هنگام درخواست از شما پیکربندی کردید وارد نمایید.
در صورت موفقیت، این فرمان خطایی به همراه نخواهد داشت. اگر خطای ERROR 1045 (28000): Access denied for user zabbix@’localhost’ (using password: YES) را مشاهده کردید ، مطمئن شوید که از رمز عبور برای کاربر zabbix استفاده کرده اید و نه کاربر root.
به منظور استفاده سرور مجازی Zabbix از این پایگاه داده ، باید گذرواژه پایگاه داده را در فایل پیکربندی سرور مجازی Zabbix تنظیم کنید. فایل پیکربندی را در ویرایشگر متن مورد نظر خود باز کنید. این آموزش از vi استفاده می کند:
⦁ $ sudo vi /etc/zabbix/zabbix_server.conf

توجه: برای کسب اطلاعات بیشتر در مورد ویرایشگر متن vi و vim جانشین آن ، از نصب و استفاده از ویرایشگر متن Vim در آموزش Cloud Server استفاده کنید.
به دنبال قسمت زیر در فایل باشید:
/etc/zabbix/zabbix_server.conf

### Option: DBPassword
# Database password. Ignored for SQLite.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=

این نظرات در فایل نحوه اتصال به پایگاه داده را توضیح می دهkد. شما باید مقدار DBPassword را در فایل برای کاربر پایگاه داده خود تنظیم کنید . با وارد کردن دکمه i حالت insert را وارد کرده ،DBPassword = را حذف کنید و و رمز خود را برای پیکربندی بانک اطلاعات اضافه کنید:
/etc/zabbix/zabbix_server.conf

# Mandatory: no
# Default
DBPassword=your_zabbix_mysql_password

پس از اتمام ، ESC را فشار دهید تا حالت درج باقی بماند ، سپس: wq و ENTER برای ذخیره و خروج از فایل تایپ کنید.
این امر از پیکربندی سرور مجازی Zabbix محافظت میکند. در مرحله بعد ، برای کارکرد صحیح رابط وب Zabbix اصلاحاتی را در تنظیمات PHP ایجاد خواهید کرد.
مرحله 3 – پیکربندیPHP برای Zabbix
رابط وب Zabbix به زبان PHP نوشته شده است و به برخی تنظیمات ویژه سرور مجازی PHP احتیاج دارد. مراحل نصب Zabbix یک فایل پیکربندی Apache ایجاد کرد که شامل این تنظیمات است. شما باید تغییر کوچکی در این فایل ایجاد کنید ، بنابراین آن را با دستور زیر باز کنید:
⦁ $ sudo vi /etc/httpd/conf.d/zabbix.conf

این فایل شامل تنظیمات PHP است که شرایط لازم برای رابط وب Zabbix را برآورده می کند. با این حال ، تنظیم منطقه زمانی به طور پیش فرض حذف می شود. برای اینکه مطمئن شوید Zabbix از زمان صحیح استفاده می کند ، باید منطقه زمانی مناسب را تنظیم کنید.
/etc/httpd/conf.d/zabbix.conf

<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
</IfModule>

خط منطقه زمانی که در بلوک کد قبلی هایلایت شده است را باطل کنید و آن را به منطقه زمانی خود تغییر دهید. می توانید از این لیست از مناطق زمانی پشتیبانی شده استفاده کنید تا یک لیست مناسب برای شما پیدا شود. سپس فایل را ذخیره کنید و ببندید.
اکنون Apache را مجدداً راه اندازی کنید تا این تنظیمات جدید اعمال شود:
⦁ $ sudo systemctl restart httpd

توجه: اگر SELinux در حالت اجباری در حال اجرا است ، باید با استفاده از دستور sudo setenforce 0 آن را در حالت مجاز قرار دهید تا به عامل Zabbix اجازه دهید به طور آزادانه عمل کند. می توانید از این آموزش برای اطلاعات بیشتر درباره مکانیسم کنترل امنیت Security Enhanced Linux استفاده کنید.

اکنون می توانید سرور مجازی و عامل Zabbix را راه اندازی کنید:
⦁ $ sudo systemctl start zabbix-server

⦁ $ sudo systemctl start zabbix-agent
سپس بررسی کنید که آیا سرور مجازی Zabbix به درستی کار می کند:
⦁ $ sudo systemctl status zabbix-server

وضعیت زیر را مشاهده خواهید کرد:
Output
● zabbix-server.service – Zabbix Server
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2019-05-03 05:57:29 UTC; 2s ago
Process: 4461 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)

در آخر ، سرور مجازی و نماینده را فعال کنید تا در زمان بوت شروع شوند:
⦁ $ sudo systemctl enable zabbix-server

⦁ 4 sudo systemctl enable zabbix-agent

این سرور مجازی تنظیم شده و به بانک اطلاعاتی وصل میباشد. سپس ، ظاهر وب را تنظیم کنید.
توجه: همانطور که در بخش Preferences ذکر شد ، توصیه می شود SSL / TLS را روی سرور مجازی خود فعال کنید. برای بدست آوردن یک گواهینامه SSL رایگان برای Apache در CentOS 7می توانید این آموزش را دنبال کنید. پس از اخذ گواهینامه های SSL / TLS ، می توانید دوباره برگشته و این آموزش را تکمیل کنید.

مرحله 4 – پیکربندی تنظیمات رابط وب Zabbix
رابط وب به شما امکان می دهد گزارش ها را مشاهده کنید و میزبان هایی را که می خواهید نظارت کنید اضافه نمایید ، اما قبل از استفاده از آن نیاز به تنظیمات اولیه دارد. مرورگر خود را راه اندازی کنید و به آدرس http: // zabbix_server_name / zabbix / بروید. در صفحه اول یک پیام خوش آمدید مشاهده خواهید کرد. برای ادامه بر روی next step کلیک کنید.
در صفحه بعدی ، جدول را مشاهده خواهید کرد که لیست تمامی پیش نیازهای اجرای Zabbix را نشان می دهد.

همه مقادیر موجود در این جدول باید ok باشد ، بنابراین تأیید کنید که هستند. حتماً تا پایین صفحه رفته و همه پیش نیازها را نگاه کنید. هنگامی که تأیید کردید که همه چیز آماده است ، برای ادامه روی next step کلیک کنید.
صفحه بعدی اطلاعات اتصال داده را می پرسد.

به سرور مجازی Zabbix در مورد بانک اطلاعاتی خود آگاهی دادید ، اما رابط وب Zabbix برای مدیریت هاست و خواندن داده نیز به دسترسی به بانک اطلاعاتی احتیاج دارد. بنابراین اعتبارات MySQL را که در مرحله 2 پیکربندی کرده اید وارد کنید و برای ادامه بر روی next step کلیک کنید.
در صفحه بعدی می توانید گزینه ها را در مقادیر پیش فرض آنها قرار دهید.

name اختیاری است. در صورت داشتن چندین سرور مجازی نظارت ، از آن در رابط وب استفاده می شود. برای ادامه بر روی next step کلیک کنید.
صفحه بعدی خلاصه پیش از نصب را نشان می دهد تا بتوانید تأیید کنید که همه چیز صحیح است.

بر روی next step کلیک کنید تا به صفحه نهایی بروید.
ستاپ رابط وب اکنون تکمیل شده است. این فرآیند فایل پیکربندی /etc/zabbix/web/zabbix.conf.php را ایجاد می کند که می توانید در آینده از آنها نسخه پشتیبان تهیه کنید و استفاده کنید. برای رفتن به صفحه ورود ، روی Finish کلیک کنید. کاربر پیش فرض Admin و پسورد zabbix است.
قبل از ورود به سیستم ، عامل Zabbix را در دومین سرور مجازی CentOS خود تنظیم کنید.
مرحله 5 – نصب و پیکربندی عامل Zabbix
حال باید نرم افزار عامل را تنظیم کنید که داده های مانیتورینگ را به سرور مجازی Zabbix ارسال می کند.
وارد سرور مجازی CentOS دوم شوید:
⦁ $ ssh sammy@second_centos_server_ip_address

سپس ، دقیقاً مانند سرور مجازی Zabbix ، دستور زیر را برای نصب بسته تنظیمات مخزن اجرا کنید:
⦁ $ sudo rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm

بعد ، حافظه yum را پاک کنید:
⦁ $ sudo yum clean all
سپس عامل Zabbix را نصب کنید:
⦁ $ sudo yum install zabbix-agent

در طی مراحل نصب در مورد وارد کردن یک کلید GPG از شما سؤال می شود. آن را تأیید کنید تا نصب کامل شود.
در حالی که Zabbix از رمزگذاری مبتنی بر گواهی پشتیبانی می کند ، تنظیم مجوز قانونی فراتر از محدوده این آموزش است. در عوض ، در این آموزش از کلیدهای از پیش اشتراکی (PSK) برای برقراری ارتباط بین سرور مجازی و عامل استفاده خواهید کرد.
ابتدا یک PSK ایجاد کنید:
⦁ $ sudo sh -c openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk”

کلید را نشان دهید تا بتوانید آن را در جایی کپی کنید. برای پیکربندی هاست به آن احتیاج خواهید داشت.
⦁ $ cat /etc/zabbix/zabbix_agentd.psk

کلید چیزی شبیه به این خواهد بود:
Output
a4374c8c3b55de472225dbf96aa7cd3ce6a34abc95d0eb2a601d954ee0cd4410

اکنون تنظیمات عامل Zabbix را ویرایش کنید تا اتصال ایمن آن به سرور مجازی Zabbix تنظیم شود. فایل پیکربندی عامل را در ویرایشگر متن خود باز کنید:
⦁ $ sudo vi /etc/zabbix/zabbix_agentd.conf

هر تنظیماتی درون این فایل از طریق کامنت های آگاهی دهنده در سراسر فایل مستند میشود ، اما نیاز به ویرایش برخی از آنها دارید.
ابتدا باید آدرس IP سرور مجازی Zabbix را ویرایش کنید. بخش زیر را پیدا کنید:
/etc/zabbix/zabbix_agentd.conf

### Option: Server
# List of comma delimited IP addresses (or hostnames) of Zabbix servers.
# Incoming connections will be accepted only from the hosts listed here.
# If IPv6 support is enabled then ‘127.0.0.1’, ‘::127.0.0.1’, ‘::ffff:127.0.0.1’ are treated equally.
#
# Mandatory: no
# Default:
# Server=

Server=127.0.0.1

مقدار پیش فرض را به IP سرور مجازی Zabbix تغییر دهید:
/etc/zabbix/zabbix_agentd.conf

# Mandatory: no
# Default:
# Server=

Server=zabbix_server_ip_address

در مرحله بعد ، بخشی را پیدا کنید که اتصال ایمن به سرور مجازی Zabbix را پیکربندی کرده و پشتیبانی از کلید پیش اشتراک گذاری شده را فعال کنید. بخش TLSConnect را پیدا کنید ، که اینگونه به نظر می رسد:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSConnect
# How the agent should connect to server or proxy. Used for active checks.
# Only one value can be specified:
# unencrypted – connect without encryption
# psk – connect using TLS and a pre-shared key
# cert – connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for ‘unencrypted’ connection)
# Default:
# TLSConnect=unencrypted

سپس TLSConnect = را باطل کنید و unencrypted را با psk جایگزین کنید تا پشتیبانی از کلید پیش اشتراکی را پیکربندی کنید:
/etc/zabbix/zabbix_agentd.conf

TLSConnect=psk

سپس ، بخش TLSAccept را پیدا کنید ، که اینگونه به نظر می رسد:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSAccept
# What incoming connections to accept.
# Multiple values can be specified, separated by comma:
# unencrypted – accept connections without encryption
# psk – accept connections secured with TLS and a pre-shared key
# cert – accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for ‘unencrypted’ connection)
# Default:
# TLSAccept=unencrypted

پیوندهای ورودی را برای پشتیبانی از کلیدهای از پیش اشتراکی با استفاده از TLSAccept = و اضافه کردن psk پیکربندی کنید:
/etc/zabbix/zabbix_agentd.conf

TLSAccept=psk

سپس ، بخش TLSPSKIdentity را پیدا کنید ، که اینگونه به نظر می رسد:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKIdentity
# Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=

با باطل کردن TLSPSKIdentity = و اضافه کردن کد هایلایت شده ، یک نام منحصر به فرد برای شناسایی کلید از پیش اشتراک گذاری خود انتخاب کنید:
/etc/zabbix/zabbix_agentd.conf

TLSPSKIdentity=PSK 001

هنگامی که میزبان خود را از طریق رابط وب Zabbix اضافه می کنید ، از این به عنوان شناسه PSK استفاده خواهید کرد.
سپس گزینه ای را انتخاب کنید که به کلید پیش اشتراک شده قبلی شما اشاره دارد. گزینه TLSPSKFile را بیابید:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKFile
# Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=

TLSPSKFile = را حذف کنید و این متن را اضافه کنید تا عامل Zabbix را به فایل PSK که ایجاد کردید، معرفی کند:
/etc/zabbix/zabbix_agentd.conf

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

فایل را ذخیره کنید و ببندید. اکنون می توانید عامل Zabbix را شروع کرده و آن را به گونه ای تنظیم کنید که در زمان بوت شروع شود:
⦁ $ sudo systemctl start zabbix-agent

⦁ $ sudo systemctl enable zabbix-agent

برای محاسبات دقیق ، بررسی کنید که عامل Zabbix به درستی اجرا شده است:
⦁ $ sudo systemctl status zabbix-agent

وضعیت زیر را مشاهده خواهید کرد ، نشان می دهد عامل در حال اجرا است:
Output
● zabbix-agent.service – Zabbix Agent
Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2019-05-03 06:25:06 UTC; 28s ago

عامل برای پیگیری اتصالات از سرور مجازی، پورت 10050 را شنود می کند. به منظور پیکربندی دسترسی از آدرس های IP خاص یا زیر شبکه ها ، از قابلیت rich rule در firewalld استفاده کنید:
⦁ $ sudo firewall-cmd –permanent –zone=public –add-rich-rule=’rule family=”ipv4″ source address=”zabbix_server_ip_address/32″ port protocol=”tcp” port=”10050″ accept’

rich rule ها به شما امکان می دهند قوانینی پیچیده تر و قابل تنظیم تر firewalld را ایجاد کنید تا کنترل بیشتری بر فایروال خود داشته باشید. در این دستور ، شما یک قاعده اضافه می کنید که ترافیک ipv4 را از مبدأ ، که به عنوان آدرس IP سرور مجازی Zabbix تعیین کرده اید ، تا پورت 10050 سرور مجازی CentOS دوم می پذیرد.
در مرحله بعدی ، Firewalld را دوباره لود کنید تا قانون جدید را فعال کنید:
⦁ $ sudo firewall-cmd –reload

اکنون عامل شما آماده پذیرش اتصالات و ارسال داده به سرور مجازی Zabbix است. اما برای استفاده از آن ، باید از طریق کنسول وب سرور مجازی به آن پیوند دهید. در مرحله بعد ، پیکربندی را کامل می کنید.
مرحله 6 – اضافه کردن هاست جدید به سرور مجازی Zabbix
نصب یک عامل بر روی سرور مجازی ی که می خواهید نظارت کنید ، فقط نیمی از روند کار است. هر هاستی که برای نظارت می خواهید نیاز به ثبت در سرور مجازی Zabbix دارد، که می توانید این کار را از طریق رابط وب انجام دهید.
با رفتن به آدرس http: // zabbix_server_name / zabbix / وارد رابط وب سرور مجازی Zabbix شوید.

هنگامی که وارد سیستم شده اید ، در نوار پیمایش بالا بر روی Configuration و سپس Hosts  کلیک کنید. سپس بر روی دکمه Create host در گوشه سمت راست بالای صفحه کلیک کنید. با این کار صفحه پیکربندی میزبان باز می شود.

نام هاست و آدرس IP را تنظیم کنید تا نام هاست و آدرس IP سرور مجازی دوم CentOS شما را منعکس نماید ، سپس هاست را به یک گروه اضافه کنید. می توانید یک گروه موجود ، به عنوان مثال سرور مجازی های لینوکس را انتخاب کنید یا گروه خود را ایجاد کنید. هاست می تواند در چند گروه باشد. برای این کار ، نام گروه موجود یا جدید را در قسمت Groups وارد کرده و از لیست پیشنهادی مقدار مورد نظر را انتخاب کنید.
پس از افزودن گروه ، بر روی تب Templates کلیک کنید.

Template OS Linux را در قسمت جستجو تایپ کنید و سپس بلافاصله در زیر نوار جستجو روی add کلیک کنید تا این الگو به هاست اضافه شود.
در مرحله بعد ، به سربرگ Encryption  بروید. PSK  را هم برای اتصال به هاست و هم اتصالات حاصله از هاست انتخاب کنید و برای اتصالات از سوی هاست، No encryption را uncheck کنید. سپس PSK identity  را روی PSK 001 قرار دهید ، که مقدار تنظیم TLSPSKIdentity عامل Zabbix است که قبلاً پیکربندی کرده اید. سپس مقدار PSK را روی کلید تولید شده برای عامل Zabbix تنظیم کنید. این چیزی است که در فایل /etc/zabbix/zabbix_agentd.psk در دستگاه عامل دخیره شده است.

در آخر ، بر روی دکمه Add در پایین فرم کلیک کنید تا میزبان ایجاد شود.
میزبان جدید خود را در این لیست مشاهده خواهید کرد. یک دقیقه صبر کنید و صفحه را مجدد لود کنید تا برچسب های سبز نشان دهند که همه چیز خوب است و اتصال رمزگذاری شده است.

در صورت داشتن سرور مجازیهای اضافی که باید نظارت شوند ، به هر هاست وارد شوید ، عامل Zabbix را نصب کنید ، یک PSK تولید کنید ، عامل را پیکربندی کنید و با دنبا کردن همان مراحل برای اضافه کردن اولین هاست ، هاست بعدی را به رابط وب اضافه کنید.
سرور مجازی Zabbix اکنون سرور مجازی دوم CentOS شما را تحت نظر دارد. اکنون ، اعلان های ایمیل را تنظیم کنید تا در مورد مشکلات به شما اطلاع داده شود.
مرحله 7 – پیکربندی اعلان های ایمیل
Zabbix به طور خودکار انواع مختلفی از اعلان ها را پشتیبانی می کند: ایمیل ، Jabber ، پیام کوتاه و غیره. همچنین می توانید از روش های اعلان جایگزین مانند Telegram یا Slack نیز استفاده کنید. لیست کامل ادغام ها را می توانید در اینجا مشاهده کنید.
ساده ترین روش ارتباطی ایمیل است و این آموزش اعلان ها را برای این نوع رسانه پیکربندی می کند.
در نوار پیمایش بالا بر روی Administration ، و سپس Media types کلیک کنید. لیست انواع رسانه ها را مشاهده خواهید کرد. روی ایمیل کلیک کنید.
گزینه های SMTP را مطابق تنظیمات ارائه شده توسط سرویس ایمیل خود تنظیم کنید. این آموزش از ویژگی های SMTP Gmail برای تنظیم اعلان های ایمیل استفاده می کند. اگر می خواهید اطلاعات بیشتری درباره این تنظیمات داشته باشید ، به نحوه استفاده از سرور مجازی SMTP Google مراجعه کنید.
توجه: اگر از تأیید صحت دو مرحله ای با Gmail استفاده می کنید ، باید یک رمزعبور app برای Zabbix تولید کنید. لازم نیست آن را به خاطر بسپارید ، فقط باید یک بار رمز عبور برنامه را هنگام تنظیم وارد کنید. در مرکز راهنمایی Google دستورالعملهایی درباره نحوه تولید این رمز عبور پیدا خواهید کرد.

همچنین می توانید قالب پیام — html یا متن ساده را انتخاب کنید. در آخر ، بر روی دکمه Update در پایین فرم کلیک کنید تا پارامترهای ایمیل به روز شود.

اکنون یک کاربر جدید ایجاد کنید. در نوار پیمایش بالا روی Administrator و سپس Users کلیک کنید. لیست کاربران را مشاهده خواهید کرد. سپس بر روی دکمه Create user در گوشه سمت راست بالای صفحه کلیک کنید. با این کار صفحه پیکربندی کاربر باز می شود.

نام کاربری جدید را در قسمت Alias ​​وارد کرده و رمزعبور جدیدی تنظیم کنید. در مرحله بعد کاربر را به گروه administrator اضافه کنید. Zabbix administrators را در قسمت Groups تایپ کرده و آن را از لیست پیشنهادی انتخاب کنید.
پس از افزودن گروه ، بر روی تب Media کلیک کرده و روی لینک Add که زیر آن خط کشیده شده کلیک کنید. یک پنجره pop-up مشاهده خواهید کرد.

آدرس ایمیل خود را در قسمت Send to وارد کنید. می توانید بقیه گزینه ها را روی مقادیر پیش فرض بگذارید. برای ارسال ، روی دکمه add در پایین کلیک کنید.
اکنون به سربرگ Permissions  بروید.Zabbix Super Admin را از منوی کشویی نوع کاربر انتخاب کنید.
در آخر ، بر روی دکمه Add در پایین فرم کلیک کنید تا کاربر ایجاد شود.
اکنون باید اعلان ها را فعال کنید. بر روی تب Configuration  و سپس Actions  در نوار پیمایش بالا کلیک کنید. عملکردی از پیش تنظیم شده را مشاهده خواهید کرد ، که وظیفه ارسال اعلان ها به همه ادمین های Zabbix را بر عهده دارد. می توانید تنظیمات را با کلیک روی نام آن بررسی و تغییر دهید. برای اهداف این آموزش از پارامترهای پیش فرض استفاده کنید. برای فعال کردن این عمل ، بر روی لینک قرمز Disabled در ستون Status کلیک کنید.
اکنون آماده دریافت هشدار هستید. در مرحله بعدی ، یک مورد را آزمایش می کنید تا تنظیم اعلان خود بررسی نمایید.
مرحله 8 – ایجاد هشدار آزمایشی
در این مرحله ، برای اطمینان از اتصال همه موارد ، یک هشدار تست تولید می کنید. به طور پیش فرض ، Zabbix مقدار فضای دیسک خالی روی سرور مجازی شما را پیگیری می کند. به طور خودکار تمام دیسک های قرار داده شده را شناسایی میکند و بررسی های مربوطه را اضافه می کند. این شناسایی هر ساعت اجرا می شود ، بنابراین باید مدت زمانی صبر کنید تا اعلان شروع شود.
یک فایل موقت ایجاد کنید که به اندازه کافی بزرگ باشد تا هشدار استفاده از سیستم فایل Zabbix را فعال کند. برای این کار ، اگر هنوز به سیستم متصل نشده اید ، به سرور مجازی CentOS دوم خود وارد شوید.
⦁ $ ssh sammy@second_centos_server_ip_address

در مرحله بعد مشخص کنید که چه مقدار فضای خالی روی سرور مجازی دارید. برای فهمیدن می توانید از دستور df استفاده کنید:
⦁ $ df -h

دستور df میزان استفاده از فضای دیستم فایل شما را گزارش می کند ، و -h باعث می شود که خروجی قابل خواندن باشد. خروجی مانند زیر را مشاهده خواهید کرد:
Output
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 958M 25G 4% /
در این حالت فضای آزاد 25 گیگابایت است. فضای آزاد شما ممکن است متفاوت باشد.
از دستور fallocate استفاده کنید ، که به شما امکان می دهد فضای اختصاصی را به یک فایل اختصاص بدهید یا ندهید، تا فایلی ایجاد کنید که بیش از 80٪ فضای موجود دیسک را داشته باشد. این کار برای ایجاد هشدار کافی خواهد بود:
⦁ $ fallocate -l 20G /tmp/temp.img

Zabbix پس از گذشت حدود یک ساعت ، هشداری در مورد میزان فضای خالی دیسک ارائه می کند و عملی را که پیکربندی کرده اید ، اجرا می کند که پیامی را ارسال خواهد کرد. می توانید صندوق ورودی خود را برای دریافت پیام از سرور مجازی Zabbix بررسی کنید. پیامی مانند خواهید دید:
Problem started at 10:49:25 on 2019.05.03
Problem name: Free disk space is less than 20% on volume /
Host: Second Centos Server
Severity: Warning

Original problem ID: 34

همچنین می توانید برای مشاهده اطلاعیه و جزئیات آن به سربرگ Monitoring و سپس Dashboard حرکت کنید.

اکنون که می دانید هشدارها کار می کنند ، فایل موقت ایجاد شده را حذف کنید تا بتوانید فضای دیسک خود را دوباره پس بگیرید:
⦁ $ rm -f /tmp/temp.img

پس از یک دقیقه Zabbix پیام بازیابی را ارسال می کند و هشدار از داشبورد اصلی ناپدید می شود.
نتیجه
در این آموزش یک راه حل ساده و ایمن برای نظارت تنظیم کرده اید که به شما در نظارت بر وضعیت سرور مجازی های خود کمک می کند. اکنون می تواند مشکلات را به شما هشدار دهد ، و شما این فرصت را دارید که فرآیندهای رخ داده در زیرساخت IT خود را تجزیه و تحلیل کنید.
برای کسب اطلاعات بیشتر درباره راه اندازی زیرساخت های نظارت ، نحوه نصب Elasticsearch ، Logstash و Kibana (Elastic Stack) را در CentOS 7 و نحوه جمع آوری معیارهای زیرساخت با Metricbeat در CentOS 7 را بررسی کنید.

 

برچسب‌ها:


تبلیغات

آخرین ارسال ها

آخرین جستجو ها

آموزش کامپیوتر و نرم افزار BTC7500 world of data تجهیزات سرمایش دیتاسنتر، کولینگ مرکز داده و خنک کننده اتاق سرور Public behavior control, by anonymous groups گنجینه فیلم های اکشن banojan The Blog to Preserve and Publish the Writings of Mortaza Etri Kermanshahi می خوام یادبگیرم