اجرای WordPress در OpenBSD 6.6 با OpenBSDs HTTPD

معرفی

با توجه به جذابیت OpenBSD برای امنیت ، این امر تنها منطقی است که وب سایت وردپرس خود را با آن برقرار کنید ، به خصوص به دلیل اینکه وردپرس و PHP تمایل به تغییر اهداف اسکریپت های اسکریپت دارند. از آنجا که httpD OpenBSD به طور عمده برای ارائه صفحات استاتیک طراحی شده است ، عملیات POST برای فرآیندهای fastcgi و slowcgi محفوظ است. این باعث می شود که یک بازیگر سرکش بتواند فرآیند سرور را خراب کند و به سرور شما دسترسی پیدا کند. عملیات POST به فرآیند fastcgi وصل می شوند و از یک مترجم خارجی استفاده می کنند. در این مقاله نه تنها راه اندازی سایت وردپرس شما بلکه برخی از تکنیک های اساسی تعمیر و نگهداری و چگونگی تهیه نسخه پشتیبان و بازیابی سایت و بانک اطلاعاتی آن مورد بحث قرار خواهد گرفت. هر جا example.comکه دامنه را مشاهده کردید ، لطفاً آن را با دامنه خود جایگزین کنید.

پیکربندی اولیه

اگر قبلاً این کار را نکرده اید ، باید یک /etc/doas.confپرونده ایجاد کنید. دستور doas جایگزینی آسان OpenBSD برای sudo است. برای راحتی ، من گزینه nopass را اضافه کرده ام تا در هنگام استفاده از doas مجبور نخواهید شد رمز عبور خود را دوباره تایپ کنید. اگر ترجیح می دهید این را نداشته باشید ، به راحتی پوپو را کنار بگذارید.

su -
echo "permit nopass keepenv :wheel" > /etc/doas.conf

بسته به نحوه بسته بندی OpenBSD برای استقرار ، بعضی اوقات مدیر بسته ممکن است از مخزن تنظیم نشده برخوردار باشد. برای پیکربندی مخزن رسمی OpenBSD ، باید /etc/installurlپرونده را ایجاد کنیم .

doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit

حال ما باید PHP و برخی از ماژول های اضافی را که WordPress به آنها نیاز دارد اضافه کنیم تا بتواند مواردی مانند تصاویر و رمزگذاری را مدیریت کند. در صورت درخواست ، جدیدترین بسته PHP را نصب کنید. یک کار شما باید انجام دهید کپی کردن فایلهای ini ماژول از فهرست نمونه به اصلی. این کار برای فعال کردن ماژولهای PHP اضافی باید انجام شود.

doas pkg_add -r mariadb-client mariadb-server php php-curl php-mysqli php-zip pecl73-mcrypt pecl73-imagick wget
doas cp /etc/php-7.3.sample/* /etc/php-7.3/.

بیایید رمزنامه ها را رمزگذاری کنیم

در دنیای امروز ، وب سایت ها باید از طریق SSL یا چهره هایی که توسط موتورهای جستجوگر خراب می شوند ، ارائه شوند. خوشبختانه ، OpenBSD یک اپلیکیشن عالی به نام acme-client دارد. مشتری Acme به طور خودکار یک کلید خصوصی جدید تولید کرده و یک گواهی کاملا معتبر جدید را درخواست می کند. مشتری acme به داشتن سرور وب بستگی دارد ، بنابراین ما نیاز به تعریف سریع پیش فرض سرور داریم.

با ویرایشگر مورد علاقه خود ایجاد کنید /etc/httpd.conf. بعداً تعریف های دیگر سرور را به پرونده اضافه می کنیم. در حال حاضر این کافی خواهد بود به طوری که Acme-client به درستی کار کند.

prefork 5
types { include "/usr/share/misc/mime.types" }

server "default" {
    listen on egress port 80
    root "/htdocs"
    directory index "index.html"

    location "/.well-known/acme-challenge/*" {
        request strip 2
        root "/acme"
    }
}

همچنین با استفاده از ویرایشگر مورد علاقه خود ، ایجاد کنید /etc/acme-client.conf.

authority letsencrypt {
    api url "https://acme-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-privkey.pem"
}

authority letsencrypt-staging {
    api url "https://acme-staging-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-staging-privkey.pem"
}

domain example.com {
    alternative names { www.example.com }
    domain key "/etc/ssl/private/example.com.key"
    domain full chain certificate "/etc/ssl/example.com.crt"
    sign with letsencrypt
}

حال باید httpd را فعال و شروع کنیم. پس از انجام این کار ، می توانیم Acme-Client را اجرا کنیم و منتظر بمانیم تا گواهینامه جدید و جدید خود را بدست آوریم. بعد از انجام این کار ، یک کار cron اضافه می کنیم تا به طور خودکار هر 7 روز یکبار درخواست جدید شود ، بنابراین لازم نیست نگران انقضا باشیم.

doas rcctl enable httpd
doas rcctl start httpd
doas acme-client -v example.com

اکنون ما کار cron را ایجاد می کنیم. این خط را در زیر آخرین ورودی اضافه کنید. در این حالت ، ما به Acme-klient می گوییم هر ساعت شنبه 1:00 صبح گواهینامه جدید را درخواست کند.

doas crontab -e
0       1       *       *       6       acme-client -F example.com && rcctl reload httpd

پیکربندی HTTPD برای وردپرس

اکنون زمان راه اندازی httpd برای وردپرس فرا رسیده است. به جای اینکه تعریف وب سایت خود را مستقیماً در /etc/httpd.confآن قرار دهیم ، ما قصد داریم آن را در پرونده جداگانه ای بنامیم /etc/httpd.conf.example.comو آن را در پرونده اصلی پیکربندی قرار دهیم. به طور کلی این کار خوب است که این دو را جدا کنید ، تعاریف گسترده سایت را در پرونده اصلی پیکربندی و تنظیمات خاص دامنه خود در حالت متفاوت حفظ کنید.

خط زیر را به قسمت زیر /etc/httpd.confپرونده خود اضافه کنید:

include "/etc/httpd.conf.example.com"

اکنون با استفاده از ویرایشگر مورد علاقه خود ، ایجاد کنید /etc/httpd.conf.example.com. برای راحتی ، ما قصد داریم پرونده های جداگانه ای برای دامنه شما ایجاد کنیم. این باعث می شود در تلاش باشید تا مشکلات احتمالی سایت خود را کم کنید.

server "example.com" {
    listen on egress port 80
    alias "www.example.com"

    # Automatically redirect to SSL
    block return 302 "https://$SERVER_NAME$REQUEST_URI"

    log {
            access "access-example.com"
            error "error-example.com"
    }
}

server "example.com" {
    listen on egress tls port 443
    alias "www.example.com"
    root "/htdocs/wordpress"
    directory index "index.php"

    log {
            access "access-example.com"
            error "error-example.com"
    }
    tcp { nodelay, backlog 10 }

    tls {
            certificate "/etc/ssl/example.com.crt"
            key "/etc/ssl/private/example.com.key"
    }
    hsts {
            # max-age value is the number of seconds in 1 year
            max-age 31556952
            preload
            subdomains
    }

    location "/.well-known/acme-challenge/*" {
            root "/acme"
            request strip 2
    }
    location "/posts/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/page/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/comments/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
     location "/wp-json/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/wp-login.php*" {
            authenticate "WordPress" with "/htdocs/htpasswd"
            fastcgi socket "/run/php-fpm.sock"
    }
    location "*.php*" {
            fastcgi socket "/run/php-fpm.sock"
    }
}

برای امنیت بیشتر ، ما می خواهیم هنگام ورود به سایت مدیریت وردپرس ، اعلان اضافی را برای نام کاربری و رمزعبور پیاده سازی کنیم. از آنجا که بچه های اسکریپت دوست دارند به طور مکرر ورود به WordPress را امتحان کرده و از آن سوء استفاده کنند ، ما یک سطح اضافی در سطح سرور وب ایجاد می کنیم. معمولاً قبل از اینکه وردپرس خطای 401 غیرمجاز را وارد کند ، حدود 5 حدس می زنند.

doas su
cd /var/www/htdocs
doas htpasswd htpasswd <user>
doas chown www:www htpasswd
doas chmod 0640 htpasswd
doas rcctl reload httpd

PHP و PHP-FPM را آماده و پیکربندی کنید

ما باید تغییر در php ایجاد کنیم تا نصب وردپرس شما بتواند ایمیل ارسال کند. وردپرس و برخی افزونه ها به قابلیت ارسال ایمیل به شما در مورد ارتقاء ، هشدارها و تغییرات اعتماد دارند. عدم امکان ارسال ایمیل می تواند برخی از ویژگی های وردپرس را خراب کند. از آنجایی که httpd در محیط chroote اجرا می شود ، ما باید به php بگوییم که چگونه ایمیل ارسال کنیم. علاوه بر این ، ما باید برخی از ترفندهای عملکردی را برای php-fpm انجام دهیم.

به دنبال sendmail_pathخط بگردید /etc/php-7.3.iniو تغییر زیر را ایجاد کنید:

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; sendmail_path =
sendmail_path = /bin/femail -t -i

خطوط زیر را جستجو کنید /etc/php-fpm.confو آنها را به شرح زیر تغییر دهید:

pm.start_servers = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 6

مرحله بعدی فعال سازی و شروع php-fpm است.

doas rcctl enable php73_fpm
doas rcctl start php73_fpm

MariaDB را تهیه و پیکربندی کنید

MariaDB یک چنگال جایگزین MySQL است. ما باید پیکربندی اولیه و کارهای آماده سازی پایگاه داده را برای وردپرس انجام دهیم.

قبل از اینکه بتوانیم از MariaDB به طور مؤثر استفاده کنیم ، باید به Daemon mysql اجازه دهیم تا از منابع بیشتری نسبت به پیش فرض استفاده کند. به منظور انجام این کار ، /etc/login.confبا افزودن این مطلب در پایین ، تغییرات زیر را ایجاد کنید.

mysqld:\
    :openfiles-cur=1024:\
    :openfiles-max=2048:\
    :tc=daemon:

ما باید در پرونده پیکربندی MariaDB تغییراتی ایجاد کنیم /etc/my.cnf. با برقراری ارتباط مشتری و سرور mysql از طریق سوکت دامنه یونیکس به جای TCP ، می توان میزان حافظه سرور شما را پایین نگه داشت. لازم نیست همه تغییرات پیشنهادی را در زیر انجام دهید. دو مورد مهم برای تغییر socketخط و تفسیر bind-addressخط است. این سوکت را به داخل /var/wwwمحیط chroot منتقل می کند تا وردپرس بتواند به پایگاه داده وصل شود. با اظهار نظر در مورد bind-addressخط ، مانع گوش دادن MariaDB به درگاه TCP می شویم.

[client-server]
socket=/var/www/var/run/mysql/mysql.sock
#port=3306

# This will be passed to all MariaDB clients
[client]
#password=my_password

# The MariaDB server
[mysqld]
# To listen to all IPv4 network addresses, use "bind-address = 0.0.0.0"
#bind-address=127.0.0.1
# Directory where you want to put your data
#data=/var/mysql
# This is the prefix name to be used for all log, error and replication files
#log-basename=mysqld
# Logging
#log-bin=/var/mysql/mariadb-bin
#max_binlog_size=100M
#binlog_format=row
#expire_logs_days = 7
#general-log
#slow_query_log
query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 16M

حال باید دودویی نصب MariaDB را اجرا کنیم و MariaDB را فعال و شروع کنیم. در این روش یک رمزعبور اصلی تنظیم می شود و به صورت اختیاری پایگاه داده تست را رها می کند. ایده خوبی است که در مرحله نصب ایمن از همه پیشنهادات پیروی کنید.

doas mysql_install_db
doas rcctl enable mysqld
doas rcctl start mysqld
doas mysql_secure_installation

کاربر پایگاه داده وردپرس و کاربر پایگاه داده را ایجاد کنید. به یاد داشته باشید <wp_user>که انتخاب نام کاربری پایگاه داده و <password>رمز عبور پیچیده ای را انتخاب کنید.

mysql -u root -p 
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT

WordPress را نصب و پیکربندی کنید

وردپرس مدتی است که پورت رسمی OpenBSD را در اختیار ندارد ، زیرا تقریباً خارج از جعبه کار می کند. پوشه نصب وردپرس را بارگیری ، استخراج و انتقال دهید.

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xvfz latest.tar.gz
doas mv wordpress /var/www/htdocs/.
doas chown -R www:www /var/www/htdocs/wordpress
doas chmod 0755 /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress/
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

ما باید کپی /etc/resolv.confو /etc/hostsدایرکتوری را که می خواهیم ایجاد کنیم ، کپی کنیم /var/www/etc. این امر به گونه ای است که وردپرس می تواند با موفقیت به بازار برسد. برای بارگیری افزونه ها و مضامین از طریق سایت مدیر وردپرس به این امر نیاز خواهید داشت. همچنین مهم است که پلاگین Jet Pack به درستی کار کند.

doas mkdir /var/www/etc
doas cp /etc/hosts /var/www/etc/.
doas cp /etc/resolv.conf /var/www/etc/.

از اینجا ، با استفاده از https از طریق URL که در تعریف سرور وب مشخص کرده اید ، به وب سایت وردپرس خود مرور کنید. اگر همه چیز درست کار می کند ، باید جادوگر نصب وردپرس را ببینید. وقتی به گزینه مشخص کردن سرور بانک اطلاعاتی رسیدید ، باید از آن استفاده کنیدlocalhost:/var/run/mysql/mysql.sock

پس از نصب وردپرس ، زمان آن رسیده که پیوندهای ثابت را تنظیم کنید تا آنها دوستانه تر به نظر برسند. از صفحه مدیریت وردپرس به بروید Settings -> Permalinks. بر روی Custom Structure کلیک کنید و تایپ کنید /posts/%postname%. پس از ایجاد این تغییر ، روی دکمه Save Changes کلیک کنید. شما اکنون پیوندهای بسیار زیبایی دارید. به عنوان مثال ، یک لینک ثابت به صورت زیر خواهد بود:https://example.com/posts/example-blog-post

از اینجا ، شما باید یک وب سایت اصلی آماده برای رفتن داشته باشید. مطمئن شوید که افزونه هایی مانند Jet Pack و WP-Super Cache را نصب می کنید. افزونه WP-Super Cache با پنهان کردن صفحات وب و از بین بردن جستجوی ثابت پایگاه داده ، به وب سایت شما سرعت می بخشد و JetPack به شما آمار بسیار خوبی برای مشاهده می دهد.

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

ناگفته نماند که تهیه نسخه پشتیبان از وب سایت و پایگاه داده خود بسیار مهم است. خوشبختانه ، این یک کار نسبتاً آسان است. پشتیبان گیری از هر دو در فهرست خانه خود و سپس می توانید آنها را از طریق scp به مکان دیگری کپی کنید. همچنین می توانید از طریق کنترل پنل Vultr عکس فوری بسازید. ایده خوبی است برای انجام هر دو.

cd /var/www/htdocs
tar cvfz wordpress.tgz wordpress/
cp wordpress.tgz /home/user
mysqldump -u root -p wordpress > wordpress.sql && gzip wordpress.sql

بازیابی وب سایت وردپرس

اگر پایگاه داده شما خراب شد و بازیابی لازم است ، موارد زیر را انجام دهید:

gunzip wordpress.sql.gz
mysql -u root -p wordpress
DROP USER '<user>'@'localhost';
DROP DATABASE wordpress;
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
mysql -u root -p wordpress < wordpress.sql

اگر تغییری در پرونده اسکریپت WordPress ایجاد کرده اید که چیزی را خراب کرده است ، همیشه می توانید وردپرس را از طریق کنترل پنل مدیریت مجددا نصب کنید. به دنبال Updatesبخش باشید و بر روی لینک کلیک کنید. به دنبال دکمه ای با برچسب باشید Re-install Now. این حداقل باعث خراب شدن آن می شود اما بیشتر پیکربندی شما باید دست نخورده باقی بماند.

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

rm /var/www/htdocs/wordpress
cp /home/user/wordpress.tgz /tmp
tar xvfz wordpress.tgz
mv wordpress /var/www/htdocs/.
chown -R www:www /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;


Leave a Comment

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

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

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد