За ингээд та бүхэндээ блогийн албан ёсны анхны нийтлэлийг хүргэж байна. Энэ удаагийн нийтлэлээр шинээр хөгжүүлэгч болохоор суралцаж буй хэн бүхэнд тулгардаг асуудал болох “Хэрхэн өөрийн сайтаа интернэтэд байршуулах вэ?” гэдэг асуултанд хариулт өгөхийг хичээе.
Бид энэ удаагийн жишээндээ Virtual Server-ийн үйлчилгээ үзүүлэгч компани болох DigitalOcean.com-ийн үйлчилгээг ашиглах болно.
Та хэрвээ уг үйлчилгээнд бүртгүүлэхийг хүсвэл манай referral линкээр орвол 60 хоногийн турш ашиглах 10$ эрх таны хаяганд орно. (DigitalOcean-д бүртгүүлэхэд олон улсын гүйлгээний эрхтэй VISA карт шаардлагатай.)
Сайтаа shared hosting буюу дундын үйлчилгээний сервер дээр байршуулснаас VPS нь ямар давуу талтай вэ?
- Хэдэн ч domain, subdomain холбож болно.
- Дундын сервер дээр сайтаа байршуулахад та бусад хүмүүстэй хамт нэг серверийг хуваан хэрэглэж байгаа болохоор танаас шалтгаалахгүйгээр сайт чинь орохгүй болох, гацах, удаашрах зэрэг нь хэвийн үзэгдэл бол та өөрийн сервер дээр байршуулснаар дахин тийм асуудал үүсэхгүй.
- cPanel дээр NodeJS зэрэг runtime процесс үүсгэдэг вебийг байршуулах боломжгүй.
- Тухайн сайт серверээ хэр ачааллуулж байгааг мэдэх боломжгүй учир олон хандалт авахад сайт унах аюултай.
- Сайтын хандалт хэрэглээ өсөхийн хэрээр та хэзээ нэгэн цагт сайтаа өөрийн серверлүү нүүлгэх шаардлага тулгарна.
VPS-ийг сонгосноор ямар сул талтай вэ?
- Урд нь та сайтынхаа кодыг хуулж орхиод л санаа амарч болох байсан бол одоо та удирдлагыг гартаа авсан учир бүх зүйл таны хяналтан дор байх ёстой. Хамгаалалт, Серверээ тохируулах, хяналт (monitoring) хийх зэрэг наад захын асуудлууд урган гарч ирнэ.
- Ихэнх веб серверүүд linux үйлдлийн системтэй учир танд linux үйлдлийн систем дээр ажиллах бага зэргийн мэдлэг шаардлагатай. Хэрвээ та хөгжүүлэгч болохоор шийдсэн л бол эрт оройгүй энэ үйлдлийн систем дээр ажиллах л болно.
За ингээд үндсэн ажилдаа оръё.
Энэ удаагийн нийтлэлээр дэлхий дахинаа хамгийн өргөн хэрэглэгддэг CMS (Агуулга Удирдлагын Систем) болох WordPress-ийг жишээ болгон суулгая.
- Эхний алхам серверээ үүсгэнэ.
![Image for post](https://miro.medium.com/max/281/1*EkocKJuXVM-BHO0j_Po0Bg.png)
DigitalOcean.com-руу нэвтэрсний дараа баруун дээд талын Create цэснээс Droplets (Энгийнээр бол зүгээр л Virtual Server)-ийг сонгоно.
Image буюу үйлдлийн системээ сонгоно. Энэ удаад хамгийн түгээмэл хэрэглэгддэг үйлдлийн систем болох Ubuntu-г сонгож байна. Серверийн рам 1 эсвэл 2 GB бол 32 bit, түүнээс дээш бол 64 bit сонгох нь тохиромжтой.
![Image for post](https://miro.medium.com/max/962/1*Jr9vJFQ5sWJ19GC1kq9ygw.png)
Туршилтын зорилгоор бид хамгийн бага үзүүлэлттэй серверийг сонголоо. Гэхдээ энэ нь тийм ч муу үзүүлэлт биш бөгөөд ихэнх shared hosting-оос илүү ачаалал дааж мэдэх юм.
![Image for post](https://miro.medium.com/max/1100/1*_Bm3IVuu1z6x2L4Wr7w8UA.png)
Энэ хэсгийг алгасна.
![Image for post](https://miro.medium.com/max/1097/1*bKMXUd3Z_R2MI0kB_LcDow.png)
Аль бүсэд серверээ байршуулах вэ гэдгээ сонгоно. Монголоос хамгийн ойрхноор нь Singapore-ийг сонголоо. Ихэнх тохиолдолд газарзүйн байршлаар аль ойрхон байгаа серверлүү хандах хурд их байдаг.
![Image for post](https://miro.medium.com/max/1115/1*gxz1Ncal6UiHtbhrj4jSzg.png)
Энэ хэсгээс monitoring-ийг сонгоод SSH Key-ийг одоохондоо мөн алгасъя.
![Image for post](https://miro.medium.com/max/552/1*Y4eFtUInTNIDyAP35wei3w.png)
Сервертээ нэр өгөөд Create товчийг дарснаар сервер маань хэдхэн минутын дотор үүсч, таны имэйлрүү серверлүү хандах эрхийн мэдээллийг явуулна.
![Image for post](https://miro.medium.com/max/1107/1*H6uHOtumX3_Hd2fTIKweZQ.png)
![Image for post](https://miro.medium.com/max/1035/1*kDNw-0ySVh9v84xJ9G29gQ.png)
2. Дараагийн алхам. Серверээ тохируулцгаая.
Хэрвээ та Windows үйлдлийн систем хэрэглэдэг бол Putty суулгаарай.
ssh root@178.128.86.220
Серверлүү ороод хийх хамгийн эхний үйлдэл бол нууц үгээ солих
![Image for post](https://miro.medium.com/max/651/1*svBNmU7qltyk8G_tKyziFA.png)
хуучин нууц үгээ бичээд дараа нь шинэ нууц үгээ 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](https://miro.medium.com/max/1297/1*U_C2uwPCnhcRpPhleSP8_A.png)
Домэйнээ амжилттай чиглүүлсэн бол одоо серверлүүгээ шинэ холбосон домэйнээрээ хандая.
![Image for post](https://miro.medium.com/max/1105/1*_odBijKYznDFSfu4uk89Vg.png)
Хэрвээ домэйн холболгүй серверийнхээ IP address-ийг бичсэн бол мөн ингэж орж болно
![Image for post](https://miro.medium.com/max/1125/1*pBe7Bz8ZMKcNBk5z6hf2lg.png)
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](https://miro.medium.com/max/794/1*to_ub-aZrGF0yV-b-DvVNg.png)
Дараа нь уг файл дотор 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](https://miro.medium.com/max/1221/1*D7ijjGCHPuVeom3KjZbVFQ.png)
WordPress-ээ суулгах хэлээ сонгоод гарч ирэх талбарт хэрэгтэй мэдээллээ оруулаад гүйцээ! Ингээд таны сайт интернэтэд байршлаа.
![Image for post](https://miro.medium.com/max/1267/1*U9zkifAu_i20I2wCKx8hNQ.png)
Анхны нийтлэл гэхэд харьцангуй урт байлаа. Энэхүү нийтлэл маань ганц ч гэсэн хүнд тус болж чадах байх гэдэгт итгэлтэй байна.
Нийтлэлийн талаар алдаа оноо, санал шүүмжлэлээ харамгүй бичээрэй. Мөн дараа дараачийн нийтлэлээр ямар сэдвийн талаар сонирхож байгаагаа, юуны талаар ярилцмаар байгаагаа сэтгэгдэл хэсэгт үлдээгээрэй. Одоогоор дараа дараачийн нийтлэлдээ хэрхэн үнэгүй SSL холбох болон үнэгүй домэйн хэрхэн авах, домэйн хэрхэн удирдах, subdomain хэрхэн үүсгэх, 1 сервер дээр олон домэйн болон олон вебсайт хэрхэн холбох, firewall тохируулах зэрэг энэхүү нийтлэл дээр цаашид өргөжин яригдах боломжтой маш олон зүйлийн талаар нийтлэл бичихийг хичээх болно.