نصب وردپرس روی CentOS 7

بسم الله الرحمن الرحیم

مقدمه

خوب اولا CentOS یکی از مرسوم تریم بستر های سرور هست
ثانیا اهمیت wordpres هم خیلی لازم نیست گفته بشه .
پس منطقی هست که نصب wordpress روی CentOS مهم باشه
در عین این اهمیت برای من یکی خیلی دردسر داشت .
حد اقل نسبت به UbuntuServer یا Window .
این متن هم برای استفاده خودم و دیگران در آینده مینویسم

پیشنیاز ها

خوب اول از همه طبیعتا شما باید CentOS رو نصب داشته باشید
آشنایی کلی با لینوکس و مبانی سورور هم لازمه .

نصب Apache

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

sudo yum install httpd

بعد از نصب تنظیمات firewall را طوری باید تنظبم کنیم که در خواست های http را بپذیرد
CentOS به طور پیشفرض از Firewalld استفاده میکند که ما میتوانیم سرویس http و https را روی سرور فعال کنیم.
این کار در واقع پورت ۸۰ , ۴۴۳ را روی سرور ما باز مینماید

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

اگر از پورتی غیر از پورت ۸۰ و ۴۴۳ استفاده مینمایید نمیتوانید از کد بالا استفاده کنید و میبایست از این کد استفاده کنید ( برای مثال باز کردن پورت ۸۹۹۱ )

sudo firewall-cmd --zone=public --add-port=8991/tcp

پس از آن باید سرویس apache را راه اندازی کنیم .

sudo systemctl enable httpd.service
sudo systemctl start httpd.service

حال با دستور زیر وضعیت apache را مشاهده مینمایید
در خروجی در صورتی که active مشهاهده شد به معنای فعال بودن سرویس apache است .

sudo systemctl status httpd | grep active

خروجی در صورت فعال بودن .

   Active: active (running) since Tue 2020-05-19 20:14:44 +0430; 1h 28min ago

حال نوبت تست کردن apache میباشد .

با این دستور ip سورور خود را میتوانید بیابید .
کافیست ip را در صفحه ی مرورگر کامپیوتری که درون شبکه است وارد نمایید .

ip a | grep inet

خروجی

    inet 127.0.0.1/8 scope host lo 
    inet6 ::1/128 scope host  
    inet 10.10.10.200/24 brd 10.10.10.255 scope global noprefixroute eth0 
    inet6 fe80::67b7:1bab:43f:6a6b/64 scope link noprefixroute 

برای مثال در خروجی بالا ip که باید روی آن تست انجام شود ، ۱۰.۱۰.۱۰.۲۰۰ است.
برای تست کردن از دستور زیر استفاده نمایید .

curl 10.10.10.248 | grep "Testing 123.."

خروجی به شکل زیر خواهد بود .

          <h1>Testing 123..</h1>

ساخت Virtua Host

برای استفاده از چندین سایت روی سرور خود باید از Virtual Host ها استفاده کنید .
البته اگر تنها از یک سایت هم استفاده میکنید هم پیشنهاد میشود از ViryualHost ها استفاده نمایید .

برای نصب VirtualHost ابتدا باید پوشه هایی که فایل هایمان در آن قرار میگیرد را در مسیر دلخواه خود بسازیم .

sudo mkdir -p /data/webserver/espshop.ir/public_html
sudo mkdir -p /data/webserver/espshop.ir/log

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

sudo vim /data/webserver/espshop.ir/public_html/index.html

سپس درون آن کد زیر را کپی میکنیم .

<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

حال باید دسترسی ها و مالکیت های مربوط به فایل ها و دایرکتوری ها را کنترل کنیم .

sudo chown -R apache:apache  /data/webserver/espshop.ir/
sudo chmod -R 750 /data/webserver/
cd /data/webserver/espshop.ir/public_html/
sudo find . -type d -exec chmod 750 {}  \;
sudo find . -type f -exec chmod 640 {}  \;
sudo find . -exec  chcon -R -t httpd_sys_content_t {} \;  

دستورات بالا را ممکن هر وقت که فایلی اضافه میکنید احتیاج به اجرا داشته باشید .

حال بایستی آپاچی را برای شناخت این VirtualHost تنظیم کنیم .

sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

فایل های تنظیمات هر VirtualHost را در فولدر sites-available قرار میدهیم .
و هنگامی که فایل تنظیمات هر فاید را در فولدر sites-enabled لینک میکنیم برای apache قابل شناسایی میشود .
برای این کار باید عبارتی به انتهای فایل تنظیمات apache اضافه کنیم .

sudo vim /etc/httpd/conf/httpd.conf

حال کد زیر را به انتهای آن اضافه کنید و ذخیره کنید .

