تجربه من از راه اندازی سرویس IAAS در آروان

سلام، قصد دارم در این مقاله به توضیح کامل انتقال و نصب همه سرویس های خودم از سرور های leseweb به ابرک های آروان بنویسم

مشخصات سرور leaseweb من :

۴ گیگ رم و ۴ core CPU و ۶۰ گیگ SSD ( هزینه سالیانه سرویس من در سرور لیسوب ۴۰۰ یورو بود )

روی سرورم WHM و Cpanel داشتم و با ۲۳ تا دامنه و ۱۲ تا مشتری مختلف

ساخت ابرک

مفهوم ابرک در آروان دقیقا همان مفهموم instance یا droplet در سرویس های کلود است

ابتدا در سایت آروان ثبت نام کردم و به بخش تنظیمات رایانش ابری رفتم و روی دیتاسنتر مبین نت آروان ابرک debian 9 با مشخصات زیر ساختم ( پلن دوم ماهیانه ۲۰۰ هزارتومن حدودا )

ساخت ابرک در دیتاسنتر مبین نت
ساخت ابرک در دیتاسنتر مبین نت


بعد از ساخت ابرک، ای پی ابرک، نام کاربری و رمز ورود به شما داده می شود .

( کلمه عبوز خود را حتما باید در جایی یاداشت کنید )
( کلمه عبوز خود را حتما باید در جایی یاداشت کنید )

بعد از ساخت ابرک به بخش تنظیمات فایروال پنل آروان رفتم و تنظیمات فایروال پنل رو با توجه به نیازم به باز بودن پورت های 80 و 443 چک کردم.

تنظیمات فایروال در پنل آروان
تنظیمات فایروال در پنل آروان


پروسه کلی

خب بهتره سریع تر بریم سراغ وصل شدن به ابرکی که ساختم و تنظیمات و کانفیگ سرور

به صورت کلی بهتره قبل از هرچیزی توضیح بدم قصد دارم چه کارهایی رو انجام بدم:

۱: نصب و راه اندازی سرویس ngnix ، php7 ، mysq ، mariadb

۲: ساخت دایرکتوری و انتقال دیتای هر سایت خودم به ابرک های آروان

۳: نصب SSL Self Sign برای ارتباط https ( بین ابرک با سرورهای CDN آروان )

۴:کانفیگ تنظیمات وب سرور Ngnix

۵: ساخت دیتابیس و import دیتابیس

۶: اضافه کردن دامنه ها به پنل DNS ابری آروان و فعال سازی CDN آروان

۷: تنظیمات امنیتی بیشتر روی ابرک

اتصال به ابرک و تنظیمات اولیه

در ابتدا به ابرکی که ساختم متصل میشم.

برای این کار میتوانید از طریق Putty در سیستم عامل ویندوز یا از طریق Terminal در سیستم عامل های لینوکس و مک استفاده کنید:

ssh debian@193.176.x.x
اتصال به ابرک
اتصال به ابرک

برای اولین بار که به ابرک متصل می شوید پیغامی برای شما می آید که پسورد کنونی و پسورد جدید خود را وارد نمایید و از ابرک خارج می شوید تا با پسورد جدید وارد شوید

بعد از ورود دوباره با پسورد جدید بهتر است ابتدا دسترسی root به ابرک را فعال کنید

باز کردن دسترسی root به سرور:

برای اینکه بتونم به دسترسی root به ابرک خودم را فعال کنم تنظیمات زیر انجام میدم

sudo -i

تغییر پسورد روت سرور:

passwd

فعال سازی امکان دسترسی root به ابرک:

vim  /etc/ssh/sshd_config

تغییر بخش های زیر در تنظیمات SSH فایل خود:

خط زیر را پیدا کرده:

#PermitRootLogin without-password

و از حالت کامنت خارج و به شکل زیر تغییر دهید:

PermitRootLogin yes

برای خروج و ذخیر در vim دستور زیر را وارد نمایید

:wq

حال فقط کافیه سرویس ssh رو restart کنید و مجدد به ابرک خود با یوزر root لاگین کنید:

systemctl restart ssh.service
ssh root@193.176.x.x

خب بریم سراغ نصب سرویس ها:

مرحله اول: نصب سرویس ها

اپدیت سرور

apt-get update
apt-get upgrade -y

نصب وب سرور Nginx

apt-get -y install nginx

بعد از نصب سرویس را رو reset کردم

systemctl start nginx.service

نصب سرویس MariaDB

apt-get -y install mariadb-server mariadb-client

تنظیمات اولیه Mysql

mysql_secure_installation

بعد از زدن دستور بالا مراحل کانفیگ کامل mysql از شما پرسیده می شود که به سادگی قابل تنظیم است.

نصب PHP 7

apt-get -y install php7.0-fpm
apt-get -y install php7.0-mysqlnd
sudo apt install php7.0-mcrypt php7.0-mbstring
sudo systemctl restart php7.0-fpm.service


بعد از نصب php میتوانید سرویس مورد نظر را restart کنید و از run شدن صحیح ان اطمینان حاصل کنید

sudo systemctl restart php7.0-fpm.service

خب حالا بریم سراغ مرحله دوم،

مرحله دوم:

ساخت یوزر و انتقال سرور های خودم به ابرک های آروان

برای ساخت دایرکتوری مختلف و بالا اوردن سایت ها میتونید فقط با یوزر پیشفرض debian یا یک یوزر برای همه سایت ها و مشتریان خود استفاده کنید ولی من با توجه نیاز های سرویس های خودم برای هر سایت خودم یک یوزر ساختم و دایرکتوری مورد نظر خودش رو ایجاد میکنم

ایجاد نام کاربری و دایرکتوری برای هر سایت

برای ساخت یوزر ariatoos برای دامنه ariatoos.com دستور زیر را وارد کردم و همینطور این دستور را برای همه سایت های دیگه هم زدم.

useradd ariatoos

بعد از زدن این دستور یک دایرکتوری به همین نام هم در پوشه home ساخته میشود

من برای نظم بهتر و مرتب سازی دایرکتوری های وب سایت هام، برای هر سایت پوشه زیر را تعریف کردم

sudo mkdir -p /home/ariatoos/public_html/
sudo chmod -R 755 /home/ariatoos/public_html/

و این مورد رو برای همه سایت ها و دامنه های خودم انجام دادم

خب، میرم سراغ انتقال فایل های خود از سرور لیس وب به ابرک های آروان، در سرور های لیس وب از همه پوشه های خودم بک اپ تهیه کردم و فایل های مربوطه به صورت zip شده

البته شما میتونید به کمک rclone که از سرویس rsync استفاده میکنید فایل های خود را به سرور جدید منتقل کنید ولی من با توجه به سادگی کارم و سایت هام فایل ها رو سرویس لیس وب tar کردم و بعد در ابرک های آروان فایل ها رو از فشرده سازی خارج کردم

دستورات انجام داده در سرور لیس وب:

cd /home/ariatoos/public_html
tar -czvf ariatoos_com_18oc2018.tar.gz /home/ariatoos/public_html

دستورات انجام شده در ابرک های آروان:

cd /home/ariatoos/public_html
wget https://ariatoos.com/ariatoos_com_18oc2018.tar.gz
tar -xvzf ariatoos_com_18oc2018.tar.gz

این مرحله رو برای همه دامنه ها و فایل های مربوط به اونها هم انجام دادم

مرحله سوم:

من برای اینکه بتونم ارتباط بین سرور های آروان با سرور اصلی خودم رو روی پورت 443 تنظیم کنم، سمت سرور اصلی خودم روی ابرک های آروان گواهی selfsign نیز تنظیم میکنم

ساخت گواهی selfsign روی ابرک های آروان

openssl genrsa -out /etc/ssl/private/ariatoos.key 4096
openssl req -new -x509 -key /etc/ssl/private/ariatoos.key -out /etc/ssl/certs/ariatoos.pem -days 3650

طبیعتا مثل مراحل قبل برای همه دامنه ها یک گواهی selfsign مخصوص خودشون به نام خودشون هم میسازم

مرحله چهارم:

کانفیگ تنظیمات وب سرور Ngnix برای چند سایت

vim /etc/nginx/sites-available/ariatoos.com

تنظیمات انجام شده برای nginx دامنه آریاتوس

server {
	listen 80 ;
	listen [::]:80;
	# SSL configuration
	listen 443 ssl http2;
	 listen [::]:443 ssl ;
	 ssl_certificate_key /etc/ssl/private/ariatoos.key;
	 ssl_certificate /etc/ssl/certs/ariatoos.pem;
	 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';	 ssl_prefer_server_ciphers on;
	root /home/ariatoos/public_html;
	# Add index.php to the list if you are using PHP
	index index.html index.htm index.php;
	server_name ariatoos.com www.ariatoos.com; 
	location / {
	try_files $uri $uri/ /index.php?q=$uri&$args;
	}
	# pass PHP scripts to FastCGI server
	location ~ \.php$ {
	include snippets/fastcgi-php.conf;
	fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
	include fastcgi_params;
	}
	}


sudo ln -s /etc/nginx/sites-available/ariatoos.com /etc/nginx/sites-enabled/

تنظیمات تقریبا مشابه برای دامنه wearecolorz

vim /etc/nginx/sites-available/wearecolorz 

کانفیگ وب سرور برای دامنه wearecolorz

server {
	 listen 80 ;
	listen [::]:80;
	listen 443 ssl http2;
	listen [::]:443 ssl ;
	 ssl_certificate_key /etc/ssl/private/wearecolorz.key;
	 ssl_certificate /etc/ssl/certs/wearecolorz.pem;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
	 ssl_prefer_server_ciphers on;
	root /home/wearecolorz/public_html;
	# Add index.php to the list if you are using PHP
	index p-index.html index.html index.htm index.nginx-debian.html index.php;
	server_name wearecolorz.com www.weaarecolorz.com; 
	location / { 
		rewrite ^/works$ /works.html;
		rewrite ^/contact$ /contact.html;
		rewrite ^/studio$ /studio.html;
		rewrite ^/work-domino$ /work-domino.html;
		rewrite ^/work-mamanpaz$ /work-mamanpaz.html;
		rewrite ^/work-mydoc$ /work-mydoc.html;
		rewrite ^/work-overflowdata$ /work-overflowdata.html;
		rewrite ^/work-pardisceram$ /work-pardisceram.html;
		rewrite ^/404$ /404.html;
		try_files $uri /index.html?_url=$1;
		}
		# pass PHP scripts to FastCGI server
		location ~ \.php$ {
		}
	}


sudo ln -s /etc/nginx/sites-available/wearecolorz /etc/nginx/sites-enabled/

مرحله پنجم:

ساخت دیتابیس و import دیتابیس

mysql -u root -p
create database ariatoos default character set utf8 default collate utf8_bin;
show databases;
CREATE USER 'ariatoos'@'localhost' IDENTIFIED BY 'YourPASSWORD';
GRANT ALL PRIVILEGES ON ariatoos.* TO ariatoos@localhost;
FLUSH PRIVILEGES;
quit

حالا دیتابیسی که از سرور لیس وب بک اپ گرفته بودم رو دانلود و در دیتابیسی که ساختم import میکنم

نصب پکیج unzip برای باز کردن فایل هایی که به صورت gzip ساخته بودم.

apt-get install unzip

دانلود database و import به دیتابیس

wget https://ariatoos.com/ariatoos_db.sql.gz
gunzip ariatoos_db.sql.gz
mysql -u ariatoos -p ariatoos < ariatoos_db.sql

برای مثال دامنه دیگه هم این مورد رو انجام میدم ( دامنه mashhad.me )

mysql -u root -p
create database mashahd default character set utf8 default collate utf8_bin;
show databases;
CREATE USER 'mashhad'@'localhost' IDENTIFIED BY 'YourPASSWORD';
GRANT ALL PRIVILEGES ON mashhad.* TO mashahd@localhost;
FLUSH PRIVILEGES;
quit

و مرحله import دیتابیس برای دامنه mashhad.me

wget https://mashhad.me/mashhad_db.sql.gz 
gunzip mashhad_db.sql.gz 
mysql -u mashhad -p mashhad < mashhad_db.sql

مرحله ششم:

اضافه کردن دامنه هام به DNS ابری آروان

