Хэрхэн өөрийн сайтаа интернэтэд байршуулах вэ?

За ингээд та бүхэндээ блогийн албан ёсны анхны нийтлэлийг хүргэж байна. Энэ удаагийн нийтлэлээр шинээр хөгжүүлэгч болохоор суралцаж буй хэн бүхэнд тулгардаг асуудал болох “Хэрхэн өөрийн сайтаа интернэтэд байршуулах вэ?” гэдэг асуултанд хариулт өгөхийг хичээе.

Бид энэ удаагийн жишээндээ Virtual Server-ийн үйлчилгээ үзүүлэгч компани болох DigitalOcean.com-ийн үйлчилгээг ашиглах болно.

Та хэрвээ уг үйлчилгээнд бүртгүүлэхийг хүсвэл манай referral линкээр орвол 60 хоногийн турш ашиглах 10$ эрх таны хаяганд орно. (DigitalOcean-д бүртгүүлэхэд олон улсын гүйлгээний эрхтэй VISA карт шаардлагатай.)

Сайтаа shared hosting буюу дундын үйлчилгээний сервер дээр байршуулснаас VPS нь ямар давуу талтай вэ?

  • Хэдэн ч domain, subdomain холбож болно.
  • Дундын сервер дээр сайтаа байршуулахад та бусад хүмүүстэй хамт нэг серверийг хуваан хэрэглэж байгаа болохоор танаас шалтгаалахгүйгээр сайт чинь орохгүй болох, гацах, удаашрах зэрэг нь хэвийн үзэгдэл бол та өөрийн сервер дээр байршуулснаар дахин тийм асуудал үүсэхгүй.
  • cPanel дээр NodeJS зэрэг runtime процесс үүсгэдэг вебийг байршуулах боломжгүй.
  • Тухайн сайт серверээ хэр ачааллуулж байгааг мэдэх боломжгүй учир олон хандалт авахад сайт унах аюултай.
  • Сайтын хандалт хэрэглээ өсөхийн хэрээр та хэзээ нэгэн цагт сайтаа өөрийн серверлүү нүүлгэх шаардлага тулгарна.

VPS-ийг сонгосноор ямар сул талтай вэ?

  • Урд нь та сайтынхаа кодыг хуулж орхиод л санаа амарч болох байсан бол одоо та удирдлагыг гартаа авсан учир бүх зүйл таны хяналтан дор байх ёстой. Хамгаалалт, Серверээ тохируулах, хяналт (monitoring) хийх зэрэг наад захын асуудлууд урган гарч ирнэ.
  • Ихэнх веб серверүүд linux үйлдлийн системтэй учир танд linux үйлдлийн систем дээр ажиллах бага зэргийн мэдлэг шаардлагатай. Хэрвээ та хөгжүүлэгч болохоор шийдсэн л бол эрт оройгүй энэ үйлдлийн систем дээр ажиллах л болно.

За ингээд үндсэн ажилдаа оръё.


Энэ удаагийн нийтлэлээр дэлхий дахинаа хамгийн өргөн хэрэглэгддэг CMS (Агуулга Удирдлагын Систем) болох WordPress-ийг жишээ болгон суулгая.

  1. Эхний алхам серверээ үүсгэнэ.
Image for post

DigitalOcean.com-руу нэвтэрсний дараа баруун дээд талын Create цэснээс Droplets (Энгийнээр бол зүгээр л Virtual Server)-ийг сонгоно.

Image буюу үйлдлийн системээ сонгоно. Энэ удаад хамгийн түгээмэл хэрэглэгддэг үйлдлийн систем болох Ubuntu-г сонгож байна. Серверийн рам 1 эсвэл 2 GB бол 32 bit, түүнээс дээш бол 64 bit сонгох нь тохиромжтой.

Image for post

Туршилтын зорилгоор бид хамгийн бага үзүүлэлттэй серверийг сонголоо. Гэхдээ энэ нь тийм ч муу үзүүлэлт биш бөгөөд ихэнх shared hosting-оос илүү ачаалал дааж мэдэх юм.

Image for post

Энэ хэсгийг алгасна.

Image for post

Аль бүсэд серверээ байршуулах вэ гэдгээ сонгоно. Монголоос хамгийн ойрхноор нь Singapore-ийг сонголоо. Ихэнх тохиолдолд газарзүйн байршлаар аль ойрхон байгаа серверлүү хандах хурд их байдаг.

Image for post

Энэ хэсгээс monitoring-ийг сонгоод SSH Key-ийг одоохондоо мөн алгасъя.

Image for post

Сервертээ нэр өгөөд Create товчийг дарснаар сервер маань хэдхэн минутын дотор үүсч, таны имэйлрүү серверлүү хандах эрхийн мэдээллийг явуулна.

Image for post
Image for post

2. Дараагийн алхам. Серверээ тохируулцгаая.

Хэрвээ та Windows үйлдлийн систем хэрэглэдэг бол Putty суулгаарай.

ssh root@178.128.86.220

Серверлүү ороод хийх хамгийн эхний үйлдэл бол нууц үгээ солих

Image for post

хуучин нууц үгээ бичээд дараа нь шинэ нууц үгээ 2 удаа давтана.

linux төст үйлдлийн системийн үндсэн хэрэглэгч нь root бөгөөд системийн бүх үйлдлийг ямар ч хязгаарлалтгүйгээр гүйцэтгэх боломжтой байдаг тул системээ гэмтээх өндөр эрсдэлтэй байдаг. Үүнээс сэргийлж таны хамгийн түрүүнд хийх үйлдэл бол өөртөө зориулж хэрэглэгч үүсгэх.

adduser shinee Шинэ хэрэглэгч үүсгэнэ. Гарч ирэх цонхонд шинэ нууц үгээ 2 удаа давтаж бичээд үлдсэнийг нь ENTER ENTER.

usermod -aG sudo shinee Сая үүсгэсэн хэрэглэгчээ sudo group-т нэмнэ. Ингэснээр зөвхөн root хэрэглэгч гүйцэтгэх боломжтой системийн командуудыг шинэ хэрэглэгч маань гүйцэтгэх боломжтой болно.

su shinee командаар сая үүсгэсэн хэрэглэгчрүү шилжинэ. Ер нь дахиж root хэрэглэгчээр орох ч шаардлагагүй.

3. WordPress-ээ суулгацгаая. Бэлтгэл ажил

WordPress нь LAMP stack гэгдэх Linux Apache MySQL Php 4-н хослол дээр ажилладаг.

sudo apt-get update
sudo apt-get install apache2

Apache-гаа тохируулна.

sudo nano /etc/apache2/apache2.conf Nano text editor-оор apache2.conf файлыг нээнэ. Файлын хамгийн доод талд шинэ мөрөнд

ServerName (сайтын домэйн юмуу IP-гаа хаалтгүйгээр бичнэ)

Жишээ нь:

ServerName my-wp-test.tk Бид сайтдаа ийм домэйн холбоно гэж төсөөлье. Ctrl+x болон Y дарж файлаа хадгална.

Apache тохиргоогоо алдаагүй эсэхийг шалгана.

shinee@my-vps:~$ sudo apache2ctl configtest
Syntax OK

sudo systemctl restart apache2 Apache2 сервисээ рестарт хийж шинэ тохиргоогоо идэвхжүүлнэ.

Apache дээрээ домэйнээ тохируулсан учир одоо домэйн хаягаа серверлүүгээ чиглүүлье. Би .tk домэйний удирдлагын хэсэг болох freenom сайтаас серверлүүгээ A record үүсгэнэ.

Image for post

Домэйнээ амжилттай чиглүүлсэн бол одоо серверлүүгээ шинэ холбосон домэйнээрээ хандая.

Image for post

Хэрвээ домэйн холболгүй серверийнхээ IP address-ийг бичсэн бол мөн ингэж орж болно

Image for post

MySQL суулгана. Суулгах явцад root хэрэглэгчийн нууц үг зохиож оруулна.

sudo apt-get install mysql-server

PHP суулгана.

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

Apache default тохиргоогоороо .html файлыг түрүүлж дууддагийг өөрчилж .php файлыг түрүүлж дууддаг болгоё.

sudo nano /etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Ийм байгаа файлыг өөрчлөөд ийм болгоно.

<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

sudo systemctl restart apache2 Apache-гаа дахин нэг рестарт хийж шинэ тохиргоогоо идэвхжүүлнэ.

mysql -u root -p MySQL-рүүгээ нэвтэрч орно.

WordPress-тээ зориулж шинээр database үүсгэнэ.

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Linux системийн root хэрэглэгчийн адилаар MySQL-ийн root хэрэглэгч ч бас дархан эрхтэй тул wordpress-тээ зориулж тусад нь mysql хэрэглэгч үүсгэе. password гэсэн үгний оронд нууц үгээ хийнэ.

GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

FLUSH PRIVILEGES; Шинээр хийсэн тохиргоогоо идэвхжүүлнэ.

EXIT; MySQL console-оос гарна.

WordPress-т өргөнөөр ашиглагддаг Php-н нэмэлт package-уудыг суулгана.

sudo apt-get update
sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

sudo systemctl restart apache2 Apache-гаа рестарт хийн шинээр суулгасан package-уудыг идэвхжүүлнэ.

.htaccess-ийг идэвхжүүлнэ. Ингэхийн тулд apache2.conf файлыг нээгээд хамгийн доод талд дараах хэсгийг нэмнэ.

sudo nano /etc/apache2/apache2.conf

<Directory /var/www/html/>
AllowOverride All
</Directory>

sudo a2enmod rewrite mod_rewrite module-ийг идэвхжүүлснээр WordPress-ийн permalink ажилладаг болно.

sudo apache2ctl configtest Apache config-оо дахин нэг шалгаад

sudo systemctl restart apache2 Apache service-ээ рестарт хийнэ.

Эцэст нь wordpress-ээ суулгахад бэлэн боллоо.

cd /tmp
curl -O https://wordpress.org/latest.tar.gz

tar xzvf latest.tar.gz татаж авсан файлаа задална.

WordPress-ээ зөөхөөс өмнө .htaccess файл үүсгэнэ.

touch /tmp/wordpress/.htaccess
chmod 660 /tmp/wordpress/.htaccess

Мөн wordpress config файл үүсгэнэ.

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

Дараа нь wordpress update хийхэд permission-ий асуудал үүсэхээс сэргийлж update хавтас ч үүсгэж болох юм.

mkdir /tmp/wordpress/wp-content/upgrade

Одоо wordpress-ээ Apache-ийн хавтасруу зөөхөд бэлэн боллоо.

sudo cp -a /tmp/wordpress/. /var/www/html

Сая хуулсан wordpress-ийн файлуудаа apache-гийн групт permission тааруулснаар apache wordpress-ээ асуудалгүй ажиллуулах нөхцлийг хангана.

sudo chown -R shinee:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod g+s {} \;
sudo chmod g+w /var/www/html/wp-content
sudo chmod -R g+w /var/www/html/wp-content/themes
sudo chmod -R g+w /var/www/html/wp-content/plugins

WordPress-ийг нууцлах нь. Wordress-ийн өөрийнх нь нууц үг үүсгэгчийг ашиглая.

curl -s https://api.wordpress.org/secret-key/1.1/salt/

Терминал дээр дараахтай төстэй утгууд гарах бөгөөд

nano /var/www/html/wp-config.php файлыг нээгээд энэ хэсгийг олоод дээрх командаар гарч ирсэн утгуудаас харгалзах утгыг хуулж тавина.

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
Image for post

Дараа нь уг файл дотор MySQL database-ынхаа мэдээллийг оруулна.

define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

Мөн бид wordpress-ийн permission-ийг тааруулсан учир файлсистемтэй харьцах тохиргоог “direct” болгох шаардлагатай.

define ('FS_METHOD', 'direct'); мөр кодыг уг файлын хаа нэгтээ шинэ мөрөнд нэмж хадгална.

Ингээд wordpress-ээ суулгахад бэлэн боллоо. Өмнөх алхам дээр тохируулсан домэйн хаяг эсвэл серверийн IP-р хандаж орно.

Image for post

WordPress-ээ суулгах хэлээ сонгоод гарч ирэх талбарт хэрэгтэй мэдээллээ оруулаад гүйцээ! Ингээд таны сайт интернэтэд байршлаа.

Image for post

Анхны нийтлэл гэхэд харьцангуй урт байлаа. Энэхүү нийтлэл маань ганц ч гэсэн хүнд тус болж чадах байх гэдэгт итгэлтэй байна.

Нийтлэлийн талаар алдаа оноо, санал шүүмжлэлээ харамгүй бичээрэй. Мөн дараа дараачийн нийтлэлээр ямар сэдвийн талаар сонирхож байгаагаа, юуны талаар ярилцмаар байгаагаа сэтгэгдэл хэсэгт үлдээгээрэй. Одоогоор дараа дараачийн нийтлэлдээ хэрхэн үнэгүй SSL холбох болон үнэгүй домэйн хэрхэн авах, домэйн хэрхэн удирдах, subdomain хэрхэн үүсгэх, 1 сервер дээр олон домэйн болон олон вебсайт хэрхэн холбох, firewall тохируулах зэрэг энэхүү нийтлэл дээр цаашид өргөжин яригдах боломжтой маш олон зүйлийн талаар нийтлэл бичихийг хичээх болно.

https://medium.com/@shinebayar.g