چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7 تنظیم كرد

مقدمهبا حرکت ابزارهای توسعه دهنده به سمت cloud ، ساخت و تطبیق پلتفرم های cloud IDE (محیط پیشرفت ادغام شده) در حال رشد است. Cloud IDE ها امکان همکاری در زمان واقعی بین تیم های توسعه دهنده را فراهم می کنند تا در یک محیط توسعه یکپارچه کار کنند که ناسازگاری ها را به حداقل می رساند و بهره وری را افزایش می دهد. IDE cloudها که از طریق مرورگرهای وب قابل دسترسی هستند ، از هر نوع دستگاه مدرن قابل استفاده اند.code-server یک کدMicrosoft Visual Studio است که روی یک سرور از راه دور اجرا می شود و مستقیماً از طریق مرورگر شما قابل دسترسی است. کد ویژوال استودیو یک ویرایشگر کد مدرن دارای پشتیبانی یکپارچه از Git ، اشکال زدایی کد ، تکمیل خودکار هوشمند و ویژگی های قابل تنظیم و قابل توسعه است. این بدان معنی است که می توانید از دستگاه های مختلفی که سیستم عامل های متفاوت را اجرا می کنند استفاده کنید و همیشه یک محیط توسعه مداوم داشته باشید.در این آموزش ، پلت فرم code-server cloud IDE را بر روی دستگاه CentOS 7 خود تنظیم کرده و آن را در دامنه خود قرار می دهید ، که با استفاده از گواهینامه های TLS Let’s Encrypt رایگان ایمن شده اند. در پایان ، کد مایکروسافت ویژوال استودیو را روی سرور CentOS 7 خود ، در دامنه خود در دسترس خواهید داشت که با یک رمز عبور محافظت می شود.پیش نیازهاسروری که CentOS 7 را با حداقل 2 گیگابایت رم ، دسترسی به روت و یک حساب سودو و غیر روت اجرا می کند. با دنبال کردن این راهنمای اولیه تنظیم سرور می توانید این تنظیمات را انجام دهید.Nginx روی سرور شما نصب شده است. برای راهنمایی در مورد نحوه انجام این کار ، به نحوه نصب Nginx در CentOS 7 مراجعه کنید.هر دو پرونده DNS زیر برای سرور شما تنظیم شده اند. برای جزئیات بیشتر در مورد چگونگی اضافه کردن آنها می توانید این مقدمه را در vpsgol DNS دنبال کنید.یک رکورد A با your-domain که به آدرس IP عمومی سرور شما اشاره میکند.یک رکورد A با www.your-domain که به آدرس IP عمومی سرور شما اشاره میکند.یک نام دامنه کاملاً ثبت شده برای کد سرور هاست، که به سرور شما اشاره میکند. در این آموزش از code-server.your-domain استفاده می شود. می توانید یک نام دامنه به اسم Namecheap خریداری کنید ، یکی از آنها را به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید.مرحله 1 – نصب کد سروردر این بخش کد سرور را روی سرور خود تنظیم می کنید. این کار مستلزم دانلود آخرین نسخه و ایجاد سرویس systemd است که کد سرور را همیشه در پس زمینه اجرا می کند. همچنین رویکرد مجدد را برای سرویس تعیین خواهید کرد ، به این ترتیب که کد سرور پس از خرابی یا راه اندازی مجدد احتمالی در دسترس باشد.همه داده های مربوط به کد سرور را در پوشه ای به نام ~ / code-server ذخیره می کنید. با اجرای دستور زیر آن را ایجاد کنید:mkdir ~/code-serverحرکت به سمت آن:cd ~/code-serverشما باید به صفحه انتشار نسخه های Github از کد سرور بروید و آخرین ساخت لینوکس را انتخاب کنید (نام فایل شامل “linux” است). در زمان نوشتن ، آخرین نسخه 2.1692 بود. با اجرای دستور زیر آن را با استفاده از curl دانلود کنید:curl -LO https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gzسپس با اجرای این دستور آرشیو را باز کنید:tar -xzvf code-server2.1692-vsc1.39.2-linux-x86_64.tar.gzپوشه ای دقیقاً به عنوان فایل اصلی که دانلود کرده اید ، تهیه می شود که شامل کد سرور قابل اجرا است. به آن فایل بروید:cd code-server2.1692-vsc1.39.2-linux-x86_64سرور کد قابل اجرا را در / usr / local / bin کپی کنید تا با اجرای دستور زیر بتوانید به سیستم گسترده ای از آن دسترسی داشته باشید:sudo cp code-server /usr/local/binسپس، یک پوشه برای سرور کد ایجاد کنید ، که در آن داده های کاربر را ذخیره می کند:sudo mkdir /var/lib/code-serverاکنون که کد سرور را دانلود کرده اید و آن را به صورت گسترده در دسترس سیستم قرار داده اید، یک سرویس سیستمی ایجاد خواهید کرد تا کد سرور را همیشه در پس زمینه اجرا کند.پیکربندی سرویس را در فایلی به نام code-server.service ، در دیرکتوری / usr / lib / systemd / system ذخیره خواهید کرد، جایی که systemd خدمات خود را ذخیره می کند. با استفاده از ویرایشگر vi آن را ایجاد کنید:sudo vi /usr/lib/systemd/system/code-server.serviceخطوط زیر را اضافه کنید:/usr/lib/systemd/system/code-server.service[Unit]Description=code-serverAfter=nginx.service[Service]Type=simpleEnvironment=PASSWORD=your_passwordExecStart=/usr/local/bin/code-server –host 127.0.0.1 –user-data-dir /var/lib/code-server –auth passwordRestart=always[Install]WantedBy=multi-user.targetدر اینجا ابتدا شرح خدمات را مشخص می کنید. سپس ، اعلام می کنید که سرویس nginx باید قبل از این شروع شود. بعد از بخش [Unit] نوع سرویس را تعریف می کنید (simple بدان معنی است که فرایند باید به سادگی اجرا شود) و فرمانی را که اجرا می شود ارائه می دهید.شما همچنین مشخص می کنید که کد سرور جهانی قابل اجرا باید با چند آرگومان خاص برای کد سرور آغاز شود. –host 127.0.0.1 آن را به localhost متصل می کند ، بنابراین فقط از داخل سرور شما قابل دسترسی است. –user-data-dir / var / lib / code-server دایرکتوری داده های کاربر خود را تنظیم می کند ، و –auth password مشخص می کند که باید بازدید کنندگان را با یک رمزعبور، مشخص شده در متغیر محیط PASSWORD اعلام شده در خط بالای آن ، تأیید کند.به یاد داشته باشید که your_password را با رمز عبور دلخواه خود جایگزین کنید. برای ذخیره و بستن فایل تایپ کنید: wq و سپس ENTER را بزنید.خط بعدی به systemd می گوید تا کد سرور را در تمام رویدادهای ناقص (برای مثال وقتی که دچار crash میشود یا فرآیند نابود میشود) مجددا راه اندازی کند. بخش [Install] به systemd سفارش می دهد تا در صورت امکان ورود به سرور خود ، این سرویس را شروع کند.با اجرای دستور زیر سرویس کد سرور را شروع کنید:sudo systemctl start code-serverبا مشاهده وضعیت آن بررسی کنید که درست شروع شده است:sudo systemctl status code-serverخروجی شبیه به زیر را خواهید دید:Outputcode-server.service – code-serverLoaded: loaded (/usr/lib/systemd/system/code-server.service; disabled; vendor preset: disabled)Active: active (running) since Thu 2019-12-19 19:24:42 UTC; 5s agoMain PID: 1668 (code-server)CGroup: /system.slice/code-server.service├─1668 /usr/local/bin/code-server –host 127.0.0.1 –user-data-dir /var/lib/code-server –auth password└─1679 /usr/local/bin/code-server –host 127.0.0.1 –user-data-dir /var/lib/code-server –auth passwordDec 19 19:24:42 code-server-centos systemd[1]: Started code-server.Dec 19 19:24:44 code-server-centos code-server[1668]: info Server listening on http://127.0.0.1:8080Dec 19 19:24:44 code-server-centos code-server[1668]: info – Using custom password for authenticationDec 19 19:24:44 code-server-centos code-server[1668]: info – Not serving HTTPSبرای شروع خودکار کد سرور پس از راه اندازی مجدد سرور ، سرویس آن را با اجرای دستور زیر فعال کنید:sudo systemctl enable code-serverدر این مرحله ، شما کد سرور را دانلود کرده و آن را در سطح جهانی در دسترس قرار داده اید. سپس ، شما یک سرویس systemd برای آن ایجاد و آن را فعال کرده اید ، بنابراین کد سرور از هر بوت سرور شروع می شود. در مرحله بعد ، با پیکربندی Nginx ، آن را در دامنه خود قرار می دهید تا به عنوان یک پروکسی معکوس بین بازدید کننده و کد سرور خدمت کند.مرحله 2 – قرار گرفتن کد سرور در معرض دامنه شمادر این بخش، Nginx را به عنوان یک پروکسی معکوس برای سرور کد پیکربندی می کنید.همانطور که در مرحله پیش نیاز Nginx آموخته اید، فایل های پیکربندی سایت آن در زیر /etc/nginx/conf.d ذخیره می شوند و با شروع Nginx بطور خودکار دانلود می شوند.شما پیکربندی را برای در معرض قرار گرفتن کد سرور در دامنه خود در فایلی به نامcode-server.conf ، تحت عنوان /etc/nginx/conf.d ذخیره می کنید. با استفاده از ویرایشگر خود شروع به کار کنید:sudo vi /etc/nginx/conf.d/code-server.confخطوط زیر را اضافه کنید:/etc/nginx/conf.d/code-server.confserver {listen 80;listen [::]:80;server_name code-server.your-domain;location / {proxy_pass http://localhost:8080/;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection upgrade;proxy_set_header Accept-Encoding gzip;}}code-server.your-domain خود را با دامنه مورد نظر خود جایگزین کنید، سپس فایل را ذخیره کنید و ببندید.در این فایل ، شما تعریف می کنید که Nginx باید به پورت HTTP 80 گوش دهد. سپس ، یک server_nameرا تعیین می کنید که به Nginx می گوید که کدام دامنه درخواست ها را بپذیرد و از این تنظیمات خاص استفاده کند.در بلوک بعدی ، برای مکان ریشه (/) ، شما تعیین می کنید که درخواست ها باید به کد سروری که در localhost:8080 در حال اجرا است ، در رفت و برگشت باشد: سه خط بعدی (که با proxy_set_header شروع میشوند) به Nginx دستور می دهند برخی از سرصفحات HTTP را که برای عملکرد صحیح WebSockets مورد نیاز هستند، که از سرورهای کد استفاده گسترده ای دارند، حمل کند.برای آزمایش اعتبار پیکربندی ، دستور زیر را اجرا کنید:sudo nginx -tخروجی زیر را مشاهده خواهید کرد:utputnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successfulبرای اینکه پیکربندی عملی شود ، باید Nginx را مجدداً راه اندازی کنید:sudo systemctl restart nginxCentOS 7 مجهز به SELinux است ، با یک آیین نامه سختگیرانه ، که به طور پیش فرض اجازه اتصال Nginx به سوکت های محلی TCP را نمی دهد. Nginx برای خدمت به عنوان یک پروکسی معکوس برای کد سرور ، باید در حال اجرا باشد. دستور زیر را اجرا کنید تا قاعده را به صورت دائمی آرام کنید:sudo setsebool httpd_can_network_connect 1 -Pسپس در مرورگر خود به سمت دامنه مورد استفاده برای کد سرور مجازی بروید. اعلان ورود به سیستم کد را مشاهده خواهید کرد.کد سرور از شما رمز عبور می خواهد. چیزی که در مرحله قبل تنظیم کردید را وارد کنید و Enter IDE را بزنید. اکنون کد سرور را وارد کرده و فوراً GUI ویرایشگر آن را مشاهده می کنید.اکنون نصب کد سرور مجازی شما در دامنه شما قابل دسترسی است. در مرحله بعدی ، با استفاده از یک گواهی نامه Let’s Encrypt TLS رایگان ، آن را ایمن خواهید کرد.مرحله 3 – دامنه خود را ایمن کنیددر این بخش دامنه خود را با استفاده از گواهی Let’s Encrypt TLS ، که با استفاده از Certbot ارائه می دهید ، تضمین می کنید.برای نصب آخرین نسخه Certbot و افزونه Nginx آن، دستور زیر را اجرا کنید:sudo yum install certbot python2-certbot-nginxبرای درخواست گواهی نامه برای دامنه خود ، دستور زیر را اجرا کنید:sudo certbot –nginx -d code-server.your-domainدر این دستور ، شما certbot را برای درخواست گواهینامه برای دامنه خود اجرا می کنید – نام دامنه را با پارامتر -d می گذرانید. فلگ –nginx به آن می گوید برای پشتیبانی از HTTPS ، پیکربندی سایت Nginx را به طور خودکار تغییر دهد. به یاد داشته باشید که دامنه code-server.your خود را با نام دامنه خود جایگزین کنید.اگر اولین بار است که Certbot را اجرا می کنید ، از شما خواسته می شود که یک آدرس ایمیل را برای اخطارهای فوری و قبول شرایط خدمات EFF وارد کنید. سپس Certbot از Let’s Encrypt برای گواهی دامنه شما درخواست می کند. سپس از شما سؤال می کند که آیا مایلید همه ترافیک HTTP را به HTTPS هدایت کنید:OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –1: No redirect – Make no further changes to the webserver configuration.2: Redirect – Make all requests redirect to secure HTTPS access. Choose this fornew sites, or if you’re confident your site works on HTTPS. You can undo thischange by editing your web server’s configuration.– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):توصیه می شود برای به حداکثر رساندن امنیت، گزینه دوم را انتخاب کنید. پس از وارد کردن انتخاب خود ، ENTER را فشار دهید.خروجی مشابه این خواهد بود:OutputIMPORTANT NOTES:– Congratulations! Your certificate and chain have been saved at:/etc/letsencrypt/live/code-server.your-domain/fullchain.pemYour key file has been saved at:/etc/letsencrypt/live/code-server.your-domain/privkey.pemYour cert will expire on … To obtain a new or tweakedversion of this certificate in the future, simply run certbot againwith the “certonly” option. To non-interactively renew *all* ofyour certificates, run “certbot renew”– Your account credentials have been saved in your Certbotconfiguration directory at /etc/letsencrypt. You should make asecure backup of this folder now. This configuration directory willalso contain certificates and private keys obtained by Certbot somaking regular backups of this folder is ideal.– If you like Certbot, please consider supporting our work by:Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donateDonating to EFF: https://eff.org/donate-leاین بدان معنی است که Certbot با موفقیت تولید گواهینامه TLS را انجام داده و آنها را در پیکربندی Nginx برای دامنه شما اعمال کرده است. اکنون می توانید دامنه کد سرور مجازی خود را در مرورگر خود مجدد لود کنید و یک padlock در سمت چپ آدرس سایت مشاهده کنید، به این معنی که اتصال شما به درستی ایمن شده است.اکنون کاری کردید که Certbot به طور خودکار گواهینامه ها را قبل از این که منقضی شوند تمدید کند. برای اجرای بررسی روزانه، از cron ، یک سرویس سیستم استاندارد برای انجام کارهای دوره ای استفاده خواهید کرد. شما با باز کردن و ویرایش فایلی به نام crontab ، corn را هدایت می کنید:sudo crontab -eاین دستور crontab پیش فرض را که در حال حاضر یک فایل متنی خالی است ، باز می کند. خط زیر را اضافه کنید ، سپس آن را ذخیره کرده و ببندید:crontab. . .15 3 * * * /usr/bin/certbot renew –quietدستور renew برای Certbot تمام گواهینامه های نصب شده روی سیستم را بررسی میکند و مواردی را که در کمتر از سی روز به پایان می رسند به روز می کند. –quiet به Certbot می گوید که اطلاعات را بیرون نکشید یا منتظر ورود کاربر نباشید.cron اکنون این دستور را روزانه اجرا می کند. تمام گواهینامه های نصب شده هنگامی که سی روز یا کمتر از این که منقضی شود به طور خودکار تجدید و لود می شوند.اکنون که کد سرور مجازی را از طریق یک پروکسی معکوس Nginx در دامنه خود دارید ، آماده بررسی واسط کاربری سرور کد هستید.مرحله 4 – استفاده از رابط کد-سرور مجازیدر این بخش از برخی از ویژگی های رابط کد-سرور مجازی استفاده خواهید کرد. از آنجا که کد-سرور مجازی کد ویژوال استودیو در حال اجرا در cloud است ، همان رابط مشابه نسخه دسکتاپ مستقل دارد.در سمت چپ IDE ، یک ردیف عمودی از شش دکمه وجود دارد که بیشترین ویژگی های مورد استفاده را در یک صفحه جانبی که با عنوان Activity Bar شناخته می شود باز می کند.این نوار قابل تنظیم است بنابراین می توانید این نماها را به ترتیب دیگری جابجا کنید یا آنها را از نوار حذف کنید. به طور پیش فرض ، اولین دکمه منوی کلی را به صورت کشویی باز می کند ، در حالی که نمای دوم پنل اکسپلورر را باز می کند که پیمایش درخت مانند از ساختار پروژه را فراهم می کند. می توانید پوشه ها و فایل های خود را در اینجا مدیریت کنید – ایجاد ، حذف ، جابجایی و تغییر نام را در صورت لزوم انجام دهید. نمای بعدی امکان دسترسی به جستجو و جایگزینی عملکرد را فراهم می کند.بعد از این ، به ترتیب پیش فرض ، نمای شما از سیستم های کنترل منبع مانند Git است. کد ویژوال استودیو همچنین از ارائه دهندگان دیگر کنترل منبع پشتیبانی می کند و می توانید در این مطالب دستورالعمل های بیشتری را برای جریان کار کنترل منبع با ویرایشگر پیدا کنید.گزینه اشکال زدایی در نوار فعالیت ، کلیه اقدامات متداول را برای اشکال زدایی در پنل ارائه می دهد. کد ویژوال استودیو با پشتیبانی داخلی برای اشکال زدایی زمان اجرا Node.js و هر زبانی که به Javascript تبدیل شود همراه است. برای سایر زبانها می توانید پسوندهایی را برای اشکالزدگی مورد نیاز نصب کنید. می توانید پیکربندی های اشکال زدایی را در پرونده start.json ذخیره کنید.نمای نهایی در نوار فعالیت، منویی را برای دسترسی به افزونه های موجود در Marketplace فراهم می کند.قسمت اصلی GUI ویرایشگر شماست که می توانید با استفاده از زبانه ها برای ویرایش کد خود جدا کنید. می توانید نمای ویرایش خود را به یک سیستم شبکه یا به فایل های جانبی تغییر دهید.پس از ایجاد فایل جدید از طریق منوی File ، یک فایل خالی در یک سربرگ جدید باز می شود و پس از ذخیره سازی ، نام فایل در صفحه جانبی Explorer قابل مشاهده خواهد بود. ایجاد پوشه ها را می توان با کلیک راست بر روی نوار کناری Explorer و کلیک بر روی New Folder انجام داد. می توانید پوشه ای را با کلیک روی نام آن و همچنین کشیدن و رها کردن فایل ها و پوشه ها به قسمتهای بالای لیست ترتیبی گسترش دهید تا آنها را به یک مکان جدید منتقل کنید.می توانید با زدن CTRL + SHIFT + `، یا با کلیک کردن بر روی ترمینال در منوی کشویی بالا، و انتخاب گزینه New Terminal، به ترمینال دسترسی پیدا کنید. ترمینال در یک پنل پایین تر باز خواهد شد و فهرست کار آن روی فضای کاری پروژه تنظیم می شود ، که شامل فایل ها و پوشه های نمایش داده شده در پانل سمت Explorer است.شما یک نمای کلی سطح بالا از رابط کد سرور مجازی را جستجو کرده اید و برخی از متداول ترین ویژگی ها را مرور کرده اید.نتیجهاکنون شما دارای کد سرور مجازی، یک cloud IDE همه کاره هستید که بر روی سرور CentOS 7 شما نصب شده است ، و در دامنه شما قرار گرفته و با استفاده از گواهی نامه های رمزگذاری ایمن شده است. هم اکنون می توانید بر روی پروژه ها بصورت جداگانه و همچنین در یک مجموعه همکاری تیمی کار کنید. اجرای cloud IDE منابع موجود در دستگاه محلی شما را آزاد می کند و به شما امکان می دهد منابع را در صورت لزوم مقیاس بندی کنید. برای اطلاعات بیشتر ، به ویژگی های اضافی و دستورالعمل های دقیق در مورد سایر مؤلفه های کد سرور ، به مطالب ویژوال استودیو مراجعه کنید.اگر مایل هستید کد سرور مجازی را روی خوشه vpsgol Kubernetes خود اجرا کنید ، آموزش ما در مورد چگونگی راه اندازی بستر رمزگذاری کد سرویس دهنده Cloud IDE در vpsgol Kubernetes را بررسی کنید.