IncludeOptional sites-enabled/*.conf


<Directory "/data/webserver">
    AllowOverride None
    Require all granted 
</Directory>

حال باید تنطیمات Vhost را بنویسیم.

sudo vim /etc/httpd/sites-available/espshop.ir.conf
<VirtualHost *:80>
    ServerName www.espshop.ir
    ServerAlias espshop.ir
    DocumentRoot /data/www/espshop.ir/public_html/
    ErrorLog /data/webserver/espshop.ir/log/error.log
    CustomLog /data/webserver/espshop.ir/log/requests.log combined
</VirtualHost>

برای فعال شدن این VHOST میبایست آن را در فولدر sites-enabled لینک کنیم .

sudo ln -s /etc/httpd/sites-available/espshop.ir.conf /etc/httpd/sites-enabled/espshop.ir.conf

حال باید تنظیمات Selinux را برای فولدر log را تنظیم کنیم .

sudo semanage fcontext -a -t httpd_log_t "/data/webserver/espshop.ir/log(/.*)?"
sudo restorecon -R -v /data/webserver/espshop.ir/log

برای تست میتوانید از طریق خود CentOS اقدام کنید .
ابتدا آپاچی را ریستارت میکنیم

sudo systemctl restart httpd


سپس این عبارت را به /etc/hosts اضافه میکنیم .

۱۲۷٫۰٫۰٫۱    espshop.ir
curl espshop.ir

در این جا عبارت html که در گذشته در فایل index.html اضافه کردیم ، را باید نمایش دهد .

نصب SSL

برای نصب ssl ابتدا بسته EPEL را نصب کنید

sudo yum install epel-release

سپس بسته های زیر را نصب میکنیم

sudo yum install certbot python2-certbot-apache mod_ssl

برای نصب certificate دستور زیر را اجرا کنید .

sudo certbot --apache -d espshop.ir -d www.espshop.ir

نصب php

حال که نصب و تنظیم apache به پایان رسید .باید php را نصب کنیم .

ایتدا مخزن remi را فعال مینماییم .

yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm 

سپس بسته های مربوط به php را نصب میکنیم .

yum install  php php-common php-mysql php-gd php-xml php-mbstring php-mcrypt 

برخی دیگر از Extension های php هم که برای wordpress نیاز است در این لینک دیده میشود

نصب و ساخت دیتابیس MySQL

برای کار با دیتابیس MySQL از بسته ی MariaDB استفاهد میکنیم .

yum install mariadb mariadb-server 

حال باید آن را فعال کنیم .

sudo systemctl enable mariadb 
sudo systemctl start mariadb

حال برای تنظیمات اولیه

sudo mysql_secure_installation

به سوالات پرسیده شده پاسخ دهید

حال پیشنهاد میشود برای وردپرس کاربری جداگانه ای از root بسازید و دسترسی لازم را به آن بدهید .
در کد زیر دیتابیس wordpress و کاربری sepehr را ایجاد میکنیم .

sudo mysql -u root -p
Enter password:

## Create database ##
CREATE DATABASE wordpress;

## Creating new user ##
CREATE USER sepehr@localhost IDENTIFIED BY "Your Password";

## Grant privileges to database ##
GRANT ALL ON wordpress.* TO sepehr@localhost;

## FLUSH privileges ##
FLUSH PRIVILEGES;

## Exit ##
exit

نصب wordpress

حال زمان آن رسیده که ووردپرس را نصب کنیم .

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

cd /tmp
wget http://fa.wordpress.org/wordpress-5.3-fa_IR.zip

حال فایل را از حالت فشرده خارج میکنیم .

unzip xzvf wordpress-5.3-fa_IR.tar.gz

حال فایل htaccess. را ایجاد مینماییم

touch /tmp/wordpress/.htaccess

و فاید wp-config.php را از روی wp-config-sample.php اینجاد مینماییم .

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

حال پوشه upgrade را نیز ایجاد مینماییم تا بعدا وردپرس برای آپدیت کردن به خظای دسترسی بر نخورد .

mkdir /tmp/wordpress/wp-content/upgrade

حال این فایل هایی که در پوشه tmp داریم را یه پوشه ی virtualhost انقال میدهیم .

sudo cp -a /tmp/wordpress/. /data/webserver/espshop.ir/public_html

حال دسترسی ها و مالکیت های مورد نیاز را تنظیم مینماییم .

sudo chown -R apache:apache  /data/webserver/espshop.ir/
cd /data/webserver/espshop.ir/public_html/
sudo find . -type d -exec chmod 750 {}  \;
sudo find . -type f -exec chmod 640 {}  \;
sudo find . -exec  chcon -R -t httpd_sys_content_t {} \;  

حال باید پایگاه داده ی خود را به wordpress متصل نماییم .

sudo vim /data/webserver/espshop.ir/public_html/wp-config.php

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

. . .

define('DB_NAME', 'wordpress');

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

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

. . .

define('FS_METHOD', 'direct');

در این مرحله بهتر است کلید هایی برای بالا بردن امنین سایت هود نصب کنیم.

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

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

کافیست خروجی را در فایل wp-config.php کپی کنید .

. . .

define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE');
define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');

. . .

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *