همیشه یکی از دغدغه های سامانه ها برای تبلیغات بحث سئو در گوگل و سایر موتورهای جستجو است و از آن جایی که سئو سایت های وردپرسی بسیار ساده تر از سامانه هایی که با سایر تکنولوژي های فرانت مثل nuxt-js ، next-js یا حتی برخی دیگر مثل react یا vue که سئو ندارند می باشد معمولا گزینه پیشنهادی متخصین سئو دیپلوی یک سامانه وردپرسی برای بخش مجله یک سامانه است و با توجه به اینکه سئو subdomain پایین تر می باشد معمولا خواسته ها آن ها به اینصورت است که سایت وردپرسی در یک مسیر از سامانه اصلی قرار بگیرد.
با توجه به اینکه مستندات آموزشی در ارتباط با این مسئله کمتری وجود دارد در این پست مراحل کامل دیپلوی یک سامانه وردپرسی در مسیر یک سامانه که بک اند آن جنگو می باشد را توضیح دادم.
این نکته در نظر داشته باشید که شما میتوانید از این آموزش برای سامانه هایی که بکند آن جنگو نمی باشد نیز استفاده کنید.
در این مستند قرار است یک سایت وردپرس را در یک route از اپلیکیشن جنگویی ( your-domain-name.com/mag) به دو روش سنتی و Dockerize دیپلوی کنیم.
در این مستند صرفا دیپلوی قسمت وردپرسی درکنار اپلیکیشن جنگویی توضیح داده شده است و به دیپلوی سامانه جنگویی اشاره ای نشده است. همچنین هیچگونه ارتباطی بین دو سامانه وردپرسی با جنگویی برقرار نیست و دقیقا مشابه زمانی که سایت وردپرسی در یک سابدامین mag.your-domain.name.com
بالاست در این آموزش در مسیر your-domain-name.com/mag
اجرا میشود.
در این آموزش از دیتابیس mysql و وب سرور nginx استفاده شده است. در نظر داشته باشید برای دیپلوی وردپرس بر روی وب سرور nginx نیاز است از وردپرس نسخه fpm استفاده کنید
نکته: برای این روش نیاز است داکر بر روی سرور شما نصب باشد برای نصب داکر با توجه به نسخه لینوکس سرور خود میتوانید از این لینک استفاده کنید.
docker-compose.yml
در آن ایجاد کنید. در این مستند اسم دایرکتوری ما mag
می باشد.version: '3.9' services: wordpress: image: wordpress:6.2.2-fpm restart: on-failure environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: mysql WORDPRESS_DB_PASSWORD: 123456 WORDPRESS_DB_NAME: wp working_dir: /var/www/mag ports: - 9000:9000 volumes: - ./mag_data:/var/html/mag depends_on: - mysql mysql: image: mysql:5.7 restart: on-failure environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: wp MYSQL_USER: mysql MYSQL_PASSWORD: 123456 volumes: - db:/var/lib/mysql nginx: image: nginx:1.25.0-alpine restart: on-failure volumes: - ./nginx_conf:/etc/nginx/conf.d - wordpress:/var/www/mag ports: - 8080:80 depends_on: - wordpress volumes: mysql:
env-file
تعریف کنیدdocker-compose.yml
یک فایل nginx.conf
ساخته و تنظیمات زیر را اعمال نماییدuser www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; server { listen 80; client_max_body_size 200M; server_name your-domain-name.com; access_log /home/ubuntu/app/run/logs/nginx-access.log; error_log /home/ubuntu/app/run/logs/nginx-error.log warn; location ^~ /mag { root /var/www/; index index.php; # Add a trailing slash if missing if (!-f $request_filename) { rewrite [^/]$ $uri/ permanent; } try_files $uri $uri/ /mag/index.php?$args; location ~ \.php { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; fastcgi_pass wordpress:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } } location /robots.txt { root /home/ubuntu/app/ui; if ($request_uri ~ ^/robots.txt/$) { return 301 /robots.txt; } try_files $uri =404; } } # other location config
nginx.conf
صرفا یک نمونه می باشد و شما میتوانید با توجه به نیازمندی های مدنظر تغییر دهید.پس از انجام مراحل بالا دستور docker compose up -d
را اجرا نموده و سپس سایت وردپرسی شما در مسیر your-domain-name.com/mag
قابل استفاده می باشد.
در صورت بروز مشکل میتوانید به این سایت مراجعه کنید. این مستند با روش داکرایز شده از این آموزش تهیه شده است.
در مسیر /var/www/
یک دایرکتوری به اسم مسیری که مدنظرتان برای اجرای سایت وردپرسی است ایجاد کنید. در این آموزش /mag است پس یک دایرکتوری به همین اسم ایجاد میکنیم.
سپس وردپرس را از طریق لینک زیر دریافت کنید.
wget https://wordpress.org/latest.tar.gz
سپس با استفاده از دستور tar -xzvf latest.tar.gz
فایل را اکسترکت کنید و فایل latest.tar.gz
را پاک کنید و در مسیر /var/www/
دستور زیر را وارد کنید.
sudo chown -R www-data:www-data mag
سپس دیتابیس mysql را از طریق این لینک در سرور نصب کنید یک دیتابیس و یوزر جدید برای اتصال وردپرس به دیتابیس طبق آموزش ایجاد کنید.
سپس یک فایل nginx.conf در مسیر /etc/nginx/sites-available/ ایجاد کنید و تنظیمات زیر را در آن قرار دهید.
user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; server { listen 80; client_max_body_size 200M; server_name your-domain-name.com; access_log /home/ubuntu/app/run/logs/nginx-access.log; error_log /home/ubuntu/app/run/logs/nginx-error.log warn; location ^~ /mag { root /var/www/; index index.php; # Add a trailing slash if missing if (!-f $request_filename) { rewrite [^/]$ $uri/ permanent; } try_files $uri $uri/ /mag/index.php?$args; location ~ \.php { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } } location /robots.txt { root /home/ubuntu/app/ui; if ($request_uri ~ ^/robots.txt/$) { return 301 /robots.txt; } try_files $uri =404; } } # other location config
در مسیر /etc/nginx/site-enabled/
دستور زیر را وارد کنید.
sudo ln -s /etc/nginx/sites-available/nginx.conf .
nginx خود را با دستور sudo service nginx restart
ری استارت کنید. در صورت نبود مشکل باید nginx شما به درستی فعال باشد. برای بررسی مشکل میتوانید دستور sudo nginx -t
را اجرا کنید.
حال سایت وردپرسی شما در ادرس your-domain-name.com/mag
در کنار سایت جنگویی شما بالا می باشد و تمام مسیرهایی که در وردپرس فعال می باشد با /mag
نیاز است اجرا شود.
خوشحال میشم نظرتون در ارتباط با این آموزش بدونم و در صورت بروز مشکل یا سوال میتوانید از طریق ایمیل زیر با من در ارتباط باشید
pejmanghafouricorp@gmail.com