مقدمه
با حرکت ابزارهای توسعه دهنده به سمت 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-server
After=nginx.service
[Service]
Type=simple
Environment=PASSWORD=your_password
ExecStart=/usr/local/bin/code-server –host 127.0.0.1 –user-data-dir /var/lib/code-server –auth password
Restart=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
خروجی شبیه به زیر را خواهید دید:
Output
code-server.service – code-server
Loaded: 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 ago
Main 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 password
Dec 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:8080
Dec 19 19:24:44 code-server-centos code-server[1668]: info – Using custom password for authentication
Dec 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.conf
server {
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
خروجی زیر را مشاهده خواهید کرد:
utput
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
برای اینکه پیکربندی عملی شود ، باید Nginx را مجدداً راه اندازی کنید:
sudo systemctl restart nginx
CentOS 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 هدایت کنید:
Output
Please 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 for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):
توصیه می شود برای به حداکثر رساندن امنیت، گزینه دوم را انتخاب کنید. پس از وارد کردن انتخاب خود ، ENTER را فشار دهید.
خروجی مشابه این خواهد بود:
Output
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/code-server.your-domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/code-server.your-domain/privkey.pem
Your cert will expire on … To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the “certonly” option. To non-interactively renew *all* of
your certificates, run “certbot renew”
– Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making 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/donate
Donating 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 را بررسی کنید.
پاسخ ها