CentOS 7

تنظیم برنامه Node.js برای تولید در CentOS 7

Node.js یک محیط زمان اجرای جاواسکریپت منبع باز است که می توانید برنامه های شبکه و سرور مجازی را به راحتی بسازید. این پلتفرم روی لینوکس ، OS X ، FreeBSD و ویندوز اجرا می شود و برنامه های آن به زبان JavaScript نوشته شده اند. برنامه های Node.js را می توان در خط فرمان اجرا کرد اما ما به شما یاد می دهیم که چگونه آنها را به عنوان یک سرویس اجرا کنید ، بنابراین به صورت خودکار در هنگام ریبوت یا خرابی مجدداً راه اندازی می شوند ، و می توانید از آنها در یک محیط تولید استفاده کنید.
در این آموزش ، تنظیم محیط Node.js آماده تولید را که از دو سرور مجازی CentOS 7 تشکیل شده است ، پوشش خواهیم داد. یک سرور مجازی برنامه های Node.js را مدیریت می کند که توسط PM2 اداره می شود ، و دیگری دسترسی به برنامه را از طریق یک پروکسی معکوس Nginx به سرور مجازی برنامه فراهم می کند.
نسخه اوبونتو این آموزش را می توان در این لینک پیدا کرد.
پیش نیازها
این راهنما از دو سرور مجازی CentOS 7 با شبکه خصوصی (در یک مرکز داده) استفاده می کند. شبکه های خصوصی را می توان در هنگام ایجاد (در بخش Select additional options) روی سرور مجازی های جدید پیکربندی کرد. با نامهای زیر را به آنها میدهیم:
app: سرور مجازی ی که در آن Node.js ، برنامه Node.js و PM2 را نصب خواهیم کرد .
web: سرور مجازیی که در آن سرور مجازی وب Nginx را نصب خواهیم کرد ، که به عنوان یک پروکسی معکوس برای برنامه شما عمل می کند. کاربران برای دریافت برنامه Node.js شما به آدرس IP عمومی این سرور مجازی دسترسی پیدا می کنند.
توجه: -گر قصد دارید از یک سرور مجازی موجود که در حال حاضر شبکه های خصوصی پیکربندی شده ندارد ، استفاده کنید، به مستندات vpsgol تحت عنوان نحوه فعال سازی شبکه خصوی روی دراپلت مراجعه کنید .
قبل از شروع این راهنما ، باید یک کاربر معمولی غیر ریشه داشته باشید که دارای امتیازات sudo و روی هر دو سرور مجازی شما تنظیم شده باشد – این همان کاربری است که باید با آن به سرور مجازی خود وارد شوید. با پیروی از راهنمای تنظیم اولیه سرور مجازی CentOS 7 می توانید نحوه پیکربندی یک حساب کاربری معمولی را یاد بگیرید.
دستورات اجرا شده بر روی سرور مجازی app:
⦁ $ an_example_command_on_app

دستورات اجرا شده بر روی سرور مجازی web:
⦁ $ an_example_command_on_web

استفاده از یک سرور مجازی واحد برای این آموزش امکان پذیر است ، اما باید در طول مسیر چند تغییر ایجاد کنید. هر جایی که از آدرس IP خصوصی سرور مجازی app استفاده میشود، به سادگی از آدرس IP localhost ، یعنی 127.0.0.1 استفاده کنید.
در اینجا نموداری از تنظیمات شما پس از دنبال کردن این آموزش آورده شده است:

اگر می خواهید به جای آدرس IP عمومی آن ، از طریق نام دامنه به سرور مجازی وب خود دسترسی پیدا کنید ، یک نام دامنه خریداری کنید و سپس این آموزش ها را دنبال کنید:
• نحوه تنظیم نام میزبان با vpsgol
• چگونه از ثبت کنندگان دامنه به نام سرور مجازی vpsgol اشاره کنیم
بیایید با نصب ران تایم Node.js در سرور مجازی app شروع کنیم.
مرحله 1 – نصب Node.js
آخرین نسخه LTS Node.js را بر روی سرور مجازی app نصب خواهیم کرد.
با استفاده از کاربر معمولی و غیر ریشه با امتیازات sudo به سرور مجازی app خود SSH کنید.
در سرور مجازی app ، اجازه دهید برای دانلود فایل پیکربندی مخزن NodeSource RPM از Curl استفاده کنیم:
⦁ $ curl -L -o nodesource_setup.sh https://rpm.nodesource.com/setup_10.x

CURL از پروتکل HTTPS برای دانلود اسکریپت ستاپ بر روی سرور مجازی شما استفاده می کند ، و خروجی شامل اطلاعات مربوط به دانلود میباشد:
Output
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 11109 100 11109 0 0 70128 0 –:–:– –:–:– –:–:– 70757

در مرحله بعد ، باید محتوای اسکریپت را بازرسی کنید. دستور زیر اسکریپت راه اندازی NodeSource را در کنسول سرور مجازی های شما باز می کند ، که می توانید با استفاده از اسکریپت راه اندازی NodeSource (از مخزن Github توزیع های NodeSource) برای تأیید صحت اسکریپتی که به درستی دانلود کرده است ، cross-reference انجام دهید:
⦁ $ vi nodesource_setup.sh

پس از رضایت از فایل ، با تایپ کردن: q از vi خارج شوید تا به خط فرمان بازگردید.
اکنون بیایید اسکریپت تنظیم را اجرا کنیم تا مخزن NodeSource RPM را نصب کنیم. این کار ما را قادر می سازد از داخل مدیر بسته yum به مخزن NodeSource دسترسی پیدا کنیم:
⦁ $ sudo -E bash nodesource_setup.sh

اسکریپت برای مرجع ما اطلاعات مربوط به ستاپ را صادر می کند:
Output
## Installing the NodeSource Node.js 10.x repo…

## Inspecting system…

+ rpm -q –whatprovides redhat-release ||

rpm -q –whatprovides centos-release || rpm -q –whatprovides cloudlinux-release || rpm -q –whatprovides sl-release
+ uname -m

## Confirming “el7-x86_64” is supported…

+ curl -sLf -o /dev/null ‘https://rpm.nodesource.com/

pub_10.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm’

## Downloading release setup RPM…

+ mktemp
+ curl -sL -o ‘/tmp/tmp.2aCcULVx8n’ ‘

https://rpm.nodesource.com/pub_10.x/el/

7/x86_64/nodesource-release-el7-1.noarch.rpm’

## Installing release setup RPM…

+ rpm -i –nosignature –force ‘/tmp/tmp.2aCcULVx8n’

## Cleaning up…

+ rm -f ‘/tmp/tmp.2aCcULVx8n’

## Checking for existing installations…

+ rpm -qa ‘node|npm’ | grep -v nodesource

## Run `sudo yum install -y nodejs` to install Node.js 10.x and npm.
## You may also need development tools to build native addons:
sudo yum install gcc-c++ make
## To install the Yarn package manager, run:
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install yarn

قبل از نصب Node.js مهم است که تمام اطلاعات ذخیره شده از yum را پاک کنید. پاک کردن حافظه نهان اطمینان حاصل خواهد کرد که yum از اتصال شبکه برای دریافت Node.js از مخازن جدید NodeSource ما استفاده می کند (که از بروز هرگونه درگیری احتمالی ناشی از بسته های منسوخ شده جلوگیری می کند):
⦁ $ sudo yum clean all

در مرحله بعد همه ابرداده ها را برای repo های yum فعال شده دانلود و استفاده خواهیم کرد. این کار اطمینان حاصل می کند که جستارهای yum ما در اسرع وقت تکمیل میشوند:
⦁ $ sudo yum makecache fast

برای کامپایل و نصب add-ons بومی از npm نیز باید ابزارهای ساخت را نصب کنیم:
⦁ $ sudo yum install -y gcc-c++ make

اکنون می توانیم آخرین نسخه بسته Node.js را نصب کنیم:
⦁ $ sudo yum install -y nodejs

با بررسی نسخه خود با این دستور ، تأیید کنید که Node نصب شده است:
⦁ $ node -v

خروجی شما شماره نسخه شما را نشان می دهد:
اکنون ران تایم Node.js نصب شده است و آماده اجرای یک برنامه است. بیایید یک برنامه Node.js بنویسیم.
مرحله 2 – ایجاد برنامه Node.js
اکنون یک برنامه Hello World ایجاد خواهیم کرد که به سادگی “Hello World” را به هر درخواست HTTP باز می گرداند. این یک برنامه نمونه است که به شما در راه اندازی Node.js کمک می کند ، که می توانید برنامه خود را جایگزین آن کنید فقط مطمئن شوید که برنامه خود ر به گونه ای اصلاح کرده اید که به آدرس های IP و پورت های مناسب گوش دهید.
از آنجا که می خواهیم برنامه Node.js ما درخواستهایی را که از سرور مجازی پروکسی معکوس (web) می آیند ، ارائه کند ، ما از رابط شبکه خصوصی سرور مجازی app خود برای ارتباطات بین سرور مجازی استفاده خواهیم کرد. آدرس شبکه خصوصی سرور مجازی app خود را جستجو کنید.
اگر از یک دراپلت vpsgol به عنوان سرور مجازی خود استفاده می کنید ، می توانید آدرس IP خصوصی سرور مجازی را از طریق سرویس Metadata جستجو کنید. در سرور مجازی app ، از دستور curl برای بازیابی آدرس IP استفاده کنید:
⦁ $ curl -sw “\n” http://169.254.169.254/metadata

/v1/interfaces/private/0/ipv4/address

بهتر است خروجی (آدرس IP خصوصی) را کپی کنید ، زیرا برای پیکربندی برنامه Node.js استفاده خواهد شد.
در مرحله بعد ، برنامه Node.js خود را برای ویرایش ایجاد و باز کنید. برای این آموزش از vi برای ویرایش یک برنامه نمونه به نام hello.js استفاده خواهیم کرد:
⦁ $ vi hello.js

کد زیر را در فایل وارد کنید و حتما آدرس IP خصوصی سرور مجازی app را برای هر دو مورد هایلایت شده APP_PRIVATE_IP_ADDRESS جایگزین کنید. در صورت تمایل ، می توانید در هر دو مکان ، پورت هایلایت شده ، 8080 را جایگزین کنید (حتما از پورت غیر ادمین ، یعنی 1024 یا بالاتر استفاده کنید):
hello.js
var http = require(‘http’);
http.createServer(function (req, res) {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Hello World\n’);
}).listen(8080, ‘APP_PRIVATE_IP_ADDRESS’);
console.log(‘Server running at http://APP_PRIVATE_IP_ADDRESS:8080/’);

اکنون با فشار دادن ESC برای خروج از حالت –INSERT—فایل را ذخیره کنید و از آن خارج شوید ، و پس از آن: wq را برای نوشتن و ترک برنامه در یک فرمان واحد وارد کنید.
این برنامه Node.js به سادگی آدرس و پورت IP مشخص شده را دنبال می دهد و “Hello World” را با یک کد موفقیت 200 HTTP برمی گرداند. بدان معنا که برنامه فقط از سرور مجازی های همان شبکه خصوصی مانند سرور مجازی وب ما قابل دسترسی است.
اگر می خواهید تست کنید که برنامه شما کار می کند ، این دستور node را روی سرور مجازی app اجرا کنید:
⦁ $ node hello.js

توجه: اجرای یک برنامه Node.js به این روش ، دستورات اضافی را مسدود می کند تا اینکه با فشار دادن CTRL + C ، برنامه بسته شود.

اگر برای اولین بارآزمایش کنیم که سرور مجازی web ما قادر به برقراری ارتباط با برنامه Node.js در app است ، مقدار زیادی از اشکال زدایی Nginx ذخیره می شود.
برای تست برنامه ، بخش ترمینال دیگری را باز کرده و به سرور مجازی web خود متصل شوید. از آنجا که سرور مجازی web در همان شبکه خصوصی قرار دارد ، باید بتواند با استفاده از curl به آدرس IP خصوصی سرور مجازی app برسد. حتماً در آدرس IP سرور مجازی app ، APP_PRIVATE_IP_ADDRESS و پورت را در صورت تغییر جایگزین کنید:
⦁ $ curl http://APP_PRIVATE_IP_ADDRESS:8080

اگر خروجی زیر را مشاهده کنید ، برنامه به درستی کار می کند و آدرس و پورت IP مناسب را گوش می دهد:
Node Application Output
Hello World

اگر خروجی مناسب را نمی بینید ، مطمئن شوید که برنامه Node.js شما در حال اجرا است و برای گوش دادن به آدرس IP و درگاه مناسب پیکربندی شده است.
در سرور مجازی app ، با فشار دادن CTRL + C ، برنامه را به اجبار ببندید.
مرحله 3 – نصب و استفاده از PM2
اکنون PM2 را نصب خواهیم کرد که یک مدیر پروسه برای برنامه های Node.js است. PM2 روشی آسان برای مدیریت و daemon کردن برنامه ها (اجرای آنها به عنوان یک سرویس) فراهم می کند.
ما برای نصب PM2 روی سرور مجازی app خود از ماژول های بسته بندی شده Node (NPM) استفاده خواهیم کرد که در واقع یک مدیر بسته برای ماژول های Node است که با Node.js نصب می کند. برای نصب PM2 از این دستور استفاده کنید:
⦁ $ sudo npm install pm2@latest -g

ما چند کاربرد اصلی PM2 را پوشش خواهیم داد.
اولین کاری که باید انجام دهید اینست که از دستور pm2 start برای اجرای برنامه خود ، hello.js ، در پس زمینه استفاده کنید:
⦁ $ pm2 start hello.js

این کار همچنین برنامه شما را به لیست فرآیند PM2 اضافه می کند ، که با هر بار شروع برنامه، خروجی به بیرون میفرستد:
Output
┌──────────┬────
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├──────────┼──────
│ hello │ 0 │ fork │ 30099 │ online │ 0 │ 0s │ 14.227 MB │ disabled │
└────────────

همانطور که مشاهده می کنید ، PM2 بطور خودکار نام برنامه (بر اساس نام فایل ، بدون پسوند .js) و شناسه PM2 را اختصاص می دهد. PM2 همچنین اطلاعات دیگری مانند PID روند ، وضعیت فعلی آن و استفاده از حافظه را نگه میدارد.
برنامه هایی که تحت PM2 در حال اجرا هستند در صورت خراب شدن برنامه یا بسته شدن برنامه به صورت خودکار مجدداً راه اندازی می شوند ، اما برای شروع برنامه (بوت یا ریبوت)، باید یک گام دیگر انجام شود. خوشبختانه ، PM2 با فرمان startup  راهی آسان برای انجام این کار فراهم می کند.
فرمان فرعی startup  برای راه اندازی PM2 و فرآیندهای مدیریت شده آن روی بوت های سرور مجازی ، یک اسکریپت راه اندازی ایجاد و پیکربندی می کند. در مورد مثال ما ، باید سیستم اولیه در حال اجرا که systemd است را مشخص کنید:
⦁ $ sudo pm2 startup systemd

خروجی مانند زیر را مشاهده خواهید کرد ، که نشان می دهد سرویس PM2 نصب شده است:
Output
[PM2] Generating system init script in /etc/systemd/system/pm2.service
[PM2] Making script booting at startup…
[PM2] -systemd- Using the command:
su root -c “pm2 dump && pm2 kill” && su root -c “systemctl daemon-reload && systemctl enable pm2 && systemctl start pm2”
[PM2] Dumping processes
[PM2] Stopping PM2…
[PM2] All processes have been stopped and deleted
[PM2] PM2 stopped
[PM2] Done.

برای اطمینان از اینکه PM2 می داند از چه برنامه هایی برای شروع کار استفاده می کند ، باید لیست روند فعلی را ذخیره کنیم. برای ذخیره لیست:
⦁ $ pm2 save

خروجی مانند زیر را مشاهده خواهید کرد ، که نشان می دهد لیست فرآیند PM2 ذخیره شده است:
Output
[PM2] Saving current process list…
[PM2] Successfully saved in /home/deployer/.pm2/dump.pm2

اکنون برنامه های مدیریت شده PM2 شما باید بطور خودکار در بوت شروع شوند.
PM2 فرمان های فرعی زیادی را در اختیار شما قرار می دهد تا بتوانید اطلاعات مربوط به برنامه های خود را مدیریت و جستجو کنید. توجه داشته باشید که اجرای PM2 بدون هیچگونه آرگومانی ، صفحه راهنمایی شامل استفاده مثال را نمایش می دهد که استفاده از PM2 را با جزئیات بیشتر از این بخش از آموزش پوشش می دهد.
یک برنامه را با این دستور متوقف کنید (نام برنامه یا شناسه PM2 برنامه را مشخص کنید):
⦁ $ pm2 stop example

برنامه را با این دستور مجدداً راه اندازی کنید (نام برنامه یا شناسه PM2 برنامه را مشخص کنید):
⦁ $ pm2 restart example

لیست برنامه هایی که در حال حاضر توسط PM2 مدیریت می شوند را می توان با فرمان فرعی list جستجو کرد:
⦁ $ pm2 list

با استفاده از فرمان فرعی info می توانید اطلاعات بیشتری در مورد یک برنامه خاص را پیدا کنید (نام یا شناسه برنامه PM2 را مشخص کنید):
⦁ $ pm2 info example

مانیتور فرآیند PM2 را می توان با فرمان فرعی monit انجام داد. این کار وضعیت برنامه ، CPU و استفاده از حافظه را نشان می دهد:
⦁ $ pm2 monit

توجه: اجرای دستور monit PM2 دستورات اضافی را مسدود می کند تا برنامه با فشار دادن CTRL + C بسته شود.
اکنون که برنامه Node.js شما در حال اجرا و توسط PM مدیریت می شود، بیایید پروکسی معکوس را تنظیم کنیم.
مرحله 4 – تنظیم سرور مجازی پروکسی معکوس Nginx
اکنون که برنامه شما در حال اجراست و یک آدرس IP خصوصی را شنود میکنید، باید راهی برای دسترسی کاربران خود تنظیم کنید. ما یک سرور مجازی وب Nginx را به عنوان یک پروکسی معکوس برای این منظور تنظیم می کنیم. این آموزش یک سرور مجازی Nginx را از scratchتنظیم می کند. اگر قبلاً تنظیمات سرور مجازی Nginx را انجام داده اید ، می توانید فقط بلوک location را در بلوک سرور مجازی مورد نظر خود کپی کنید (اطمینان حاصل کنید که location با هیچ بخشی از محتوای موجود سرور مجازی وب شما مغایرت نداشته باشد).
در سرور مجازی web ، بیایید بسته epel-releaseرا با استفاده از yum نصب کنیم:
⦁ $ sudo yum install epel-release

سپس Nginx را نصب کنید:
⦁ $ sudo yum install nginx

اکنون فایل پیکربندی Nginx را برای ویرایش باز کنید:
⦁ $ sudo vi /etc/nginx/nginx.conf

ابتدا خطی را که server_name تعریف شده است ، در بلوک پیش فرض سرور مجازی پیدا کنید. باید چیزی شبیه به این باشد:
nginx.conf excerpt — server_name (before)
server_name _;

نام سرور مجازی را به روز کنید تا زیرنویس (_) را با نام دامنه خود برای دستور server_name جایگزین کنید (یا اگر آدرس دامنه ندارید آدرس IP را جایگزین کنید).
nginx.conf excerpt — server_name (after)
server_name your-domain;

سپس خطی را که location/ تعریف شده است (معمولاً چند خط زیر server_name) ، در همان بلوک پیش فرض سرور مجازی پیدا کنید. باید چیزی شبیه به این باشد:
nginx.conf excerpt — location / (before)
location / {
}

آن را با بلوک کد زیر جایگزین کنید و مطمئن شوید آدرس IP خصوصی سرور مجازی app را جایگزین APP_PRIVATE_IP_ADDRESS کنید. علاوه بر این ، در صورت تنظیم برنامه برای گوش دادن به پورت های مختلف، پورت (8080) را تغییر دهید:
/etc/nginx/nginx.conf excerpt — location / (after)
location / {
proxy_pass http://APP_PRIVATE_IP_ADDRESS:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

این کار سرور مجازی web را پیکربندی می کند تا به عنوان ریشه به درخواست ها پاسخ دهد. با فرض اینکه سرور مجازی ما در your-domain موجود است ، دسترسی به http://your-domain/ از طریق یک مرورگر وب ، درخواست را به آدرس IP خصوصی سرور مجازی app در پورت 8080 ارسال می کند ، که توسط Node.js دریافت و به آن پاسخ داده میشود.
برای دسترسی به سایر برنامه ها در همان سرور مجازی web ، می توانید بلوک های location بیشتری را به همان سرور مجازی اضافه کنید. به عنوان مثال ، اگر برنامه node.js دیگری را در سرور مجازی app در پورت 8081 اجرا کرده اید ، می توانید این بلوک location را اضافه کنید تا از طریق http: // your-domain / app2 به آن دسترسی داشته باشید:
Nginx Configuration — Additional Locations
location /app2 {
proxy_pass http://APP_PRIVATE_IP_ADDRESS:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

پس از انجام ویرایش بلوک (های) مکان برای برنامه (های) خود ، آن را ذخیره کنید با فشار دادن ESC از حالت –INSERT– ، خارج شوید ، به دنبال آن: wq را برای نوشتن و ترک کردن در یک فرمان واحد تایپ کنید.
در سرور مجازی وب ، Nginx را مجدداً راه اندازی کنید:
$ sudo systemctl start nginx

سپس می خواهیم اطمینان حاصل کنیم که Nginx هر زمان که سرور مجازی ریستارت شود ، اجرا خواهد شد:
⦁ $ sudo systemctl enable nginx

دستور enable باید خروجی زیر را ارائه دهد
Output
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

همچنین با درخواست وضعیت آن از systemctl می توانید تأیید کنید که Nginx در حال اجرا و فعال است.
⦁ $ sudo systemctl status nginx

دستور وضعیت اطلاعات پیکربندی را برای سرویس Nginx ارائه می دهد
Output
● nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-10-14 09:37:23 UTC; 3min 29s ago
Main PID: 12818 (nginx)
CGroup: /system.slice/nginx.service
├─12818 nginx: master process /usr/sbin/nginx
└─12819 nginx: worker process

Oct 14 09:37:23 centos-s-1vcpu-1gb-sgp1-01 systemd[1]: Starting The nginx HTTP and reverse proxy server…
Oct 14 09:37:23 centos-s-1vcpu-1gb-sgp1-01 nginx[12814]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Oct 14 09:37:23 centos-s-1vcpu-1gb-sgp1-01 nginx[12814]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Oct 14 09:37:23 centos-s-1vcpu-1gb-sgp1-01 systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
Oct 14 09:37:23 centos-s-1vcpu-1gb-sgp1-01 systemd[1]: Started The nginx HTTP and reverse proxy server.

سرانجام ، امکان انتقال مجدد ترافیک از طریق لینوکس با امنیت بالا (SELinux) را به Nginx ارائه میدهد. SELinux یک لایه امنیتی را فراهم می کند که کنترل دسترسی اجباری (MAC) را در هسته لینوکس پیاده سازی می کند. هر شیء سیستم عامل (پردازش ، توصیف کننده فایل ، فایل و غیره) با یک مفهوم SELinux برچسب گذاری شده است که مجوزها و عملکردهایی را که شی می تواند انجام دهد ، مشخص می کند.
Nginx با متن httpd_t برچسب گذاری شده است و در نتیجه ، پیکربندی هایی دارد توسط SELinux مسدود شده است ، مگر اینکه صریحاً مجاز باشد. برای نشان دادن این مسئله، دستور زیر را اجرا کنید تا تأیید کنید که سرویس Nginx دارای برچسب httpd_t است:
⦁ $ ps -eZ

این دستور اطلاعات مربوط به وضعیت فرآیند را ارائه می دهد ، اطلاعات مربوط به فرآیند خاص Nginx را برای دیدن برچسب جستجو میکند. شما httpd_t را به روشی مشابه زیر مشاهده خواهید کرد:
Output

system_u:system_r:httpd_t:s0 10208 ? 00:00:00 nginx
system_u:system_r:httpd_t:s0 10209 ? 00:00:00 nginx

اکنون بیایید وضعیت بولی های پیش فرض (متغیر دو بایتی) مربوط به برچسب httpd_t SELinux را بررسی کنیم. می توانیم با اجرای دستور زیر این اطلاعات را نشان دهیم:
⦁ $ $ getsebool -a

برای این آموزش فقط به بولی های مربوط به httpd علاقه مند هستیم:
Output

httpd_anon_write –> off
httpd_builtin_scripting –> on
httpd_can_check_spam –> off
httpd_can_connect_ftp –> off
httpd_can_connect_ldap –> off
httpd_can_connect_mythtv –> off
httpd_can_connect_zabbix –> off
httpd_can_network_connect –> off
httpd_can_network_connect_cobbler –> off
httpd_can_network_connect_db –> off
httpd_can_network_memcache –> off
httpd_can_network_relay –> off
httpd_can_sendmail –> off
httpd_dbus_avahi –> off
httpd_dbus_sssd –> off
httpd_dontaudit_search_dirs –> off
httpd_enable_cgi –> on
httpd_enable_ftp_server –> off
httpd_enable_homedirs –> off
httpd_execmem –> off
httpd_graceful_shutdown –> on
httpd_manage_ipa –> off
httpd_mod_auth_ntlm_winbind –> off
httpd_mod_auth_pam –> off
httpd_read_user_content –> off
httpd_run_ipa –> off
httpd_run_preupgrade –> off
httpd_run_stickshift –> off
httpd_serve_cobbler_files –> off
httpd_setrlimit –> off
httpd_ssi_exec –> off
httpd_sys_script_anon_write –> off
httpd_tmp_exec –> off
httpd_tty_comm –> off
httpd_unified –> off
httpd_use_cifs –> off
httpd_use_fusefs –> off
httpd_use_gpg –> off
httpd_use_nfs –> off
httpd_use_openstack –> off
httpd_use_sasl –> off
httpd_verify_dns –> off

این دو بولی خاص ، httpd_can_network_connect و httpd_can_network_relay هستند. مستندات Redhat جزئیات مربوط به هر یک از بولی های httpd و عملکرد مرتبط با آنها را ارائه می دهد (در صورتی که تمایل به کسب اطلاعات بیشتر در مورد هر بولی دارید) ، اگرچه در زیر توضیحات دو بولی که مربوط به این آموزش است آورده شده است:

httpd_can_network_connect: When disabled, this Boolean prevents HTTP scripts and modules from initiating a connection to a network or remote port. Enable this Boolean to allow this access.
httpd_can_network_relay: Enable this Boolean when httpd is being used as a forward or reverse proxy.

از آنجا که پیکربندی ما فقط ترافیک را رله می کند ، فقط باید به SELinux بگوییم که سرور مجازی httpd ، در مورد ما Nginx ، می تواند از شبکه برای رله ترافیک در پیکربندی پروکسی معکوسی که تنظیم کرده ایم استفاده کند. ما از پرچم -P استفاده خواهیم کرد ، تا اطمینان حاصل شود که تغییرات دائمی هستند (حذف این پرچم منجر به بازگشت httpd_can_network_relay به حالت پیش فرض آن ، یعنی خاموش ، با راه اندازی مجدد سرور مجازی خواهد شد):
⦁ $ sudo setsebool -P httpd_can_network_relay on

با فرض اینکه برنامه Node.js شما در حال اجرا است ، و برنامه شما و تنظیمات Nginx صحیح هستند ، باید بتوانید از طریق پروکسی معکوس سرور مجازی web به برنامه خود دسترسی پیدا کنید. با دسترسی به URL سرور مجازی web خود (آدرس IP عمومی یا نام دامنه) آن را امتحان کنید.
توجه: اگر همچنین قصد داشتید از سرور مجازی web خود برای میزبانی سایتهای دیگر (به عنوان میزبان مجازی معمولی) استفاده کنید ، لازم است که httpd_can_network_connect را روشن کنید.

نتیجه
اکنون برنامه Node.js شما در پس یک پروکسی معکوس Nginx در حال اجرا است. این تنظیم پروکسی معکوس به اندازه کافی انعطاف پذیر است تا دسترسی کاربران شما به دیگر برنامه ها یا محتوای وب استاتیک را که می خواهید به اشتراک بگذارید ، فراهم نماید.
همچنین اگر به دنبال انتقالات رمزگذاری شده بین سرور مجازی وب و کاربران خود هستید ، در اینجا آموزشی مطرح شده است که به شما کمک می کند تا پشتیبانی HTTPS (TLS / SSL) را تنظیم کنید

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

پارامترهای پیش فرض در جاوا اسکریپت  –  اجرای چندین نسخه PHP بر روی یک سرور Debian 10

نحوه راه اندازی یک پروژه React با برنامه Reactنصب و ایمن سازی phpMyAdmin در اوبونتو 18

پیکربندی یک تایید اعتبار مجاز(CA) در CentOS 8  –  تنظیم برنامه Node.js برای تولید در CentOS 7

نصب MariaDB در اوبونتو 18.04  –  ایمن کردن Apache با Let’s Encrypt در Debian 10

نحوه نصب Node.js در CentOS 8  –  بازنویسی URL را با mod_rewrite برای Apache در Debian 10

راه اندازی فایروال با استفاده از firewalld در CentOS 8  –  نصب وب سرور Apache در Debian 10

اضافه کردن و حذف کاربران در CentOS 8 –  نصب Apache Tomcat 9 در Debian 10

نصب و استفاده از PostgreSQL در CentOS 8  –  راه اندازی سرور اولیه با Debian 10

نصب MariaDB در CentOS 8  –  چگونه با JSX عناصر واقعی ایجاد کنیم

نصب و پیکربندی VNC در Debian 10  –  استفاده از سرور از راه دور Docker

نصب و ایمن سازی Grafana در اوبونتو 18  –  نحوه نصب Git در CentOS 8

نصب Git در Debian 10 –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرورهای

نحوه نصب Node.js در Debian 10  –  نصب وب سرور Apache در CentOS 7

نحوه نصب Webmin در Debian 10  –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرور

نصب وردپرس با بانک اطلاعاتی در اوبونتو  – ساخت و استقرار سرور GraphQL با Node.js و MongoDB

نصب پایتون 3 و تنظیم نویسی محلی macOS  – نصب و ایمن سازی phpMyAdmin با Nginx در سرور

نصب Nagios 4 و نظارت بر سرور اوبونتو 18  –  نصب Python 3 و تنظیم یک محیط برنامه نویسی

نحوه نصب R بر روی Debian 10  –  راه اندازی سرور Prisma روی اوبونتو 18.04

نصب و پیکربندی Laravel با LEMP در اوبونتو 18  –  نصب و پیکربندی pgAdmin 4 در Server Mode

نصب Python 3 و تنظیم برنامه نویسی CentOS 8نصب Jitsi Meet در Ubuntu 18.04

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

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


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/