اجرای وردپرس با داکر

سوال اصلی: چگونه وردپرس را بر روی اوبونتو 20.04 توسط داکر هاست کنیم؟Source: How to install WordPress with Docker on Ubuntu 20.04?این کار به پنج مرحله تقسیم میشود:نصب پیشنیاز ها مرحله اول: نصب داکر روی اوبونتومرحله دوم: نصب MariaDB روی داکرمرحله سوم: نصب WordPress روی داکرمرحله چهارم: نصب Nginx روی داکرمرحله پنجم: کانفیگ Nginx و تمامپیش از آغاز: نصب پیشنیاز هاجهت تست این فرآیند به یک سیستم عامل اوبنتو 20.04 نیاز دارید. (سیستم شخصی یا VPS)اجرای دستور زیر جهت نصب پیش نیازها (مانند mariadb-client)ترمینال اوبونتو را بازکنید و شروع به اجرای دستورات زیر نمایید.sudo apt-get install mariadb-client apt-transport-https ca-certificates curl gnupg-agent software-properties-common -yاز نصب صحیح تمام پکیج ها اطمینان حاصل کنید و سپس به سراغ نصب داکر بروید.مرحله اول: نصب داکر روی اوبونتوفیلتر شکن خود را روشن کنید، سایت داکر اجازه دسترسی IP های ایرانی را نیمدهددر قدم اول با دستور زیر GPGKey را توسط کامند زیر دانلود و ادد کنید.sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -در قدم دوم ریپازیتوری داکر را با کاند زیر ادد کنیدsudo add-apt-repository &quotdeb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quotبعد از اضافه شدن ریپازیتوری میتوانید داکر و داکر کمپوز رو با دستور زیر نصب کنید.sudo apt-get install docker-ce docker-ce-cli containerd.io -yبعد از نصب هردو این پکیج ها ورژن داکر خود را با دستور زیر چک کنید.docker --versionخروجی باشد شبیه ساختار زیر باشد، ورژن در طول زمان تغییر خواهد کرد.Docker version 19.03.12, build 48a66213feمرحله دوم: نصب MariaDB روی داکردیتابیس mariaDb را با دستور زیر بر روی داکر نصب و راه اندازی میکنیم.sudo docker pull mariadbخروجی باشد شبیه ساختار زیر باشدUsing default tag: latestlatest: Pulling from library/mariadb3ff22d22a855: Pull completee7cb79d19722: Pull complete323d0d660b6a: Pull completeb7f616834fd0: Pull complete78ed0160f03e: Pull completea122e9306ac4: Pull complete673e89352b19: Pull completecaf1e694359b: Pull complete04f5e4f6ead3: Pull completea41772aadb3d: Pull completec3811aa2fa0a: Pull complete655ad574d3c7: Pull complete90ae536d75f0: Pull completeDigest: sha256:812d3a450addcfe416420c72311798f3f3109a11d9677716dc631c429221880cStatus: Downloaded newer image for mariadb:latestdocker.io/library/mariadb:latestپوشه های مربوط به ورد پرس را در آدرس دلخواه ایجاد میکنیم:mkdir ~/wordpress mkdir -p ~/wordpress/database mkdir -p ~/wordpress/htmlیک کانتینر mariadb جهت تخصیص دیتابیس به وردپرس ایجاد میکنیم:sudo docker run -e MYSQL_ROOT_PASSWORD=root-password -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=password -e MYSQL_DATABASE=wpdb -v /root/wordpress/database:/var/lib/mysql --name wordpressdb -d mariadbتوجه توجه: آدرسی که برای پوشه در نظر گرفته اید باید با این آدرس کاملا برابر باشد /root/wordpress/database این پوشه ولوم شماستخروجی باید برابر کدی به شکل زیر باشد e8c780b34cdcb66db9278635b109debb1775d6a6b6785c4e74c8e0815e3ba5e3بررسی دستور ایجاد کانتینر MYSQL_ROOT_PASSWORD: پسورد روت برای دیتابیس که در دستور بالا برابر با مقدار زیر می باشد MYSQL_ROOT_PASSWORD= root-passwordMYSQL_USER: این دستور جهت ایجاد یک یوزر برای پایگاه داده می باشد، استفاده از یوزر روت پیشنهاد نمیشود، در این مثال یوزر ایجاد شده برابر مقدار زیر می باشد.MYSQL_USER= wpuserMYSQL_PASSWORD: جهت تنظیم پسوور برای یوزر ایجاد شده که در این مثال برابر مقدار زیر میباشدMYSQL_PASSWORD= passwordMYSQL_DATABASE: ایجاد یک دیتابیس جهت اتصال به سایت وردپرس که در این مثال برابر با مقدار زیر می باشدMYSQL_DATABASE= wpdb-v /root/wordpress/database:/varlib/mysql: پوشه جهت نگهداری مقادیر دیتابیس، با پوشته ساخته شده باید برابر باشدآی پی کانتینر ایجاد شده را با دستور زیر بررسی کنید.sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' wordpressdbآیپی باید برابر مقدار 172.17.0.2 باشد.اگر پیشناز ها را نصب کرده باشید میتوانید با دستور زیر به پایگاه داده متصل شوید:mysql -u wpuser -h 172.17.0.2 -p Enter password:در مثال بالا برای wpuser باید پسوردی که تایین کرده بودیم را بزنید که برابر password می باشد.خروجی باید برابر مقدار زیر باشد.Welcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 3Server version: 10.5.4-MariaDB-1:10.5.4+maria~focal mariadb.org binary distributionCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.با دستور show databases می توانید دیتا بیس های موجود را چک کنید. و با دستور Exit از فضای کامند نویسی mysql خارج شوید.مرحله سوم: نصب WordPress روی داکربا اجرای دستور زیر ایمیج وردپرس را دانلود و نصب میکنیمsudo docker pull wordpress:latestکه خروجی باید برابر مقدار زیر باشد.latest: Pulling from library/wordpress bf5952930446: Pull complete a409b57eb464: Pull complete 3192e6c84ad0: Pull complete 43553740162b: Pull complete d8b8bba42dea: Pull complete eb10907c0110: Pull complete 10568906f34e: Pull complete 03fe17709781: Pull complete 98171b7166c8: Pull complete 3978c2fb05b8: Pull complete 71bf21524fa8: Pull complete 24fe81782f1c: Pull complete 7a2dfd067aa5: Pull complete a04586f4f8fe: Pull complete b8059b10e448: Pull complete e5b4db4a14b4: Pull complete 48018c17c4e9: Pull complete d09f106f9e16: Pull complete 2ce4312168ba: Pull complete 01f0fe2819ef: Pull complete Digest: sha256:19c6a3a796b1db1e6ee8bd3e8d5d69510885fa62255ce8bd07ee34d3878d0312 Status: Downloaded newer image for wordpress:latest docker.io/library/wordpress:latestحدود 500 مگابایت دانلود خواهد شد.با اجرای دستور زیر یک کانتینر از ایمیج وردپرس ایجاد میکنیم sudo docker run -e WORDPRESS_DB_USER=wpuser -e WORDPRESS_DB_PASSWORD=password -e WORDPRESS_DB_NAME=wpdb -p 8081:80 -v /root/wordpress/html:/var/www/html --link wordpressdb:mysql --name wpcontainer -d wordpressتوجه داشته باشید که آدرس پوشه بندی ها اشتباه نباشد، پورت 8081 آزاد باشد و دسترسی های دیتابیس به درستی تنظیم شده باشد.اگر همچنان اررو داشتید از دستور زیر جهت ریستارت کردن داکر استفاده کنید$ sudo systemctl restart dockerتوجه داشته باشید بعد از ریستارد کردن داکر، باید کانتینر wordpressdb را دوباره راه اندازی کنید و سپس برای ایجاد کانتینر وردپرس اقدام کنیدبا دستور sudo docker start wordpressdb کانتینر را اجرا کنید. توجه کنید بعد از اجرای دستور ایجاد کانتینر وردپرس اگر اروری داشته باشید یا نداشته باشید، کانتینر در هر صورت ایجاد شده است و برای دفعات بعد به شما اجازه ایجاد کانتینر با همین نام را نخواهد داد.در صورت وجود اررور با دستور Docker rm wpcontainer کانتینر را پاک کنید.با دستور زیر بررسی کنید که آیا وردپرس به درستی نصب و راه ندازه شده است یا خیر.curl -I localhost:8081خروجی باید برابر مقدار زیر باشد:HTTP/1.1 302 FoundDate: Fri, 07 Aug 2020 04:44:36 GMTServer: Apache/2.4.38 (Debian)X-Powered-By: PHP/7.4.9Expires: Wed, 11 Jan 1984 05:00:00 GMTCache-Control: no-cache, must-revalidate, max-age=0X-Redirect-By: WordPressLocation: http://localhost:8081/wp-admin/install.phpContent-Type: text/html; charset=UTF-8مرحله چهارم: نصب Nginx روی داکرحال میرسیم به مرحله راه اندازی ngnix که در این مثال از نصب مستقیم بر روی اوبونتو استفاده کرده ایم.با دستور زیر ngnix را نصب میکنیم:sudo apt-get install nginx -yدر حال حاضر nginx نصب شده است و با چک کردن آدرس http://localhost قابل بررسی می باشد.مرحله پنجم: کانفیگ Nginx و تمامبا ادیتور نانو و یا هر ادیتور دیگری که برای شما راحت باشد فایلی به نام wordpress در آدرس زیر ایجاد کنید. و نقدار مشخص شده را در آن کپی کنید.sudo nano /etc/nginx/sites-available/wordpressمقدار مورد نظر جهت بارگذاری:server { listen 80; server_name wp.example.com; location / { proxy_pass http://localhost:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}فایل را ذخیره کنید.دستور زیر را اجرا کنیدln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/برای قدم آخر ngnix را restart کنید.systemctl restart nginxوبسایت وردپرسی شما در آدرس localhost:8081 قابل مشاهده می باشد. و همچنین اگر دامنه برای آن ست کرده باشید در دامنه قابل مشاهده است.در ادامه مراحل نصب وردپرس را طی کنید و وارد پنل میدیریت شوید.اگر سوالی داشتین در این رابطه به من ایمیل بزنید. فورا جواب میدم.SaberMotamed@gmail.comمنابع مورد استفاده:https://www.atlantic.net/vps-hosting/install-wordpress-with-docker-on-ubuntu-20-04/https://stackoverflow.com/questions/31667160/running-docker-container-iptables-no-chain-target-match-by-that-name