آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04 | نصب وردپرس مولتی سایت در سیستم عامل Ubuntu

اگر قصد نصب  وردپرس مولتی سایت در سرور لینوکس با سیستم عامل Ubuntu 20.04 | 22.04 را دارید و به دنبال آموزش ساده و فارسی هستید ، در این آموزش که قائم هاست برای شما آماده کرده براحتی تنها در چند مرحله می توانید اقدام به نصب وردپرس بر روی سیستم عامل لینوکس ubuntu 20.04 کنید ، این آموزش شامل تمامی مواردی که برای نصب وردپرس در سیستم عامل خام دارید می باشد و کلیه موارد اعم از دیتابیس ، وب سرور ، دی ان اس و … را به شما آموزش می دهد.

آیا شما یک کاربر وردپرس هستید که می خواهید به راه اندازی شبکه مولتی سایتی وردپرس تغییر دهید؟ – برای میزبانی بیش از یک دامنه در یک نمونه وردپرس؟. در این راهنما، من شما را با مراحل راه اندازی شبکه وردپرس مولتی سایت با استفاده از Nginx به عنوان یک وب سرور و ایمن سازی راه اندازی با مجوزهای Let’s Encrypt SSL در سیستم های لینوکس Ubuntu 22.04|20.04 آشنا می کنم.

به طور خلاصه، این یک پشته LEMP است که وردپرس نصب شده و با Let’s Encrypt ایمن شده است. بنابراین ما نصب خود را با راه اندازی پشته LEMP در لینوکس اوبونتو 22.04|20.04 آغاز می کنیم. WordPress Multisite یکی از ویژگی های محبوب وردپرس است که به استادان وب امکان می دهد چندین وب سایت را با استفاده از نصب وردپرس مشابه بر روی یک سرور اجرا کنند.

مرحله 1: سرور پایگاه داده MariaDB را نصب کنید

این تنظیمات به یک سرور پایگاه داده نیاز دارد. ما یک پایگاه داده برای استفاده توسط وردپرس نصب و ایجاد خواهیم کرد. برای نصب سرور پایگاه داده MariaDB دستورات زیر را اجرا کنید:

sudo apt update
sudo apt -y install mariadb-server

پس از نصب سرور پایگاه داده باید با اجرای دستور زیر آن را ایمن کنید:

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

مرحله 2: ایجاد پایگاه داده و کاربر برای وردپرس

پس از نصب سرور MariaDB، اقدام به ایجاد پایگاه داده و کاربر برای وب سایت وردپرس خود کنید.

اما ابتدا افزونه احراز هویت را به روز کنید:

$ sudo mysql -u root
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root';
FLUSH PRIVILEGES;
QUIT;

به عنوان کاربر root به پایگاه داده MariaDB خود وارد شوید:

$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 59
Server version: 10.3.31-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

سپس یک پایگاه داده برای وردپرس ایجاد کنید:

CREATE DATABASE wp_db;
GRANT ALL PRIVILEGES ON wp_db.* TO  wp_user IDENTIFIED BY "StrongDBP@ssw0rd";
FLUSH PRIVILEGES;
\q

پس از آماده شدن پایگاه داده، اقدام به نصب وب سرور nginx کنید:

مرحله 3: وب سرور Nginx را نصب کنید

سپس وب سرور Nginx را روی سرور اوبونتو خود نصب می کنیم:

sudo apt install nginx

راه اندازی سرویس nginx در هر دو روش توسط systemd service manager انجام می شود.

sudo systemctl start nginx

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

sudo systemctl enable nginx

پیشنهاد ویژه قائم هاست خرید سرور مجازی ایران با هارد پرسرعت NVMe و ترافیک نامحدود با نصب و راه اندازی انواع سیستم عامل همچون لینوکس CentOS و Ubuntu با خدمات و پشتیبانی 24 ساعته حتی در ایام تعطیل ؛ جهت مشاوره و سوالات قبل از خرید از طریق ارسال تیکت با ما در ارتباط باشید.

مرحله 4: PHP و پردازشگر PHP-FPM را نصب کنید

مرحله بعدی نصب php و تمام ماژول های مورد نیاز است. برخلاف وب سرور آپاچی، Nginx شامل پردازش بومی PHP نیست. برای آن، ما باید PHP-FPM (FastCGI Process Manager) را نصب کنیم. در اوبونتو php و php-fpm را با استفاده از دستورات نصب کنید:

sudo apt update
sudo apt install php php-{fpm,pear,cgi,common,mbstring,net-socket,gd,xml-util,mysql,bcmath}

سوکت PHP در   پوشه /var/run/php/ قرار دارد ، به عنوان مثال 

  • PHP 8.0 Sock – /run/php/php8.0-fpm.sock
  • For PHP 7.4 – /var/run/php/php7.4-fpm.sock
  • For PHP 7.3 – /var/run/php/php7.3-fpm.sock
  • For PHP 7.2 – /var/run/php/php7.2-fpm.sock
sudo vim /etc/php/*/fpm/pool.d/www.conf

مرحله 5: وردپرس را دانلود و نصب کنید

دانلود آرشیو وردپرس:

wget wordpress.org/latest.tar.gz

فایل را اکسترکت کنید:

tar xvf latest.tar.gz

پوشه وردپرس حاصل را به فهرست اصلی وب سایت منتقل کنید:

sudo mv wordpress /var/www/mywebsite

اتصال پایگاه داده وردپرس را پیکربندی کنید

cd /var/www/mywebsite
sudo cp wp-config-sample.php wp-config.php

wp-config.php را ویرایش کنید  :

$ sudo vim wp-config.php
define('DB_NAME', 'wp_db');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'StrongDBP@ssw0rd');

تغییر مالکیت  /var/www/mywebsite به کاربر وب:

sudo chown -R www-data:www-data /var/www/mywebsite

مرحله 6: Nginx را برای شبکه وردپرس مولتی سایت پیکربندی کنید

فایل پیکربندی VirtualHost را برای وردپرس خود ایجاد کنید:

sudo vim /etc/nginx/conf.d/mywebsite.conf

قطعه پیکربندی زیر را کپی کنید و بر اساس آن تغییر دهید:

##################################
# WORDPRESS NGINX CONFIGURATIONS
##################################

server {
        listen 80;
        root /var/www/mywebsite;
        server_name mywebsite.com;
        return 301 https://$server_name$request_uri;
}

server {
    	listen 443 ssl http2;
        root /var/www/mywebsite;
	access_log /var/log/nginx/wp_client_access.log;
	error_log /var/log/nginx/wp_client_error.log;
        server_name mywebsite.com;
	ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem;

# Attempt to rewrite wordpress in sub directory 
rewrite ^/wp/([_0-9a-zA-Z-]+)/(xmlrpc\.php|wp-[0-9a-z-]+\.php) /wp/$2;
rewrite ^/wp/([_0-9a-zA-Z-]+)/(wp-(admin|content|includes).*) /wp/$2;


location / {
    index                               index.php index.html;
    try_files                           $uri $uri/ /index.php?$args;
}


#############
# Specify a charset
############
        charset                         utf-8;

############
# GZIP
###########

        gzip                            off;

#############
# Add trailing slash to */wp-admin requests.
############

        rewrite /wp-admin$ $scheme://$host$uri/ permanent;


############
# this prevents hidden files (beginning with a period) from being served
############

location ~ /\. {
        access_log                      off;
        log_not_found                   off;
        deny                            all;
}

###########
# SEND EXPIRES HEADERS AND TURN OFF 404 LOGGING
###########

        location ~* ^.+.(xml|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        access_log                      off;
        log_not_found                   off;
        expires                         max;
}

############
# Pass uploaded files to wp-includes/ms-files.php.
############

#       rewrite                         /files/$ /index.php last;

if ($uri !~ wp-content/plugins) {
        rewrite /files/(.+)$ /wp-includes/ms-files.php?file=$1 last;
}

# Rewrite multisite in a subdirectory '.../wp-.*' and '.../*.php'.
# if (!-e $request_filename) {
#    rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
#    rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ $1 last;
#    rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
#}

# Rewrite multisite '.../wp-.*' and '.../*.php'.
if (!-e $request_filename) {
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) /wp$1 last;
    rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ /wp$1 last;
}


############
# Pass all .php files onto a php-fpm or php-cgi server
############

location ~ \.php$ {

        # Try the files specified in order. In our case, try the requested URI and if
        # that fails, try (successfully) to pass a 404 error.
        # zero day exploit defense

        try_files                       $uri =404;

        # Include the fastcgi_params defaults provided by nginx

        include                         /etc/nginx/fastcgi_params;

        # The amount of time for upstream to wait for a fastcgi process to send data.
        # We keep this *extremely* high so that one can be lazy when remote debugging.

        fastcgi_read_timeout            3600s;
        
         # Buffer size for reading the header of the backend FastCGI process.
        # This defaults to the value of a single fastcgi_buffers, so does not
        # need to be specified in our case, but it's good to be explicit.

        fastcgi_buffer_size             128k;

        # The number and size of the buffers into which the reply from the FastCGI
        # process in the backend is read.
        #
        # 4 buffers at 128k means that any reply by FastCGI greater than 512k goes
        # to disk and replies under 512k are handled directly in memory.

        fastcgi_buffers                 4 128k;

        # SCRIPT_FILENAME is a required parameter for things to work properly,
        # but was missing in the default fastcgi_params on upgrade to nginx 1.4.
        # We define it here to be sure that it exists.

        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;


 # Use the upstream for php7.0-fpm that we defined in nginx.conf

        fastcgi_pass                    unix:/run/php/php-fpm.sock;
        #fastcgi_pass                    127.0.0.1:9000;

        # And get to serving the file!

        fastcgi_index                   index.php;
}


############
# ROBOTS
###########

         location = /robots.txt {
               allow all;
               log_not_found off;
               access_log off;
        }


############
# RESTRICTIONS
############

# Deny access to any files with a .php extension in the uploads directory
# Works in sub-directory installs and also in multisite network
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~* /(?:uploads|files)/.*\.php$ {
 deny all;
}

}

فراموش نکنید که mywebsite.com را با نام دامنه معتبر خود، /var/www/ mywebsite را با root نصب وردپرس خود جایگزین  کنید .

مرحله 7: گواهی Let’s Encryt SSL را برای دامنه ایجاد کنید

هنگامی که nginx را با تنظیمات صحیح اصلاح کردید، به درخواست گواهی Letsencrypt که برای ایمن سازی سایت اصلی از آن استفاده خواهیم کرد، ادامه دهید. برای استفاده، کلاینت certbot را  دانلود و نصب  کنید:

sudo apt update
sudo apt install certbot

در صورت فعال بودن ufw پورت های http و https را روی فایروال باز کنید:

sudo ufw allow http
sudo ufw allow https

توقف nginx:

sudo systemctl stop nginx

درخواست گواهینامه

export DOMAIN="mywebsite.com"
export EMAIL="webmaster@mywebsite.com"
sudo certbot certonly --standalone -d $DOMAIN --preferred-challenges http --agree-tos -n -m $EMAIL --keep-until-expiring

شما باید خروجی را به این صورت دریافت کنید:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for wp.computingforgeeks.com
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/mywebsite.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/mywebsite.com/privkey.pem
   Your cert will expire on 2018-09-17. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

تأیید کنید که گواهی‌هایی که ما واقعاً تولید کرده‌ایم:

$ sudo ls -1 /etc/letsencrypt/live/mywebsite.com/
cert.pem
chain.pem
fullchain.pem
privkey.pem
README

مطمئن شوید که بخش ssl پیکربندی nginx را تغییر داده اید تا به مسیر صحیح کلید خصوصی و گواهی Let’s Encrypt اشاره کند.

تنظیمات پیکربندی را تأیید کنید و سپس nginx را مجدداً راه اندازی کنید تا تغییرات تحت تأثیر قرار گیرند:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

$ sudo systemctl restart nginx

مرحله 8: وب سایت وردپرس را از طریق مرورگر پیکربندی کنید

باز  http://mywebsite.com  شروع به نصب و راه اندازی وردپرس. شما باید صفحه نصب اولیه را دریافت کنید که شبیه به صفحه زیر است.

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

اطلاعات مورد نیاز را ارائه دهید و بر روی دکمه  “نصب وردپرس”  کلیک کنید. اگر همه چیز خوب پیش رفت، باید صفحه ورود را دریافت کنید.

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

روی Log in کلیک کنید و نام کاربری و رمز عبور را وارد کنید.

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

در ورود، باید به داشبورد مدیریت وردپرس بروید.

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

مرحله 9: چند سایت وردپرس را پیکربندی کنید

برای اینکه چند سایت وردپرس کار کند، ابتدا باید آن را در فایل پیکربندی وردپرس فعال کنید:

sudo vim /var/www/mywebsite.com/wp-config.php

مطالب زیر را قبل از خط اضافه کنید /* That's all, stop editing! Happy blogging. */

define( 'WP_ALLOW_MULTISITE', true );

راه اندازی مجدد سرویس Nginx:

sudo systemctl restart nginx

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

ابزارها > راه اندازی شبکه

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

انتخاب کنید که آیا از  زیر دامنه ها  یا  زیر شاخه ها  برای میزبانی سایت های دیگر استفاده کنید.

فعال کردن شبکه وردپرس

چسباندن قطعه پیکربندی داده شده در مسیر / var / WWW / mywebsite /wp-config.php، درست قبل از /* That's all, stop editing! Happy blogging. */

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'mywebsite.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

به عنوان مثال تصویر زیر را ببینید:

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

راه اندازی مجدد nginx:

sudo systemct restart nginx

برای شروع استفاده از ویژگی چند سایت شبکه وردپرس، مجددا وارد شوید. باید منوی مدیریت شبکه  جدید را ببینید  .

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

می‌توانید با رفتن به سایت‌ها > افزودن جدید، وب‌سایت‌ها را به شبکه وردپرس خود  اضافه کنید

آموزش نصب وردپرس مولتی سایت در Ubuntu 22.04

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

سایر صفحات مرتبط »

5/5 - (12 امتیاز)