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

3021

در این مطلب با آموزش  راه اندازی یک سرور کاملا اختصاصی و بدون کنترل پنل در خدمت شما هستیم. شما در این آموزش یاد خواهید گرفت که چگونه آپاچی , mysql و phpmyadmin , php بصورت کاملا حرفه ای و بدون مشکل راه اندازی کنید. تمامی مشکلات در این آموزش بصورت کامل حل شده است.

 

ارتباط با سرور مجازی از طریق ssh

SSH یا Secure Shell راه ارتباطی کاربر با سرور های مجازی یا اختصاصی لینوکس است که از طریق ان هر کاربر میتواند بدون اینکه به سرور خود دسترسی فیزیکی داشته باشد، کلیه ی دستورات خود را از طریق Shell بر روی سرور اجرا کرده و خروجی و نتایج هر دستور را مشاهده و بررسی نماید. در این آموزش با هم روش اتصال به سرور مجازی لینوکس یا سرور اختصاصی لینوکس از طریق SSH با استفاده از نرم افزار PUTTY مرور میکنیم. البته در این رابطه نرم افزارهای بسیار کاربردی دیگری نیز موجود هستند ولی در اینجا به علت سهولت استفاده به آموزش استفاده از PUTTY بسنده میکنیم.

پس از اجرای برنامه در بخش Host Name اطلاعات IP سرور یا Hostname خود را وارد کنید. در صورتی که پورت اتصال به SSH را بر روی سرور تغییر نداده اید اجازه بدهید روی عدد ۲۲ باقی بماند و در پایان بر روی دکمه Open کلیک کنید.

استفاده-از-putty-300x289

صفحه ی سیاه رنگی برای شما باز میشود که از شما میخواهد نام کاربری خود را وارد کنید. در صورتی که سرور مجازی یا اختصاصی تهیه کرده اید نام کاربری شما معمولا باید root باشد. بنابراین اطلاعات درخواستی را وارد نمایید و دکمه enter را فشار دهید. کمی صبر کنید تا از شما درخواست شود رمز عبور خود را وارد نمایید. توجه داشته باشید که در این بخش به دلایل امنیتی، زمانی که شما رمز خود را وارد میکنید، هیچ چیزی نشان نمیدهد. بنابراین نگران نباشید چون این رفتار طبیعی است. فقط رمز خود را به صورت صحیح وارد کرده و سپس روی دکمه ی Enter کلیک کنید.

در صورت ورود موفق، خط فرمان به عبارتی مشابه username@hostname [~] # تغییر خواهد کرد و ssh منتظر دریافت دستورات شما خواهد بود.

 

نصب آپاچی

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

yum install httpd

chkconfig httpd on

nano /etc/httpd/conf/httpd.conf

در خط ۸۰ این فایل عبارت زیر را

Name VirtualHost#

را به

Name VirtualHost

تغییر بدید.

سپس دستورات زیر را به ترتیب وارد نمایید

iptables -A INPUT -p tcp –dport 25 -j ACCEPT

service iptables save

service iptables restart

service httpd restart

با موفقیت اپاچی را نصب کردید و ساده ترین راه این راه می باشد.

 

بعد از نصب آپاچی با زدن ip سرور خود در مرورگر صفحه آپاچی نمایش داده می شود. اگر این صفحه نمایش داده نشد یعنی آپاچی با موفقیت نصب نشده یا درست اجرا نشده است.

 

نصب mysql

برای نصب mysql مراحل زیر را طی کنید:

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

Yum Install Mysql-server mysql php-mysql

chkconfig mysqld on

در صورت درخواست دانلود فایلی عبارت y را تایپ کنید و اینتر بزنید.

سپس با استفاده از دستور زیر mysql را اجرا نمایید.

service mysqld restart

برای حفظ امنیت بیشتر در mysql دستور زیر را وارد کنید و به جای عبارت your mysqlpassowrd رمز عبور روت اصلی mysql خودتون رو وارد کنید

SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘yourmysqlpassword’);

 

نصب phpmyadmin

برای اینکه بهتر بتوانید بر mysql های خودتون کنترل و تسلط داشته باشید phpmyadmin نصب کنید.

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

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

rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm

yum install phpMyAdmin

service httpd restart

سپس به آدرس :

ipaddress/phpMyAdmin

سپس در صورت مواجه شدن با ارور ۴۰۳ مراحل زیر را انجام بدید.

nano /etc/httpd/conf.d/phpMyAdmin.conf

 

سپس با استفاده از دستور بالا وارد فایل کانفیگ phpmyadmin بشید و با استفاده از کلید ترکیبی ctrl+w عبارت Deny from All را جستجو کنید و هرجا این عبارت را دیدید حذف نمایید.

سپس وارد ادرس ipaddress/phpMyAdmin بشید و یوزرنیم و پسورد اصلی روت را وارد نمایید در صورت تغییر رمز عبور mysql رمز عبوری که به روت mysql خود داده اید را وارد نمایید.

 

نصب php

بعد از نصب phpmyadmin نوبت به نصب php میرسد.

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

ابتدا دستور زیر را وارد نمایید:

yum install php

سپس هم اپاچی را ریست نمایید:

service httpd restart

سپس میتوانید با ادیت کردن فایل /etc/php.ini تنظیمات پیشرفض php را تغییر دهید.

لازم به ذکر است که روت اصلی شما یعنی همان public_html هاست شما در فولدر /var/www/html قرار دارد.

در صورت ایجاد یک فایل index.html صفحه دیفالت apache از بین خواهد رفت.

 

 

ایمپورت کردن دیتابیس در phpmyadmin

در ابتدا باید در phpmyadmin یک دیتابیس جدید ایجاد کنید . طبق تصویر پایین در تب database در قسمت create databases نام دیتابیس مورد نظر را می نویسیم و روی create کلیک می کنیم

creat database

بعد از ساخته شدن دیتابیس، نام دیتابیس جدید به لیست سمت چپ صفحه اضافه می شود.

جهت آپلود کردن بکاپ دیتابیس قبلی، روی نام دیتابیس خود کلیک کنید، در صفحه ای که در سمت راست باز می شود روی تب import کلیک کنید.

ریستور کردن و ایمپورت دیتابیس های بزرگ MySQL  به کمک زبان php و به واسطه اسکریپت phpmyadmin به هیچ عنوان پیشنهاد نمیشود (به دلیل احتمال بروز خطا با ایمپورت ناقص دیتابیس) ، بنا بر این فقط زمانی اقدام به انجام این کار کنید که حجم دیتابیس شما حد اکثر ۲۰ یا ۳۰ مگابایت و سرعت کانکشن و اینترنت شما نیز حد اقل ۵۱۲ است . در غیر این صورت احتمال ایمپورت ناقص و خراب شدن دیتابیس بسیار زیاد است .

phpmyadmin_import

مشکل ایمپورت کردن دیتابیس های بزرگ و پر حجم در phpmyadmin

در بیشتر سرور های میزبانی وب مبتنی بر کنترل پنل های وب هاستینگ سی پنل و دایرکت ادمین ، حد اکثر حجم مجاز آپلود فایل توسط php به صورت پیش فرض روی ۸ مگابایت محدود شده است . بنا بر این در صورت ایمپورت کردن و آپلود کردن دیتابیس های بزرگ تر از ۸ مگابایت با پیام های خطایی مشابه زیر مواجه خواهید شد :

You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.

the file size exceeded the maximum size permitted by your PHP configuration

برای حل این مشکل و رفع محدودیت حجم آپلود و ایمپورت دیتابیس های MySQL کافی است تا فایل php.ini را ویرایش کرده و مقادیر زیر را به این شکل افزایش دهید :

memory_limit = 128M
post_max_size = 128M
upload_max_filesize = 128M
max_execution_time = 300
max_input_time = 300

بعد از انجام  تغییرات فوق در فایل php.ini اقدام به ریستارت کردن وب سرور و/یا اجرا کننده php کنید تا تغییرات در سرور اعمال شوند :

service httpd restart

با مراجعه مجدد به صفحه ایمپورت phpmyadmin مشاهده خواهید کرد که محدودیت ۸ مگابایتی آپلود دیتابیس به ۱۲۸ مگابایت افزایش پیدا کرده است .

برای ریستور کردن دیتابیس های بزرگ تر از ۲۰ مگابایت حتما از طریق SSH و دستورات مربوط به MySQL استفاده کنید  .

SQL query:
CREATE TABLE `wp_commentmeta` (

`meta_id` bigint( 20 ) unsigned NOT NULL AUTO_INCREMENT ,
`comment_id` bigint( 20 ) unsigned NOT NULL DEFAULT ‘0’,
`meta_key` varchar( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
`meta_value` longtext COLLATE utf8mb4_unicode_ci,
PRIMARY KEY ( `meta_id` ) ,
KEY `comment_id` ( `comment_id` ) ,
KEY `meta_key` ( `meta_key` ( 191 ) )

) ENGINE = MYISAM AUTO_INCREMENT =233 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

MySQL said:
#۱۲۷۳ – Unknown collation: ‘utf8mb4_unicode_ci’

راه حل:

فایل دیتابیس رو با notpad++  باز کنید؛ هر جا utf8mb4_unicode_ci بود تغییرش بدید بهutf8_persian_ci

CHARSET = utf8mb4 را به CHARSET = utf8 تغییر دهید
اما اگه به دیتابیس قبلی دسترسی دارید اول از دیتابیس اینها را تغییر دهید و سپس بک آپ بگیرید بهتر است؛ اگر نه که این تغییرات را انجام دهید

 

خطای sql syntax

خطای MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL

بطور کلی این خطا زمانی بوجود میاد که شما یک کوئری اشتباه از دیتابیس بگیرید و گرامر SQL رو رعایت نکرده باشید.
برای مثال این خطا زمانی میتونه اتفاق بیوفته که شما بدرستی ورودی ها رو escape نکرده باشید:

کد php:
$query = "UPDATE `posts` SET my_text='{$_POST['text']}' WHERE id={$_GET['id']}";
mysqli_query($db, $query);

در این حالت اگر کلید test داخل متغیر POST_$ حاوی یه تک کوت ( ‘ ) مثل I’m a PHP newbie باشه اونوقت کوئری به این شکل درمیاد:

کد php:
$query = "UPDATE `posts` SET my_text='I'm a PHP newbie' WHERE id=10';

و این یه کوئری اشتباهه و موجب بروز خطای بالا میشه.

 

 

آموزش ریستور کردن فایل های بزرگ و حجیم دیتابیس MySQL در ssh لینوکس

قبل از انجام ریستور کردن دیتابیس توسط دستورات لینوکس در محیط ssh ابتدا باید اندازه پارامتر max_allowed_packet را بر اساس حجم دیتابیس مورد نظر تنظیم نمایید . برای ایجاد تغییرات در این پارامتر باید فایل my.cnf در مسیر /etc/ را ادیت کرده و میزان مورد نظر خود را وارد نمایید . سپس فایل را ذخیره کرده و سرویس MySQL را ریست کنید .

حالا وارد کنترل پنل وب هاستینگ سرور خود شوید و یک دیتابیس جدید ایجاد کنید . سپس نام کاربری و کلمه عبور این دیتابیس جدید را ساخته و به آن اختصاص دهید . حالا از طریق ssh وارد فولدر و پوشه ای شوید که فایل .sql در آن واقع شده است . با دستورات زیر اقدام به بازیابی و ریستور کردن این فایل .sql داخل دیتابیس MySQL ساخته شده در کنترل پنل وب هاستینگ خود نمایید :

mysql -u dbuser -p  dbname < db.sql

با زدن کلید Enter سیستم عامل از شما رمز و کلمه عبور دیتابیس ساخته شده در کنترل پنل را میخواهد که با وارد کردن آن عملیات بازیابی و ریستور کردن دیتابیس آغاز میگردد . اگر به کلمه عبور MySQL Root Password دسترسی دارید میتوانید بدون نیاز به کلمه عبور و نام کاربری دیتابیس اقدام به بازیابی و ریستور کردن آن با یوزر root پایگاه داده MySQL نمایید :

mysql -u root -p  dbname < db.sql

 

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

 

 

راه اندازی DNS Server

 

این مقاله قدم به قدم شما را با نحوه ی نصب dns سرور بر روی لینوکس centos یا redhat اشنا می کند:

 

سناریوی شبکه :

DNS Server IP: 192.168.1.254

DNS Server Name:ns1.vpsroyal.com,ns2.vpsroyal.com

Domain Name:vpsroyal.com

Domain IP to point: 192.168.1.100

۱-نصب پکیج های bind :

پکیج های bind به صورت yum repositories در دسترس می باشد, فقط کافی است تا دستور زیر را در لینوکس خود وارد نمایید

yum install bind bind-chroot

۲-ادیت فایل اصلی کانفیگ :

فایل کانفیگ اصلی bind در دایرکتوری etc/ قرار دارد.اما با توجه به استفاده از chroot این فایل در مسیر var/named/chroot/etc/ در دسترس می باشد,حال فایل کانفیگ را ادیت کرده و محتوای ان را به مانند زیر اپدیت نمایید.

vim /var/named/chroot/etc/named.conf

// /var/named/chroot/etc/named.conf
options {
listen-on port 53 { 127.0.0.1; 192.168.1.0/24; 0.0.0.0/0; };
listen-on-v6 port 53 { ::1; };
directory       “/var/named”;
dump-file       “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
allow-query     { localhost; 192.168.1.0/24; 0.0.0.0/0; };
recursion yess;

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside autoo;

/* Path to ISC DLV key */
bindkeys-file “/etc/named.iscdlv.keyy”;

managed-keys-directory “/var/named/dynamic”;
};

logging {
channel default_debug {
file “data/named.run”;
severity dynamic;
};
};

zone “.” IN {
type hint;
file “named.ca”;
};

zone “demotecadmin.net” IN {
type master;
file “/var/named/demotecadmin.net.db”;
};

include “/etc/named.rfc1912.zones”;
include “/etc/named.root.keyy”;

۳-در این مرحله فایل zone را برای دامنه خود ایجاد می کنیم :

بعد از ایجاد فایل کانفیگ bind اقدام به ایجاد یک فایل zone برای دامنه ی خود همانند فایل کانفیگ می کنیم, در این مثال ادرس ما demotecadmin.net.db می باشد.

vim /var/named/chroot/var/named/demotecadmin.net.db

; Zone file for demotecadmin.net
$TTL 14400
@      ۸۶۴۰۰    IN      SOA     ns1.tecadmin.net. webmaster.tecadmin.net. (
۳۰۱۳۰۴۰۲۰۰      ; serial, todays date+todays
۸۶۴۰۰           ; refresh, seconds
۷۲۰۰            ; retry, seconds
۳۶۰۰۰۰۰         ; expire, seconds
۸۶۴۰۰          ; minimum, seconds
)
demotecadmin.net. 86400 IN NS ns1.tecadmin.net.
demotecadmin.net. 86400 IN NS ns2.tecadmin.net.
demotecadmin.net. IN A 192.168.1.100
demotecadmin.net. IN MX 0 mail.demotecadmin.net.
mail               IN CNAME demotecadmin.net.
www               IN CNAME demotecadmin.nett.

اگر شما دامنه های بیشتری دارید باید فایل های zone مرتبط با ان ها را هم ایجاد نمایید.

۴-اضافه کردن دامنه های بیشتر :

برای اضافه کردن دامنه های بیشتر در dns,مانند مثال بالا برای تمامی دامنه ها zone فایل مستقل بسازید,بعد از ان باید تمامی ان ها را به شکل زیر در فایل named.conf اضافه نمایید, مقدار demotecadmin.net را با ادرس دامنه موردنظر خود تغییر دهید.

zone “demotecadmin.net” IN {
type master;
file “/var/named/demotecadmin.net.db”;
};

۵-استارت سرویس bind :

برای استارت سرویس bind از دستور زیر استفاده نمایید :

service named restart

و از دستور زیر به صورت اتوماتیک استارت در هنگام ریبوت شدن سرور می توانید استفاده نمایید

chkconfig named on

۶-تست نصب dns سرور :

توسط دستور زیر به صورت مستقیم یک کوئری به سمت dns سرور ارسال می کنیم

nslookup <domainname> <dns server name/ip>

———————-

nslookup demotecadmin.net 192.168.1.254

Server:         ۱۹۲٫۱۶۸٫۱٫۲۵۴
Address:        ۱۹۲٫۱۶۸٫۱٫۲۵۴#۵۳

Name:   demotecadmin.net
Address: 192.168.1.100

توسط دستور بالا مشاهده می کنید که خروجی ما به صورت صحیح برگشت داده شده است.

 

 

کانال زیبایی شبره

3 نظرات

    • سلام سروری که ما توضیح دادیم سرور آپاچی هست و برای لینوکس بیشتر کاربرد داره برای asp.net سرور ویندوز نیاز دارید

پاسخ ترک

لطفا نظر خود را وارد کنید!
لطفا نام خود را اینجا وارد کنید...