من برای استفاده از خدمات DNS، از DNS سرور آروان استفاده میکنم و روی ابرک های خودم هیچگونه DNS سروری رو بالا نمیارم

برای این کار همه دامنه های خودم رو روی DNS آروان در پنل خودم اضافه کردم

اضافه کردن دامنه ariatoos.com به dns آروان - بخش هایی که ip ان را blur کردم ای پی ابرک آروان است
اضافه کردن دامنه ariatoos.com به dns آروان - بخش هایی که ip ان را blur کردم ای پی ابرک آروان است


بعد از وارد کردن همه رکورد های DNS ( آموزش این مرحله رو در مقاله قبلم میتونید کامل ببینید )

خدمات CDN و گواهی SSL آروان هم برای دامنه خودم فعال کردم

و همینطور تنظیمات origin رو برای این دامنه قرار دادم که ارتباط بین سرور های آروان با ابرک من بر روی HTTPS باشد

خب، همه مراحل انجام و راه اندازی سرویس ها انجام شد

برای موارد امنیتی بیشتر تغییراتی رو برای ابرک های خودم انجام میدم

۱: تغییر پورت ssh از پورت default 22 به 50683
۲: بستن همه پورت های اضافی به جز ssh و http و https
۳: ارتباط به ssh فقط از طریق public key و نه پسورد

تغییر پورت پیشفرض SSH

ابتدا به تنظیمات ssh در ابرک رفتم

vim /etc/ssh/sshd_config 

ارتباط port را از 22 به 50683 تغییر دادم:

#Port 22
Port 50683

و سرویس ssh را در پنل خودم ریستارت کردم

systemctl restart sshd.service

تغییر تنظیمات فایروال

بستن همه پورت های اضافی در تنظیمات فایروال آروان:


https://npanel.arvancloud.com/ecc/ir-thr-mn1/security
https://npanel.arvancloud.com/ecc/ir-thr-mn1/security


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

ssh root@193.176.x.x -p 50683

ارتباط فقط با Public key

بهتره برای امن تر بهتره ارتباط با ابرک ها فقط از طریق public key سیستم عامل خود باشد و ارتباط از طریق پسورد برداشته شود

برای این کار اول روی سیستم عامل خودم باید یک جفت کلید public و private بسازم و کلید عمومی خودم رو روی ابرک بذارم و بعد با تغییراتی در تنظیمات ssh ارتباط را فقط به صورت کلید باشد

ساخت جفت کلید:

ssh-keygen -t rsa

در سیستم عامل ویندوزی برای ساخت کلید باید از نرم افزارهایی مثل gpg4win یا cmder.net استفاده کنید

نمایش کلید:

 cat /Users/you/.ssh/id_rsa.pub
 #sample for my computer:  
 cat /Users/amir/.ssh/id_rsa.pub
 

نمایش کلید عمومی:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkxyRzJdg8qMI0/ZVDRIiP+zw7nHHTRKZj+5PA8EwYsUjkifSp5/B5Bjkk4dog0G5xfgU8hx3sMkO0S6NquNa7D7zhjD8iellkMEX2473+oc1gjyaHaXW6xDivk2jsWz+0fDQwBm2jmV0X4YndYKpPF1eXXPx0b4ZKsyYsiEpkdzsYMk13vrpwmcqUo3Ggs1H3D2eVdH4/x5ssR8tWXzeUEaUqUZ/zpq5d5RP7lqgDZeFP7Gk/5WeBn4wTr7wDTMZ7HTHL9C1mZYiJLaoT6HB4VWXA7zR04mJvY4OWnUsTfGmwMZ+qym7SHMZFeliHBnlSCpLDNlwqvTnU6EZNGTvV amir@Amirs-iMac.local

حالا به ابرک رفته و کلید عمومی بالا را در فایل زیر در ابرک خودم قرار میدم

nano .ssh/authorized_keys

از این به بعد برای اتصال به ابرک خودم نیاز به وارد کرد پسورد نیست و میتوانید با کلید خصوصی خود در کامپیوتر به ابرک خود متصل شوید

امیدوارم این مقاله برای شما مفید بوده باشه و هر جایی سوالی بود، درخدمتم