سرور مجازی

  • ۰
  • ۰

مقدمه
ProxySQL یک t آگاه به SQL است که می تواند بین برنامه شما و پایگاه داده شما قرار بگیرد. این نرم افزار بسیاری از ویژگی ها ، مانند تعادل بار بین چندین سرور مجازی MySQL را ارائه میدهد و به عنوان یک لایه حافظه پنهان برای درخواست ها عمل میکند. در این آموزش به ویژگی دخیره سازی ProxySQL و نحوه بهینه سازی درخواست ها برای پایگاه داده MySQL شما پرداخته می شود.
ذخیره سازی MySQL زمانی اتفاق می افتد که نتیجه یک درخواست به گونه ای ذخیره می شود که هنگامی که آن درخواست تکرار میگردد ، بدون نیاز به مرتب سازی در پایگاه داده ، نتیجه می تواند برگردانده شود. این ویژگی می تواند سرعت درخواست های معمول را به میزان قابل توجهی افزایش دهد. اما در بسیاری از روش های ذخیره سازی ، توسعه دهندگان باید کد برنامه خود را اصلاح کنند ، که می تواند یک اشکال را در پایگاه داده وارد کند. برای جلوگیری از این عمل مستعد خطا ،ProxySQL به شما امکان می دهد یک ذخیره سازی شفاف را انجام دهید.
در ذخیره سازی شفاف ، فقط ادمین های دیتابیس باید جهت فعال کردن حافظه پنهان برای متداول ترین درخواست ها ، پیکربندی ProxySQL را تغییر دهند و این تغییرات می تواند از طریق رابط ادمین ProxySQL انجام شود. همه کاری که توسعه دهنده باید انجام دهد اتصال به پروکسی آگاه به پروتکل است ، و پروکسی تصمیم می گیرد که آیا درخواستی را می توان از حافظه نهان بدون ضربه زدن به سرور مجازی back-end ارائه داد یا خیر.
در این آموزش از ProxySQL برای تنظیم ذخیره سازی شفاف برای سرور مجازی MySQL در اوبونتو 16.04 استفاده خواهید کرد. سپس می توانید عملکرد آن را با استفاده از mysqlslap با و بدون حافظه پنهان آزمایش کنید تا تأثیر حافظه پنهان و مدت زمان صرفه جویی در هنگام اجرای بسیاری از سؤالات مشابه را نشان دهید.
پیش نیازها
قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت:
• یک سرور مجازی Ubuntu 16.04 با حداقل 2 گیگابایت رم ، با یک کاربر غیر ریشه با امتیازات sudo و فایروال تنظیم شده است ، همانطور که در راهنمای راه اندازی سرور مجازی اولیه Ubuntu 16.04 ما گفته شده است.
مرحله 1 – نصب و تنظیم سرور مجازی MySQL
ابتدا ، سرور مجازی MySQL را نصب کرده و پیکربندی می کنید تا توسط ProxySQL به عنوان یک سرور مجازی back-end برای ارائه خدمات به درخواست های کلاینت استفاده شود.
در Ubuntu 16.04 ، سرور مجازی mysql با استفاده از این دستور قابل نصب است:
$ sudo apt-get install mysql-server

Y را فشار دهید تا نصب را تأیید کنید.
سپس از شما رمزعبور کاربر روت MySQL خواسته می شود. یک رمزعبور قوی وارد کنید و آن را برای استفاده بعدی ذخیره کنید.
اکنون که سرور مجازی MySQL خود را آماده کرده اید ، آن را پیکربندی می کنید تا ProxySQL به درستی کار کند. برای نظارت بر سرور مجازی MySQL ، باید یک کاربر مانیتور برای ProxySQL اضافه کنید ، زیرا ProxySQL به جای استفاده از اتصال TCP یا درخواست های HTTP GET ، به سرور مجازی پشتیبان از طریق پروتکل SQL گوش می دهد تا مطمئن شود که backend  در حال اجرا است. مانیتور از یک اتصال SQL ساختگی (مجازی) برای تعیین اینکه سرور مجازی در حال کار است یا خیر استفاده می کند.
ابتدا وارد پوسته MySQL شوید:
$ mysql -uroot -p
-uroot با استفاده از کاربر روت MySQL شما را وارد می کند و –p رمزعبور کاربر root را می خواهد. این کاربر روت با کاربر اصلی سرور مجازی شما متفاوت است و رمز عبور چیزی است که هنگام نصب بسته mysql-server وارد کرده اید.
رمز عبور اصلی را وارد کنید و ENTER را فشار دهید.
اکنون شما دو کاربر ایجاد خواهید کرد ، یکی به نام مانیتور برای ProxySQL و دیگری که برای اجرای درخواست های مربوط به کلاینت و ارائه امتیازات مناسب به آنها استفاده میکنید. این آموزش نام این کاربر را Sammy خواهد گذاشت.
کاربر مانیتور را ایجاد کنید:
Mysql> CREATE USER ‘monitor’@’%’ IDENTIFIED BY ‘monitor_password’;

عبارت CREATE USER برای ایجاد یک کاربر جدید استفاده می شود که می تواند از IP های خاص متصل شود. استفاده از٪ نشانگر اتصال کاربر از هر آدرس IP است. IDENTIFIED BY کلمه عبور را برای کاربر جدید تنظیم می کند. هر پسوردی را که دوست دارید وارد کنید ، اما حتماً آن را برای استفاده های بعدی به خاطر بسپارید.
پس از ایجاد مانیتور کاربر ، کاربر sammy را ایجاد کنید:
Mysql> CREATE USER ‘sammy’@’%’ IDENTIFIED BY ‘sammy_password’;

در مرحله بعدی ، به کاربران جدید خود امتیاز دهید. برای پیکربندی مانیتور دستور زیر را اجرا کنید:
Mysql> GRANT SELECT ON sys.* TO ‘monitor’@’%’;

از درخواست GRANT برای دادن امتیاز به کاربران استفاده می شود. در اینجا فقط SELECT را در تمام جداول موجود در پایگاه داده sys به کاربر مانیتور اعطا می کنید. فقط به این امتیاز نیاز دارد تا به سرور مجازی back-end گوش دهد.
اکنون تمام امتیازات را به کلیه بانکهای اطلاعاتی به کاربر sammy اعطا کنید:
Mysql> GRANT ALL PRIVILEGES on *.* TO ‘sammy’@’%’;

با این کار sammy می تواند برای تست دیتابیس شما سؤالات لازم را ایجاد کند.
با اجرای دستور زیر تغییرات امتیاز را اعمال کنید:
Mysql> FLUSH PRIVILEGES;

در آخر ، از پوسته mysql خارج شوید:
Mysql> exit;

اکنون شما سرور مجازی mysql را نصب کرده اید و کاربری ایجاد کرده اید که توسط ProxySQL برای نظارت بر سرور مجازی MySQL شما استفاده می شود ، و کاربر دیگر برای اجرای درخواست های کلاینت میباشد. در مرحله بعد ProxySQL را نصب و پیکربندی خواهید کرد.
مرحله 2 – نصب و پیکربندی سرور مجازی ProxySQL
اکنون می توانید سرور مجازی ProxySQL را نصب کنید ، که به عنوان یک لایه حافظه پنهان برای درخواست های شما استفاده میشود. یک لایه حافظه پنهانی به عنوان وقفه بین سرور مجازی های برنامه شما و سرور مجازی های پشتیبان بانک اطلاعاتی وجود دارد. و برای اتصال سریع به دیتابیس و ذخیره نتایج برخی از درخواست ها در حافظه خود برای دسترسی سریع بعدی استفاده می شود.
صفحه  ProxySQL releases Github فایلهای نصب را برای نسخه های رایج لینوکس ارائه می دهد. برای این آموزش ، از wget برای دانلود فایل نصب نسخه ProxySQL دبیان 2.0.4 استفاده می کنید:
$ wget https://github.com/sysown/proxysql/releases

/download/v2.0.4/proxysql_2.0.4-ubuntu16_amd64.deb

سپس ، بسته را با استفاده از dpkg نصب کنید:
$ sudo dpkg -i proxysql_2.0.4-ubuntu16_amd64.deb

پس از نصب ، ProxySQL را با این دستور شروع کنید:
$ sudo systemctl start proxysql

با این دستور می توانید بررسی کنید که ProxySQL به درستی شروع شده است:
$ sudo systemctl status proxysql

خروجی مشابه این دریافت خواهید کرد:
Output
root@ubuntu-s-1vcpu-2gb-sgp1-01:~# systemctl status proxysql
● proxysql.service – LSB: High Performance Advanced Proxy for MySQL
Loaded: loaded (/etc/init.d/proxysql; bad; vendor preset: enabled)
Active: active (exited) since Wed 2019-06-12 21:32:50 UTC; 6 months 7 days ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0
Memory: 0B
CPU: 0

اکنون زمان آن رسیده است که به سرور مجازی ProxySQL خود وصل شوید. برای این منظور ، از رابط SQL ادمین ProxySQL استفاده کنید ، که به طور پیش فرض درگاه 6032 را در localhost گوش می دهد و از admin به عنوان نام کاربری و رمز عبور خود استفاده می کند.
با اجرای دستور زیر به رابط متصل شوید:
$ mysql -uadmin -p -h 127.0.0.1 -P6032

هنگام درخواست رمز عبور ، admin را وارد کنید.
-uadmin نام کاربری را به عنوان admin تعیین می کند و فلگ -h میزبان را به عنوان localhost مشخص می کند. درگاه 6032 است که با استفاده از فلگ -P مشخص شده است.
در اینجا شما باید میزبان و پورت را به صراحت مشخص کنید زیرا به طور پیش فرض ، کلاینت MySQL با استفاده از یک فایل محلی و پورت 3306 وصل می شود.
اکنون که به عنوان admin وارد پوسته mysql شده اید ، کاربر مانیتور را پیکربندی کنید تا ProxySQL بتواند از آن استفاده کند. ابتدا برای تنظیم مقادیر دو متغیر جهانی از درخواست های استاندارد SQL استفاده کنید:
Mysql> UPDATE global_variables SET variable_value=’monitor’ WHERE variable_name=’mysql-monitor_username’;

Mysql> UPDATE global_variables SET variable_value=’monitor_password’ WHERE variable_name=’mysql-monitor_password’;

متغیر mysql-monitor_username نام کاربری MySQL را مشخص می کند که برای بررسی اینکه سرور مجازی back-end کار میکند یا نه ، استفاده می شود. متغیر mysql-monitor_password به گذرواژه ای که هنگام اتصال به سرور مجازی back-end استفاده خواهد شد اشاره می کند. از رمز عبوری که برای نام کاربری مانیتور ایجاد کرده اید استفاده کنید.
هر بار که تغییری در رابط ادمین ProxySQL ایجاد کنید ، باید از دستور LOAD مناسب برای اعمال تغییرات در نمونه در حال اجرا ProxySQL استفاده کنید. شما متغیرهای جهانی MySQL را تغییر داده اید ، بنابراین آنها را به RUNTIME بارگذاری کنید تا تغییرات اعمال شود:
Mysql> LOAD MYSQL VARIABLES TO RUNTIME;
در مرحله بعد ، تغییراتی را در بانک اطلاعاتی روی دیسک ذخیره کنید تا تغییرات بین ریستارت ها ادامه یابد. ProxySQL برای ذخیره جداول و متغیرهای خاص خود از پایگاه داده محلی SQLite خود استفاده می کند:
Mysql> SAVE MYSQL VARIABLES TO DISK;

اکنون ، به ProxySQL در مورد سرور مجازی back-end اطلاع بدهید. جدول mysql_servers اطلاعات مربوط به هر سرور مجازی پشتیبان را دارد که ProxySQL می تواند به آن متصل شود و از آن استفاده کند ، بنابراین با استفاده از یک عبارت SQL استاندارد INSERT با مقادیر زیر برای hostgroup_id ، hostname و port یک رکورد جدید اضافه کنید:
Mysql> INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (1, ‘127.0.0.1’, 3306);

برای اعمال تغییرات ، LOAD را اجرا کرده و دوباره SAVE کنید:
Mysql> LOAD MYSQL SERVERS TO RUNTIME;

Mysql> SAVE MYSQL SERVERS TO DISK;
سرانجام ، به ProxySQL خواهید گفت که کدام کاربر به سرور مجازی back-end وصل خواهد شد. Sammy را به عنوان کاربر تنظیم کرده و sammy_password را با رمز عبوری که قبلاً ایجاد کرده اید جایگزین کنید:
Mysql> INSERT INTO mysql_users(username, password, default_hostgroup) VALUES (‘sammy’, ‘sammy_password’, 1);

جدول mysql_users اطلاعات مربوط به کاربرانی را که برای اتصال به سرور مجازی های back-end استفاده می شوند ، در اختیار دارد. شما username ، password و default_hostgroup را مشخص کردید.
تغییرات را دانلود و ذخیره کنید:
Mysql> LOAD MYSQL USERS TO RUNTIME;

Mysql> SAVE MYSQL USERS TO DISK;
سپس از پوسته mysql خارج شوید:
Mysql> exit;

برای آزمایش اینکه می توانید با استفاده از ProxySQL به سرور مجازی پشتیبان خود متصل شوید ، درخواست تست زیر را اجرا کنید:
$ mysql -usammy -h127.0.0.1 -p -P6033 -e “SELECT @@HOSTNAME as hostname”
در این دستور شما از فلگ -e برای اجرای یک درخواست و بستن اتصال استفاده کرده اید. درخواست نام میزبان سرور مجازی back-end را چاپ می کند.
توجه: ProxySQL به طور پیش فرض برای گوش دادن به اتصالات ورودی از پورت 6033 استفاده می کند.
خروجی به این شکل ظاهر می شود ، your_hostname با نام میزبان شما جایگزین می شود:
Output
+—————————-+
| hostname |
+—————————-+
| your_hostname |
+—————————-+

برای کسب اطلاعات بیشتر در مورد پیکربندی ProxySQL ، به مرحله 3 نحوه استفاده از ProxySQL به عنوان Load Balancer برای MySQL در اوبونتو 16.04 مراجعه کنید.
تاکنون ، شما ProxySQL را پیکربندی کرده اید تا از سرور مجازی MySQL خود به عنوان backend استفاده کرده و با استفاده از ProxySQL به backend وصل شوید. اکنون ، شما آماده استفاده از mysqlslap برای تست عملکرد درخواست ها بدون ذخیره سازی هستید.
مرحله 3 – آزمایش با استفاده از mysqlslap بدون ذخیره سازی
در این مرحله شما یک پایگاه داده تستی را دانلود می کنید تا بتوانید با استفاده از mysqlslap درخواست ها را اجرا کنید و زمان تأخیر بدون حافظه نهان را تست کنید و معیار سرعت درخواست های خود را تعیین نمایید. همچنین بررسی می کنید که چگونه ProxySQL سوابق درخواست ها را در جدول stats_mysql_query_digest نگه می دارد.
mysqlslap یک کلاینت شبیه سازی بار است که به عنوان یک ابزار تست بار برای MySQL استفاده می شود. و می تواند یک سرور مجازی MySQL را با درخواست های خودکار ایجاد شده یا برخی از درخواست های سفارشی که در یک پایگاه داده اجرا می شود ، را آزمایش کند. در بسته کلاینت MySQL نصب شده وجود دارد ، بنابراین نیازی به نصب آن نیست. در عوض ، شما یک پایگاه داده را فقط برای اهداف آزمایش دانلود می کنید ، که می توانید از mysqlslap استفاده کنید.
در این آموزش از یک نمونه بانک اطلاعاتی کارمند استفاده خواهید کرد. شما از این پایگاه داده کارمند استفاده می کنید زیرا دارای مجموعه ای از داده های بزرگ است که می تواند تفاوت های بهینه سازی درخواست را نشان دهد. این بانک اطلاعاتی دارای شش جدول است ، اما داده های موجود در آن بیش از 300000 پرونده کارمند میباشد. این به شما کمک می کند تا حجم کار تولیدی در مقیاس بزرگ را شبیه سازی کنید.
برای دانلود پایگاه داده ، ابتدا مخزن Github را با استفاده از این دستور کلون کنید:
$ git clone https://github.com/datacharmer/test_db.git

سپس دایرکتوری test_db را وارد کنید و با استفاده از این دستورات پایگاه داده را در سرور مجازی MySQL بارگذاری کنید:
$ cd test_db

$ mysql -uroot -p < employees.sql9 این دستور با استفاده از تغییر مسیر shell برای خواندن نمایش داده های SQL در فایل Staff.sql و اجرای آنها در سرور مجازی MySQL برای ایجاد ساختار پایگاه داده استفاده می کند. خروجی مانند این را خواهید دید: Output INFO CREATING DATABASE STRUCTURE INFO storage engine: InnoDB INFO LOADING departments INFO LOADING employees INFO LOADING dept_emp INFO LOADING dept_manager INFO LOADING titles INFO LOADING salaries data_load_time_diff 00:00:32 پس از بارگذاری پایگاه داده روی سرور مجازی MySQL خود ، آزمایش کنید که mysqlslap با درخواست زیر کار کند: $ mysqlslap -usammy -p -P6033 -h127.0.0.1 –auto-generate-sql –verbose mysqlslap دارای فلگ هایی مشابه کلاینت mysql است. در اینجا موارد استفاده شده در این دستور آمده است: -u کاربر مورد استفاده برای اتصال به سرور مجازی را مشخص می کند. -p رمزعبور کاربر را درخواست میکند. -P با استفاده از درگاه مشخص شده متصل می شود. -h به هاست مشخص شده متصل می شود. Auto-generate-sql به MySQL اجازه می دهد تا تست بارگذاری را با استفاده از درخواست های تولید شده خود انجام دهد. –verbose باعث می شود که خروجی اطلاعات بیشتری را نشان دهد. خروجی شبیه به زیر را دریافت خواهید کرد: Output Benchmark Average number of seconds to run all queries: 0.015 seconds Minimum number of seconds to run all queries: 0.015 seconds Maximum number of seconds to run all queries: 0.015 seconds Number of clients running queries: 1 Average number of queries per client: 0 در این خروجی می توانید تعداد متوسط ​​، حداقل و حداکثر تعداد ثانیه هایی را که برای اجرای کلیه درخواست ها سپری شده را مشاهده کنید. این به شما مقیاسی از مدت زمان مورد نیاز برای اجرای درخواست توسط تعدادی از کلاینت ها را نشان میدهد. در این خروجی ، فقط یک کلاینت برای اجرای درخواست استفاده شده است. در مرحله بعد ، با نگاهی به stats_mysql_query_digest درProxySQL ببینید mysqlslap  کدام درخواست ها را در آخرین دستور اجرا کرده است. این به ما اطلاعاتی مانند  digest درخواست ها را می دهد ، که یک شکل عادی شده از عبارت SQL است که بعداً برای فعال کردن حافظه پکیج به آنها مراجعه می شود. با این دستور اینترفیس ادمین ProxySQL را وارد کنید: $ mysql -uadmin -p -h 127.0.0.1 -P6032 سپس این درخواست را برای یافتن اطلاعات در جدول stats_mysql_query_digest اجرا کنید: Mysql> SELECT count_star,sum_time,hostgroup,digest,digest_text FROM stats_mysql_query_digest ORDER BY sum_time DESC;

خروجی مشابه زیر را مشاهده خواهید کرد:
+————+———-+———–+——————–+———————————-+
| count_star | sum_time | hostgroup | digest | digest_text |
+————+———-+———–+——————–+———————————-+
| 1 | 598 | 1 | 0xF8F780C47A8D1D82 | SELECT @@HOSTNAME as hostname |
| 1 | 0 | 1 | 0x226CD90D52A2BA0B | select @@version_comment limit ? |
+————+———-+———–+——————–+———————————-+
2 rows in set (0.01 sec)

درخواست قبلی داده ها را از جدول stats_mysql_query_digest انتخاب می کند ، که شامل اطلاعات مربوط به کلیه درخواست ها در ProxySQL است. در اینجا پنج ستون انتخاب شده است:
count_star: تعداد دفعاتی که این درخواست اجرا شد.
sum_time: زمان کل بر حسب میلی ثانیه است که برای اجرای این درخواست استفاده شده است.
hostgroup: گروه میزبانی که برای اجرای این درخواست استفاده می شود.
digest: دایجستی از درخواست اجرا شده.
digest_text: درخواست واقعی. در مثال این آموزش ، درخواست دوم با استفاده از ؟ به جای پارامترهای متغیر پارامتریزه شده است . بنابراین، select @@version_comment limit 1 و select @@version_comment limit 2 به عنوان همان درخواست با یک دایجست گروه بندی می شوند.
اکنون که می دانید چگونه داده های درخواست را در جدول stats_mysql_query_digest بررسی کنید ، از پوسته mysql خارج شوید:
Mysql> exit;
بانک اطلاعاتی که دانلود کردید شامل برخی از جداول با داده های نمایشی است. اکنون با انتخاب پرونده هایی که از from_emp آنها بزرگتر از 2000-04-20 باشد میتوانید درخواست ها را در dept_emp تست کنید و میانگین زمان اجرا را ثبت نمایید.
برای اجرای آزمون از این دستور استفاده کنید:
$ mysqlslap -usammy -P6033 -p -h127.0.0.1 –concurrency=100 –iterations=20 –create-schema=employees –query=”SELECT * from dept_emp WHERE from_date>’2000-04-20′” –verbose

در اینجا از چند فلگ جدید استفاده می کنید:
–concurrency = 100: تعداد کاربران را برای شبیه سازی تعیین می کند ، در این حالت 100.
–iterations=20 : باعث می شود تست 20 بار اجرا شود و نتایج حاصل از همه آنها محاسبه شود.
–create-schema=employees: در اینجا پایگاه داده کارمندان را انتخاب کردید.
–query=”SELECT * from dept_emp WHERE from_date>’2000-04-20′”: در اینجا درخواست اجرا شده در آزمون را مشخص کردید.
آزمون چند دقیقه طول خواهد کشید. پس از اتمام کار ، نتایج مشابه با موارد زیر را دریافت می کنید:
Output
Benchmark
Average number of seconds to run all queries: 18.117 seconds
Minimum number of seconds to run all queries: 8.726 seconds
Maximum number of seconds to run all queries: 22.697 seconds
Number of clients running queries: 100
Average number of queries per client: 1

تعداد شما می تواند کمی متفاوت باشد. این اعداد را در جایی نگه دارید تا بعد از فعال کردن ذخیره سازی، آنها را با نتایج حاصل از مقایسه کنید.
پس از آزمایش ProxySQL بدون حافظه پنهان ، زمان آن است که دوباره همان تست را اجرا کنید ، اما این بار با فعال سازی حافظه پنهان.
مرحله 4 – آزمایش با استفاده از mysqlslap همراه با ذخیره سازی
در این مرحله ، حافظه پنهان به ما کمک می کند تا هنگام اجرای درخواست های مشابه ، تاخیر را کاهش دهیم. در اینجا ، درخواست های اجرا شده را شناسایی می کنید ، دایجست آنها را از جدول stats_mysql_query_digest ProxySQL می گیرید و از آنها برای فعال کردن حافظه پنهان استفاده می کنید. سپس ، دوباره تست می کنید تا اختلاف را بررسی کنید.
برای فعال کردن حافظه پنهان ، باید دایجست نمایش داده شد که در آن ذخیره می کنید را بدانید. با استفاده از این دستور به رابط ادمین ProxySQL وارد شوید:
$ mysql -uadmin -p -h127.0.0.1 -P6032
سپس این درخواست را مجدداً اجرا کنید تا لیستی از درخواست ها و آنها دریافت شود:
Ysql> SELECT count_star,sum_time,hostgroup,digest,digest_text FROM stats_mysql_query_digest ORDER BY sum_time DESC;

نتیجه مشابهی با این خواهید گرفت:
Output
+————+————-+———–+——————–+——————————————+
| count_star | sum_time | hostgroup | digest | digest_text |
+————+————-+———–+——————–+——————————————+
| 2000 | 33727110501 | 1 | 0xC5DDECD7E966A6C4 | SELECT * from dept_emp WHERE from_date>? |
| 1 | 601 | 1 | 0xF8F780C47A8D1D82 | SELECT @@HOSTNAME as hostname |
| 1 | 0 | 1 | 0x226CD90D52A2BA0B | select @@version_comment limit ? |
+————+————-+———–+——————–+——————————————+
3 rows in set (0.00 sec)

به ردیف اول نگاه کنید. در مورد درخواستی است که 2000 بار اجرا شده است. این یک درخواست تست شده است که قبلاً اجرا شده است. از دایجست آن استفاده کرده و آن را ذخیره کنید تا در افزودن یک قانون درخواست برای ذخیره سازی استفاده شود.
چند درخواست بعدی یک قانون درخواست جدید به ProxySQL اضافه خواهد کرد که با دایجست درخواست قبلی مطابقت دارد و یک مقدار cache_ttl برای آن قرار می دهد. cache_ttl تعداد میلی ثانیه هایی است که نتیجه در حافظه ذخیره می شود:
Mysql> INSERT INTO mysql_query_rules(active, digest, cache_ttl, apply) VALUES(1,’0xC5DDECD7E966A6C4′,2000,1);

در این دستور شما یک رکورد جدید به جدول mysql_query_rules اضافه می کنید. این جدول کلیه قواعد اعمال شده قبل از اجرای یک درخواست را در خود جای داده است. در این مثال ، شما یک مقدار برای ستون cache_ttl اضافه می کنید که باعث می شود درخواست منطبق شده توسط دایجست داده شده برای تعداد میلی ثانیه مشخص شده در این ستون ذخیره بماند. عدد 1 را در ستون اعمال قرار دهید تا مطمئن شوید که این قانون برای درخواست ها اعمال می شود.
این تغییرات را LOAD و SAVE کنید و سپس از پوست MYSQL خارج شوید:
Mysql> LOAD MYSQL QUERY RULES TO RUNTIME;

Mysql> SAVE MYSQL QUERY RULES TO DISK;

Mysql> exit;
اکنون که حافظه پنهان فعال است ، دوباره تست کنید تا نتیجه را بررسی کنید:
$ mysqlslap -usammy -P6033 -p -h127.0.0.1 –concurrency=100 –iterations=20 –create-schema=employees –query=”SELECT * from dept_emp WHERE from_date>’2000-04-20′” –verbose

این کار خروجی شبیه به زیر را ارائه می دهد:
Output
Benchmark
Average number of seconds to run all queries: 7.020 seconds
Minimum number of seconds to run all queries: 0.274 seconds
Maximum number of seconds to run all queries: 23.014 seconds
Number of clients running queries: 100
Average number of queries per client: 1

نتیجه
در این مقاله ، حافظه نهان شفاف را با ProxySQL تنظیم کردید تا بتواند نتایج درخواست از پایگاه داده را ذخیره کند. شما همچنین سرعت درخواست را با و بدون حافظه پنهان آزمایش کرده اید تا تفاوتی بین caching ایجاد کنید.
در این آموزش از یک سطح حافظه پنهان استفاده کرده اید. همچنین می توانید حافظه نهان وب را که جلوی یک وب سرور مجازی قرار دارد و پاسخ به درخواست های مشابه را ذخیره می کند ، امتحان کنید ، بدون اینکه به سرور مجازی های پشتیبان ضربه بزنید ، پاسخ را به کلاینت ارسال می کنید. این بسیار شبیه به ذخیره سازی ProxySQL است اما در سطح متفاوتی است. برای کسب اطلاعات بیشتر در مورد حافظه پنهان در وب ، اصول اولیه Caching Web خود را بررسی کنید: اصطلاحات ، هدرهای HTTP ، و مقدمات برنامه Caching Strategies.
سرور مجازی MySQL همچنین حافظه پنهان درخواست خود را دارد. می توانید در مورد آموزش بهینه سازی MySQL با Query Cache در اوبونتو 18.04 اطلاعات بیشتری در مورد آن کسب کنید.

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

راه اندازی اولیه سرور با CentOS 8   –  تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8   –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker [Quickstart]   –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –   مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04    –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7   –  نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

استفاده از Cron برای خودکارسازی کارها در اوبونتو 18  –

نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18 –

نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10  –

نحوه نصب Docker Compose در Debian 10 –

چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد –

نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04 –

نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7  –

بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose در اوبونتو 18  –

بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16 –

استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18 –

چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04 –

چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی –

نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18 –

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
کانتینر کردن یک برنامه به فرآیند سازگاری یک برنامه و اجزای آن اشاره میکند برای اینکه بتوانید آن را در محیط های سبک که به کانتینر شناخته می شوند اجرا کنید. چنین محیط هایی منزوی و یکبار مصرف هستند و می توانند برای توسعه ، آزمایش و بکارگیری برنامه های کاربردی برای تولید ، مورد استفاده قرار گیرند.
در این راهنما ، ما از Docker Compose برای کانتینر کردن برنامه Laravel 6 برای توسعه استفاده خواهیم کرد. پس از اتمام ، یک برنامه نمایشی Laravel در سه کانتینر سرویس جداگانه اجرا می شود:
• یک سرویس برنامه که PHP7.4-FPM را اجرا میکند.
• سرویس db که MySQL 5.7 را اجرا می کند.
• سرویس nginx که قبل از ارائه برنامه Laravel به کاربر نهایی از سرویس برنامه برای تجزیه کد PHP استفاده می کند.
برای ایجاد یک روند توسعه ساده و تسهیل اشکال زدایی برنامه ، فایل های برنامه را با استفاده از حجم های مشترک همگام سازی خواهیم کرد. همچنین خواهیم دید که چگونه می توان از دستورات اجرای docker-compose برای اجرای Composer و Artisan در کانتینر برنامه استفاده کرد.
پیش نیازها
⦁ دسترسی به یک دستگاه محلی یا سرور مجازی توسعه Ubuntu 18.04 به عنوان یک کاربر غیر ریشه و دارای امتیازات سودو. اگر از سرور مجازی راه دور استفاده می کنید ، توصیه می شود یک فایروال فعال نصب شود. برای تنظیم این موارد ، لطفاً به راهنمای راه اندازی سرور مجازی اولیه ما برای اوبونتو 18.04 مراجعه کنید.
⦁ Docker نصب شده بر روی سرور مجازی تان، مراحل 1 و 2 نحوه نصب و استفاده از Docker را در اوبونتو 18.04 دنبال کنید.
⦁ Docker Compose نصب شده بر روی سرور مجازی تان. مرحله 1 نحوه نصب Docker Compose را در اوبونتو 18.04 را دنبال کنید.
مرحله 1 – به دست آوردن برنامه نسخه ی نمایشی
برای شروع ، برنامه نسخه ی نمایشی Laravel را از منبع Github آن دریافت خواهیم کرد. ما علاقه مند به شاخه آموزش 01 هستیم که شامل برنامه اصلی Laravel است که در اولین راهنمای این مجموعه ایجاد کرده ایم.
برای به دست آوردن کد برنامه ای که با این آموزش سازگار است ، با دستور زیر آموزش نسخه-1.0.1 را روی دیرکتوری هوم خود دانلود کنید:
⦁ $ cd ~

⦁ $ curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-1.0.1.zip -o travellist.zip

برای باز کردن کد برنامه به دستور unzip نیاز خواهیم داشت. اگر قبلاً این بسته را نصب نکرده اید ، اکنون این کار را انجام دهید:
⦁ $ sudo apt update

⦁ $ sudo apt install unzip
اکنون محتویات برنامه را از حالت فشرده خارج کرده و برای دسترسی آسانتر نام دیرکتوری باز شده را تغییر دهید:
⦁ $ unzip travellist.zip

⦁ $ mv travellist-laravel-demo-tutorial-1.0.1 travellist-demo

به دیرکتوری travellist-demo بروید:
⦁ $ cd travellist-demo

در مرحله بعدی ، یک فایل پیکربندی .env برای تنظیم برنامه ایجاد خواهیم کرد.
مرحله 2 – تنظیم فایل .env برنامه
فایل های پیکربندی Laravel در پوشه ای به نام config ، در دیرکتوری اصلی برنامه قرار دارند. علاوه بر این ، از یک فایل .env برای تنظیم پیکربندی وابسته به محیط ، مانند اعتبارات و اطلاعاتی که ممکن است بین پایگاه ها متفاوت باشد ، استفاده می شود. این فایل در کنترل تجدید نظر گنجانده نشده است.
هشدار: فایل تنظیمات محیط شامل اطلاعات حساس در مورد سرور مجازی شما ، از جمله اطلاعات پایگاه داده و کلیدهای امنیتی است. به همین دلیل ، شما هرگز نباید این فایل را به صورت عمومی به اشتراک بگذارید.
مقادیر موجود در فایل .env بر مقادیر تعیین شده در فایل های پیکربندی معمولی واقع در فهرست پیکربندی ارجحیت دارند. هر نصب بر روی یک محیط جدید نیاز به یک فایل متناسب با محیط دارد تا مواردی از قبیل تنظیمات اتصال بانک اطلاعاتی ، گزینه های اشکال زدایی ، URL برنامه را از موارد دیگری که بسته به نوع محیطی که برنامه در آن اجرا میشود تغییر میکنند، متمایز نماید.
اکنون ما یک فایل .env جدید را برای سفارشی کردن گزینه های پیکربندی برای محیط توسعه ای که تنظیم می کنیم ایجاد خواهیم کرد. لاراول با یک فایل.env مثال همراه است که می توانیم آنرا کپی کنیم تا مورد خودمان را ایجاد کنیم:
⦁ $ cp .env.example .env

این فایل را با استفاده از نانو یا ویرایشگر متن مورد نظر خود باز کنید:
⦁ $ nano .env

فایل .env فعلی از برنامه نمایشی Travellist شامل تنظیماتی برای استفاده از یک پایگاه داده محلی MySQL ، با 127.0.0.1 به عنوان میزبان پایگاه داده است. ما باید متغیر DB_HOST را به روز کنیم تا به سرویس دیتابیس که در محیط Docker خود ایجاد خواهیم کرد اشاره کند. در این راهنما ، ما سرویس دیتابیس خود را db می نامیم. پیش بروید و مقدار ذکر شده DB_HOST را با نام سرویس بانک اطلاعات جایگزین کنید:
.env
APP_NAME=Travellist
APP_ENV=dev
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:8000

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=travellist
DB_USERNAME=travellist_user
DB_PASSWORD=password

در صورت تمایل می توانید نام بانک اطلاعاتی ، نام کاربری و رمزعبور را نیز تغییر دهید. این متغیرها در مرحله بعدی استفاده می شود که در آن فایل docker-compose.yml را برای پیکربندی خدمات خود تنظیم خواهیم کرد.
هنگام ویرایش ، فایل را ذخیره کنید. اگر از nano استفاده کرده اید ، می توانید با فشار دادن Ctrl + x این کار را انجام دهید، سپس Y و Enter را برای تأیید فشار دهید.
مرحله 3 – تنظیم Dockerfile برنامه
اگرچه هر دو سرویس MySQL و Nginx ما مبتنی بر تصاویر پیش فرض به دست آمده از Docker Hub خواهد بود ، اما ما هنوز نیاز به ساختن یک تصویر دلخواه برای کانتینر برنامه داریم. ما برای آن یک Dockerfile جدید ایجاد خواهیم کرد.
تصویر travellist  ما بر اساس PHP: 7.4-fpm تصویر رسمی PHP از Docker Hub خواهد بود. در بالای آن محیط اصلی PHP-FPM ، چند ماژول PHP اضافی و ابزار مدیریت وابستگی کامپوزر را نصب خواهیم کرد.
همچنین یک کاربر جدید برای سیستم ایجاد خواهیم کرد. این کار برای اجرای دستورات artisan  و composer  هنگام تهیه برنامه ضروری است. تنظیم uid تضمین می کند که کاربر درون کانتینر دارای همان کاربری است که کاربر سیستم شما در دستگاه میزبان شما دارد ، جایی که running Docker را اجرا میکنید. به این ترتیب ، هر فایل ایجاد شده توسط این دستورات با مجوزهای صحیح در هاست تکرار می شود. این نکته همچنین بدان معنی است که شما می توانید از ویرایشگر کد مورد نظر خود در دستگاه میزبان استفاده کنید تا برنامه ای را که درون کانتینرها اجرا می شود توسعه دهید.
یک Dockerfile جدید ایجاد کنید:
⦁ $ nano Dockerfile

مطالب زیر را در Dockerfile خود کپی کنید:
Dockerfile
FROM php:7.4-fpm

# Arguments defined in docker-compose.yml
ARG user
ARG uid

# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Get latest Composer
COPY –from=composer:latest /usr/bin/composer /usr/bin/composer

# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
chown -R $user:$user /home/$user

# Set working directory
WORKDIR /var/www

USER $user

فراموش نکنید که فایل را پس از اتمام ذخیره کنید.
Dockerfile ما با تعریف تصویر پایه ای که ما استفاده می کنیم شروع می شود: php: 7.4-fpm.
پس از نصب بسته های سیستم و پسوندهای PHP ، ما با کپی کردن composer  قابل اجرا از آخرین تصویر رسمی آن روی تصویر برنامه کاربردی خود ، Composer را نصب می کنیم.
سپس کاربر جدید سیستم با استفاده از آرگومانهای user و uid که در ابتدای Dockerfile اعلام شد ، ایجاد و تنظیم می شود. این مقادیر توسط Docker Compose در زمان ساخت وارد می شوند.
در آخر ، dir پیش فرض کار را به عنوان / var / www تنظیم کرده و به کاربر تازه ایجاد شده تغییر می دهیم. این کار اطمینان حاصل می کند که شما به عنوان یک کاربر معمولی در ارتباط هستید ، و هنگام اجرای دستورات composer و artisan در کانتینر برنامه ، در فهرست صحیح قرار دارید.
مرحله چهارم – تنظیم فایلهای پیکربندی Nginx و رونوشت دیتابیس
هنگام ایجاد محیط های توسعه با Docker Compose ، اغلب لازم است فایل های پیکربندی یا شروع را با کانتینرهای سرویس به اشتراک بگذارید تا این سرویس ها را تنظیم یا به صورت خودکار راه اندازی کنید. این روش ایجاد تغییر در فایل های پیکربندی را برای تنظیم دقیق محیط خود در هنگام تهیه برنامه ، تسهیل می کند.
اکنون پوشه ای را با فایل هایی تنظیم خواهیم کرد که برای پیکربندی و شروع کانتینرهای سرویس ما استفاده می شود.
برای راه‌اندازی Nginx ، ما یک فایل travellist.conf را به اشتراک خواهیم گذاشت که نحوه ارائه برنامه را پیکربندی خواهد کرد. پوشه docker-compose / nginx را با دستور زیر ایجاد کنید:
فایل جدیدی به نام travellist.conf را در آن دیرکتوری باز کنید:
⦁ $ nano docker-compose/nginx/travellist.conf

پیکربندی Nginx زیر را در آن فایل کپی کنید:
docker-compose/nginx/travellist.conf

server {
listen 80;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}

این فایل Nginx را برای گوش دادن به پورت 80 و استفاده از index.php به عنوان صفحه پیش فرض فهرست پیکربندی می کند. وroot مطالب را بر روی /var/www/public تنظیم می کند ، و سپس Nginx را برای استفاده از سرویس برنامه در پورت 9000 تنظیم می کند تا فایل های * .php را پردازش کند.
هنگام ویرایش ، فایل را ذخیره کنید و ببندید.
برای راه اندازی بانک اطلاعاتی MySQL ، ما یک پایگاه داده را به اشتراک می گذاریم که هنگام شروع کانتینر ، وارد می شود. این ویژگی ارائه شده توسط تصویر MySQL 5.7 است که ما از آن کانتینرها استفاده خواهیم کرد.
یک پوشه جدید برای فایل های شروع MySQL خود در داخل پوشه docker-compose ایجاد کنید:
⦁ $ mkdir docker-compose/mysql

یک فایل .sll جدید را باز کنید:
⦁ $ nano docker-compose/mysql/init_db.sql

رونوشت MySQL زیر بر اساس پایگاه داده ای است که ما در Laravel روی راهنمای LEMP خود تنظیم کرده ایم. این یک جدول جدید به نام places ایجاد می کند. سپس ، جدول را با مجموعه ای از مکان های نمونه جمع می کند.
کد زیر را به فایل اضافه کنید:
docker-compose/mysql/db_init.sql
DROP TABLE IF EXISTS `places`;

CREATE TABLE `places` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`visited` tinyint(1) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `places` (name, visited) VALUES (‘Berlin’,0),(‘Budapest’,0),(‘Cincinnati’,1),(‘Denver’,0),(‘He

جدول places  شامل سه فیلد است: id ، name و visited. قسمت visited ، فلگی است که برای شناسایی مکانهایی که هنوز to go هستند، استفاده می شود. در تغییر مکان های نمونه یا مکان های جدید آزادانه عمل کنید. پس از اتمام کار ، فایل را ذخیره کنید و ببندید.
ما تنظیمات Dockerfile برنامه و فایل های پیکربندی سرویس را به پایان رساندیم. در مرحله بعدی ، Docker Compose را تنظیم خواهیم کرد تا هنگام ایجاد خدمات ، از این فایل ها استفاده کنیم.
مرحله 5 – ایجاد یک محیط چند کانتینری با Docker Compose
Docker Compose به شما امکان می دهد محیطهای چند کانتینری را برای برنامه های در حال اجرا در Docker ایجاد کنید. با استفاده از تعاریف سرویس ، محیطهای کاملاً قابل تنظیم با چندین کانتینر را ایجاد می کند که می توانند شبکه ها و حجم داده ها را به اشتراک بگذارند. این امر امکان ادغام یکپارچه بین اجزای برنامه را فراهم می آورد.
برای تنظیم تعاریف خدمات ، ما یک فایل جدید با نام docker-compose.yml ایجاد خواهیم کرد. به طور معمول ، این فایل در ریشه پوشه برنامه قرار دارد و محیط کانتینر شده شما ، از جمله تصاویر پایه ای که برای ساخت کانتینرها خود استفاده خواهید کرد ، و نحوه تعامل سرویس های شما را تعریف می کند.
ما سه سرویس مختلف را در فایل docker-compose.yml خود تعریف خواهیم کرد: app ،db و nginx.
سرویس app براساس Dockerfile که قبلاً ایجاد کرده ایم ، تصویری به نام travellist ایجاد می کند. کانتینر تعریف شده توسط این سرویس ، سرور مجازی php-fpm را برای تجزیه کد PHP اجرا می کند و نتایج را به سرویس nginx ارسال می کند ، که روی یک کانتینر جداگانه اجرا می شود. سرویس mysql یک کانتینر تعریف می کند که سرور مجازی MySQL 5.7 را راه اندازی می کند. خدمات ما شبکه پلی با نام travellist را به اشتراک می گذارند.
فایل های برنامه هم در app و هم خدمات nginx از طریق bind mounts (نصب های اتصالی) همگام می شوند. bind mounts در محیط های توسعه مفید هستند زیرا امکان همگام سازی دو طرفه بین دستگاه میزبان و کانتینرها را فراهم می کنند.
یک فایل docker-compose.yml جدید در ریشه پوشه برنامه ایجاد کنید:
⦁ $ nano docker-compose.yml

یک فایل معمولی docker-compose.yml با تعریف نسخه شروع می شود و به دنبال آن یک گره خدمات قرار می گیرد که تحت آن همه خدمات تعریف می شوند. شبکه های اشتراکی معمولاً در پایین آن فایل تعریف می شوند.
برای شروع ، این کد boilerplate را در فایل docker-compose.yml خود کپی کنید:
docker-compose.yml
version: “3.7”
services:

networks:
travellist:
driver: bridge

اکنون گره خدمات را ویرایش خواهیم کرد تا خدمات app ، db و nginx را شامل شود.
سرویس app
سرویس app کانتینری به نام travellist-app را تنظیم میکند. این تصویر جدید Docker را بر اساس Dockerfile که در همان مسیر فایل docker-compose.yml قرار دارد ، می سازد. تصویر جدید به صورت محلی تحت عنوان travellist ذخیره می شود.
حتی اگر ریشه سند به عنوان برنامه در کانتینر nginx قرار داشته باشد ، ما به فایل های برنامه نیز در جایی داخل کانتینر برنامه نیاز داریم ، بنابراین می توانیم وظایف خط فرمان را با ابزار Laravel Artisan اجرا کنیم.
تعریف خدمات زیر را در زیر گره خدمات خود ، درون فایل docker-compose.yml کپی کنید:
docker-compose.yml
app:
build:
args:
user: sammy
uid: 1000
context: ./
dockerfile: Dockerfile
image: travellist
container_name: travellist-app
restart: unless-stopped
working_dir: /var/www/
volumes:
– ./:/var/www
networks:
– travellist

این تنظیمات موارد زیر را انجام می دهد:
⦁ Build: این پیکربندی به Docker Compose می گوید یک تصویر محلی برای سرویس برنامه ، با استفاده از مسیر مشخص شده (محتوا) و Dockerfile برای دستورالعمل ها بسازد. آرگومان های user و uid برای سفارشی سازی دستورات ایجاد کاربر در زمان ساخت به Dockerfile تزریق می شوند.
⦁ Image: نامی که برای تصویر ساخته شده استفاده خواهد شد.
⦁ container_name: نام کانتینر را برای این سرویس تنظیم می کند.
⦁ Restart: همیشه راه اندازی مجدد میکند ، مگر اینکه سرویس متوقف شود.
⦁ working_dir: دایرکتوری پیش فرض این سرویس را به عنوان / var / www تنظیم می کند.
⦁ Volumes: یک والیوم مشترک ایجاد می کند که محتویات موجود از دایرکتوری فعلی را به / var / www داخل کانتینر هماهنگ سازی می کند. توجه کنید که این، ریشه سند شما نیست ، زیرا در کانتینر nginx زندگی می کند.
⦁ networks: برای استفاده از شبکه ای به نام Travellist ، این سرویس را تنظیم کنید.
سرویس db
سرویس db از تصویر پیش ساخته MySQL 5.7 از Docker Hub استفاده می کند. از آنجا که Docker Compose به طور خودکار فایلهای متغیر .env را که در همان دیرکتوری فایل docker-compose.yml قرار دارد بارگیری می کند ، می توانیم تنظیمات پایگاه داده خود را از فایل Laravel .env که در مرحله قبلی ایجاد کردیم ، بدست آوریم.
تعریف خدمات زیر را درست بعد از سرویس app در گره خدمات خود وارد کنید:
docker-compose.yml
db:
image: mysql:5.7
container_name: travellist-db
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_USER: ${DB_USERNAME}
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
– ./docker-compose/mysql:/docker-entrypoint-initdb.d
networks:
– travellist

این تنظیمات موارد زیر را انجام می دهد:
⦁ Image:تصویر Docker را که باید برای این کانتینر استفاده شود ، تعریف می کند. در این حالت ، ما از تصویر MySQL 5.7 Docker Hub استفاده می کنیم.
⦁ container_name:نام کانتینر را برای این سرویس تنظیم می کند: travellist-db.
⦁ restart: همیشه این سرویس را مجدداً راه اندازی کنید ، مگر اینکه صریحاً متوقف شده باشد.
⦁ environment: متغیرهای محیط را در کانتینر جدید تعریف می کند. ما برای تنظیم سرویس MySQL از مقادیر به دست آمده از فایل Laravel .env استفاده می کنیم که به طور خودکار یک پایگاه داده جدید و کاربر را بر اساس متغیرهای محیط ارائه شده ایجاد می کند.
⦁ Volumes:یک حجم برای به اشتراک گذاشتن یک پایگاه داده dsql ایجاد می کند که برای شروع بانک اطلاعاتی برنامه کاربردی خواهد بود. تصویر MySQL به طور خودکار فایل های .ql قرار داده شده در فهرست /docker-entrypoint-initdb.d را درون کانتینر وارد می کند.
⦁ networks: برای استفاده از شبکه ای به نام Travellist ، این سرویس را تنظیم کنید.
سرویس nginx
سرویس nginx از یک تصویر پیش ساخته Nginx در بالای Alpine ، توزیع لینوکس سبک استفاده می کند. کانتینری به نام travellist-nginx ایجاد می کند و از تعریف پورت ها برای ایجاد تغییر مسیر از پورت 8000 روی سیستم میزبان برای پورت 80 درون کانتینر استفاده می کند.
تعریف خدمات زیر را در گره خدمات خود ، درست بعد از سرویس db وارد کنید:
این تنظیمات موارد زیر را انجام می دهد:
docker-compose.yml
nginx:
image: nginx:1.17-alpine
container_name: travellist-nginx
restart: unless-stopped
ports:
– 8000:80
volumes:
– ./:/var/www
– ./docker-compose/nginx:/etc/nginx/conf.d
networks:
– travellist

⦁ Image: تصویر Docker را که باید برای این کانتینر استفاده شود ، تعریف می کند. در این حالت ، ما از تصویر Alpine Nginx 1.17 استفاده می کنیم.
⦁ container_name: نام کانتینر را برای این سرویس تنظیم می کند: travellist-nginx
⦁ restart: همیشه این سرویس را مجدداً راه اندازی کنید ، مگر اینکه صریحاً متوقف شده باشد.
⦁ ports: تغییر مسیر پورت را تنظیم می کند که امکان دسترسی خارجی از طریق پورت 8000 به سرور مجازی وب را که درگاه 80 در داخل کانتینر کار می کند ، فراهم می کند.
⦁ volumes: دو والیوم مشترک ایجاد می کند. اولی همگام سازی محتوا از فهرست فعلی با / var / www داخل کانتینر را انجام میدهد. به این ترتیب ، وقتی تغییرات محلی را در فایل های برنامه اعمال می کنید ، به سرعت در برنامه ارائه شده توسط Nginx در داخل کانتینر منعکس می شوند. دومی اطمینان حاصل خواهد کرد که فایل پیکربندی Nginx ، واقع در docker-compose / nginx / travellist.conf ، در پوشه تنظیمات Nginx کانتینر کپی شده است.
⦁ networks: برای استفاده از شبکه ای به نام Travellist ، این سرویس را تنظیم کنید.
فایل docker-compose.yml تکمیل شده
فایل docker-compose.yml به پایان رسیده این گونه خواهد بود:
docker-compose.yml
version: “3.7”
services:
app:
build:
args:
user: sammy
uid: 1000
context: ./
dockerfile: Dockerfile
image: travellist
container_name: travellist-app
restart: unless-stopped
working_dir: /var/www/
volumes:
– ./:/var/www
networks:
– travellist

db:
image: mysql:5.7
container_name: travellist-db
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_USER: ${DB_USERNAME}
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
– ./docker-compose/mysql:/docker-entrypoint-initdb.d
networks:
– travellist

nginx:
image: nginx:alpine
container_name: travellist-nginx
restart: unless-stopped
ports:
– 8000:80
volumes:
– ./:/var/www
– ./docker-compose/nginx:/etc/nginx/conf.d/
networks:
– travellist

networks:
travellist:
driver: bridge

اطمینان حاصل کنید که فایل را هنگام انجام کار ذخیره کنید.
مرحله 6 – اجرای برنامه با Docker Compose
اکنون برای ایجاد تصویر برنامه و اجرای سرویس هایی که در مجموعه خود مشخص کرده ایم ، از دستورات docker-compose استفاده خواهیم کرد.
تصویر app را با دستور زیر بسازید:
⦁ $ docker-compose build app

این دستور ممکن است چند دقیقه طول بکشد. خروجی مشابه این را مشاهده خواهید کرد:
Output
Building app
Step 1/11 : FROM php:7.4-fpm
—> fa37bd6db22a
Step 2/11 : ARG user
—> Running in f71eb33b7459
Removing intermediate container f71eb33b7459
—> 533c30216f34
Step 3/11 : ARG uid
—> Running in 60d2d2a84cda
Removing intermediate container 60d2d2a84cda
—> 497fbf904605
Step 4/11 : RUN apt-get update && apt-get install -y git curl libpng-dev libonig-dev …
Step 7/11 : COPY –from=composer:latest /usr/bin/composer /usr/bin/composer
—> e499f74896e3
Step 8/11 : RUN useradd -G www-data,root -u $uid -d /home/$user $user
—> Running in 232ef9c7dbd1
Removing intermediate container 232ef9c7dbd1
—> 870fa3220ffa
Step 9/11 : RUN mkdir -p /home/$user/.composer && chown -R $user:$user /home/$user
—> Running in 7ca8c0cb7f09
Removing intermediate container 7ca8c0cb7f09
—> 3d2ef9519a8e
Step 10/11 : WORKDIR /var/www
—> Running in 4a964f91edfa
Removing intermediate container 4a964f91edfa
—> 00ada639da21
Step 11/11 : USER $user
—> Running in 9f8e874fede9
Removing intermediate container 9f8e874fede9
—> fe176ff4702b

Successfully built fe176ff4702b
Successfully tagged travellist:latest

پس از اتمام ساخت ، می توانید محیط را در حالت پس زمینه اجرا کنید:
⦁ $ docker-compose up -d
⦁ Output
⦁ Creating travellist-db … done
⦁ Creating travellist-app … done
⦁ Creating travellist-nginx … done

این کار کانتینرهای شما را در پس زمینه اجرا می کند. برای نشان دادن اطلاعات در مورد وضعیت خدمات فعال خود ، این دستور را اجرا کنید:
⦁ $ docker-compose ps
خروجی مانند این را خواهید دید:
Output
Name Command State Ports
——————————————————————————-
travellist-app docker-php-entrypoint php-fpm Up 9000/tcp
travellist-db docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
travellist-nginx nginx -g daemon off; Up 0.0.0.0:8000->80/tcp

اکنون محیط شما در حال اجرا است ، اما ما هنوز باید دستورات زوجی را اجرا کنیم تا تنظیم برنامه به پایان برسد. برای اجرای دستورات موجود در کانتینرها سرویس مانند ls-l می توانید از دستور docker-compose برای نمایش اطلاعات در مورد فایل ها در دیرکتوری برنامه استفاده کنید:
⦁ $ docker-compose exec app ls -l
⦁ Output
⦁ total 256
⦁ -rw-rw-r– 1 sammy 1001 738 Jan 15 16:46 Dockerfile
⦁ -rw-rw-r– 1 sammy 1001 101 Jan 7 08:05 README.md
⦁ drwxrwxr-x 6 sammy 1001 4096 Jan 7 08:05 app
⦁ -rwxr-xr-x 1 sammy 1001 1686 Jan 7 08:05 artisan
⦁ drwxrwxr-x 3 sammy 1001 4096 Jan 7 08:05 bootstrap
⦁ -rw-rw-r– 1 sammy 1001 1501 Jan 7 08:05 composer.json
⦁ -rw-rw-r– 1 sammy 1001 179071 Jan 7 08:05 composer.lock
⦁ drwxrwxr-x 2 sammy 1001 4096 Jan 7 08:05 config
⦁ drwxrwxr-x 5 sammy 1001 4096 Jan 7 08:05 database
⦁ drwxrwxr-x 4 sammy 1001 4096 Jan 15 16:46 docker-compose
⦁ -rw-rw-r– 1 sammy 1001 1015 Jan 15 16:45 docker-compose.yml
⦁ -rw-rw-r– 1 sammy 1001 1013 Jan 7 08:05 package.json
⦁ -rw-rw-r– 1 sammy 1001 1405 Jan 7 08:05 phpunit.xml
⦁ drwxrwxr-x 2 sammy 1001 4096 Jan 7 08:05 public
⦁ -rw-rw-r– 1 sammy 1001 273 Jan 7 08:05 readme.md
⦁ drwxrwxr-x 6 sammy 1001 4096 Jan 7 08:05 resources
⦁ drwxrwxr-x 2 sammy 1001 4096 Jan 7 08:05 routes
⦁ -rw-rw-r– 1 sammy 1001 563 Jan 7 08:05 server.php
⦁ drwxrwxr-x 5 sammy 1001 4096 Jan 7 08:05 storage
⦁ drwxrwxr-x 4 sammy 1001 4096 Jan 7 08:05 tests
⦁ -rw-rw-r– 1 sammy 1001 538 Jan 7 08:05 webpack.mix.js

اکنون composer install را برای نصب متعلقات برنامه اجرا میکنیم:
⦁ $ docker-compose exec app composer install

خروجی مانند این را خواهید دید:
Output
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 85 installs, 0 updates, 0 removals
– Installing doctrine/inflector (1.3.1): Downloading (100%)
– Installing doctrine/lexer (1.2.0): Downloading (100%)
– Installing dragonmantank/cron-expression (v2.3.0): Downloading (100%)
– Installing erusev/parsedown (1.7.4): Downloading (100%)
– Installing symfony/polyfill-ctype (v1.13.1): Downloading (100%)
– Installing phpoption/phpoption (1.7.2): Downloading (100%)
– Installing vlucas/phpdotenv (v3.6.0): Downloading (100%)
– Installing symfony/css-selector (v5.0.2): Downloading (100%)

Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover –ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.

آخرین کاری که قبل از تست برنامه باید انجام دهیم تولید یک کلید برنامه منحصر به فرد با ابزار خط فرمان artisan Laravel است. این کلید برای رمزگذاری بخش های کاربر و سایر داده های حساس استفاده می شود:
⦁ $ docker-compose exec app php artisan key:generate

Output
Application key set successfully.

اکنون به مرورگر خود بروید و به نام دامنه یا آدرس IP سرور مجازی خود در پورت 8000 دسترسی پیدا کنید:
http://server_domain_or_IP:8000

صفحه ای را به این شکل مشاهده خواهید کرد:

می توانید از دستور logs برای بررسی گزارش های ایجاد شده توسط سرویس های خود استفاده کنید:
⦁ $ docker-compose logs nginx

Attaching to travellist-nginx
travellist-nginx | 192.168.160.1 – – [23/Jan/2020:13:57:25 +0000] “GET / HTTP/1.1” 200 626 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36”
travellist-nginx | 192.168.160.1 – – [23/Jan/2020:13:57:26 +0000] “GET /favicon.ico HTTP/1.1” 200 0 “http://localhost:8000/” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36”
travellist-nginx | 192.168.160.1 – – [23/Jan/2020:13:57:42 +0000] “GET / HTTP/1.1” 200 626 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36”

اگر می خواهید در هنگام حفظ وضعیت کلیه خدمات آن ، محیط Docker Compose را متوقف کنید ، این دستور را اجرا کنید:
⦁ $ docker-compose pause
Output
Pausing travellist-db … done
Pausing travellist-nginx … done
Pausing travellist-app … done
برای ادامه دوباره برنامه:
⦁ $ docker-compose unpause
Output
Unpausing travellist-app … done
Unpausing travellist-nginx … done
Unpausing travellist-db … done

برای خاموش کردن محیط Docker Compose و حذف همه کانتینرها ، شبکه ها و والیوم های آن ، این دستور را اجرا کنید:
⦁ $ docker-compose down
Output
Stopping travellist-nginx … done
Stopping travellist-db … done
Stopping travellist-app … done
Removing travellist-nginx … done
Removing travellist-db … done
Removing travellist-app … done
Removing network travellist-laravel-demo_travellist

برای مشاهده کلیه دستورات Docker Compose ، لطفاً مرجع خط فرمان Docker Compose را بررسی کنید.
نتیجه
در این راهنما ، ما یک محیط Docker با سه کانتینر را با استفاده از Docker Compose تنظیم کرده ایم تا زیرساخت های خود را در یک فایل YAML تعریف کنیم.
از این مرحله به بعد ، می توانید بدون نیاز به نصب و راه اندازی یک سرور مجازی وب محلی برای توسعه و آزمایش بر روی برنامه Laravel خود کار کنید. علاوه بر این ، شما با یک محیط یکبار مصرف که می تواند به راحتی تکثیر و توزیع شود ، کار می کنید ، که می تواند در هنگام تهیه برنامه شما و همچنین هنگام حرکت به سمت یک محیط تولید ، کمک کننده باشد.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

مراحل ایمن سازی Apache HTTP در FreeBSD 12   –  بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript  –  استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو  –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8  –  چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js  –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8  –  تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8 – نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker [Quickstart]  –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو – مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7  –  نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

استفاده از Cron برای خودکارسازی کارها در اوبونتو 18  –

نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18 –

نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10 –

نحوه نصب Docker Compose در Debian 10  –

چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد –

نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04 –

نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7  –

بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose در اوبونتو 18 –

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
با حرکت ابزارهای گسترش دهنده به سمت cloud ، پذیرش پلتفرم cloud IDE (محیط پیشرفت در هم تنیده) در حال رشد است. Cloud IDE از هر نوع دستگاه مدرن از طریق مرورگرهای وب قابل دسترسی است و برای سناریوهای همکاری در زمان واقعی مزایای بسیاری را ارائه می دهند. کار در یک Cloud IDE ، یک محیط توسعه و آزمایش یکپارچه را برای شما و تیم شما ایجاد می کند ، در عین حال ناسازگاری های پلتفرم را به حداقل می رساند. چون از طریق مرورگرهای وب قابل دسترسی است ، Cloud IDE ها از هر نوع دستگاه مدرن در دسترس هستند.
Eclipse Theia یک Cloud IDE قابل توسعه است که بر روی یک سرور مجازی از راه دور اجرا میشود و از یک مرورگر وب قابل دسترسی است. از لحاظ بصری ، به گونه ای طراحی شده است که به طور مشابه با Microsoft Visual Studio Code دیده شود و کار شود ، به این معنی که از بسیاری از زبان های برنامه نویسی پشتیبانی می کند ، دارای یک طرح انعطاف پذیر و یک ترمینال یکپارچه است. آنچه Eclipse Theia را از دیگر نرم افزارهای cloud IDE جدا می کند قابلیت توسعه آن است. می توان آن را با استفاده از افزونه های سفارشی اصلاح کرد ، که به شما امکان می دهد یک Cloud IDE متناسب با نیازهای خود تهیه کنید.
در این آموزش ،Eclipse Theia را با استفاده از Docker Compose ، یک ابزار سازمان دهی حرفه ای، در سرور مجازی CentOS 7 خود به کار خواهید گرفت. با استفاده از nginx-proxy ، یک سیستم خودکار برای Docker ، آن را در دامنه خود قرار می دهید که فرایند پیکربندی Nginx را ساده تر می کند تا به عنوان یک پروکسی معکوس برای یک container سرویس دهد. همچنین با استفاده از یک گواهی نامه Let’s Encrypt TLS رایگان ، که با استفاده از افزونه تخصصی آن تهیه می کنید ، آن را ایمن خواهید کرد. در پایان ، شما باید Eclipse Theia را روی سرور مجازی CentOS 7 خود از طریق HTTPS در دسترس داشته باشید و از کاربر بخواهید وارد شود.
پیش نیازها
⦁ یک سرور مجازی CentOS 7 با امتیازات اصلی و یک حساب ثانویه و غیر ریشه. می توانید با دنبال کردن راهنمای تنظیم اولیه سرور مجازی ما برای CentOS 7 ، این تنظیمات را انجام دهید. برای این آموزش کاربر غیر ریشه sammy است.
⦁ Docker نصب شده روی سرور مجازی شما. مرحله 1 و مرحله 2 نحوه نصب Docker را در CentOS 7 دنبال کنید. برای آشنایی با Docker ، به اکوسیستم Docker: مقدمه ای بر مؤلفه های مشترک مراجعه کنید.
⦁ Docker compose نصب شده روی سرور مجازی تان. مرحله 1 نحوه نصب Docker Compose را در CentOS 7 دنبال کنید.
⦁ نام دامنه کاملاً ثبت شده. در این آموزش کلا از theia.your_domain استفاده می شود. می توانید نام دامنه را در Namecheap خریداری کنید ، یکی از آنها را به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید.
⦁ یک ثبت A DNS با theia.your_domain که به آدرس IP عمومی سرور مجازی شما اشاره میکند. برای جزئیات بیشتر در مورد چگونگی اضافه کردن آنها می توانید این معرفی را در vpsgol DNS دنبال کنید.
مرحله 1 – استفاده از پروکسی nginx با Let’s Encrypt
در این بخش nginx-proxy و افزونه Let’s Encrypt را با استفاده از Docker Compose به کار میگیرید. این امر امکان تهیه و نوسازی مجوز خودکار TLS را فراهم می کند ، به طوری که هنگام استقرار Eclipse Theia از طریق HTTPS در دامنه شما قابل دسترسی خواهد بود.
برای اهداف این آموزش ، تمام فایل ها را تحت ~ / eclipse-theia ذخیره می کنید. با اجرای دستور زیر دایرکتوری ایجاد کنید:
⦁ $ mkdir ~/eclipse-theia
به آن مراجعه کنید:
⦁ $ cd ~/eclipse-theia
پیکربندی Docker Compose را برای nginx-proxy در فایلی به نام nginx-proxy-compose.yaml ذخیره خواهید کرد. آن را با استفاده از ویرایشگر متن خود ایجاد کنید:
⦁ $vi nginx-proxy-compose.yaml
خطوط زیر را اضافه کنید:
~/eclipse-theia/nginx-proxy-compose.yaml
version: ‘2’

services:
nginx-proxy:
restart: always
image: jwilder/nginx-proxy
ports:
– “80:80”
– “443:443”
volumes:
– “/etc/nginx/htpasswd:/etc/nginx/htpasswd”
– “/etc/nginx/vhost.d”
– “/usr/share/nginx/html”
– “/var/run/docker.sock:/tmp/docker.sock:ro”
– “/etc/nginx/certs”

letsencrypt-nginx-proxy-companion:
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
– “/var/run/docker.sock:/var/run/docker.sock:ro”
volumes_from:
– “nginx-proxy”

در اینجا شما دو سرویس را تعریف می کنید که Docker Compose اجرا خواهد کرد ، nginx-proxy و همراه آن Let’s Encrypt. برای پروکسی ، شما jwilder / nginx-proxy را به عنوان تصویر مشخص میکنید، پورت های HTTP و HTTPS را نقشه برداری می کنید ، و والیوم هایی را تعریف می کنید که در زمان اجرا در دسترس شما خواهد بود.
والیوم ها دایرکتوری هایی در سرور مجازی شما هستند که سرویس تعریف شده به آنها دسترسی کامل خواهد داشت ، که بعداً برای تنظیم تأیید اعتبار کاربر از آنها استفاده خواهید کرد. برای دستیابی به این هدف ، از والیوم اول لیست استفاده می کنید ، که دایرکتوری محلی / etc / nginx / htpasswd را به همان قسمت موجود در داخل آن نگاشت می کشد. در آن پوشه ، nginx-proxy انتظار دارد فایلی را به نام دامنه هدف پیدا کند ، که حاوی اطلاعات ورود به سیستم برای احراز هویت کاربر در قالب htpasswd (username:hashed_password) است.
برای افزودن ، شما تصویر Docker را نامگذاری می کنید و با تعیین یک والیوم امکان دسترسی به سوکت Docker را می دهید. سپس ، شما مشخص می کنید که این افزونه باید دسترسی به والیومهای تعریف شده برای nginx-proxy را ادامه دهد. هر دو سرویس امکان تنظیم restart روی always را دارند که به Docker دستور می دهد کانتینر را در صورت خرابی یا ریبوت سیستم، مجدداً راه اندازی کند.
فایل را ذخیره کنید و ببندید.
پیکربندی را با اجرای دستور انجام دهید:
⦁ $ docker-compose -f nginx-proxy-compose.yaml up -d
در اینجا نام فایل nginx-proxy-compose.yaml را در پارامتر -f دستور docker-compose می گذارید ، که فایل را برای اجرا مشخص می کند. سپس ، شما فعل UP را می گذرانید که به آن دستور می دهد کانتینرها را اجرا کند. فلگ -d حالت جداشده را فعال می سازد ، به این معنی که Docker Compose کانتینرها را در پس زمینه اجرا می کند.
خروجی نهایی به شرح زیر خواهد بود:
Output
Creating network “eclipse-theia_default” with the default driver
Pulling nginx-proxy (jwilder/nginx-proxy:)…
latest: Pulling from jwilder/nginx-proxy
8d691f585fa8: Pull complete
5b07f4e08ad0: Pull complete

Digest: sha256:dfc0666b9747a6fc851f5fb9b03e65e957b34c95d9635b4b5d1d6b01104bde28
Status: Downloaded newer image for jwilder/nginx-proxy:latest
Pulling letsencrypt-nginx-proxy-companion (jrcs/letsencrypt-nginx-proxy-companion:)…
latest: Pulling from jrcs/letsencrypt-nginx-proxy-companion
89d9c30c1d48: Pull complete
668840c175f8: Pull complete

Digest: sha256:a8d369d84079a923fdec8ce2f85827917a15022b0dae9be73e6a0db03be95b5a
Status: Downloaded newer image for jrcs/letsencrypt-nginx-proxy-companion:latest
Creating eclipse-theia_nginx-proxy_1 … done
Creating eclipse-theia_letsencrypt-nginx-proxy-companion_1 … done

شما nginx-proxy و همراهش Let’s Encrypt را با استفاده از Docker Compose به کار گرفته اید. اکنون می توانید Eclipse Theia را در دامنه خود تنظیم کرده و آن را ایمن کنید.
مرحله 2 – به کارگیری Eclipse Theia دوکر شده
در این بخش ، فایلی را ایجاد خواهید کرد که شامل هر ترکیب ورود به سیستم مجاز میباشد که کاربر باید آن را وارد کند. سپس Eclipse Theia را با استفاده از Docker Compose به سرور مجازی خود منتقل می کنید و با استفاده از nginx-proxy آن را در دامنه امن خود قرار می دهید.
همانطور که در مرحله قبل توضیح داده شد ، nginx-proxy انتظار دارد که ترکیب های ورود به سیستم در فایلی به نام دامنه در معرض ، با فرمت htpasswd قرار بگیرند و در دایرکتوری / etc / nginx / htpasswd در کانتینر ذخیره شوند. همانطور که در پیکربندی nginx-proxy مشخص کرده ایم ، دایرکتوری محلی که به دایرکتوری مجازی نگاشت می کند ، نیازی به یکسان بودن ندارد.
برای ایجاد ترکیبات ورود ، ابتدا با اجرای دستور زیر باید htpasswd را نصب کنید:
⦁ $ sudo apt install apache2-utils
پکیج httpd-tools حاوی برنامه htpasswd است.
دایرکتوری / etc / nginx / htpasswd را ایجاد کنید:
⦁ $ sudo mkdir -p /etc/nginx/htpasswd
فایلی ایجاد کنید که ورود به سیستم را برای دامنه شما ذخیره کند:
⦁ $ sudo touch /etc/nginx/htpasswd/theia.your_domain

به یاد داشته باشید theia.your_domain را با دامنه Eclipse Theia خود جایگزین کنید.
برای افزودن نام کاربری و رمز ورود ، دستور زیر را اجرا کنید:
⦁ $ sudo htpasswd /etc/nginx/htpasswd/theia.your_domain username
USERNAME را با نام کاربری که می خواهید اضافه کنید جایگزین کنید. از شما دوبار رمز عبور خواسته می شود. پس از ارائه آن ، htpasswd نام کاربری و جفت رمز عبور را در انتهای فایل اضافه می کند. می توانید این دستور را به هر تعداد ورود به سیستم که میخواهید تکرار کنید.
اکنون ، پیکربندی را برای استقرار Eclipse Theia ایجاد خواهید کرد. شما آن را در فایلی به نام eclipse-theia-compose.yaml ذخیره خواهید کرد. آن را با استفاده از ویرایشگر متن خود ایجاد کنید:
⦁ $ vi eclipse-theia-compose.yaml
خطوط زیر را اضافه کنید:
~/eclipse-theia/eclipse-theia-compose.yaml
version: ‘2.2’

services:
eclipse-theia:
restart: always
image: theiaide/theia:next
init: true
environment:
– VIRTUAL_HOST=theia.your-domain
– LETSENCRYPT_HOST=theia.your-domain

در این پیکربندی ، شما یک سرویس واحد به نام eclipse-theia با ریستارت برای ALWAYS و theiaide/theia:next به عنوان تصویر کانتینر تعریف می کنید: شما همچنین می توانید init را روی true تنظیم کنید تا به Docker دستور دهید هنگام اجرای Eclipse Theia در داخل کانتینر ، از init به عنوان مدیر اصلی فرآیند استفاده کند.
سپس دو متغیر محیط را در بخش environment مشخص می کنید: VIRTUAL_HOST و LETSENCRYPT_HOST. اولین مورد به پروکسی nginx منتقل می شود و به آن می گوید کانتینر چه دامنه ای را باید در معرض دید قرار دهید ، در حالی که دومی توسط افزونه Let’s Encrypt آن استفاده می شود و مشخص می کند که برای کدام دامنه درخواست گواهینامه TLS شود. مگر اینکه یک wildcard را به عنوان مقدار VIRTUAL_HOST تعیین کنید ، این دو مقدار باید یکسان باشند.
به یاد داشته باشید theia.your_domain را با دامنه مورد نظر خود جایگزین کنید ، سپس فایل را ذخیره کنید و ببندید. اکنون با اجرای دستور زیر Eclipse Theia را اجرا کنید:
⦁ $ docker-compose -f eclipse-theia-compose.yaml up -d
خروجی نهایی مشابه زیر به نظر می رسد:
Output

Pulling eclipse-theia (theiaide/theia:next)…
next: Pulling from theiaide/theia
63bc94deeb28: Pull complete
100db3e2539d: Pull complete

Digest: sha256:c36dff04e250f1ac52d13f6d6e15ab3e9b8cad9ad68aba0208312e0788ecb109
Status: Downloaded newer image for theiaide/theia:next
Creating eclipse-theia_eclipse-theia_1 … done

سپس در مرورگر خود به دامنه مورد استفاده برای Eclipse Theia بروید. مرورگر شما اعلانی را به شما نشان می دهد که از شما خواسته می شود وارد شوید. پس از ارائه اطلاعات صحیح ، شما وارد Eclipse Theia می شوید و بلافاصله رابط کاربری گرافیکی آن را مشاهده می کنید. در نوار آدرس یک پدلاک را مشاهده خواهید کرد که نشان می دهد اتصال امن است. اگر این را بلافاصله مشاهده نکردید ، چند دقیقه صبر کنید تا گواهینامه های TLS ارائه شود ، سپس صفحه را مجدد بارگیری کنید.

اکنون که می توانید به راحتی به cloud IDE خود دسترسی داشته باشید ، در مرحله بعد شروع به استفاده از ویرایشگر خواهید کرد.

مرحله 3 – استفاده از رابط Eclipse Theia
در این بخش به بررسی برخی از ویژگی های رابط Eclipse Theia می پردازید.
در سمت چپ IDE ، یک ردیف عمودی از چهار دکمه وجود دارد که متداول ترین ویژگی های مورد استفاده را در یک صفحه جانبی باز می کند.
این نوار قابل تنظیم است بنابراین می توانید این نماها این نوار قابل سفارشی سازی است، بنابراین این نمایه ها را به ترتیب دیگری جابجا کنید یا آنها را از نوار حذف کنید. به طور پیش فرض ، اولین نمای پانل Explorer را باز می کند که ناوبری شبیه به درخت ساختار پروژه را فراهم می کند. می توانید پوشه ها و فایل های خود را در اینجا مدیریت کنید – ایجاد کنید ، حذف کنید، جابجا کنید و در صورت لزوم تغییر نام دهید.
بعد از ایجاد فایل جدید از طریق منوی File ، یک فایل خالی را در یک برگه جدید باز خواهید کرد. پس از ذخیره ، می توانید نام فایل را در صفحه جانبی Explorer مشاهده کنید. برای ایجاد پوشه ها بر روی نوار کناری Explorer کلیک راست کرده و روی New Folder کلیک کنید. می توانید پوشه ای را با کلیک روی نام آن و همچنین کشیدن و رها کردن فایل ها و پوشه ها به قسمتهای بالای لیست گسترش دهید تا آنها را به یک مکان جدید منتقل کنید.

دو گزینه بعدی دسترسی به جستجو و جایگزینی قابلیت ها را فراهم می کند. پس از آن ، مورد بعدی نمایی از سیستم های کنترل منبع را که ممکن است از آنها استفاده کنید ، مانند Git ، ارائه می دهد.
نمای نهایی گزینه اشکال زدایی است که کلیه اقدامات متداول را برای اشکال زدایی در پنل ارائه می دهد. می توانید پیکربندی های اشکال زدایی را در فایل launch.json ذخیره کنید.

قسمت اصلی GUI ویرایشگر شماست که می توانید با استفاده از زبانه ها برای ویرایش کد خود جدا کنید. می توانید نمای ویرایش خود را به یک سیستم شبکه یا به فایل های جانبی تغییر دهید. مانند همه IDE های مدرن ، Eclipse Theia از هایلایت دستوری برای کد شما پشتیبانی می کند.

می توانید با وارد کردن CTRL + SHIFT + `، یا با کلیک کردن بر روی Terminal در منوی بالا ، و انتخاب گزینه New Terminal ، به ترمینال دسترسی پیدا کنید. ترمینال در یک پانل پایین باز خواهد شد و دایرکتوری کار آن روی فضای کاری پروژه تنظیم می شود ، که شامل فایل ها و پوشه های نمایش داده شده در پانل سمت Explorer است.

شما یک نمای کلی در سطح بالا از رابط Eclipse Theia جستجو کرده اید و برخی از متداول ترین ویژگی ها را مرور کرده اید.

نتیجه
اکنون Eclipse Theia ، یک Cloud IDE همه کاره ، با استفاده از Docker Compose و nginx-proxy بر روی سرور مجازی CentOS 7 خود نصب کرده اید. شما آن را با یک مجوز Let’s Encrypt TLS رایگان ایمن کرده اید و نمونه ای را تنظیم کرده اید تا به اعتبار ورود به سیستم از طرف کاربر نیاز داشته باشید. شما می توانید بر روی کد منبع خود و اسناد با آن به صورت جداگانه کار کنید یا با تیم خود همکاری کنید. در صورت نیاز به قابلیت های اضافی ، می توانید نسخه دیگری از Eclipse Theia خود را نیز ایجاد کنید. برای کسب اطلاعات بیشتر در مورد چگونگی انجام این کار ، به مطالب Theia مراجعه کنید.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

مراحل ایمن سازی Apache HTTP در FreeBSD 12   –  بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript  –  استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو  –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8  –  چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js  –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8  –  تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8 – نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker [Quickstart]  –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو – مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7  –  نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

استفاده از Cron برای خودکارسازی کارها در اوبونتو 18  –

نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18 –

نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10 –

نحوه نصب Docker Compose در Debian 10  –

چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد –

نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04 –

نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7  –

بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose در اوبونتو 18 –

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
صفحه گذاری مفهوم محدود کردن تعداد ردیف های برگشت یافته در یک مجموعه ثبت شده به صفحات جداگانه و منظم است تا امکان جهت گیری آسان بین آنها فراهم شود ، بنابراین وقتی یک مجموعه داده بزرگ وجود دارد می توانید صفحه گذاری خود را پیکربندی کنید تا فقط تعداد مشخصی از ردیف ها را در هر صفحه برگردانید. به عنوان مثال ، وقتی یک فروشگاه اینترنتی هزاران محصول دارد، صفحه بندی می تواند با کاهش تعداد اقلام ذکر شده در یک صفحه ، از نمایش بیش از حد کالا به کاربران جلوگیری کند ، زیرا اغلب بعید است که کاربر نیاز به مشاهده همه محصولات داشته باشد. مثال دیگر برنامه ای است که سوابق یک تلفن همراه را نشان می دهد. فعال کردن صفحه بندی در چنین مواردی ، سوابق را به چندین صفحه تقسیم می کند که می توانند در صفحه بهتر ظاهر شوند.
علاوه بر مزایای بصری برای کاربران نهایی ، صفحه بندی باعث می شود برنامه ها سریعتر شوند زیرا باعث می شود تعداد سوابق برگشتی همزمان کاهش یابد. این کار داده های لازم برای انتقال بین مشتری و سرور مجازی را محدود می کند و به حفظ منابع سرور مجازی مانند RAM کمک می کند.
در این آموزش ، شما یک اسکریپت PHP برای اتصال به پایگاه داده خود و پیاده سازی صفحه بندی با اسکریپت خود با استفاده از بند LIMIT در MySQL ایجاد خواهید کرد.
پیش نیازها
قبل از شروع به موارد زیر نیاز خواهید داشت:
⦁ یک سرور مجازی Ubuntu 18.04 که با دنبال کردن دستور العمل راه اندازی سرور مجازی اولیه با اوبونتو 18.04 ، شامل یک کاربر غیر ریشه سودو راه اندازی شده باشد.
⦁ Apache ، MySQL و PHP که روی سیستم شما نصب شده باشند. شما می توانید راهنمایی در مورد نحوه نصب Linux ، Apache ، MySQL ، PHP (LAMP) روی Ubuntu 18.04 را در این لینک دنبال کنید.
مرحله 1 – ایجاد کاربر دیتابیس و تست دیتابیس
در این آموزش یک اسکریپت PHP ایجاد خواهید کرد که به یک پایگاه داده MySQL متصل می شود ، سوابق را دریافت میکند و آنها را در یک صفحه HTML در یک جدول نمایش می دهد. اسکریپت PHP را به دو روش مختلف از مرورگر وب خود آزمایش خواهید کرد. اول ، ایجاد یک اسکریپت بدون هیچ کد صفحه بندی برای دیدن نحوه نمایش سوابق. دوم ، افزودن کد ناوبری صفحه در فایل PHP برای درک نحوه کار به صورت عملی.
کد PHP برای اهداف تصدیقی نیاز به یک کاربر MySQL و اتصال به یک بانک اطلاعاتی نمونه دارد. در این مرحله یک کاربر غیر ریشه برای پایگاه داده MySQL ، یک پایگاه داده نمونه و یک جدول برای تست اسکریپت PHP ایجاد خواهید کرد.
برای شروع به سرور مجازی خود وارد شوید. سپس با دستور زیر به سرور مجازی MySQL خود وارد شوید:
⦁ $ sudo mysql -u root -p

رمز عبور اصلی سرور مجازی MySQL خود را وارد کرده و برای ادامه ENTER را بزنید. سپس اعلان MySQL را مشاهده می کنید. برای ایجاد یک بانک اطلاعاتی نمونه ، که در این آموزش به آن test_db خواهیم گفت ، دستور زیر را اجرا کنید:
⦁ Mysql> sudo mysql -u root -p

خروجی زیر را مشاهده خواهید کرد:
Output
Query OK, 1 row affected (0.00 sec)

سپس ، یک test_user ایجاد کنید و به همه امتیازات مربوط به test_db را به کاربر اعطا کنید. PASSWORD را با یک مقدار قوی جایگزین کنید:
⦁ Mysql> GRANT ALL PRIVILEGES ON test_db.* TO ‘test_user’@’localhost’ IDENTIFIED BY ‘PASSWORD’;
Output
Query OK, 1 row affected (0.00 sec)

مجدد امتیازات MySQL را با دستور زیر لود کنید:
⦁ Mysql> FLUSH PRIVILEGES;

Output
Query OK, 1 row affected (0.00 sec)

سپس ، برای شروع مستقیم کار در پایگاه داده test_db ، به پایگاه داده test_db بروید:
⦁ Mysql> Use test_db;
Output
Database changed

اکنون یک جدول products  ایجاد کنید. جدول، محصولات نمونه شما را شامل میشود – برای این آموزش شما فقط به دو ستون برای داده ها نیاز دارید. ستون product_id به عنوان کلید اصلی برای شناسایی منحصر به فرد هر رکورد کار می کند. این ستون روی AUTO_INCREMENT تنظیم می شود تا محصول جدیدی را برای هر مورد درج شده تولید کند. شما می توانید از قسمت product_name برای تفکیک هر مورد با نام استفاده کنید:
⦁ Mysql> Create table products (product_id BIGINT PRIMARY KEY AUTO_INCREMENT, product_name VARCHAR(50) NOT NULL ) Engine = InnoDB;
Output
Query OK, 0 rows affected (0.02 sec)
برای افزودن 10 محصول برای تست به جدول products  عبارات SQL زیر را اجرا کنید:
⦁ Mysql> Insert into products(product_name) values (‘WIRELESS MOUSE’);

⦁ Mysql> Insert into products(product_name) values (‘BLUETOOTH SPEAKER’);

⦁ Mysql> Insert into products(product_name) values (‘GAMING KEYBOARD’);

⦁ Mysql> Insert into products(product_name) values (‘320GB FAST SSD’);

⦁ Mysql> Insert into products(product_name) values (’17 INCHES TFT’);

⦁ Mysql> Insert into products(product_name) values (‘SPECIAL HEADPHONES’);

⦁ Mysql> Insert into products(product_name) values (‘HD GRAPHIC CARD’);

⦁ Mysql> Insert into products(product_name) values (’80MM THERMAL PRINTER’);

⦁ Mysql> Insert into products(product_name) values (‘HDMI TO VGA CONVERTER’);

⦁ Mysql> Insert into products(product_name) values (‘FINGERPRINT SCANNER’);

این خروجی را مشاهده خواهید کرد:
Output
Query OK, 1 row affected (0.02 sec)
با اجرای دستور زیر تأیید کنید که محصولات وارد جدول شده اند:
⦁ Mysql> select * from products;
محصولات موجود در خروجی را در دو ستون مشاهده خواهید کرد:
Output
+————+———————–+
| product_id | product_name |
+————+———————–+
| 1 | WIRELESS MOUSE |
| 2 | BLUETOOTH SPEAKER |
| 3 | GAMING KEYBOARD |
| 4 | 320GB FAST SSD |
| 5 | 17 INCHES TFT |
| 6 | SPECIAL HEADPHONES |
| 7 | HD GRAPHIC CARD |
| 8 | 80MM THERMAL PRINTER |
| 9 | HDMI TO VGA CONVERTER |
| 10 | FINGERPRINT SCANNER |
+————+———————–+
10 rows in set (0.00 sec)

از MySQLخارج شوید
⦁ Mysql> quit;

با استفاده از پایگاه داده نمونه ، جدول و داده های آزمایشی موجود ، اکنون می توانید اسکریپت PHP ایجاد کنید تا داده ها در یک صفحه وب نمایش داده شود.
مرحله 2 – نمایش رکوردهای MySQL بدون صفحه بندی
اکنون یک اسکریپت PHP ایجاد می کنید که به پایگاه داده MySQL که در مرحله قبل ایجاد کرده اید متصل می شود و محصولات را در یک مرورگر وب لیست می کنید. در این مرحله ، کد PHP شما بدون هیچگونه صفحه بندی اجرا خواهد شد تا نشان دهد که چگونه سوابق جدا نشده در یک صفحه نشان داده می شوند. اگرچه در این آموزش فقط ده رکورد برای اهداف آزمایش دارید ، اما دیدن سوابق بدون صفحه بندی نشان می دهد که چرا تقسیم بندی داده ها در نهایت باعث ایجاد یک تجربه کاربری بهتر و بار کمتر روی سرور مجازی خواهد شد.
با دستور زیر فایل اسکریپت PHP را در روت document وب سایت خود ایجاد کنید:
⦁ $ sudo nano /var/www/html/pagination_test.php
سپس محتوای زیر را به فایل اضافه کنید. به یاد داشته باشید که در مرحله قبل ، PASSWORD  را با رمز عبور صحیحی که به test_user اختصاص داده اید ، جایگزین کنید:
/var/www/html/pagination_test.php
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);

$sql = “select * from products”;

$stmt = $pdo->prepare($sql);

$stmt -> execute();

echo ”

“;while (($row = $stmt -> fetch(PDO::FETCH_ASSOC)) !== false) {
echo “”;echo “”;
echo “”;
echo “”;
}echo ”

“.$row[‘product_id’].” “.$row[‘product_name’].”

“;

} catch(PDOException $e) {
echo $e->getMessage();
}

?>

فایل را با فشار دادن CTRL + X ، Y و ENTER ذخیره کنید.
در این اسکریپت شما با استفاده از کتابخانه PDO (PHP Data Object) با اعتبارات دیتابیس که در مرحله 1 ایجاد کرده اید به پایگاه داده MySQL وصل می شوید.
PDO یک رابط کاربری سبک برای اتصال به پایگاه های داده است. لایه دسترسی به اطلاعات، قابل حمل تر است و می تواند در پایگاه های داده های مختلف و فقط با بازنویسی کد مینور کار کند. از آنجا که PDO از دستورات آماده پشتیبانی می کند (ویژگی برای اجرای سریعتر درخواست ها به روشی مطمئن)، از امنیت بیشتری نیز برخوردار است .
سپس ، به APO PDO دستور می دهید تا عبارت select * from products را اجرا کند و محصولات را در جدول HTML بدون صفحه بندی فهرست کند. خط $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); تضمین می کند که انواع داده ها
همانطور که در پایگاه داده ظاهر می شوند، بازگردانده می شوند. این بدان معنی است که PDO ، product_id را به عنوان یک عدد صحیح و product_name را به عنوان یک رشته باز می گرداند. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); به PDO دستور می دهد در صورت بروز خطا، به صورت استثنا عمل کند. برای اشکال زدایی آسان تر ، خطا را در داخل بلوک try{}…catch{} در PHP  مشاهده می کنید.
برای اجرای فایل اسکریپت PHP به صورت /var/www/html/pagination_test.php که ایجاد کرده اید ، آدرس زیر را که your-server-IP با آدرس IP عمومی سرور مجازی شما جایگزین شده، مشاهده کنید:
http://your-server-IP/pagination_test.php
صفحه ای را با جدول محصولات خود مشاهده خواهید کرد.

اسکریپت PHP شما مطابق آنچه انتظار می رود کار می کند؛ تمام محصولات در یک صفحه لیست میشوند. اگر هزاران محصول داشتید ، این امر باعث می شود که یک حلقه طلانی ایجاد شود و محصولات از پایگاه داده گرفته شده و در صفحه PHP بارگیری شوند.
برای غلبه بر این محدودیت ، اسکریپت PHP را تغییر داده و بند MySQL LIMIT و برخی پیوندهای navigation را در انتهای جدول قرار می دهید تا قابلیت صفحه بندی را اضافه کنید.
مرحله 3 – اجرای صفحه گذاری با PHP
در این مرحله هدف شما تقسیم داده های آزمایشی در چندین صفحه قابل کنترل است. این کار نه تنها باعث افزایش خوانایی می شود بلکه از منابع سرور مجازی نیز با کارایی بیشتری استفاده می کند. شما اسکریپت PHP را که در مرحله قبل ایجاد کرده اید برای تنظیم صفحه بندی اصلاح می کنید.
برای این کار ، بند MySQL LIMIT را اجرا خواهید کرد. قبل از افزودن این متن به اسکریپت ، بیایید نمونه ای از دستور MySQL LIMIT را ببینید:
⦁ Mysql> Select [column1, column2, column n…] from [table name] LIMIT offset, records;

بند LIMIT دو آرگومان را همانند پایان این عبارت برمیدارد. مقدار افست (offset ) تعداد رکورد هایی است که باید قبل از ردیف اول از آن پرش کنید. records  حداکثر تعداد سوابق را برای نمایش در هر صفحه تعیین می کند.
برای آزمایش صفحه بندی ، سه رکورد در هر صفحه نمایش می دهید. برای به دست آوردن تعداد کل صفحات ، باید کل سوابق را از جدول خود با ردیف هایی که می خواهید در هر صفحه نمایش دهید تقسیم کنید. سپس با استفاده از عملکرد PHP Ceil ، همانطور که در مثال زیر کد PHP زیر نشان داده شده است ، مقدار حاصل را به نزدیکترین عدد صحیح گرد کنید:
$ $total_pages=ceil($total_records/$per_page);

در زیر نسخه اصلاح شده اسکریپت PHP با کد صفحه بندی کامل آمده است. برای درج کدهای صفحه بندی و ناوبری ، فایل /var/www/html/pagination_test.php را باز کنید:
⦁ $ sudo nano /var/www/html/pagination_test.php

سپس کد هایلایت شده زیر را به فایل خود اضافه کنید:
/var/www/html/pagination_test.php
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);

/* Begin Paging Info */

$page = 1;

if (isset($_GET[‘page’])) {
$page = filter_var($_GET[‘page’], FILTER_SANITIZE_NUMBER_INT);
}

$per_page = 3;

$sqlcount = “select count(*) as total_records from products”;
$stmt = $pdo->prepare($sqlcount);
$stmt->execute();
$row = $stmt->fetch();
$total_records = $row[‘total_records’];

$total_pages = ceil($total_records / $per_page);

$offset = ($page-1) * $per_page;

/* End Paging Info */

$sql = “select * from products limit :offset, :per_page”;
$stmt = $pdo->prepare($sql);
$stmt->execute([‘offset’=>$offset, ‘per_page’=>$per_page]);

echo ”

“;while ( ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) !== false) {
echo “”;echo “”;
echo “”;
echo “”;
}echo ”

“.$row[‘product_id’].” “.$row[‘product_name’].”

“;

/* Begin Navigation */

echo ”

“;echo “”;if ($page-1 >= 1) {
echo “”;
}if ($page+1 <= $total_pages) {
echo “”;
}echo “”;echo ”

Previous Next

“;

/* End Navigation */

} catch(PDOException $e) {
echo $e->getMessage();
}

?>

در فایل خود از پارامترهای دیگری برای اجرای صفحه بندی استفاده کرده اید:
⦁ $page: این متغیر صفحه فعلی را در اسکریپت شما نگه می دارد. هنگام حرکت بین صفحات ، اسکریپت شما با استفاده از متغیر $ _GET [‘page’] یک پارامتر URL به نام page  را بازیابی می کند.
⦁ $per_page: این متغیر حداکثر رکوردی را که می خواهید در هر صفحه نمایش داده شود ، در اختیار دارد. در مورد خاص شما ، بهتر است در هر صفحه سه محصول لیست کنید.
⦁ $ total_records: قبل از لیست کردن محصولات ، شما یک دستور SQL را برای دریافت تعداد کل سوابق در جدول هدف خود اجرا میکنید و آن را به عنوان متغیر $ total_records تعیین میکنید.
⦁ $ offset: این متغیر نشان دهنده کل سوابقی است که باید قبل از ردیف اول از آن بگذرید. این مقدار توسط اسکریپت PHP شما با استفاده از فرمول $ offset = ($ page-1) * $ per_page محاسبه می شود. ممکن است این فرمول را با پروژه های صفحه بندی PHP تطبیق دهید. به یاد داشته باشید که می توانید متغیر $ per_page را متناسب با نیاز خود تغییر دهید. به عنوان مثال ، اگر در حال اجرای یک وب سایت یا مقدار دیگری برای یک دستگاه تلفن همراه هستید ، ممکن است آن را به مقدار 50 تغییر دهید تا پنجاه مورد در هر صفحه نمایش داده شود.
باین بار هم آدرس IP خود را در یک مرورگر ببینید و your_server_ip را با آدرس IP عمومی سرور مجازی خود جایگزین کنید:
http://your_server_ip/pagination_test.php

اکنون دکمه های navigation را در انتهای صفحه مشاهده خواهید کرد. در صفحه اول یک دکمه Previous  دریافت نمی کنید. همین مورد در صفحه آخر نیز اتفاق می افتد و دکمه صفحه بعدی یعنی Next  را نمی بینید. همچنین ، توجه داشته باشید که با مراجعه به هر صفحه ، چگونه پارامتر URL صفحه تغییر می کند.

پیوندهای navigation در انتهای صفحه با استفاده از قطعه کد PHP زیر از فایل شما حاصل می شود:
/var/www/html/pagination_test.php
. . .
if( $page-1>=1) {
echo ”

Previous

“;
}

if( $page+1<=$total_pages) {
echo ”

Next

“;
}
. . .

در اینجا ، متغیر $page تعداد صفحه فعلی را نشان می دهد. سپس برای به دست آوردن صفحه قبلی ، کد ، 1 را از متغیر کم خواهد کرد. بنابراین ، اگر در صفحه 2 هستید ، فرمول (1-2) نتیجه 1 را به شما می دهد و این صفحه قبلی است که در لینک ظاهر می شود. با این حال به خاطر داشته باشید که در صورت نتیجه بالاتر یا برابر با 1 ، صفحه قبلی را نشان می دهد.
به همین ترتیب ، برای رسیدن به صفحه بعد ، به متغیر $page عدد 1 را اضافه می کنید و همچنین باید اطمینان حاصل کنید که نتیجه $page که به پارامتر URL صفحه اضافه می کنیم از کل صفاتی که در کد PHP محاسبه کرده اید بیشتر نباشد.
در این مرحله ، اسکریپت PHP شما با صفحه بندی کار می کند و شما قادر به اجرای بند MySQL LIMIT برای navigation بهتر رکورد هستید.
نتیجه
در این آموزش ، صفحه بندی را در MySQL با PHP در سرور مجازی اوبونتو 18.04 پیاده سازی کردید. شما می توانید با استفاده از اسکریپت PHP از این مراحل با یک مجموعه رکورد بزرگتر استفاده کنید تا صفحه بندی را انجام دهید. با استفاده از صفحه بندی در وب سایت یا برنامه خود می توانید navigation بهتر کاربر و استفاده بهینه از منابع را در سرور مجازی خود ایجاد کنید.
از این لینک ها می توانید بهینه سازی بیشتری برای بانک اطلاعاتی و سایر کارهای پایگاه داده خود انجام دهید:
⦁ نحوه بهینه سازی MySQL با Query Cache در اوبونتو ⦁ 18.04
⦁ مقدمه ای بر درخواست ها در MySQL
⦁ نحوه رفع مشکلات در MySQL

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

مراحل ایمن سازی Apache HTTP در FreeBSD 12   –  بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript  –  استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو  –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8  –  چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js  –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8  –  تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8 – نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker [Quickstart]  –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو – مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7  –  نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

استفاده از Cron برای خودکارسازی کارها در اوبونتو 18  –

نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18 –

نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10 –

نحوه نصب Docker Compose در Debian 10  –

چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد –

نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04 –

نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7  –

بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose در اوبونتو 18 –

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
در بسیاری از برنامه های وب ، اتصال به خدمات مختلف شخص ثالث با استفاده از API طبیعی است. هنگامی که از این API ها استفاده می کنید ، می توانید به داده هایی مانند اطلاعات آب و هوا ، امتیازات ورزشی ، لیست فیلم ها ، توییت ها ، نتایج موتور جستجو و تصاویر دسترسی پیدا کنید. همچنین می توانید از API ها برای اضافه کردن عملکرد به برنامه خود استفاده کنید. نمونه هایی از این موارد پرداخت ها، برنامه زمانبندی ، ایمیل ها ، ترجمه ها ، نقشه ها و انتقال فایل ها است. اگر قرار بود هرکدام از این موارد را به تنهایی ایجاد کنید ، زمان بسیار زیادی می برد ، اما با وجود API ها ، تنها چند دقیقه طول می کشد تا به یکی متصل شوید و به ویژگی ها و داده های آن دسترسی پیدا کنید.
در این مقاله ، ما در مورد کتابخانه درخواست ها در پایتون آموزش میبینیم، که به شما امکان می دهد درخواست های HTTP را در پایتون ارسال کنید .
و از آنجا که استفاده از API به معنی ارسال درخواست HTTP و دریافت پاسخ است ، درخواست ها به شما امکان می دهد از API ها در پایتون استفاده کنید. ما استفاده از ترجمه زبان API را در اینجا نشان خواهیم داد تا بتوانید نمونه ای از نحوه عملکرد آن را ببینید.
مرور اجمالی بر درخواستهای HTTP
درخواست های HTTP نحوه عملکرد وب هستند. هر بار که به یک صفحه وب میروید ، مرورگر شما چندین درخواست به سرور مجازی صفحه وب ارائه می کند. سپس سرور مجازی با تمام داده های لازم برای ارائه صفحه پاسخ می دهد ، و مرورگر شما در واقع صفحه را ارائه می دهد تا بتوانید آن را مشاهده کنید.
روند کلی این است: یک مشتری (مانند مرورگر یا اسکریپت پایتون با استفاده از درخواست) برخی از داده ها را به URL ارسال می کند ، و سپس سرور مجازی واقع در URL اطلاعات را می خواند ، تصمیم می گیرد که با آن چه کار کند و پاسخی را به مشتری برگرداند. سرانجام ، مشتری می تواند تصمیم بگیرد که با داده های موجود در پاسخ چه کاری انجام دهد.
بخشی از داده هایی که مشتری در یک درخواست ارسال می کند ، روش درخواست است. برخی از روشهای درخواست متداول عبارتند از: GET ، POST و PUT. درخواست های GET معمولاً فقط برای خواندن داده ها بدون ایجاد تغییر در چیزی است ، در حالی که درخواست های POST و PUT معمولاً برای تغییر داده ها روی سرور مجازی است. به عنوان مثال ، Stripe API به شما امکان می دهد تا از درخواست های POST برای ایجاد شارژ جدید استفاده کنید تا کاربر بتواند چیزی را از برنامه شما خریداری کند.
توجه: این مقاله درخواستهای GET را پوشش می دهد ، زیرا ما هیچ گونه داده ای را در سرور مجازی اصلاح نمی کنیم.
هنگام ارسال درخواست از یک اسکریپت پایتون یا داخل یک برنامه وب ، شما ، به عنوان توسعه دهنده ، تصمیم می گیرید که در هر درخواست چه چیزی ارسال می شود و با پاسخ چه کاری انجام دهید. بیایید با ارسال یک درخواست به Scotch.io و سپس با استفاده از یک API ترجمه زبان ، این موضوع را کشف کنیم.
درخواست های پایتون را نصب کنید
قبل از اینکه بتوانیم کاری انجام دهیم ، باید کتابخانه را نصب کنیم. بنابراین بیایید پیش برویم و درخواست ها را با استفاده از pip نصب کنیم. در صورتی که قبلاً یک محیط مجازی نداشته اید ، بهتر است ابتدا آن را ایجاد کنید.
$ pip install requests
اولین درخواست ما
برای شروع ، اجازه دهید از درخواست هایی برای درخواست سایت Scotch.io استفاده کنیم. فایلی بنام script.py ایجاد کنید و کد زیر را به آن اضافه کنید. در این مقاله ، ما کد زیادی برای کار کردن نداریم ، بنابراین وقتی چیزی تغییر کرد ، می توانید به جای اضافه کردن خطوط جدید ، کد موجود را به روز کنید.
script.py
import requests

res = requests.get(‘https://scotch.io’)

print(res)

بنابراین تمام کار این کد ارسال یک درخواست GET به Scotch.io است. این همان نوع درخواستی است که مرورگر شما برای مشاهده این صفحه ارسال می کند ، اما تنها تفاوت این است که درخواست ها نمی توانند HTML را ارائه دهند ، بنابراین در عوض شما فقط HTML خام و سایر اطلاعات پاسخ را دریافت خواهید کرد.
ما در اینجا از تابع .get () استفاده می کنیم ، اما درخواست ها به شما امکان می دهد از سایر عملکردها مانند .post () و .put () برای ارسال آن درخواست ها نیز استفاده کنید.
می توانید با اجرای فایل script.py آن را اجرا کنید.
$ python script.py
و آنچه در عوض دریافت می کنید این است:

کدهای وضعیت
اولین کاری که می توانیم انجام دهیم بررسی کد وضعیت است. کدهای HTTP از 1XX تا 5XX متغیر است. کدهای وضعیت مشترک که احتمالاً دیده اید 200 ، 404 و 500 هستند.
در اینجا یک مرور اجمالی از آنچه که کد وضعیت دارد به شرح زیر است:
⦁ 1XX – اطلاعات
⦁ 2XX – موفقیت
⦁ 3XX – تغییر مسیر
⦁ 4XX – خطای مشتری (شما خطایی انجام دادید)
⦁ 5XX – خطای سرور مجازی (آنها خطایی ایجاد کردند)
به طور کلی ، آنچه که شما هنگام انجام درخواست های خود به دنبال آن هستید ، کد وضعیت در رده 200 تایی ها است.
درخواست ها تشخیص می دهند که کدهای وضعیت 4XX و 5XX خطا هستند ، بنابراین اگر این کدهای وضعیت برگردانده شوند ، موضوع پاسخ از درخواست به False ارزیابی می شود.
با بررسی پاسخ برای واقعیت می توانید تست کنید که آیا یک درخواست با موفقیت پاسخ داده است. مثلا:
script.py
if res:
print(‘Response OK’)
else:
print(‘Response Failed’)

پیام “پاسخ موفق نبود” فقط در صورت بازگشت کد وضعیت 400 یا 500 ظاهر می شود. سعی کنید URL را به چیز بی معنی تغییر دهید تا عدم موفقیت پاسخ را با 404 ببینید.
با افزودن موارد زیر می توانید مستقیماً به کد وضعیت نگاهی بیندازید:
script.py
print(res.status_code)

با این کار کد وضعیت به طور مستقیم به شما نشان داده می شود تا بتوانید شماره را خودتان بررسی کنید.

هدرها
موارد دیگری که می توانید از پاسخ دریافت کنید هدرها هستند. می توانید با استفاده از فرهنگ نامه هدرها در موضوع پاسخ ، به آنها نگاهی بیندازید.
script.py
print(res.headers)

هدرها به همراه درخواست ارسال می شوند و در پاسخ بازگردانده می شوند. هدرها به این دلیل استفاده می شوند تا هم مشتری و هم سرور مجازی بدانند چگونه داده هایی را که در پاسخ / پاسخ ارسال می شوند ، تفسیر کنند.
هدرهای مختلفی را می بینیم که برگردانده می شوند. در بسیاری از مواقع نیازی به استفاده مستقیم از اطلاعات هدر ندارید ، اما در صورت نیاز وجود دارند.
نوع محتوا معمولاً چیزی است که ممکن است به آن احتیاج داشته باشید زیرا فرمت داده ها ، به عنوان مثال HTML ، JSON ، PDF ، متن ، و غیره را نشان میدهد. اما نوع محتوا به طور معمول توسط درخواست ها تعیین میشود تا بتوانید به داده هایی که بازگردانده می شوند دسترسی پیدا کنید.
متن پاسخ
و در آخر اینکه ، اگر به res.text نگاهی بیندازیم (این برای داده های متنی کار می کند ، مانند یک صفحه HTML مانند چیزی که در حال مشاهده هستید) ، می توانیم تمام HTML مورد نیاز برای ساخت صفحه اصلی Scotch را مشاهده کنیم. ارائه نخواهد شد ، اما می بینیم که متعلق به Scotch است. اگر آن را در یک فایل ذخیره کرده اید و آن را باز کنید ، چیزی را مشاهده می کنید که شبیه به سایت Scotch میباشد. در یک وضعیت واقعی ، درخواست های چندگانه برای یک صفحه وب واحد برای بارگیری مواردی مانند تصاویر ، اسکریپت ها و شیت استایل وجود دارد ، بنابراین اگر فقط HTML را در یک فایل ذخیره کنید ، چیزی شبیه به آنچه در صفحه Scotch.io مرورگرتان به نظر می رسد نخواهد بود زیرا فقط یک درخواست واحد برای بدست آوردن داده های HTML انجام شده است.
script.py
print(res.text)

استفاده از API ترجمه
اکنون بیایید به سراغ یک چیز جالب تر برویم. ما از API ترجمه Yandex برای اجرای درخواست ترجمه متن به زبان دیگر استفاده خواهیم کرد.
برای استفاده از API ، ابتدا باید ثبت نام کنید. پس از ورود ، به Translate API بروید و یک کلید API ایجاد کنید. پس از داشتن کلید API ، آن را به صورت ثابت به فایل خود اضافه کنید. در اینجا لینکی وجود دارد که می توانید تمام آن کارها را انجام دهید: https://tech.yandex.com/translate/
script.py
API_KEY = ‘your yandex api key’

دلیل اینکه به یک کلید API احتیاج داریم این است که Yandex بتواند هر بار که بخواهیم از API آنها استفاده کنیم بتواند ما را تأیید کند. کلید API نوعی تأیید اعتبار ساده است ، زیرا هنگام ارسال ، به انتهای URL درخواست اضافه می شود.
برای دانستن اینکه کدام URL را برای استفاده از API باید ارسال کنیم ، می توانیم به مستندات Yandex مراجعه کنیم.
اگر به آنجا بنگریم ، تمام اطلاعات مورد نیاز برای استفاده از Translate API آنها برای ترجمه متن را خواهیم دید.

وقتی URL را با امپرسند (&) ، علامت سؤال (؟) و با علائم مساوی (=) می بینیم ، می توانید مطمئن باشید که URL برای درخواست های GET است. این نمادها پارامترهایی را نشان می دهد که همراه با URL هستند.
به طور معمول موارد موجود در براکت های مربع ([]) اختیاری خواهد بود. در این حالت ، قالب ، گزینه ها و پاسخ به تماس اختیاری هستند ، در حالی که کلید ، متن و زبان برای درخواست لازم میباشند.
بنابراین بیایید کدی را برای ارسال به آن URL اضافه کنیم. می توانید اولین درخواستی را که ایجاد کردیم با این جایگزین کنید:
script.py
url = ‘https://translate.yandex.net/api/v1.5/tr.json/translate’
res = requests.get(url)

دو روش وجود دارد که می توانیم پارامترها را اضافه کنیم. می توانیم مستقیماً آن را به انتهای URL اضافه کنیم ، یا می توانیم از درخواست هایی بخواهیم این کار را برای ما انجام دهند. برای انجام دومی ، می توانیم یک دیکشنری برای پارامترهای خود ایجاد کنیم. سه مورد مورد نیاز ما کلید ، متن و زبان هستند. بیایید فرهنگ نامه را با استفاده از کلید API ، ‘Hello’ برای متن ، و “en-es” به عنوان زبان ایجاد کنیم ، به این معنی که می خواهیم از انگلیسی به اسپانیایی ترجمه کنیم.
اگر نیاز به دانستن کدهای زبانی دیگر دارید ، می توانید در این لینک جستجو کنید. شما به دنبال ستون 639-1 هستید.
ما یک فرهنگ لغت پارامتری را با استفاده از تابع disc () و عبور از کلیدها و مقادیر مورد نظر در فرهنگ لغت خود ایجاد می کنیم.
script.py
params = dict(key=API_KEY, text=’Hello’, lang=’en-es’)

حالا دیکشنری پارامترها را برمیداریم و آن را به تابع .get () منتقل می کنیم.
script.py
res = requests.get(url, params=params)

وقتی از این طریق از پارامترها عبور کردیم ، درخواست ها پیش می روند و پارامترها را به آدرس URL برای ما اضافه می کنند.
اکنون بیایید عبارت چاپی را برای متن پاسخ اضافه کنیم و ببینیم چه چیزی در پاسخ باز می گردد.
script.py
print(res.text)

سه چیز را می بینیم. کد وضعیت را می بینیم که دقیقاً همان کد وضعیت خود پاسخ است ، زبانی را که مشخص کردیم می بینیم و متن ترجمه شده را در داخل لیست مشاهده می کنیم. بنابراین باید متن Hola را برای متن ترجمه شده ببینید.
دوباره به عنوان کد زبان en-fr را امتحان کنید و اکنون باید در پاسخ ‘Bonjour’ را مشاهده کنید.
script.py
params = dict(key=API_KEY, text=’Hello’, lang=’en-fr’)

بیایید نگاهی به عناوین برای این پاسخ خاص بیندازیم.
script.py
print(res.headers)

بدیهی است که هدرها باید متفاوت باشند زیرا ما با یک سرور مجازی دیگر ارتباط برقرار می کنیم ، اما در این حالت نوع محتوا به جای text/html ، application/json است. این بدان معنی است که داده ها را می توان به صورت JSON تفسیر کرد.
هنگامی که application/json نوع محتوای پاسخ است ، می توانیم با استفاده از درخواست ها، پاسخ ها را به یک فرهنگ لغت تبدیل و به گونه ای لیست کنیم که بتوانیم راحت تر به داده دسترسی پیدا کنیم.
برای تجزیه و تحلیل داده ها به عنوان JSON ، از روش .json () در موضوع پاسخ استفاده می کنیم.
اگر آن را چاپ کنید ، خواهید دید که داده ها یکسان به نظر می رسند ، اما قالب کمی متفاوت است.
script.py
json = res.json()
print(json)

دلیل متفاوت بودن آن به این دلیل است که دیگر متن ساده ای که از res.text دریافت میکردید، نیست. این بار نسخه چاپی یک فرهنگ لغت است.
بهتر است بگوییم که می خواهیم به متن دسترسی پیدا کنیم. از آنجا که اکنون یک فرهنگ لغت است ، می توانیم از کلید متن استفاده کنیم.
script.py
print(json[‘text’])

و اکنون فقط داده های مربوط به آن یک کلید را می بینیم. در این حالت ما به دنبال لیست یک مورد هستیم ، بنابراین اگر می خواستیم آن متن را مستقیماً در لیست قرار دهیم ، می توانیم از طریق فهرست به آن دسترسی پیدا کنیم.
script.py
print(json[‘text’][0])

و اکنون تنها چیزی که می بینیم کلمه ترجمه شده است.
بنابراین مطمئناً اگر موارد را در پارامترهای خود تغییر دهیم ، نتایج متفاوتی خواهیم گرفت. بیایید متن را برای ترجمه از Hello به Goodbye تغییر دهیم ، زبان مقصد را به اسپانیایی برگردانیم و درخواست را دوباره ارسال کنیم.
script.py
params = dict(key=API_KEY, text=’Goodbye’, lang=’en-es’)

سعی کنید متن طولانی تر را به زبان های مختلف ترجمه کنید و ببینید چه پاسخی به API می دهد.
موارد خطای Translate API
در آخر ، به یک مورد خطا نگاه خواهیم کرد. همه چیز همیشه کار نمی کند ، بنابراین باید بدانیم چه زمانی این اتفاق می افتد.
با حذف یک کاراکتر ، کلید API خود را تغییر دهید. وقتی این کار را کردید دیگر کلید API شما معتبر نخواهد بود. سپس یک درخواست را ارسال کنید.
اگر به کد وضعیت نگاهی بیندازید ، این چیزی است که بدست می آورید:
script.py
print(res.status_code)

بنابراین وقتی از API استفاده می کنید ، بهتر است بررسی کنید که آیا موارد موفقیت آمیز هستند یا خیر ، بنابراین می توانید با توجه به نیاز برنامه خود ، موارد خطا را برطرف کنید.
نتیجه
این چیزی است که ما آموخته ایم:
• درخواست های HTTP چگونه کار می کند
• کدهای وضعیت مختلف ممکن در یک پاسخ
• نحوه ارسال درخواست و دریافت پاسخ با استفاده از کتابخانه درخواست ها در پایتون
• نحوه استفاده از API translate برای ترجمه متن
• چگونگی تبدیل پاسخ های محتوای application/JSON به فرهنگ لغت
اگر می خواهید کارهای بیشتری انجام دهید ، این لیست را بررسی کنید تا API های مختلف موجود را ببینید و سعی کنید از آنها با درخواست های پایتون استفاده کنید.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04 –  نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8 –  نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP  –  بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose

مراحل ایمن سازی Apache HTTP در FreeBSD 12  –  بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript  –  استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8  – چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js  –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8  – تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8  –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker  Quickstart  –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –  مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04  –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7  –   نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04–  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

استفاده از Cron برای خودکارسازی کارها در اوبونتو 18 –

نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18 –

نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10  –

نحوه نصب Docker Compose در Debian 10  –

چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد  –

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
Docker ابزاری عالی برای خودکار سازی برنامه های کاربردی لینوکس در کانتینرهای نرم افزاری است ، اما برای بهره گیری کامل از پتانسیل آن ، هر یک از اجزای برنامه باید در کانتینر شخصی خود اجرا شود. برای برنامه های کاربردی پیچیده با اجزای فراوان ، که همه کانتینرها را با هم برای راه اندازی ، برقراری ارتباط و خاموش کردن به کار میگیرند ، خیلی سریع می توانند ناخوشایند شوند.
انجمن Docker با یک راه حل محبوب به نام Fig روبرو شد که به شما این امکان را می دهد تا از یک فایل YAML استفاده کنید تا همه کانتینرها و پیکربندی های Docker خود را بر روی آن تنظیم کنید. این امر چنان محبوب شد که تیم Docker تصمیم گرفت تا Docker Compos را بر اساس منبع Fig بسازد ، که اکنون مستهلک شده است. Docker Compose به کاربران این امکان را می دهد تا فرآیندهای کانتینرهای داکر را از جمله راه اندازی ، خاموش کردن و تنظیم لینک ها و والیوم های داخل کانتینری را هماهنگ کنند.
در این آموزش ، آخرین نسخه Docker Compose را برای کمک به شما در مدیریت برنامه های چند کانتینری روی یک سرور مجازی Debian 10 نصب خواهید کرد.
پیش نیازها
برای دنبال کردن این مقاله ، به این موارد نیاز دارید:
یک سرور مجازی Debian 10 و یک کاربر غیر root با امتیازات sudo . این لینک در مورد تنظیم اولیه سرور مجازی با آموزش Debian 10 نحوه انجام این دستورالعمل های مرحله 1 و مرحله 2 نحوه نصب و استفاده از Docker در Debian 10 نصب شده است
توجه: اگرچه پیش نیازها دستورالعمل نصب Docker در Debian 10 را ارائه می دهند ، دستورات docker در این مقاله باید بعد از نصب Docker روی سیستم عامل های دیگر کار کنند.

مرحله 1 – نصب Docker Compose
اگرچه می توانید Docker Compose را از منابع رسمی Debian نصب کنید ، اما نسخه های متعدد فرعی بعد از آخرین نسخه موجود است ، بنابراین در این آموزش آن را از منبع Docker’s GitHub نصب خواهید کرد. دستورالعمل کمی متفاوت از آنچه در صفحه نسخه ها خواهید یافت ، میباشد. این دستور با استفاده از فلگ -o برای مشخص کردن فایل خروجی به جای تغییر مسیر خروجی ، از وارد شدن به خطای ” permission denied ” ناشی از استفاده از sudo جلوگیری می کند.
نسخه فعلی را بررسی کنید و در صورت لزوم آن را در دستور زیر به روز کنید:
$ sudo curl -L https://github.com/docker/compose

/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

سپس مجوزها را تنظیم خواهیم کرد:
$ sudo chmod +x /usr/local/bin/docker-compose

سپس با بررسی نسخه تأیید خواهیم کرد که نصب با موفقیت انجام شد:
$ docker-compose –version
با این کار نسخه ای که نصب کردیم چاپ خواهد شد:
Output
docker-compose version 1.25.3, build d4d1b42b

اکنون که Docker Compose نصب شده است ، ما آماده اجرای یک مثال ” Hello World ” هستیم.
مرحله 2 – اجرای یک کانتینر با Docker Compose
رجیستری داکر عمومی ، Docker Hub ، شامل تصویر Hello World برای نمایش و آزمایش است. این حداقل تنظیمات مورد نیاز برای اجرای یک کانتینر را با استفاده از Docker Compose نشان می دهد: یک فایل YAML که یک تصویر واحد را فراخوانی می کند. ما این تنظیمات حداقل را برای اجرای کانتینرهای hello-world ایجاد خواهیم کرد.
ابتدا دایرکتوری برای فایل YAML ایجاد کنید و به آن سوییچ کنید:
$ mkdir hello-world

$ cd hello-world

سپس فایل YAML را ایجاد کنید:
$ nano docker-compose.yml

مطالب زیر را در فایل قرار داده ، فایل را ذخیره کرده و از ویرایشگر متن خارج شوید:
docker-compose.yml
my-test:
image: hello-world

خط اول در فایل YAML به عنوان بخشی از نام کانتینر استفاده می شود. خط دوم مشخص می کند از کدام تصویر برای ایجاد کانتینر استفاده کنید. هنگامی که ما دستور docker-compose up را اجرا می کنیم ، به دنبال یک تصویر محلی با نامی که مشخص کردیم ، یعنی hello-world هستیم. با این جایگزینی ، فایل را ذخیره کرده و خارج می شویم.
با فرمان docker images می توانید به صورت دستی به تصاویر موجود در سیستم ما نگاه کنید:
$ docker images
هنگامی که هیچ تصاویر محلی وجود ندارد ، فقط عناوین ستون نمایش داده می شود:
Output
REPOSITORY TAG IMAGE ID CREATED SIZE

اکنون ، اگر هنوز در فهرست ~ / hello-world هستید ، دستور زیر را اجرا کنید:
$ docker-compose up

اولین باری که دستور را اجرا می کنید ، اگر هیچ تصویری محلی به نام hello-world وجود ندارد ، Docker Compose آن را از منبع عمومی Docker Hub بیرون می کشد:
Output
Pulling my-test (hello-world:)…
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299

cac44aca35a85c90c5e3c7afacdc
Status: Downloaded newer image for hello-world:latest
. . .

پس از کشیدن تصویر ، docker-compose یک کانتینر ایجاد می کند ، ضمیمه می کند و برنامه hello را اجرا می کند ، که به نوبه خود تأیید می کند که نصب در حال کار است:
Output
. . .
Creating helloworld_my-test_1…
Attaching to helloworld_my-test_1
my-test_1 |
my-test_1 | Hello from Docker.
my-test_1 | This message shows that your installation appears to be working correctly.
my-test_1 |
. . .

سپس توضیحی درباره آنچه انجام داده چاپ می کند:
Output
To generate this message, Docker took the following steps:
my-test_1 | 1. The Docker client contacted the Docker daemon.
my-test_1 | 2. The Docker daemon pulled the “hello-world” image from the Docker Hub.
my-test_1 | (amd64)
my-test_1 | 3. The Docker daemon created a new container from that image which runs the
my-test_1 | executable that produces the output you are currently reading.
my-test_1 | 4. The Docker daemon streamed that output to the Docker client, which sent it
my-test_1 | to your terminal.

کانتینرهای داکر فقط تا زمانی که دستور فعال است اجرا می شوند ، بنابراین پس از پایان کار hello ، کانتینر متوقف شد. در نتیجه ، هنگامی که به فرآیندهای فعال نگاه می کنیم ، سرصفحات ستون ظاهر می شود ، اما کانتینرهای hello world لیست نمی شود زیرا در حال اجرا نیست:
$ docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

با استفاده از فلگ -a می توانید اطلاعات کانتینر را که در مرحله بعدی به آن نیاز دارید را مشاهده کنید. این همه کانتینرها را نشان می دهد، و نه فقط موارد فعال:
$ docker ps -a

Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06069fd5ca23 hello-world “/hello” 35 minutes ago Exited (0) 35 minutes ago hello-world_my-test_1

این خروجی اطلاعاتی را نشان می دهد که باید پس از اتمام کار با کانتینر از آن حذف کنید.
مرحله 3 – حذف تصویر (اختیاری)
برای جلوگیری از استفاده غیر ضروری از فضا دیسک ، تصویر محلی را حذف خواهیم کرد. برای انجام این کار ، ما باید تمام کانتینرهای حاوی تصویر را با استفاده از دستور docker rm حذف کنیم ، به دنبال آن یا CONTAINER ID یا NAME حذف می شود. در مثال زیر ، ما از دستور docker ps -a که اخیراً اجرا کردیم، استفاده می کنیم. حتماً شناسه کانتینر خود را جایگزین کنید:
$ docker rm 06069fd5ca23

پس از حذف همه کانتینرهای حاوی تصویر ، می توانیم تصویر را حذف کنیم:
$ docker rmi hello-world

نتیجه
شما Docker Compose را روی Debian 10 نصب کرده اید، نصب خود را با اجرای یک مثال Hello World آزمایش کرده و تصویر و کانتینر مورد آزمایش را حذف کرده اید.
در حالی که مثال Hello World نصب شما را تأیید کرد ، این پیکربندی ساده یکی از مزایای اصلی Docker Compose را نشان نمی دهد – آن هم توانایی بالا و پایین آوردن گروهی از کانتینرهای Docker به صورت همزمان. برای دیدن نحوه استفاده از Docker Compose با جزئیات بیشتر ، به نحوه نصب وردپرس با Docker Compose نگاهی بیندازید.

 

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04 –  نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8 –  نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP  –  بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose

مراحل ایمن سازی Apache HTTP در FreeBSD 12  –  بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript  –  استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8  – چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js  –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8  – تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8  –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker  Quickstart  –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –  مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04  –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7  –   نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04–  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

استفاده از Cron برای خودکارسازی کارها در اوبونتو 18 –

نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18 –

نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10  –

نحوه نصب Docker Compose در Debian 10  –

چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد  –

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
با حرکت ابزارهای گسترش دهنده به سمت cloud ، تطابق پذیری پلتفرم cloud IDE (محیط پیشرفت ادغام شده) در حال رشد است. Cloud IDE ها از هر نوع دستگاه مدرن از طریق مرورگرهای وب قابل دسترسی هستند و برای سناریوهای همکاری در زمان واقعی مزایای بسیاری را ارائه می دهند. کار کردن در یک Cloud IDE ، یک محیط توسعه و آزمایش یکپارچه را برای شما و تیم شما ایجاد می کند ، در عین حال ناسازگاری های پلتفرم را به حداقل می رساند. چون از طریق مرورگرهای وب قابل دسترسی است ، Cloud IDE ها از هر نوع دستگاه مدرن در دسترس هستند.
Eclipse Theia یک Cloud IDE قابل توسعه است که بر روی یک سرور مجازی از راه دور اجرا میشود و از یک مرورگر وب قابل دسترسی است. از لحاظ بصری ، به گونه ای طراحی شده است که به طور مشابه با Microsoft Visual Studio Code دیده شود و کار کند ، به این معنی که از بسیاری از زبان های برنامه نویسی پشتیبانی می کند ، دارای یک طرح انعطاف پذیر و یک ترمینال یکپارچه است. آنچه Eclipse Theia را از دیگر نرم افزارهای cloud IDE جدا می کند قابلیت توسعه آن است. می توان آن را با استفاده از افزونه های سفارشی اصلاح کرد ، که به شما امکان می دهد یک Cloud IDE متناسب با نیازهای خود تهیه کنید.
در این آموزش ،Eclipse Theia را با استفاده از Docker Compose ، یک ابزار سازمان دهی حرفه ای، در سرور مجازی Debian 10 خود به کار خواهید گرفت. با استفاده از nginx-proxy ، یک سیستم خودکار برای Docker ، آن را در دامنه خود قرار می دهید که فرایند پیکربندی Nginx را ساده تر می کند تا به عنوان یک پروکسی معکوس برای یک کانتینر سرویس دهد. همچنین با استفاده از یک گواهی Let’s Encrypt TLS رایگان ، که با استفاده از افزونه تخصصی آن تهیه می کنید ، آن را ایمن خواهید کرد. در پایان ، شما باید Eclipse Theia را روی سرور مجازی Debian 10 خود از طریق HTTPS در دسترس داشته باشید و از کاربر بخواهید وارد شود.
پیش نیازها
⦁ یک سرور مجازی Debian 10 با امتیازات اصلی و یک حساب ثانویه و غیر ریشه. می توانید با دنبال کردن راهنمای تنظیم اولیه سرور مجازی برای Debian 10 ، این تنظیمات را انجام دهید. برای این آموزش کاربر غیر ریشه sammy است.
⦁ Docker نصب شده روی سرور مجازی شما. مرحله 1 و مرحله 2 نحوه نصب Docker را در Debian 10 دنبال کنید. برای آشنایی با Docker ، به اکوسیستم Docker: مقدمه ای بر مؤلفه های مشترک مراجعه کنید.
⦁ Docker compose نصب شده روی سرور مجازی تان. مرحله 1 نحوه نصب Docker Compose را در Debian 10 دنبال کنید.
⦁ نام دامنه کاملاً ثبت شده. در این آموزش کلا از theia.your_domain استفاده می شود. می توانید نام دامنه را در Namecheap خریداری کنید ، یکی از آنها را به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید.
⦁ یک ثبت A DNS با theia.your_domain که به آدرس IP عمومی سرور مجازی شما اشاره میکند. برای جزئیات بیشتر در مورد چگونگی اضافه کردن آنها می توانید این معرفی را در vpsgol DNS دنبال کنید.
مرحله 1 – استفاده از پروکسی nginx با Let’s Encrypt
در این بخش nginx-proxy و افزونه Let’s Encrypt را با استفاده از Docker Compose به کار میگیرید. این امر امکان تهیه و نوسازی گواهی خودکار TLS را فراهم می کند ، به طوری که هنگام استقرار Eclipse Theia از طریق HTTPS در دامنه شما قابل دسترسی خواهد بود.
برای اهداف این آموزش ، تمام فایل ها را تحت ~ / eclipse-theia ذخیره می کنید. با اجرای دستور زیر دایرکتوری ایجاد کنید:
⦁ $ mkdir ~/eclipse-theia
به آن مراجعه کنید:
⦁ $ cd ~/eclipse-theia
پیکربندی Docker Compose را برای nginx-proxy در فایلی به نام nginx-proxy-compose.yaml ذخیره خواهید کرد. آن را با استفاده از ویرایشگر متن خود ایجاد کنید:
⦁ $nano nginx-proxy-compose.yaml
خطوط زیر را اضافه کنید:
~/eclipse-theia/nginx-proxy-compose.yaml
version: ‘2’

services:
nginx-proxy:
restart: always
image: jwilder/nginx-proxy
ports:
– “80:80”
– “443:443”
volumes:
– “/etc/nginx/htpasswd:/etc/nginx/htpasswd”
– “/etc/nginx/vhost.d”
– “/usr/share/nginx/html”
– “/var/run/docker.sock:/tmp/docker.sock:ro”
– “/etc/nginx/certs”

letsencrypt-nginx-proxy-companion:
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
– “/var/run/docker.sock:/var/run/docker.sock:ro”
volumes_from:
– “nginx-proxy”

در اینجا شما دو سرویس را تعریف می کنید که Docker Compose اجرا خواهد کرد ، nginx-proxy و همراه آن Let’s Encrypt. برای پروکسی ، شما jwilder / nginx-proxy را به عنوان تصویر مشخص میکنید، پورت های HTTP و HTTPS را نقشه برداری می کنید ، و والیوم هایی را تعریف می کنید که در زمان اجرا در دسترس شما خواهد بود.
والیوم ها دایرکتوری هایی در سرور مجازی شما هستند که سرویس تعریف شده به آنها دسترسی کامل خواهد داشت ، که بعداً برای تنظیم تأیید اعتبار کاربر از آنها استفاده خواهید کرد. برای دستیابی به این هدف ، از والیوم اول لیست استفاده می کنید ، که دایرکتوری محلی / etc / nginx / htpasswd را به همان قسمت موجود در داخل آن نگاشت می کشد. در آن پوشه ، nginx-proxy انتظار دارد فایلی را به نام دامنه هدف پیدا کند ، که حاوی اطلاعات ورود به سیستم برای احراز هویت کاربر در قالب htpasswd (username:hashed_password) است.
برای افزودن ، تصویر Docker را نامگذاری می کنید و با تعیین یک والیوم امکان دسترسی به سوکت Docker را می دهید. سپس ، مشخص می کنید که این افزونه باید دسترسی به والیوم های تعریف شده برای nginx-proxy را ادامه دهد. هر دو سرویس امکان تنظیم restart روی always را دارند که به Docker دستور می دهد کانتینر را در صورت خرابی یا ریبوت سیستم، مجدداً راه اندازی کند.
فایل را ذخیره کنید و ببندید.
پیکربندی را با اجرای دستور زیر انجام دهید:
⦁ $ docker-compose -f nginx-proxy-compose.yaml up -d
در اینجا نام فایل nginx-proxy-compose.yaml را در پارامتر -f دستور docker-compose می گذارید ، که فایل را برای اجرا مشخص می کند. سپس ، فعل UP را می گذرانید که به آن دستور می دهد کانتینرها را اجرا کند. فلگ -d حالت جداشده را فعال می سازد ، به این معنی که Docker Compose کانتینرها را در پس زمینه اجرا می کند.
خروجی نهایی به شرح زیر خواهد بود:
Output
Creating network “eclipse-theia_default” with the default driver
Pulling nginx-proxy (jwilder/nginx-proxy:)…
latest: Pulling from jwilder/nginx-proxy
8d691f585fa8: Pull complete
5b07f4e08ad0: Pull complete

Digest: sha256:dfc0666b9747a6fc851f5fb9b03e65e957b34c95d9635b4b5d1d6b01104bde28
Status: Downloaded newer image for jwilder/nginx-proxy:latest
Pulling letsencrypt-nginx-proxy-companion (jrcs/letsencrypt-nginx-proxy-companion:)…
latest: Pulling from jrcs/letsencrypt-nginx-proxy-companion
89d9c30c1d48: Pull complete
668840c175f8: Pull complete

Digest: sha256:a8d369d84079a923fdec8ce2f85827917a15022b0dae9be73e6a0db03be95b5a
Status: Downloaded newer image for jrcs/letsencrypt-nginx-proxy-companion:latest
Creating eclipse-theia_nginx-proxy_1 … done
Creating eclipse-theia_letsencrypt-nginx-proxy-companion_1 … done

nginx-proxy و همراهش Let’s Encrypt را با استفاده از Docker Compose به کار گرفته اید. اکنون می توانید Eclipse Theia را در دامنه خود تنظیم کرده و آن را ایمن کنید.
مرحله 2 – به کارگیری Eclipse Theia دوکر شده
در این بخش ، فایلی را ایجاد خواهید کرد که شامل هر ترکیب ورود به سیستم مجاز میباشد که کاربر باید آن را وارد کند. سپس Eclipse Theia را با استفاده از Docker Compose به سرور مجازی خود منتقل می کنید و با استفاده از nginx-proxy آن را در دامنه امن خود قرار می دهید.
همانطور که در مرحله قبل توضیح داده شد ، nginx-proxy انتظار دارد که ترکیب های ورود به سیستم در فایلی به نام دامنه در معرض ، با فرمت htpasswd قرار بگیرند و در دایرکتوری / etc / nginx / htpasswd در کانتینر ذخیره شوند. همانطور که در پیکربندی nginx-proxy مشخص کرده ایم ، دایرکتوری محلی که به دایرکتوری مجازی نگاشت می کند ، نیازی به یکسان بودن ندارد.
برای ایجاد ترکیبات ورود ، ابتدا با اجرای دستور زیر باید htpasswd را نصب کنید:
⦁ $ sudo apt install apache2-utils
پکیج httpd-tools حاوی برنامه htpasswd است.
دایرکتوری / etc / nginx / htpasswd را ایجاد کنید:
⦁ $ sudo mkdir -p /etc/nginx/htpasswd
فایلی ایجاد کنید که ورود به سیستم را برای دامنه شما ذخیره کند:
⦁ $ sudo touch /etc/nginx/htpasswd/theia.your_domain
به یاد داشته باشید theia.your_domain را با دامنه Eclipse Theia خود جایگزین کنید.
برای افزودن نام کاربری و رمز ورود ، دستور زیر را اجرا کنید:
⦁ $ sudo htpasswd /etc/nginx/htpasswd/theia.your_domain username
USERNAME را با نام کاربری که می خواهید اضافه کنید جایگزین کنید. از شما دوبار رمز عبور خواسته می شود. پس از ارائه آن ، htpasswd نام کاربری و جفت رمز عبور را در انتهای فایل اضافه می کند. می توانید این دستور را به هر تعداد ورود به سیستم که میخواهید تکرار کنید.
اکنون ، پیکربندی را برای استقرار Eclipse Theia ایجاد خواهید کرد. شما آن را در فایلی به نام eclipse-theia-compose.yaml ذخیره خواهید کرد. آن را با استفاده از ویرایشگر متن خود ایجاد کنید:
⦁ $ nano eclipse-theia-compose.yaml
خطوط زیر را اضافه کنید:
~/eclipse-theia/eclipse-theia-compose.yaml
version: ‘2.2’

services:
eclipse-theia:
restart: always
image: theiaide/theia:next
init: true
environment:
– VIRTUAL_HOST=theia.your_domain
– LETSENCRYPT_HOST=theia.your_domain

در این پیکربندی ، یک سرویس واحد به نام eclipse-theia با ریستارت تنظیم شده روی ALWAYS و theiaide/theia:next را به عنوان تصویر کانتینر تعریف می کنید: شما همچنین می توانید init را روی true تنظیم کنید تا به Docker دستور دهید هنگام اجرای Eclipse Theia در داخل کانتینر ، از init به عنوان مدیر اصلی فرآیند استفاده کند.
سپس دو متغیر محیط را در بخش environment مشخص می کنید: VIRTUAL_HOST و LETSENCRYPT_HOST. اولین مورد به پروکسی nginx منتقل می شود و به آن می گوید کانتینر چه دامنه ای را باید در معرض دید قرار دهید ، در حالی که دومی توسط افزونه Let’s Encrypt آن استفاده می شود و مشخص می کند که برای کدام دامنه درخواست گواهینامه TLS شود. مگر اینکه یک wildcard را به عنوان مقدار VIRTUAL_HOST تعیین کنید ، این دو مقدار باید یکسان باشند.
به یاد داشته باشید theia.your_domain را با دامنه مورد نظر خود جایگزین کنید ، سپس فایل را ذخیره کنید و ببندید. اکنون با اجرای دستور زیر Eclipse Theia را اجرا کنید:
⦁ $ docker-compose -f eclipse-theia-compose.yaml up -d
خروجی نهایی مشابه زیر به نظر می رسد:
Output

Pulling eclipse-theia (theiaide/theia:next)…
next: Pulling from theiaide/theia
63bc94deeb28: Pull complete
100db3e2539d: Pull complete

Digest: sha256:c36dff04e250f1ac52d13f6d6e15ab3e9b8cad9ad68aba0208312e0788ecb109
Status: Downloaded newer image for theiaide/theia:next
Creating eclipse-theia_eclipse-theia_1 … done

سپس در مرورگر خود به دامنه مورد استفاده برای Eclipse Theia بروید. مرورگر شما اعلانی را به شما نشان می دهد که از شما خواسته می شود وارد شوید. پس از ارائه اطلاعات صحیح ، شما وارد Eclipse Theia می شوید و بلافاصله رابط کاربری گرافیکی آن را مشاهده می کنید. در نوار آدرس یک پدلاک را مشاهده خواهید کرد که نشان می دهد اتصال امن است. اگر این را بلافاصله مشاهده نکردید ، چند دقیقه صبر کنید تا مجوزهای TLS ارائه شود ، سپس صفحه را مجدد لود کنید.

اکنون که می توانید به راحتی به cloud IDE خود دسترسی داشته باشید ، در مرحله بعد شروع به استفاده از ویرایشگر خواهید کرد.

مرحله 3 – استفاده از رابط Eclipse Theia
در این بخش به بررسی برخی از ویژگی های رابط Eclipse Theia می پردازید.
در سمت چپ IDE ، یک ردیف عمودی از چهار دکمه وجود دارد که متداول ترین ویژگی های مورد استفاده را در یک صفحه جانبی باز می کند.
این نوار قابل تنظیم است بنابراین می توانید این نماها این نوار قابل سفارشی سازی است، بنابراین میتوانید این نمایه ها را به ترتیب دیگری جابجا کنید یا آنها را از نوار حذف کنید. به طور پیش فرض ، اولین نمای پانل Explorer را باز می کند که ناوبری شبیه به درخت ساختار پروژه را فراهم می کند. می توانید پوشه ها و فایل های خود را در اینجا مدیریت کنید – ایجاد کنید ، حذف کنید، جابجا کنید و در صورت لزوم تغییر نام دهید.
بعد از ایجاد فایل جدید از طریق منوی File ، یک فایل خالی را در یک برگه جدید باز خواهید کرد. پس از ذخیره ، می توانید نام فایل را در صفحه جانبی Explorer مشاهده کنید. برای ایجاد پوشه ها بر روی نوار کناری Explorer کلیک راست کرده و روی New Folder کلیک کنید. می توانید پوشه ای را با کلیک روی نام آن و همچنین کشیدن و رها کردن فایل ها و پوشه ها به قسمتهای بالای لیست گسترش دهید تا آنها را به یک مکان جدید منتقل کنید.

دو گزینه بعدی دسترسی به جستجو و جایگزینی قابلیت ها را فراهم می کند. پس از آن ، مورد بعدی نمایی از سیستم های کنترل منبع را که ممکن است از آنها استفاده کنید ، مانند Git ، ارائه می دهد.
نمای نهایی گزینه اشکال زدایی است که کلیه اقدامات متداول را برای اشکال زدایی در پنل ارائه می دهد. می توانید پیکربندی های اشکال زدایی را در فایل launch.json ذخیره کنید.

قسمت اصلی GUI ویرایشگر شماست که می توانید با استفاده از زبانه ها برای ویرایش کد خود جدا کنید. می توانید نمای ویرایش خود را به یک سیستم شبکه یا به فایل های جانبی تغییر دهید. مانند همه IDE های مدرن ، Eclipse Theia از هایلایت دستوری برای کد شما پشتیبانی می کند.

می توانید با وارد کردن CTRL + SHIFT + `، یا با کلیک کردن بر روی Terminal در منوی بالا ، و انتخاب گزینه New Terminal ، به ترمینال دسترسی پیدا کنید. ترمینال در یک پانل پایین باز خواهد شد و دایرکتوری کار آن روی فضای کاری پروژه تنظیم می شود ، که شامل فایل ها و پوشه های نمایش داده شده در پانل سمت Explorer است.

شما یک نمای کلی در سطح بالا از رابط Eclipse Theia جستجو کرده اید و برخی از متداول ترین ویژگی ها را مرور کرده اید.

نتیجه
اکنون Eclipse Theia ، یک Cloud IDE همه کاره ، با استفاده از Docker Compose و nginx-proxy بر روی سرور مجازی Debian 10 خود نصب کرده اید. شما آن را با یک مجوز Let’s Encrypt TLS رایگان ایمن کرده اید و نمونه ای را تنظیم کرده اید تا به اعتبار ورود به سیستم از طرف کاربر نیاز داشته باشید. شما می توانید بر روی کد منبع خود و اسناد با آن به صورت جداگانه کار کنید یا با تیم خود همکاری کنید. در صورت نیاز به قابلیت های اضافی ، می توانید نسخه دیگری از Eclipse Theia خود را نیز ایجاد کنید. برای کسب اطلاعات بیشتر در مورد چگونگی انجام این کار ، به مطالب Theia مراجعه کنید.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

چگونگی استفاده از migrations و seeders دیتابیس –  نحوه نصب Docker Compose در Debian 10

نحوه نصب R روی اوبونتو 18.04  – چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد

چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04 –  نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8  –  نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP – بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose

مراحل ایمن سازی Apache HTTP در FreeBSD 12   –  بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript – استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو  –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8  – چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js  –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8  –  تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8  –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker  Quickstart –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –   مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04  –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7 –  نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

استفاده از Cron برای خودکارسازی کارها در اوبونتو 18 –

نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18  –

نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10  –

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
تهدیدهای امنیتی بطور مداوم پیچیده تر می شوند ، بنابراین توسعه دهندگان و ادمین های سیستم ها باید در دفاع و آزمایش امنیت برنامه های خود رویکردی پیشگیرانه اتخاذ کنند.
روشی متداول برای آزمایش امنیت برنامه های مشتری یا خدمات شبکه، fuzzing است که شامل ارسال مکرر داده های نامعتبر یا نادرست به برنامه و تجزیه و تحلیل پاسخ آن است. این کار برای کمک به اینکه برنامه در برابر ورودی غیر منتظره که ممکن است شامل داده های نادرست یا حملات واقعی باشد، چقدر مقاومت و استحکام دارد مفید است.
Radamsa یک ابزار fuzzing منبع باز است که می تواند موارد آزمایش را بر اساس داده های ورودی مشخص شده توسط کاربر ایجاد کند. Radamsa کاملاً قابل سندیت است و تاکنون در یافتن آسیب پذیری در برنامه های واقعی مانند Gzip موفق بوده است.
در این آموزش ، Radamsa را با استفاده از موارد تست خود ، برای فوز تست خط فرمان و برنامه های مبتنی بر شبکه، نصب و استفاده خواهید کرد.
هشدار: Radamsa ابزاری برای آزمایش نفوذ است که به شما امکان می دهد آسیب پذیری ها یا نقاط ضعف سیستم ها یا برنامه های خاص را شناسایی کنید. شما نباید از آسیب پذیری های یافت شده با Radamsa برای هر نوع رفتار بی احتیاط ، آسیب یا سوء استفاده مخرب استفاده کنید. از لحاظ اخلاقی آسیب پذیری ها باید به نگهدارنده برنامه آسیب دیده گزارش شود و بدون اجازه صریح در معرض دید عموم قرار نگیرد.
پیش نیازها
قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت:
یک سرور مجازی Ubuntu 18.04 که با دنبال کردن راهنمای راه اندازی سرور مجازی اولیه با Ubuntu 18.04نصب شده باشد، و شامل یک کاربر sudo غیر ریشه و فایروال فعال برای مسدود کردن پورت های غیر ضروری باشد.
یک خط فرمان یا برنامه مبتنی بر شبکه که می خواهید آن را امتحان کنید ، به عنوان مثال Gzip ، Tcpdump ، Bind ، Apache ، jq یا هر برنامه دیگری که مورد نظر شماست. به عنوان نمونه برای اهداف این آموزش ، از jq استفاده خواهیم کرد.
هشدار: Radamsa می تواند باعث شود برنامه ها یا سیستم ها به صورت ناپایدار یا crash اجرا شوند ، بنابراین فقط Radamsa را در محیطی که برای این کار آماده هستید مانند سرور اختصاصی اجرا کنید. لطفاً قبل از انجام fuzz testing در برابر آن ، از داشتن اجازه کتبی صریح از صاحب سیستم اطمینان حاصل کنید.

پس از آماده شدن ، به عنوان کاربر غیر ریشه وارد سرور مجازی خود شوید.
مرحله 1 – نصب Radamsa
در مرحله اول ، Radamsa را دانلود و کامپایل می کنید تا در سیستم خود شروع به استفاده از آن کنید. کد منبع Radamsa در منبع رسمی GitLab موجود است.
با به روز کردن فهرست بسته محلی شروع کنید تا تغییرات جدید بالادست را منعکس کنید:
$ sudo apt update
سپس بسته های gcc ، git ، make و wget لازم جهت تهیه کد منبع را در یک باینری قابل اجرا نصب کنید:
$ sudo apt install gcc git make wget

apt پس از تأیید نصب ، بسته های مشخص شده و کلیه وابستگی های مورد نیاز آنها را دانلود و نصب خواهد کرد.
در مرحله بعد ، یک نسخه از کد منبع را برای Radamsa با کلون کردن آن از منبع میزبان در GitLab ، دانلود می کنید:
$ git clone https://gitlab.com/akihe/radamsa.git

به این ترتیب یک دایرکتوری به نام radamsa شامل کد منبع برای برنامه ایجاد خواهید کرد. برای شروع کامپایل کد به فهرست راهنما بروید:
$ cd radamsa
در مرحله بعد ، می توانید مراحل کامپایل را با استفاده از make انجام دهید:
$ make

سرانجام ، می توانید باینری Radamsa کامپایل شده را با PATH $ خود نصب کنید:
$ sudo make install

پس از اتمام این کار ، می توانید نسخه نصب شده را بررسی کنید تا مطمئن شوید که همه چیز کار می کند:
$ radamsa –version

خروجی شما شبیه به زیر خواهد بود:
Output
Radamsa 0.6

اگر خطای radamsa: command not found را مشاهده کردید، دوبار بررسی کنید که تمام وابستگی های لازم نصب شده اند و در هنگام کامپایل خطایی وجود ندارد.
اکنون که Radamsa را نصب کردید ، می توانید برخی از موارد نمونه آزمایشی را ایجاد کنید تا ببینید که Radamsa چگونه کار می کند و برای چه چیزی می تواند مورد استفاده قرار گیرد.
مرحله 2 – ارائه موارد Fuzzing Test
اکنون که Radamsa نصب شده است ، می توانید از آن برای تولید برخی موارد Fuzzing Test استفاده کنید.
نمونه آزمایشی بخشی از داده هاست که به عنوان ورودی برای برنامه ای که تست می کنید استفاده می شود. به عنوان مثال ، اگر در حال آزمایش یک برنامه بایگانی مانند Gzip هستید ، مورد آزمایشی ممکن است یک آرشیو فایلی باشد که می خواهید آن را فشرده سازی کنید.
توجه: Radamsa داده های ورودی را با طیف گسترده ای از روش های غیر منتظره از جمله تکرار شدید ، bit flips ، تزریق کاراکتر کنترل و موارد دیگر دستکاری می کند. این کار ممکن است باعث شود که بخش پایانه شما متوقف یا ناپایدار شود ، بنابراین قبل از ادامه این کار آگاه باشید.
در مرحله اول ، یک متن ساده را به Radamsa منتقل کنید تا ببینید چه اتفاقی می افتد:
$ echo “Hello, world!” | radamsa

این کار داده های ورودی را دستکاری (یا فوز) می کند و یک نمونه آزمایشی را تولید می کند ، به عنوان مثال:
Output
Hello,, world!

در این حالت ، Radamsa یک کاما اضافی بین Hello و world اضافه کرد. ممکن است تغییر مهمی به نظر نرسد، اما در برخی از برنامه ها ممکن است باعث تفسیر نادرست داده ها شود.
بیایید دوباره با اجرای همان دستور امتحان کنیم. خروجی متفاوتی را مشاهده خواهید کرد:
Output
Hello, ”””’wor’d!

این بار ، چندین تک نقل قول (‘) به رشته وارد شد ، از جمله علامتی که روی l در world قرار گرفت. این مورد تست خاص به احتمال زیاد منجر به ایجاد مشکلاتی در برنامه خواهد شد ، زیرا اغلب از نقل قول های تک / دوتایی برای جدا کردن بخش های مختلف داده در یک لیست استفاده می شود.
بیایید یک بار دیگر امتحان کنیم:
Output
Hello, $+$PATH\u0000`xcalc`world!

در این مورد Radamsa یک رشته ورود پوسته ای را درج کرده است ، که برای تست آسیب پذیری های ورود فرمان در برنامه ای که شما آزمایش می کنید ، مفید خواهد بود.
شما از Radamsa برای fuzz رشته ورودی و تولید یک سری موارد آزمایشی استفاده کرده اید. در مرحله بعد ، از Radamsa برای fuzz کردن یک برنامه خط فرمان استفاده خواهید کرد.
مرحله 3 – Fuzzing برنامه خط فرمان
در این مرحله ، از Radamsa استفاده می کنید تا یک برنامه خط فرمان را fuzz کرده و در مورد هرگونه کرشی که رخ می دهد گزارش دهید.
تکنیک دقیق fuzzing هر برنامه بسیار متفاوت است و روشهای مختلف برای برنامه های مختلف موثرتر خواهد بود. اما در این آموزش از مثال jq استفاده خواهیم کرد که یک برنامه خط فرمان برای پردازش داده های JSON است.
ممکن است برای هر برنامه مشابهی تا زمانی که از اصول کلی گرفتن برخی شکل های داده های ساختاری یا بدون ساختار تبعیت میکند، استفاده کنید، کاری با آن انجام دهید و سپس نتیجه ای دریافت کنید. به عنوان مثال این مثال همچنین با Gzip ، Grep ، bc ، tr و غیره کار می کند.
اگر jq را قبلاً نصب نکردید ، می توانید آن را با استفاده از apt نصب کنید:
$ sudo apt install jq
اکنون jq نصب خواهد شد.
برای شروع fuzzing ، یک فایل نمونه JSON ایجاد کنید که از آن به عنوان ورودی Radamsa استفاده خواهید کرد:
$ nano test.json

سپس داده های JSON نمونه زیر را به فایل اضافه کنید:
test.json
{
“test”: “test”,
“array”: [
“item1: foo”,
“item2: bar”
]
}

اگر می خواهید صحت دستور JSON را بررسی کنید می توانید این فایل را با استفاده از jq تجزیه کنید:
$ jq . test.json

اگر JSON معتبر باشد ، jq فایل را در خروجی صادر می کند. در غیر اینصورت خطایی نمایش داده می شود که می توانید در صورت لزوم برای اصلاح دستور استفاده کنید.
در مرحله بعد ، فایل JSON تست را با استفاده از Radamsa فوز کنید و سپس آن را به jq منتقل کنید. این باعث خواهد شد که jq مورد آزمایش فوز شده / دستکاری شده را به جای داده های معتبر اصلی JSON بخواند:
$ radamsa test.json | jq

اگر Radamsa داده های JSON را به شکلی fuzz کند که هنوز از نظر نحوی معتبر باشد ، jq داده ها را به خروجی می فرستد ، اما با هر تغییری که Radamsa در آن ایجاد کرده است.
از طرف دیگر ، اگر Radamsa باعث بی اعتبار بودن داده های JSON شود ، jq خطای مربوطه را نشان می دهد. مثلا:
Output
parse error: Expected separator between values at line 5, column 16

نتیجه جایگزین این خواهد بود که jq قادر به پردازش درست داده های فوز شده نیست و باعث کرش یا سوء رفتار آن می شود. این همان چیزی است که در fuzzing واقعاً به دنبال آن هستید ، زیرا ممکن است نشانگر آسیب پذیری امنیتی مانند سرریز بافر یا تزریق فرمان باشد.
برای آزمایش کارآمدتر در برابر آسیب پذیری هایی از این دست ، می توان از اسکریپت Bash برای خودکارسازی فرایند fuzzing استفاده کرد ، از جمله تولید موارد تست ، انتقال آنها به برنامه هدف و گرفتن هر خروجی مربوطه.
فایلی با نام jq-fuzz.sh ایجاد کنید:
$ nano jq-fuzz.sh

محتوای دقیق اسکریپت بسته به نوع برنامه مورد نظر شما و داده های ورودی متفاوت خواهد بود ، اما در مورد jq و سایر برنامه های مشابه ، متن زیر کافی است.
اسکریپت را در فایل jq-fuzz.sh کپی کنید:
jq-fuzz.sh
#!/bin/bash
while true; do
radamsa test.json > input.txt
jq . input.txt > /dev/null 2>&1
if [ $? -gt 127 ]; then
cp input.txt crash-`date +s%.%N`.txt
echo “Crash found!”
fi
don

این اسکریپت حاوی یک while است تا محتویات به صورت مکرر حلقه شود. هر بار که اسکریپت حلقه شود ، Radamsa یک فایل آزمایشی را بر اساس test.json تولید می کند و آن را در input.txt ذخیره می کند.
فایل آزمایشی input.txt از طریق jq اجرا می شود ، آن هم با استفاده از همه خروجی های استاندارد و خطا که به / dev / null هدایت می شوند تا از پر شدن صفحه ترمینال جلوگیری شود.
در آخر ، مقدار خروجی jq بررسی می شود. اگر مقدار خروجی از 127 بیشتر باشد ، نشانگر پایان مخرب (کرش) است ، سپس داده های ورودی برای بررسی در تاریخ بعدی در فایلی به نام crash ذخیره می شوند – به دنبال آن تاریخ فعلی در ثانیه ها و نانو ثانیه های یونیکس می آید.
اسکریپت را به عنوان قابل اجرا علامت گذاری کنید و آن را برای اجرا تنظیم کنید تا به طور خودکار تست فوزی jq را شروع کند:
$ chmod +x jq-fuzz.sh

$ ./jq-fuzz.sh
می توانید CTRL + C را در هر زمان صادر کنید تا اسکریپت خاتمه یابد. سپس می توانید با استفاده از ls ​​برای نمایش فهرست دایرکتوری حاوی فایلهای کرش شده ای که ایجاد شده اند، بررسی کنید که آیا کرشی یافت شده است یا خیر.
ممکن است بخواهید داده های ورودی JSON خود را بهبود بخشید زیرا احتمالاً استفاده از یک فایل ورودی پیچیده تر باعث بهبود کیفیت نتایج fuzzing می شود. از استفاده از یک فایل بزرگ یا فایلی که حاوی تعداد زیادی از داده های تکراری است ، خودداری کنید – یک فایل ورودی ایده آل اندازه کوچکی دارد ، اما همچنان ممکن است تا سر حد امکان عناصر پیچیده بسیاری داشته باشد. به عنوان مثال ، یک فایل ورودی خوب شامل نمونه هایی از داده های ذخیره شده در تمام قالب ها ، از جمله رشته ها ، اعداد صحیح ، بولی ها ، لیست ها و موضوعات ، و همچنین در صورت امکان داده های تو در تو می باشد.
شما از Radamsa برای fuzz کردن یک برنامه خط فرمانی استفاده کرده اید. در مرحله بعد ، از Radamsa برای fuzz کردن درخواست ها برای خدمات شبکه استفاده خواهید کرد.
مرحله 4 – فوز کردن درخواست ها برای خدمات شبکه
Radamsa همچنین می تواند برای fuzzing سرویس های شبکه ، یا به عنوان مشتری یا سرور مجازی شبکه ، مورد استفاده قرار گیرد. در این مرحله ، از Radamsa برای fuzzing سرویس شبکه استفاده خواهید کرد که Radamsa به عنوان مشتری عمل می کند.
هدف از fuzzing خدمات شبکه ، آزمایش چگونگی انعطاف پذیری یک سرویس شبکه خاص برای مشتریانی است که داده های ناقص و / یا مخرب را ارسال می کنند. بسیاری از خدمات شبکه مانند سرور مجازی های وب یا سرور مجازی های DNS معمولاً در معرض اینترنت قرار دارند ، به این معنی که آنها یک هدف مشترک برای مهاجمان هستند. یک سرویس شبکه ای که به اندازه کافی در برابر دریافت داده های نادرست مقاوم نیست ممکن است کرش کند یا حتی بدتر از آن این که در وضعیت باز از کار بیفتد و به مهاجمان اجازه دهد داده های حساس مانند کلیدهای رمزگذاری یا داده های کاربر را بخوانند.
روش خاص برای fuzzing خدمات شبکه بسته به خدمات شبکه در آن بسیار متفاوت است، با این حال در این مثال ما از Radamsa استفاده خواهیم کرد تا یک سرور مجازی اصلی وب که محتوای HTMLاستاتیک را ارائه می دهد ، fuzz کند.
در مرحله اول ، شما باید سرور مجازی وب را تنظیم کنید تا از آن برای آزمایش استفاده کنید. شما می توانید این کار را با استفاده از سرور مجازی توسعه داخلی که همراه با بسته php-cli است انجام دهید. همچنین برای آزمایش سرور مجازی وب خود به curl نیاز دارید.
اگر php-cli و / یا curl نصب نکردید ، می توانید آنها را با استفاده از apt نصب کنید:
$ sudo apt install php-cli curl
بعد ، دایرکتوری ایجاد کنید تا فایل های سرور مجازی وب خود را در آن ذخیره کنید و به داخل آن بروید:

$ mkdir ~/www

$ cd ~/www
سپس ، یک فایل HTML ایجاد کنید که حاوی متن نمونه است
$ nano index.html

موارد زیر را به فایل اضافه کنید:
index.html
<h1>Hello, world!</h1>

اکنون می توانید سرور مجازی وب PHP خود را اجرا کنید. لازم است بتوانید ضمن استفاده از بخش ترمینال دیگر ، ورود به سیستم سرور مجازی وب را مشاهده کنید ، بنابراین یک بخش ترمینال و SSH دیگر را برای این کار باز کنید:
$ cd ~/www

$ php -S localhost:8080

این دستور خروجی شبیه به زیر را در پی خواهد داشت:
Output
PHP 7.2.24-0ubuntu0.18.04.1 Development Server started at Wed Jan 1 16:06:41 2020
Listening on http://localhost:8080
Document root is /home/user/www
Press Ctrl-C to quit.

اکنون می توانید به بخش ترمینال اصلی خود برگردید و آزمایش کنید که وب سرور مجازی با استفاده از curl کار می کند یا نه:
$ curl localhost:8080

با این کار نمونه فایل index.html که قبلاً ایجاد کرده اید به خروجی فرستاده می شود:
Output
<h1>Hello, world!</h1>

سرور مجازی وب شما فقط باید به صورت محلی قابل دسترسی باشد ، بنابراین نباید هیچ درگاهی در فایروال خود برای آن باز کنید.
اکنون که سرور مجازی وب تستی خود را تنظیم کرده اید ، می توانید با استفاده از Radamsa ، آن را fuzz کنید.
ابتدا باید یک نمونه HTTP نمونه ایجاد کنید تا از آن به عنوان داده ورودی برای Radamsa استفاده شود. یک فایل جدید برای ذخیره در آن ایجاد کنید:
$ nano http-request.txt

سپس ، درخواست HTTP نمونه زیر را در فایل کپی کنید:
http-request.txt
GET / HTTP/1.1
Host: localhost:8080
User-Agent: test
Accept: */*

در مرحله بعد ، می توانید از Radamsa برای ارسال این درخواست HTTP به سرور مجازی وب محلی خود استفاده کنید. برای انجام این کار ، باید از Radamsa به عنوان سرویس دهنده TCP استفاده کنید ، که می تواند با مشخص کردن آدرس IP و پورت برای اتصال به آن انجام شود:
$ radamsa -o 127.0.0.1:8080 http-request.txt

توجه: توجه داشته باشید که استفاده از Radamsa به عنوان مشتری TCP به طور بالقوه باعث می شود که داده های نادرست / مخرب از طریق شبکه منتقل شوند. این مسئله ممکن است مشکل ساز شود ، بنابراین باید فقط به شبکه هایی که مجاز به آزمایش آنها هستید دسترسی داشته باشید یا ترجیحا فقط از آدرس localhost (127.0.0.1) استفاده کنید.
در نهایت ، اگر گزارش های خروجی را برای سرور مجازی وب محلی خود مشاهده کنید ، خواهید دید که این درخواست ها را دریافت کرده است ، اما به احتمال زیاد آنها را به عنوان نامعتبر / نادرست پردازش نکرده است.
گزارش های خروجی در پنجره ترمینال دوم شما قابل مشاهده خواهند بود:
Output
[Wed Jan 1 16:26:49 2020] 127.0.0.1:49334 Invalid request (Unexpected EOF)
[Wed Jan 1 16:28:04 2020] 127.0.0.1:49336 Invalid request (Malformed HTTP request)
[Wed Jan 1 16:28:05 2020] 127.0.0.1:49338 Invalid request (Malformed HTTP request)
[Wed Jan 1 16:28:07 2020] 127.0.0.1:49340 Invalid request (Unexpected EOF)
[Wed Jan 1 16:28:08 2020] 127.0.0.1:49342 Invalid request (Malformed HTTP request)

برای دستیابی به نتایج بهینه و اطمینان از ثبت کرش ها ، بهتر است یک اسکریپت اتوماسیون مشابه آنچه در مرحله 3 استفاده شده است بنویسید. همچنین باید از یک فایل ورودی پیچیده تر استفاده کنید ، که ممکن است حاوی اضافاتی مانند هدرهای HTTP بیشتر باشد.
با استفاده از Radamsa که به عنوان یک سرویس دهنده TCP عمل می کند ، یک سرویس شبکه را fuzz کرده اید. در مرحله بعد ، یک سرویس دهنده شبکه را با Radamsa به عنوان سرور مجازی fuzz می کنید.
مرحله 5 – Fuzzing برنامه های مشتری شبکه
در این مرحله ، از Radamsa برای آزمایش fuzz کردن یک برنامه مشتری شبکه استفاده خواهید کرد. این کار با رهگیری پاسخ های یک سرویس شبکه و fuzz کردن آنها قبل از دریافت توسط مشتری حاصل می شود.
هدف از این نوع fuzzing ، آزمایش میزان مقاومت برنامه های مشتری شبکه در برابر دریافت داده های نادرست یا مخرب از خدمات شبکه است. به عنوان مثال ، آزمایش یک مرورگر وب (مشتری) کهHTML ناقص از یک سرور مجازی وب (سرویس شبکه) دریافت میکند یا آزمایش یک مشتری DNS که پاسخ DNS نادرست از یک سرور مجازی DNS دریافت منماید.
همانند مورد fuzzing برنامه های خط فرمان یا خدمات شبکه، تکنیک دقیق برای fuzzing هر برنامه سرویس دهنده شبکه بطور قابل توجهی متفاوت است ، اما در این مثال از Whois استفاده خواهید کرد که یک برنامه ارسال یا دریافت ساده مبتنی بر TCP است.
از برنامه whois برای ارسال درخواست به سرور مجازی های WHOIS و دریافت سوابق WHOIS به عنوان پاسخ استفاده می شود. WHOIS روی درگاه TCP 43 با متن واضح کار می کند ، و آن را به عنوان کاندیدای خوبی برای آزمایش fuzz مبتنی بر شبکه تبدیل می کند.
اگر قبلاً whois  را که نداشته اید ، می توانید آن را با استفاده از apt نصب کنید:
$ sudo apt install whois
در مرحله اول ، به نمونه پاسخ whoisنیاز خواهید داشت که از آن به عنوان داده ورودی استفاده کنید. شما می توانید این کار را با ایجاد درخواست whois و ذخیره کردن خروجی در یک فایل انجام دهید. شما می توانید از هر دامنه مورد نظر خود در اینجا استفاده کنید زیرا برنامه whois را بصورت محلی و با استفاده از داده های نمونه محلی آزمایش می کنید:
$ whois example.com > whois.txt
در مرحله بعد ، باید Radamsa را به عنوان سرور مجازی  تنظیم کنید که نسخه های fuzz شده این پاسخ whois را ارائه می دهد. هنگامی که Radamsa در حالت سرور مجازی کار می کند ، می توانید استفاده از ترمینال خود را ادامه دهید ، بنابراین توصیه می شود برای این کار بخش ترمینال و اتصال SSH دیگری را به سرور مجازی خود باز کنید:
اکنون Radamsa در حالت سرور مجازی TCP در حال اجرا است و هر زمان که اتصال به سرور مجازی برقرار شود ، بدون توجه به دریافت اطلاعات درخواست ، یک نسخه فازی از whois.txt را ارائه می دهد.
اکنون می توانید به آزمایش برنامه مشتری whois بروید. برای هر دامنه مورد نظر خود باید یک درخواست whois عادی را تهیه کنید (لازم نیست همان اطلاعاتی باشد که برای نمونه داده ها است) ، اما با whois به سرور مجازی محلی Radamsa خود اشاره کردید:
$ whois -h localhost:4343 example.com
پاسخ، داده های نمونه شما خواهد بود اما توسط Radamsa فوز شده است. تا زمانی که Radamsa در حال اجرا است می توانید به درخواست های خود به سرور مجازی محلی ادامه دهید و هر بار پاسخ فوز شده متفاوت را ارائه می دهد.
مانند fuzzing خدمات شبکه ، برای بهبود کارآیی این آزمایش کلاینت شبکه و اطمینان از یافت هر گونه کرش ، بهتر است یک اسکریپت اتوماسیون مشابه آنچه در مرحله 3 استفاده می شود بنویسید.
در این مرحله آخر ، از Radamsa برای انجام آزمایش fuzzing یک برنامه مشتری شبکه استفاده کردید.
نتیجه
در این مقاله Radamsa را تنظیم کرده اید و از آن برای فوز کردن یک برنامه خط فرمان ، یک سرویس شبکه و یک مشتری شبکه استفاده کردید. اکنون دانش بنیادی لازم برای آزمایش fuzzing برنامه های خود را دارید ، امیدوارم که نتیجه آن استحکام و مقاومت آنها در مقابل حمله باشد.
اگر می خواهید در مورد Radamsa بیشتر بدانید ، توصیه میشود فایل Radamsa README را با جزئیات مرور کنید ، زیرا حاوی اطلاعات فنی بیشتر و نمونه هایی از چگونگی استفاده از این ابزار است:
فایل README Radamsa
همچنین ممکن است بخواهید برخی از ابزارهای دیگر fuzzing مانند American Fuzzy Lop (AFL) را که یک ابزار فوز پیشرفته است و برای آزمایش برنامه های باینری با سرعت و دقت بسیار بالا طراحی شده است ، بررسی کنید:
American Fuzzy Lop

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

چگونگی استفاده از migrations و seeders دیتابیس –  نحوه نصب Docker Compose در Debian 10

نحوه نصب R روی اوبونتو 18.04  – چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد

چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04 –  نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8  –  نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP – بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose

مراحل ایمن سازی Apache HTTP در FreeBSD 12   –  بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript – استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو  –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8  – چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js  –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8  –  تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8  –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker  Quickstart –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –   مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04  –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7 –  نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

استفاده از Cron برای خودکارسازی کارها در اوبونتو 18 –

نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18  –

نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10  –

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

SSH یا همان پوسته ایمن پروتکل رمزگذاری شده است که برای اداره و برقراری ارتباط با سرور مجازی ها استفاده می شود. هنگام کار با سرور مجازی CentOS ، احتمالاً بیشتر وقت خود را در یک بخش ترمینال متصل به سرور مجازی خود از طریق SSH سپری خواهید کرد.
در این راهنما ، ما روی تنظیم کلیدهای SSH برای سرور مجازی CentOS 8 تمرکز خواهیم کرد. کلیدهای SSH روشی ساده و مطمئن برای ورود به سرور مجازی شما را ارائه می دهند و برای همه کاربران توصیه می شوند.
مرحله 1 – ایجاد جفت کلید RSA
اولین قدم ایجاد یک جفت کلیدی در دستگاه مشتری (معمولاً رایانه محلی شما) است:
$ ssh-keygen
به طور پیش فرض ، ssh-keygen یک جفت کلید RSA 2048 بیتی ایجاد می کند ، که برای اکثر موارد استفاده به اندازه کافی ایمن است (ممکن است شما به صورت اختیاری فلگ -b 4096 را ارائه دهید تا یک کلید بزرگتر 4096 بیتی ایجاد کنید).
پس از وارد کردن فرمان ، باید اعلان زیر را مشاهده کنید:
Output
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):

ENTER را فشار دهید تا جفت کلید را در زیردیرکتوری.ssh / در دیرکتوری هوم خود ذخیره کنید ، یا یک مسیر جایگزین را مشخص کنید.
اگر قبلاً یک جفت کلید SSH ایجاد کرده بودید ، ممکن است پیغام زیر را مشاهده کنید:
Output
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?

اگر تصمیم به بازنویسی کلید در دیسک دارید ، دیگر نمی توانید با استفاده از کلید قبلی ، تأیید اعتبار کنید. در انتخاب بله بسیار مراقب باشید ، زیرا این یک روند مخرب است که قابل برگشت نیست.
سپس باید اعلان زیر را مشاهده کنید:
Output
Enter passphrase (empty for no passphrase):

در اینجا ممکن است به صورت اختیاری یک عبارت عبور مطمئن را وارد کنید ، که بسیار توصیه می شود. یک عبارت عبور برای جلوگیری از ورود کاربران غیرمجاز ، یک لایه امنیتی دیگر به کلید شما اضافه می کند.
سپس باید خروجی زیر را مشاهده کنید:
Output
Your identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key’s randomart image is:
+–[ RSA 2048]—-+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+—————–+

اکنون یک کلید عمومی و خصوصی دارید که می توانید از آن برای تأیید اعتبار استفاده کنید. مرحله بعدی این است که کلید عمومی را روی سرور مجازی خود وارد کنید تا بتوانید از ورود مبتنی بر کلید SSH به سیستم استفاده کنید.
مرحله 2 – کپی کردن کلید عمومی روی سرور مجازی CentOS
سریعترین راه برای کپی کردن کلید عمومی خود در هاست CentOS ، استفاده از ابزاری به نام ssh-copy-id است. در صورت وجود، این روش بسیار توصیه می شود. اگر ssh-copy-id را در دستگاه مشتری خود ندارید ، میتوانید یکی از دو روش جایگزین زیر را دنبال کنید (کپی کردن از طریق SSH مبتنی بر گذرواژه یا کپی کردن کلید به صورت دستی).
کپی کردن کلید عمومی خود با استفاده از ssh-copy-id
ابزار ssh-copy-id بصورت پیش فرض در بسیاری از سیستم عامل ها گنجانده شده است ، بنابراین ممکن است شما آن را در سیستم محلی خود در دسترس داشته باشید. برای کار با این روش ، شما باید از قبل دسترسی SSH مبتنی بر رمز عبور به سرور مجازی خود را داشته باشید.
برای استفاده از این امکان ، فقط باید هاست از راه دور که می خواهید به آن متصل شوید و حساب کاربری که رمز ورود دسترسی SSH به آن را دارید مشخص کنید. این اکانتی است که کلید SSH عمومی شما در آن کپی می شود:
$ ssh-copy-id username@remote_host
ممکن است پیام زیر را مشاهده کنید:
Output
The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

این بدان معنی است که رایانه محلی شما هاست از راه دور را تشخیص نمی دهد. احتمالا اولین باری است که به هاست جدید وصل می شوید. بله را تایپ کنید و ENTER را برای ادامه فشار دهید.
در مرحله بعد ، این ابزار اکانت محلی شما را برای کلید id_rsa.pub که قبلاً ایجاد کردیم ، اسکن می کند. وقتی کلید را پیدا کرد ، از شما خواسته میشود رمز ورود به حساب کاربری از راه دور را وارد کنید:
Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
username@203.0.113.1’s password:

گذرواژه را وارد کنید (تایپ کردن شما برای اهداف امنیتی نمایش داده نمی شود) و ENTER را فشار دهید. این ابزار با استفاده از گذرواژه ای که شما ارائه داده اید ، به هاست از راه دور متصل می شود. سپس محتویات کلید ~ / .ssh / id_rsa.pub خود را در فایل ~/.ssh/authorized_keys اکانت از راه دور کپی می کند.
باید خروجی زیر را مشاهده کنید:
Output
Number of key(s) added: 1

Now try logging into the machine, with: “ssh ‘username@203.0.113.1′”
and check to make sure that only the key(s) you wanted were added.

در این مرحله ، کلید id_rsa.pub شما در حساب راه دور بارگذاری شده است. می توانید به مرحله 3 بروید.
کپی کردن کلید عمومی با استفاده از SSH
اگر ssh-copy-id را در دسترس ندارید ، اما دسترسی SSH مبتنی بر رمز عبور به یک حساب کاربری روی سرور مجازی خود را دارید ، می توانید کلیدهای خود را با استفاده از یک روش معمولی SSH بارگذاری کنید.
ما می توانیم این کار را با استفاده از دستور cat انجام دهیم تا محتوای کلید عمومی SSH را در رایانه محلی خود بخوانیم و از طریق اتصال SSH به سرور مجازی از راه دور pipe بزنیم.
از طرف دیگر ، می توانیم اطمینان حاصل کنیم که دیرکتوری ~ / .ssh وجود دارد و دارای مجوزهای صحیح تحت حسابی است که ما از آن استفاده می کنیم.
سپس می توانیم محتویاتی را که به آن پیوند زده ایم را درون یک فایل به نام authorized_keys در این دیرکتوری به خروجی بفرستیم. ما از نماد تغییر مسیر >> برای افزودن محتوا به جای رونوشت استفاده خواهیم کرد. این به ما امکان می دهد بدون از بین بردن کلیدهای قبلی اضافه شده ، کلیدهایی را اضافه کنیم.
فرمان کامل به این شکل است:
$ cat ~/.ssh/id_rsa.pub | ssh username@remote_host “mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys”
ممکن است پیام زیر را مشاهده کنید:
Output
The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

این بدان معنی است که رایانه محلی شما هاست از راه دور را تشخیص نمی دهد. احتمالا اولین باری است که به هاست جدید وصل می شوید. بله را تایپ کنید و ENTER را برای ادامه فشار دهید.
پس از آن ، از شما خواسته می شود رمزعبور حساب کاربری از راه دور را وارد کنید:
Output
username@203.0.113.1’s password:

پس از وارد کردن گذرواژه ، محتوای کلید id_rsa.pub شما در انتهای فایل authorized_keys حساب کاربری از راه دور کپی می شود. اگر موفقیت آمیز بود ، به مرحله 3 بروید.
کپی کردن کلید عمومی به صورت دستی
اگر دسترسی SSH مبتنی بر رمز عبور به سرور مجازی خود ندارید ، باید مراحل فوق را به صورت دستی انجام دهید.
ما به طور دستی محتوای فایل id_rsa.pub خود را به فایل ~/.ssh/authorized_keysدر دستگاه از راه دور شما اضافه خواهیم کرد.
برای نمایش محتوای کلید id_rsa.pub خود ، این دستور را در رایانه محلی خود تایپ کنید:
$ cat ~/.ssh/id_rsa.pub
محتوای کلید را مشاهده خواهید کرد ، که باید چیزی شبیه به این باشد:
Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host

با استفاده از روش دیگری که در دسترس دارید ، به هاست از راه دور خود وارد شوید.
پس از دسترسی به حساب کاربری خود در سرور مجازی راه دور ، باید اطمینان حاصل کنید که دیرکتوری ~ / .ssh وجود دارد. این دستور در صورت لزوم دایرکتوری ایجاد می کند یا در صورت وجود هیچ کاری انجام نمی دهد:
$ mkdir -p ~/.ssh
اکنون ، می توانید فایل authorized_keys را وارد کنید و یا اصلاح کنید. می توانید مطالب مربوط به فایل id_rsa.pub خود را به انتهای فایل authorized_keys اضافه کنید و در صورت لزوم با استفاده از این دستور آن را ایجاد کنید:
$ echo public_key_string >> ~/.ssh/authorized_keys
در دستور فوق ، public_key_string را با خروجی دستور cat ~/.ssh/id_rsa.pub که بر روی سیستم محلی خود اجرا کرده اید ، جایگزین کنید. باید با ssh-rsa AAAA… شروع شود .
سرانجام ، ما اطمینان خواهیم یافت که دیرکتوری ~ / .shsh و فایل authorized_keys مجموعه مجوزهای مناسب را دارند:
$ chmod -R go= ~/.ssh
به طور بازگشتی همه مجوزهای “group” و “other” را برای دیرکتوری ~ / .ssh / حذف می کند.
اگر برای تنظیم کلیدها برای یک حساب کاربری از root استفاده می کنید ، مهم است که دیرکتوری ~ / .ssh متعلق به کاربر باشد و نه برای root :
$ chown -R sammy:sammy ~/.ssh
در این آموزش کاربر Sammy نامگذاری شده است اما باید نام کاربری مناسب را در دستور فوق جایگزین کنید.
اکنون می توانیم با سرور مجازی CentOS خود احراز هویت مبتنی بر کلید را امتحان کنیم.
مرحله 3 – ورود به سرور مجازی CentOS با استفاده از کلیدهای SSH
اگر یکی از مراحل فوق را با موفقیت انجام داده اید ، اکنون می توانید بدون رمز ورود حساب راه دور وارد سیستم هاست راه دور شوید.
مرحله اولیه همانند احراز هویت مبتنی بر رمز عبور است:
$ ssh username@remote_host
اگر اولین بار است که به این هاست متصل می شوید (در صورتی که آخرین روش را در بالا استفاده کردید) ، ممکن است چیزی شبیه به این را مشاهده کنید:
Output
The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

این بدان معنی است که رایانه محلی شما هاست از راه دور را تشخیص نمی دهد. بله را تایپ کنید و سپس ENTER را برای ادامه فشار دهید.
اگر هنگام ایجاد جفت کلید خود در مرحله 1 ، عبارت عبور ارائه نکردید ، بلافاصله وارد سیستم می شوید. اگر یک عبارت عبور را ارائه کرده باشید، اکنون از شما خواسته می شود آن را وارد کنید. پس از تأیید اعتبار ، باید یک بخش پوسته جدید با حساب پیکربندی شده روی سرور مجازی CentOS باز شود.
اگر تأیید هویت مبتنی بر کلید موفقیت آمیز بود ، ادامه مطلب را بخوانید تا بیاموزید چگونه با غیرفعال کردن تأیید هویت مبتنی بر رمزعبور سرور مجازی SSH ، امنیت بیشتری در سیستم خود داشته باشید.
مرحله 4 – غیرفعال کردن احراز هویت (Authentication) رمز عبور در سرور مجازی شما
اگر توانستید با استفاده از SSH و بدون رمز ورود به حساب خود وارد شوید ، تأیید هویت مبتنی بر کلید SSH را با موفقیت پیکربندی کرده اید. با این حال ، مکانیسم تأیید اعتبار مبتنی بر رمز عبور شما هنوز فعال است ، به این معنی که سرور مجازی شما هنوز در معرض حملات جدی است.
قبل از انجام مراحل در این بخش ، مطمئن شوید که احراز هویت مبتنی بر کلید SSH را برای حساب اصلی در این سرور مجازی پیکربندی کرده اید ، یا ترجیحاً احراز هویت مبتنی بر کلید SSH را برای یک حساب غیر root در این سرور مجازی با امتیازات sudo پیکربندی کرده اید. در این مرحله، ورودهای مبتنی بر رمز عبور به سیستم قفل خواهد شد ، بنابراین بسیار مهم است اطمینان حاصل کنید که هنوز هم می توانید دسترسی ادمین داشته باشید.
هنگامی که تأیید کردید که حساب از راه دور شما دارای امتیازات ادمین است ، با کلیدهای SSH ، به صورت ریشه یا با یک حساب دارای امتیازات سودو وارد سرور مجازی راه دور خود شوید. سپس فایل پیکربندی Daemon SSH را باز کنید:
$ sudo vi /etc/ssh/sshd_config
در داخل فایل ، یک راهنمایی با نام PasswordAuthentication را جستجو کنید. ممکن است با # توضیح داده شود. i را فشار دهید تا vi را در حالت درج قرار دهید ، و سپس خط را uncomment کنید و مقدار را روی no تنظیم نمایید. با این کار توانایی ورود به سیستم از طریق SSH با استفاده از گذرواژه های اکانت غیرفعال می شود:
/etc/ssh/sshd_config

PasswordAuthentication no

پس از اتمام ایجاد تغییرات ، ESC و سپس: wq را برای نوشتن تغییرات در فایل فشار دهید و خارج شوید. برای اجرای واقعی این تغییرات ، باید سرویس sshd را مجدداً راه اندازی کنیم:
$ sudo systemctl restart sshd
برای احتیاط ، قبل از بستن بخش فعلی خود ، یک پنجره ترمینال جدید باز کنید و آزمایش کنید که سرویس SSH به درستی کار می کند:
$ ssh username@remote_host
هنگامی که تأیید کردید که سرویس SSH همچنان به درستی کار می کند ، می توانید با اطمینان تمام بخش های فعلی سرور مجازی را ببندید.
اکنون Daemon SSH در سرور مجازی CentOS شما فقط به کلیدهای SSH پاسخ می دهد. تأیید هویت مبتنی بر گذرواژه با موفقیت غیرفعال شد.
نتیجه
اکنون باید بتوانید تأیید هویت مبتنی بر کلید SSH را روی سرور مجازی خود پیکربندی کنید ، که به شما امکان می دهد بدون ارائه رمز ورود به حساب کاربری خود وارد شوید.
اگر می خواهید در مورد کار با SSH اطلاعات بیشتری کسب کنید ، به راهنمای ضروریات SSH ما نگاهی بیندازید.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

نحوه نصب Nginx در CentOS 8  –  استفاده از Cron برای خودکارسازی کارها در اوبونتو 18

پکیج کردن و انتشار برنامه Snap در اوبونتو 18 – نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18

استقرارهای تولید Node.js خود را با Shipit در CentOS 7 –  نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10

چگونگی استفاده از migrations و seeders دیتابیس  –  نحوه نصب Docker Compose در Debian 10

نحوه نصب R روی اوبونتو 18.04 – چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد

چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04  –  نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8 – نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP  –  بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose

مراحل ایمن سازی Apache HTTP در FreeBSD 12  – بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript  –  استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو  –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8   –  چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8 –   تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8 –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker  Quickstart  –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –  مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7 – نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04  –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

وقتی برای اولین بار یک سرور مجازی جدید CentOS 8 ایجاد می کنید ، چند مرحله پیکربندی وجود دارد که باید بعداً به عنوان بخشی از راه اندازی اولیه انجام دهید. این کار باعث افزایش امنیت و قابلیت استفاده سرور مجازی شما می شود و پایه و اساس محکمی را برای اقدامات بعدی به شما می دهد.
مرحله 1 – ورود به عنوان Root
برای ورود به سرور مجازی خود ، باید آدرس IP عمومی سرور مجازی خود را بدانید. به رمز عبور نیز احتیاج دارید یا اگر کلید SSH را برای تأیید اعتبار نصب کرده اید ، کلید خصوصی برای حساب کاربر root است. اگر قبلاً به سرور مجازی خود وارد نشده اید ، میتوانید مطالب مربوط به نحوه اتصال به دراپلت خود با SSH را دنبال کنید ، که این روند را با جزئیات پوشش می دهد.
اگر از قبل به سرور مجازی خود وصل نشده اید ، اکنون با استفاده از دستور زیر به عنوان کاربر root وارد سیستم شوید (بخش هایلایت شده فرمان را با آدرس IP عمومی سرور مجازی خود جایگزین کنید):
$ ssh root@ your_server_ip
در صورت وجود هشدار درباره تایید هاست، آن را اکسپت کنید. اگر از تأیید اعتبار استفاده می کنید ، رمز ورود خود را وارد کنید. اگر از یک کلید SSH استفاده می کنید که از عبارت عبور محافظت می شود ، ممکن است از شما خواسته شود اولین بار که از هر کلید استفاده می کنید ، کلمه عبور را وارد کنید. اگر این اولین بار است که با گذرواژه وارد سرور مجازی می شوید ، ممکن است از شما خواسته شود رمزعبور root را تغییر دهید.
درباره ریشه
کاربر root کاربر ادمین در محیط لینوکس است و امتیازات بسیار گسترده ای دارد. به دلیل افزایش امتیازات حساب اصلی ، بهتر است از استفاده منظم از آن خودداری کنید. این به آن دلیل است که بخشی از قدرت ذاتی حساب root ، توانایی ایجاد تغییرات بسیار مخرب ، حتی به طور تصادفی است.
به این ترتیب ، مرحله بعدی راه اندازی یک حساب کاربری جایگزین با محدوده کاهش نفوذ برای کار روزانه است. این حساب همچنان در صورت لزوم می تواند امتیازات بیشتری را کسب کند.
مرحله 2 – ایجاد یک کاربر جدید
پس از ورود به عنوان root ، می توانید از این پس حساب کاربری جدیدی را که ما برای ورود به سیستم استفاده خواهیم کرد ایجاد کنید.
این مثال یک کاربر جدید به نام sammy ایجاد می کند ، اما شما باید آن را با هر نام کاربری که ترجیح می دهید جایگزین کنید:
# adduser sammy
در مرحله بعد ، یک رمزعبور قوی برای کاربر sammy تنظیم کنید:
# passwd sammy
از شما خواسته می شود که رمز عبور را دو بار وارد کنید. پس از انجام این کار ، کاربر شما آماده استفاده خواهد بود ، اما ابتدا به این کاربر امتیازات اضافی می دهیم تا از دستور sudo استفاده کند. این به ما امکان می دهد در صورت لزوم دستورات را به عنوان root اجرا کنیم.
مرحله 3 – اعطای امتیازات ادمین
اکنون ، یک حساب کاربری جدید با امتیازات منظم حساب داریم. با این حال ، ممکن است گاهی اوقات به انجام کارهای ادمین نیاز داشته باشیم.
برای جلوگیری از عدم ورود کاربر عادی و ورود به سیستم به عنوان حساب اصلی ، می توانیم برای حساب عادی خود چیزی را که به عنوان “superuser” یا امتیازات اصلی شناخته می شود تنظیم کنیم. این به کاربر عادی ما امکان می دهد با قرار دادن کلمه sudo قبل از هر دستور ، دستوراتی را با امتیازات ادمین اجرا کند.
برای افزودن این امتیازات به کاربر جدید خود ، باید کاربر جدید را به گروه wheel اضافه کنیم. به طور پیش فرض ، در CentOS 8 ، کاربرانی که به گروه wheel تعلق دارند ، مجاز به استفاده از دستور sudo هستند.
به عنوان root ، این دستور را اجرا کنید تا کاربر جدید خود را به گروه wheel اضافه کنید (کلمه هایلایت شده را با نام کاربری جدید خود جایگزین کنید):
# usermod -aG wheel sammy
اکنون ، هنگامی که به عنوان کاربر معمولی خود وارد سیستم شدید، می توانید قبل از دستورات sudo را تایپ کنید تا اقدامات خود را با امتیازات فوق کاربری انجام دهید.
مرحله 4 – تنظیم فایروال ساده
فایروال ها سطح ساده امنیتی را برای سرور مجازی شما فراهم می کنند. این برنامه ها وظیفه رد ترافیک در هر پورت روی سرور مجازی شما را دارند ، به استثنای آن درگاه ها / خدماتی که صریحاً تأیید کرده اید. CentOS برای انجام این عملکرد خدماتی به نام firewalld دارد. ابزاری به نام firewall-cmd برای پیکربندی رویکردهای فایروال firewalld  استفاده می شود.
توجه: اگر سرور مجازی های شما روی vpsgol در حال اجرا هستند ، می توانید به طور اختیاری به جای فایروال UFW از vpsgol Cloud Firewalls  استفاده کنید. ما توصیه می کنیم فقط از یک فایروال در یک زمان استفاده کنید تا از قوانین متناقض برای رفع اشکال جلوگیری کنید.
ابتدا firewalld را نصب کنید:
# dnf install firewalld -y
پیکربندی پیش فرض firewalld امکان اتصال به ssh را فراهم می کند ، بنابراین می توانیم فایروال را فوراً روشن کنیم:
# systemctl start firewalld
وضعیت سرویس را بررسی کنید تا مطمئن شوید که شروع شده است:
# systemctl status firewalld
Output
firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-02-06 16:39:40 UTC; 3s ago
Docs: man:firewalld(1)
Main PID: 13180 (firewalld)
Tasks: 2 (limit: 5059)
Memory: 22.4M
CGroup: /system.slice/firewalld.service
└─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld –nofork –nopid

توجه داشته باشید که هم active  است و هم enabled باشد ، به این معنی که در صورت راه اندازی مجدد سرور مجازی به طور پیش فرض شروع شود.
اکنون که سرویس به روز شده است ، می توانیم از ابزار Firewall-cmd برای دریافت و تنظیم اطلاعات رویکردی برای فایروال استفاده کنیم.
ابتدا لیست کنید که کدام سرویس در حال حاضر مجاز است:
# firewall-cmd –permanent –list-all
Output
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

برای دیدن خدمات بیشتری که می توانید با نام خود فعال کنید ، این دستور را تایپ کنید:
# firewall-cmd –get-services
برای افزودن سرویس موردنیاز ، از فلگ –add service استفاده کنید:
# firewall-cmd –permanent –add-service=http
این سرویس http را اضافه می کند و باعث می شود که ترافیک TCP ورودی به پورت 80 وارد شود. پیکربندی بعد از بارگذاری مجدد فایروال به روز می شود:
# firewall-cmd –reload
بخاطر داشته باشید که مجبور خواهید بود برای هرگونه خدمات اضافی که بعداً پیکربندی خواهید کرد ، فایروال (با خدمات یا پورت ها ) را صریحا باز کنید.
مرحله 5 – فعال کردن دسترسی خارجی برای کاربر معمولی شما
اکنون که ما یک کاربر معمولی غیر ریشه برای استفاده روزانه داریم ، باید اطمینان حاصل کنیم که می توانیم از آن برای SSH به سرور مجازی خود استفاده کنیم.
توجه: تا زمانی که تأیید نکنید که می توانید با کاربر جدید خود وارد سیستم شوید و از sudo استفاده کنید ، توصیه می کنیم که به عنوان root وارد شوید. به این ترتیب ، اگر مشکلی دارید می توانید به عنوان root عیب یابی کرده و هرگونه تغییر لازم را انجام دهید. اگر از Droplet vpsgol استفاده می کنید و با اتصال SSH root خود مشکل دارید ، می توانید با استفاده از کنسول vpsgol وارد Droplet شوید.
روند پیکربندی دسترسی SSH برای کاربر جدید شما به این بستگی دارد که آیا حساب اصلی سرور مجازی شما از رمز عبور یا از کلیدهای SSH برای تأیید اعتبار استفاده می کند.
اگر حساب Root از تایید صحت (authentication) رمز عبور استفاده می کند
اگر با استفاده از گذرواژه وارد حساب اصلی خود شده اید ، تأیید رمز عبور برای SSH فعال می شود. با باز کردن بخش ترمینال جدید و استفاده از SSH با نام کاربری جدید خود می توانید به حساب کاربری جدید خود SSH کنید:
$ ssh sammy@your_server_ip
بعد از وارد کردن رمزعبور معمولی کاربر ، وارد سیستم می شوید. به یاد داشته باشید اگر نیاز به اجرای یک فرمان با امتیازات ادمین دارید ، قبل از این کار sudo را تایپ کنید:
$ sudo command_to_run
برای اولین بار در هر بخش (و به صورت دوره ای بعد از آن) رمزعبور کاربر معمولی از شما خواسته می شوید.
برای تقویت امنیت سرور مجازی خود ، ما به شدت توصیه می کنیم به جای استفاده از تایید صحت رمز عبور ، کلیدهای SSH را تنظیم کنید. برای یادگیری نحوه پیکربندی تایید صحت مبتنی بر کلید ، راهنمای ما را در مورد تنظیم کلیدهای SSH در CentOS 8 را دنبال کنید.
اگر حساب Root از authentication کلید SSH استفاده می کند
اگر با استفاده از کلیدهای SSH به حساب اصلی خود وارد شده اید ، تأیید رمز عبور برای SSH غیرفعال است. برای ورود موفقیت آمیز به سیستم ، باید یک کپی از کلید عمومی خود را به فایل ~/.ssh/authorized_keys کاربر جدید اضافه کنید.
از آنجا که کلید عمومی شما در حال حاضر در فایل ~/.ssh/authorized_keys حساب اصلی در سرور مجازی است ، می توانیم آن فایل و ساختار دیرکتوری را در حساب کاربری جدید خود کپی کنیم.
ساده ترین روش برای کپی کردن فایل ها با مالکیت صحیح و مجوزها ، با دستور rsync است. با این کار فهرست دایرکتوری کاربر root استفاده می شود ، مجوزها را نگه میدارد و صاحبان فایل را تغییر میدهد و همه این کارها را در یک دستور واحد انجام میدهد. اطمینان حاصل کنید که قسمت هایلایت شده فرمان زیر را تغییر دهید تا با نام کاربر معمولی شما مطابقت داشته باشد:
توجه: فرمان rsync با منابع و مقصدهایی که به یک اسلش ختم شده متفاوت از مواردی که بدون اسلش هستند ، رفتار می کند. هنگام استفاده از rsync در زیر ، مطمئن شوید که دیرکتوری منبع (~ / .ssh) شامل یک اسلش دنباله ای نباشد (بررسی کنید تا مطمئن شوید که از ~/.ssh/ استفاده نمی کنید).
اگر به طور اتفاقی یک اسلش دنباله دار را به این فرمان اضافه کنید ، rsync محتویات دیرکتوری ~ / .ssh حساب root را به جای کپی کردن کل ساختار دیرکتوری. / .ssh در دیرکتوری هوم کاربر سودو کپی می کند. فایل ها در مکان اشتباه قرار خواهند گرفت و SSH قادر به یافتن و استفاده از آنها نخواهد بود.
# rsync –archive –chown=sammy:sammy ~/.ssh /home/sammy
اکنون ، دوباره به ترمینال جدید در دستگاه محلی خود بروید، بخش SSH جدید را با کاربر غیر ریشه خود باز کنید:
$ ssh sammy@your_server_ip
بدون استفاده از رمز ورود باید به حساب کاربری جدید وارد شوید. به یاد داشته باشید ، اگر نیاز به اجرای یک فرمان با امتیازات ادمین داشتید ، sudo را قبل از آن تایپ کنید:
$ sudo command_to_run
برای اولین بار در هر بخش (و به صورت دوره ای بعد از آن) رمزعبور کاربر معمولی از شما خواسته می شوید.
نتیجه
در این مرحله ، شما یک پایه محکم برای سرور مجازی خود دارید. اکنون می توانید هرکدام از نرم افزارهای مورد نیاز خود را بر روی سرور مجازی خود نصب کنید.

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

نحوه نصب Nginx در CentOS 8  –  استفاده از Cron برای خودکارسازی کارها در اوبونتو 18

پکیج کردن و انتشار برنامه Snap در اوبونتو 18 – نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18

استقرارهای تولید Node.js خود را با Shipit در CentOS 7 –  نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10

چگونگی استفاده از migrations و seeders دیتابیس  –  نحوه نصب Docker Compose در Debian 10

نحوه نصب R روی اوبونتو 18.04 – چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد

چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04  –  نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8 – نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP  –  بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose

مراحل ایمن سازی Apache HTTP در FreeBSD 12  – بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript  –  استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو  –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8   –  چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8 –   تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8 –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker  Quickstart  –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –  مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7 – نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04  –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi