راهنمای نصب وردپرس با lemp بروی ubuntu 22.04 | بام تک سرور مجازی اروپا

بام تک سرور مجازی اروپاوردپرس یکی از محبوب ترین سیستم های مدیریت محتوا (CMS) در اینترنت است که به کاربران امکان می دهد از طریق database MySQL و backend PHP، وب سایت ها و وبلاگ های انعطاف پذیری ایجاد کنند. وردپرس یک انتخاب عالی برای راه اندازی سریع وب سایت است. تقریباً تمام مدیریت وب سایت های وردپرس پس از تنظیم اولیه از طریق رابط کاربری گرافیکی انجام می شود.مرحله 1 - نصب سرور وب Nginx برای نمایش صفحات وب برای بازدیدکنندگان سایت، از Nginx، یک سرور وب پرقدرت استفاده خواهید کرد. شما از مدیر بسته APT برای دریافت این نرم افزار استفاده خواهید کرد. از آنجایی که این اولین بار است که از apt برای این جلسه استفاده می کنید، ابتدا با به روزرسانی نمایه بسته های سرور خود شروع کنید: sudo apt updateسپس، برای نصب Nginx، apt install را اجرا کنید:sudo apt install nginxوقتی از شما خواسته شد، کلیدهای Y و ENTER را فشار دهید تا تأیید کنید که می خواهید Nginx را نصب کنید. پس از اتمام نصب، سرور وب Nginx روی سرور Ubuntu 22.04 شما فعال و در حال اجرا خواهد بود. اگر دیوار آتش ufw را فعال کرده اید، همانطور که در راهنمای راه اندازی اولیه سرور ما توصیه شده است، باید اتصال به Nginx را مجاز کنید. Nginx هنگام نصب چندین نمایه کاربرد UFW را ثبت می کند. برای بررسی کدام پروفایل های UFW در دسترس هستند، اجرا کنید:sudo ufw app listخروجی برنامه های موجود: Nginx کامل Nginx HTTP Nginx HTTPS OpenSSH توصیه می شود پروفایلی را که بیشترین محدودیت را دارد فعال کنید که هنوز هم ترافیک مورد نیاز شما را اجازه می دهد. از آنجایی که در این راهنما SSL را برای سرور خود پیکربندی نکرده اید، فقط باید ترافیک HTTP معمولی را روی پورت 80 مجاز کنید. این کار را با اجرای موارد زیر انجام دهید:sudo ufw allow 'Nginx HTTP'می توانید با بررسی وضعیت، تغییر را تأیید کنید:sudo ufw statusاین خروجی نشان می دهد که اکنون ترافیک HTTP مجاز است: خروجی وضعیت: فعالبا اضافه شدن قانون جدید فایروال، می توانید با مراجعه به نام دامنه یا آدرس IP عمومی سرور خود در مرورگر وب خود، آزمایش کنید که آیا سرور در حال اجرا است یا خیر.اگر نام دامنه ای به سمت سرور خود ندارید و آدرس IP عمومی سرور خود را نمی دانید، می توانید با اجرای یکی از دستورات زیر، آن را پیدا کنید:ip addr showاین چند آدرس IP را چاپ خواهد کرد. می توانید هر یک از آنها را به نوبه خود در مرورگر وب خود امتحان کنید.اگر این صفحه را مشاهده کردید، به این معنا است که Nginx را با موفقیت نصب کرده اید و ترافیک HTTP را برای سرور وب خود فعال کرده اید.مرحله 2 - نصب MySQLاکنون که یک سرور وب در حال اجرا دارید، باید سیستم پایگاه داده را برای ذخیره و مدیریت داده های سایت خود نصب کنید. MySQL یک سیستم مدیریت پایگاه داده محبوب است که در محیط های PHP استفاده می شود.باز هم، از apt برای دریافت و نصب این نرم افزار استفاده کنید:sudo apt install mysql-serverهنگامی که از شما خواسته شد، با فشار دادن Y و سپس ENTER نصب را تأیید کنید.پس از اتمام نصب، توصیه می شود یک اسکریپت امنیتی را که همراه با MySQL نصب شده است اجرا کنید. این اسکریپت برخی از تنظیمات پیش فرض insecure را حذف می کند و دسترسی به سیستم پایگاه داده شما را قفل می کند. اسکریپت تعاملی را با اجرای دستور زیر شروع کنید:sudo mysql_secure_installationبا پرسشی مواجه خواهید شد که از شما می پرسد آیا می خواهید پلاگین VALIDATE PASSWORD را پیکربندی کنید.Would you like to setup VALIDATE PASSWORD plugin? (Y/N)برای پیکربندی این پلاگین پاسخ Y را وارد کنید. این پلاگین به شما کمک می کند تا گذرواژه های قوی تری برای حساب های کاربری MySQL خود تنظیم کنید.بعد از اینکه تصمیم خود را در مورد پلاگین VALIDATE PASSWORD اعلام کردید، باید رمز عبور root MySQL خود را تنظیم کنید. رمز عبور باید قوی و پیچیده باشد.برای تنظیم رمز عبور root MySQL پاسخ Y را وارد کنید. سپس، از شما خواسته خواهد شد که رمز عبور جدید خود را دو بار وارد کنید تا تأیید شود.در ادامه، اسکریپت از شما می خواهد که حساب های کاربری پیش فرض MySQL را حذف کنید، از جمله حساب کاربری anonymous که به هر کس اجازه دسترسی به پایگاه داده را می دهد.Remove anonymous users? [Y/N]برای حذف حساب های کاربری پیش فرض MySQL پاسخ Y را وارد کنیددر نهایت، اسکریپت از شما می خواهد که پایگاه داده test و جداول آن را حذف کنید. پایگاه داده test یک پایگاه داده نمونه است که با نصب MySQL ایجاد می شود.Remove test database and anonymize authenticated users? [Y/N]برای حذف پایگاه داده test و جداول آن پاسخ Y را وارد کنید.اسکریپت اکنون تمام تغییرات را اعمال می کند و شما با پیامی مبنی بر اینکه MySQL با موفقیت پیکربندی شده است، مواجه می شویدمرحله 3 - نصب PHPشما Nginx را نصب کرده اید تا محتوای شما را ارائه دهد و MySQL را نصب کرده اید تا داده های خود را ذخیره و مدیریت کند. اکنون می توانید PHP را برای پردازش کد و ایجاد محتوای پویا برای سرور وب نصب کنید.در حالی که Apache مفسر PHP را در هر درخواست جاسازی می کند، Nginx به یک برنامه خارجی نیاز دارد تا پردازش PHP را انجام دهد و به عنوان یک پل بین مفسر PHP و سرور وب عمل کند. این امر به بهبود کارایی کلی در اکثر وب سایت های مبتنی بر PHP کمک می کند، اما به پیکربندی اضافی نیاز دارد. شما باید PHP8.1-fpm را نصب کنید، که مخفف "PHP fastCGI process manager" است و از نسخه فعلی PHP (در زمان نوشتن) استفاده می کند، تا به Nginx بگویید درخواست های PHP را برای پردازش به این نرم افزار منتقل کند. علاوه بر این، شما به php-mysql نیاز دارید، یک ماژول PHP که به PHP امکان ارتباط با پایگاه داده های مبتنی بر MySQL را می دهد. بسته های اصلی PHP به عنوان وابستگی ها به طور خودکار نصب می شوند.برای نصب بسته های PHP8.1-fpm و php-mysql، دستور زیر را اجرا کنید:sudo apt install php8.1-fpm php-mysqlهنگامی که از شما خواسته شد، کلیدهای Y و ENTER را فشار دهید تا تأیید نصب را انجام دهید.مرحله ۴ - ایجاد یک پایگاه داده MySQL و یک کاربر برای وردپرسوردپرس از MySQL برای مدیریت و ذخیره اطلاعات سایت و کاربر استفاده می کند. اگرچه شما قبلاً MySQL را نصب کرده اید، اجازه دهید یک پایگاه داده و یک کاربر برای وردپرس ایجاد کنیم.برای شروع، به حساب root (مدیریتی) MySQL وارد شوید. اگر MySQL برای استفاده از پلاگین احراز هویت auth_socket پیکربندی شده است (که پیش فرض است)، می توانید از طریق sudo به حساب مدیریت MySQL وارد شوید:sudo mysqlاگر روش احراز هویت را تغییر داده اید تا از گذرواژه برای حساب root MySQL استفاده کنید، از دستور زیر استفاده کنید:mysql -u root -pاز شما خواسته می شود گذرواژه ای را که برای حساب root MySQL تنظیم کرده اید، وارد کنید.پس از ورود به سیستم، یک پایگاه داده جداگانه ایجاد کنید که وردپرس می تواند آن را کنترل کند. می توانید آن را هر چه می خواهید نامگذاری کنید، اما در این راهنما از wordpress برای سادگی استفاده خواهیم کرد. می توانید یک پایگاه داده برای وردپرس با وارد کردن دستور زیر ایجاد کنید:CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;این دستور یک پایگاه داده جدید با نام wordpress ایجاد می کند و تنظیمات کاراکتر utf8 و collation utf8_unicode_ci را برای آن اعمال می کند. این تنظیمات اطمینان حاصل می کنند که وردپرس می تواند به درستی با پایگاه داده ارتباط برقرار کند و اطلاعات را ذخیره و بازیابی کند.حالا باید یک کاربر MySQL ایجاد کنید که فقط به پایگاه داده wordpress دسترسی داشته باشد. ایجاد پایگاه داده های اختصاصی و حساب های کاربری از نظر مدیریت و امنیت ایده خوبی است. ما در این راهنما از نام wordpressuser استفاده خواهیم کرد - اگر مایل بودید می توانید آن را تغییر دهید.در دستور زیر، شما قرار است یک حساب کاربری ایجاد کنید، یک گذرواژه تنظیم کنید و دسترسی به پایگاه داده ای که ایجاد کردید را برای آن اعطا کنید. به یاد داشته باشید که در اینجا یک گذرواژه قوی انتخاب کنید:CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost';اکنون شما یک پایگاه داده و یک حساب کاربری دارید که هر کدام به طور خاص برای وردپرس ساخته شده است.با اتمام کار پایگاه داده، با تایپ زیر از MySQL خارج شوید:EXIT;نشست MySQL خاتمه می یابد و شما را به پوسته لینوکس معمولی باز می گرداند.مرحله 5: پیکربندی Nginxاکنون، چند تنظیم در فایل های بلوک سرور Nginx خود انجام خواهیم داد. بر اساس آموزش های پیش نیاز، شما باید یک فایل پیکربندی برای سایت خود در دایرکتوری /etc/nginx/sites-available/ داشته باشید که برای پاسخگویی به نام دامنه یا آدرس IP سرور شما و محافظت از آن توسط گواهینامه TLS/SSL تنظیم شده باشد. ما در اینجا از /etc/nginx/sites-available/wordpress به عنوان مثال استفاده خواهیم کرد، اما شما باید مسیر به فایل پیکربندی خود را در صورت لزوم جایگزین کنید.علاوه بر این، ما در این راهنما از /var/www/wordpress به عنوان دایرکتوری اصلی نصب وردپرس خود استفاده خواهیم کرد. دوباره، باید از ریشه وب مشخص شده در پیکربندی خود استفاده کنید.باز کردن فایل بلوک سرور سایت خودبرای شروع، فایل بلوک سرور سایت خود را با دسترسی sudo باز کنید:sudo nano /etc/nginx/sites-available/wordpressاضافه کردن بلوک های locationدر داخل بلوک اصلی server، چند بلوک location اضافه خواهیم کرد.ابتدا، بلوک های location دقیقی برای درخواست ها به /favicon.ico و /robots.txt ایجاد کنید که برای هر دوی آنها نمی خواهید درخواست ها را ثبت کنید.از یک location به صورت regular expression استفاده کنید تا هر درخواستی برای فایل های استاتیک را مطابقت دهد. دوباره، ما برای این درخواست ها ثبت را غیرفعال خواهیم کرد و آنها را به عنوان بسیار قابل ذخیره در حافظه پنهان مشخص خواهیم کرد، زیرا اینها معمولاً منابع گران قیمت برای ارائه هستند. می توانید این لیست فایل های استاتیک را برای شامل کردن هر گونه پسوند فایل دیگری که سایت شما ممکن است استفاده کند، تنظیم کنید:server {. . .location = /favicon.ico { log_not_found off; access_log off; }location = /robots.txt { log_not_found off; access_log off; allow all; }location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {expires max;log_not_found off;}. . .}در بلوک اصلی location، try_files لیست را تنظیم مجدد خواهیم کرد. تنظیم پیش فرض را با قرار دادن علامت # در ابتدای خط غیرفعال کنید و سپس خط برجسته شده را اضافه کنید. به این ترتیب، به جای بازگشت به خطای 404 به عنوان گزینه پیش فرض، کنترل به فایل index.php با آرگومان های درخواست منتقل می شود.این باید شبیه این باشد:server {. . .location / {#try_files $uri $uri/ =404;try_files $uri $uri/ /index.php$is_args$args;}. . .}اتمام و ذخیره فایلپس از ایجاد تغییرات، فایل را ذخیره کنید و با فشار دادن Ctrl+O و سپس Enter ذخیره کنید. سپس با فشار دادن Ctrl+X فایل را ببندید.بررسی خطاهای نحویاکنون، بیایید پیکربندی خود را برای بررسی خطاهای نحوی با تایپ کردن این دستور بررسی کنیم:sudo nginx -tاگر خطا گزارش نشد، Nginx را با تایپ کردن این دستور مجدداً بارگذاری کنید:sudo systemctl reload nginxاکنون، بیایید وردپرس را دانلود و نصب کنیممرحله 6 - دانلود وردپرساکنون که نرم افزار سرور شما پیکربندی شده است، بیایید وردپرس را دانلود و نصب کنیم. به دلایل امنیتی همیشه توصیه می شود آخرین نسخه وردپرس را مستقیماً از وب سایت پروژه دریافت کنید.وارد یک دایرکتوری قابل نوشتن شوید و سپس با تایپ کردن دستور زیر نسخه فشرده را دانلود کنید:cd /tmpاین دستور دایرکتوری شما را به پوشه موقت تغییر می دهد. سپس، دستور زیر را وارد کنید تا آخرین نسخه وردپرس را در یک فایل فشرده دانلود کنید:curl -LO https://wordpress.org/latest.tar.gzاین دستور آخرین نسخه وردپرس را از وب سایت رسمی وردپرس دانلود می کند و آن را در دایرکتوری /tmp شما ذخیره می کند.استخراج فایل فشردهفایل فشرده را استخراج کنید تا ساختار دایرکتوری وردپرس ایجاد شود:tar xzvf latest.tar.gzشما به زودی این فایل ها را به دایرکتوری ریشه مستندات خود منتقل خواهید کرد، اما قبل از انجام این کار، بیایید فایل پیکربندی نمونه را به نام فایلی که وردپرس در واقع می خواند، کپی کنیم:cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.phpانتقال فایل ها به دایرکتوری ریشه مستنداتاکنون بیایید تمام محتویات دایرکتوری را به دایرکتوری ریشه مستندات خود کپی کنیم. ما از پرچم -a برای اطمینان از حفظ مجوزهای خود و یک نقطه در انتهای دایرکتوری منبع خود استفاده می کنیم تا نشان دهد که همه چیز در دایرکتوری کپی شود (از جمله فایل های مخفی):sudo cp -a /tmp/wordpress/. /var/www/<^>your_domain/wordpressاعطای مالکیت به کاربر و گروه www-dataاکنون که فایل های ما در جای خود قرار گرفته اند، ما مالکیت را به کاربر و گروه www-data اعطا خواهیم کرد. این کاربر و گروه همان کاربر و گروهی است که Nginx اجرا می شود و Nginx باید بتواند فایل های وردپرس را برای ارائه وب سایت و انجام به روزرسانی های خودکار بخواند و بنویسد:sudo chown -R www-data:www-data /var/www/your_domain/wordpressپس از آن، برخی تغییرات در فایل پیکربندی اصلی وردپرس ایجاد کنیم.هنگامی که فایل را باز می کنید، با تنظیم برخی کلیدهای مخفی شروع می کنید تا امنیت نصب ما را بهبود ببخشید. وردپرس یک مولد ایمن برای این مقادیر ارائه می دهد تا مجبور نباشید به تنهایی مقادیر را پیدا کنید. اینها فقط در داخل استفاده می شوند، بنابراین داشتن مقادیر پیچیده و ایمن در اینجا به قابلیت استفاده آسیب نمی رساند.برای گرفتن مقادیر ایمن از مولد کلید مخفی وردپرس، تایپ کنید: curl -s https://api.wordpress.org/secret-key/1.1/salt/شما مقادیر منحصر به فردی دریافت خواهید کرد که شبیه این است:define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H');define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88');define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g');define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-');define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY');define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|');define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');حالا فایل کانفیگ وردپرس باز کنیدsudo nano /var/www/your_domain/wordpress/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' );مرحله 7 - تکمیل نصب از طریق رابط وباکنون که پیکربندی سرور تکمیل شده است، می توانید نصب را از طریق رابط وب وردپرس به پایان برسانید.در مرورگر وب خود، به نام دامنه سرور یا آدرس IP عمومی خود بروید:http://server_domain_or_IP/wordpressزبان مورد نظر خود را انتخاب کنید:به صفحه اصلی راه اندازی وارد خواهید شد.یک نام برای سایت وردپرس شما انتخاب کنید و یک نام کاربری انتخاب کنید (توصیه می شود برای دلایل امنیتی چیزی مانند "admin" را انتخاب نکنید). رمز عبور قوی به طور خودکار ایجاد می شود. این رمز عبور را ذخیره کنید یا یک رمز عبور قوی جایگزین انتخاب کنید.آدرس ایمیل خود را وارد کنید و انتخاب کنید که آیا می‌خواهید موتورهای جستجو از فهرست‌بندی سایت شما جلوگیری کنند یا خیر:بعد می توانید به داشبورد خود لاگین گنید