ورڈپریس کي ڪيئن انسٽال ڪجي ان تي ڪيترائي سبق آهن، گوگل سرچ لاءِ “WordPress install” لڳ ڀڳ اڌ لک نتيجا ملندا. جڏهن ته، حقيقت ۾، انهن مان تمام ٿورڙا سٺا رهنمائي ڪندڙ آهن، جن جي مطابق توهان ورڈپریس ۽ هيٺيون آپريٽنگ سسٽم کي انسٽال ۽ ترتيب ڏئي سگهو ٿا ته جيئن اهي ڊگهي عرصي تائين سپورٽ ڪرڻ جي قابل هجن. ٿي سگهي ٿو ته صحيح سيٽنگون خاص ضرورتن تي تمام گهڻي انحصار ڪن ٿيون، يا اهو ان حقيقت جي ڪري آهي ته تفصيلي وضاحت مضمون کي پڙهڻ ۾ مشڪل بڻائي ٿي.
هن آرٽيڪل ۾، اسان ڪوشش ڪنداسين ته هڪ بش اسڪرپٽ مهيا ڪندي هڪ بش اسڪرپٽ مهيا ڪندي خودڪار طريقي سان ورڈپریس کي Ubuntu تي انسٽال ڪرڻ لاء، انهي سان گڏ ان جي ذريعي هلڻ، وضاحت ڪندي ته هر ٽڪرا ڇا ڪندو آهي، ۽ انهي سان گڏ اسان ان کي ترقي ڪرڻ ۾ سمجھوتو ڪيو آهي. . جيڪڏهن توهان هڪ ترقي يافته صارف آهيو، ته توهان مضمون جي متن کي ڇڏي سگهو ٿا ۽ صرف اسڪرپٽ وٺو توهان جي ماحول ۾ تبديلي ۽ استعمال لاء. اسڪرپٽ جو آئوٽ پٽ هڪ ڪسٽم ورڈپریس تنصيب آهي ليٽس انڪرپٽ سپورٽ سان، NGINX يونٽ تي هلندڙ ۽ پيداوار جي استعمال لاءِ موزون آهي.
NGINX يونٽ استعمال ڪندي ورڈپریس کي ترتيب ڏيڻ لاء ترقي يافته فن تعمير بيان ڪيو ويو آهي پراڻو مضمون، هاڻي اسان انهن شين کي به وڌيڪ ترتيب ڏينداسين جيڪي اتي نه ڍڪيل هيون (جيئن ٻين ڪيترن ئي سبقن ۾):
ورڈپریس CLI
اچو ته Encrypt ۽ TLSSSL سرٽيفڪيٽ
سرٽيفڪيٽ جي خودڪار تجديد
NGINX ڪيشنگ
NGINX کمپريشن
HTTPS ۽ HTTP/2 سپورٽ
پروسيس آٽوميشن
آرٽيڪل هڪ سرور تي تنصيب کي بيان ڪندو، جيڪو هڪ ئي وقت ۾ هڪ مستحڪم پروسيسنگ سرور، هڪ پي ايڇ پي پروسيسنگ سرور، ۽ هڪ ڊيٽابيس جي ميزباني ڪندو. هڪ تنصيب جيڪا سپورٽ ڪري ٿي ڪيترن ئي مجازي ميزبان ۽ خدمتن کي مستقبل لاءِ هڪ امڪاني موضوع آهي. جيڪڏھن توھان چاھيو ٿا ته اسان ڪجھھ بابت لکون جيڪي ھن مضمونن ۾ نه آھن، تبصرن ۾ لکندا.
ڪمانڊ ڳولڻ جي ڪوشش ڪندا آهن ته اهي هڪ ڪنٽينر ۾ هلائي رهيا آهن انهي ڪري اهي انهن جي سيٽنگون مطابق تبديل ڪري سگهن ٿيون.
سيٽنگون ۾ شروع ٿيڻ واري سلسلي جي عملن جو تعداد مقرر ڪرڻ لاء، اسڪرپٽ ڪنٽينرز، ورچوئل مشينن، ۽ هارڊويئر سرورز ۾ ڪم ڪرڻ لاءِ خودڪار سيٽنگن جو اندازو لڳائڻ جي ڪوشش ڪري ٿو.
جڏهن سيٽنگون بيان ڪريون ٿا، اسان هميشه آٽوميشن جي باري ۾ سوچيو ٿا، جيڪو اسان کي اميد آهي ته ڪوڊ جي طور تي توهان جي پنهنجي انفراسٽرڪچر ٺاهڻ جو بنياد بڻجي ويندو.
سڀئي حڪم استعمال ڪندڙ طور هلائي رهيا آهن پاڙ، ڇاڪاڻ ته اهي بنيادي سسٽم سيٽنگون تبديل ڪندا آهن، پر سڌو سنئون ورڈپریس هڪ باقاعده صارف جي طور تي هلندو آهي.
WORDPRESS_URL ورڈپریس سائيٽ جو پورو URL آهي، شروع ٿي https://.
LETS_ENCRYPT_STAGING - ڊفالٽ طور تي خالي، پر قيمت کي 1 تي سيٽ ڪرڻ سان، توهان استعمال ڪندا Let's Encrypt جي اسٽيجنگ سرورز، جيڪي توهان جي سيٽنگن کي جانچڻ دوران بار بار سرٽيفڪيٽ جي درخواست ڪرڻ لاءِ ضروري آهن، ٻي صورت ۾ Let's Encrypt توهان جي IP پتي کي عارضي طور تي بلاڪ ڪري سگهي ٿو درخواستن جي وڏي تعداد جي ڪري.
اسڪرپٽ آن لائين 55-61 هيٺ ڏنل ماحولياتي متغيرن کي سيٽ ڪري ٿو، يا ته ڪجهه هارڊ-ڪوڊ ٿيل قدر تي يا پوئين حصي ۾ متغيرن مان نڪتل قدر استعمال ڪندي:
DEBIAN_FRONTEND="noninteractive" - ايپليڪيشنن کي ٻڌائي ٿو ته اهي اسڪرپٽ ۾ هلن ٿيون ۽ صارف جي رابطي جو ڪو به امڪان ناهي.
WORDPRESS_CLI_VERSION="2.4.0" ورڈپریس CLI ايپليڪيشن جو نسخو آهي.
WORDPRESS_CLI_MD5= "dedd5a662b80cda66e9e25d44c23b25c" - چيڪسم ورڈپریس CLI 2.4.0 executable فائل (ورجن متغير ۾ بيان ڪيو ويو آهي WORDPRESS_CLI_VERSION). اسڪرپٽ آن لائن 162 هن قدر کي استعمال ڪندي چيڪ ڪرڻ لاءِ ته صحيح ورڈپریس CLI فائل ڊائون لوڊ ڪئي وئي آهي.
UPLOAD_MAX_FILESIZE="16M" - وڌ ۾ وڌ فائل سائيز جيڪا ورڈپریس تي اپ لوڊ ٿي سگهي ٿي. هي سيٽنگ ڪيترن ئي هنڌن تي استعمال ڪيو ويندو آهي، تنهنڪري ان کي هڪ جاء تي سيٽ ڪرڻ آسان آهي.
TLS_HOSTNAME= "$(echo ${WORDPRESS_URL} | cut -d'/' -f3)" - سسٽم جو ميزبان نالو، WORDPRESS_URL متغير مان حاصل ڪيل. استعمال ڪيو ويو مناسب TLS/SSL سرٽيفڪيٽ حاصل ڪرڻ لاءِ Let's Encrypt سان گڏوگڏ اندروني ورڈپریس جي تصديق.
اسڪرپٽ سيٽ ڪري ٿي سرور جو ميزبان نالو سائيٽ جي ڊومين جي نالي سان ملائڻ لاءِ. اھو گھربل نه آھي، پر SMTP ذريعي ٻاھرين ميل موڪلڻ وڌيڪ آسان آھي جڏھن ھڪڙي سرور کي ترتيب ڏيو، جيئن اسڪرپٽ پاران ترتيب ڏنل آھي.
اسڪرپٽ ڪوڊ
# Change the hostname to be the same as the WordPress hostname
if [ ! "$(hostname)" == "${TLS_HOSTNAME}" ]; then
echo " Changing hostname to ${TLS_HOSTNAME}"
hostnamectl set-hostname "${TLS_HOSTNAME}"
fi
/etc/hosts ۾ ميزبان نالو شامل ڪرڻ
اضافو WP-Cron وقتي ڪمن کي هلائڻ لاءِ استعمال ڪيو ويو، ورڈپریس کي ضرورت آهي ته هو پاڻ کي HTTP ذريعي رسائي ڪري سگھن. پڪ ڪرڻ لاءِ WP-Cron صحيح طريقي سان ڪم ڪري ٿو سڀني ماحولن تي، اسڪرپٽ فائل ۾ هڪ لائن شامل ڪري ٿي / وغيره / لشڪرانهي ڪري ته ورڈپریس لوپ بڪ انٽرفيس ذريعي پاڻ تائين رسائي ڪري سگهي ٿو:
اسڪرپٽ ڪوڊ
# Add the hostname to /etc/hosts
if [ "$(grep -m1 "${TLS_HOSTNAME}" /etc/hosts)" = "" ]; then
echo " Adding hostname ${TLS_HOSTNAME} to /etc/hosts so that WordPress can ping itself"
printf "::1 %sn127.0.0.1 %sn" "${TLS_HOSTNAME}" "${TLS_HOSTNAME}" >> /etc/hosts
fi
ايندڙ مرحلن لاءِ گهربل اوزارن کي انسٽال ڪرڻ
باقي اسڪرپٽ کي ڪجهه پروگرامن جي ضرورت آهي ۽ فرض ڪري ٿو ته ذخيرا تازه ترين آهن. اسان ذخيرو جي فهرست کي اپڊيٽ ڪريون ٿا، جنهن کان پوء اسان ضروري اوزار نصب ڪريون ٿا:
اسڪرپٽ ڪوڊ
# Make sure tools needed for install are present
echo " Installing prerequisite tools"
apt-get -qq update
apt-get -qq install -y
bc
ca-certificates
coreutils
curl
gnupg2
lsb-release
NGINX يونٽ ۽ NGINX مخزن کي شامل ڪرڻ
رسم الخط انسٽال ڪري ٿو NGINX يونٽ ۽ اوپن سورس NGINX کي سرڪاري NGINX مخزنن مان يقيني بڻائڻ لاءِ نسخن کي جديد سيڪيورٽي پيچس ۽ بگ فيڪس استعمال ڪيو ويو آهي.
اسڪرپٽ شامل ڪري ٿو NGINX يونٽ مخزن ۽ پوءِ NGINX مخزن، شامل ڪري ٿو مخزن جي ڪي ۽ ترتيب واري فائلن کي apt, انٽرنيٽ ذريعي مخزن تائين رسائي جي وضاحت.
NGINX يونٽ ۽ NGINX جي حقيقي تنصيب ايندڙ حصي ۾ ٿئي ٿي. اسان مخزن کي اڳ ۾ شامل ڪريون ٿا ان ڪري اسان کي ميٽا ڊيٽا کي ڪيترائي ڀيرا اپڊيٽ ڪرڻ جي ضرورت ناهي، جيڪا انسٽاليشن کي تيز ڪري ٿي.
اسڪرپٽ ڪوڊ
# Install the NGINX Unit repository
if [ ! -f /etc/apt/sources.list.d/unit.list ]; then
echo " Installing NGINX Unit repository"
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
echo "deb https://packages.nginx.org/unit/ubuntu/ $(lsb_release -cs) unit" > /etc/apt/sources.list.d/unit.list
fi
# Install the NGINX repository
if [ ! -f /etc/apt/sources.list.d/nginx.list ]; then
echo " Installing NGINX repository"
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
echo "deb https://nginx.org/packages/mainline/ubuntu $(lsb_release -cs) nginx" > /etc/apt/sources.list.d/nginx.list
fi
هڪ دفعو سڀئي ذخيرو شامل ڪيا ويا آهن، ميٽا ڊيٽا کي اپڊيٽ ڪريو ۽ ايپليڪيشنن کي انسٽال ڪريو. اسڪرپٽ پاران نصب ڪيل پيڪيجز ۾ شامل آهن PHP واڌايون سفارش ٿيل جڏهن WordPress.org هلائي رهيا آهن
اسڪرپٽ ڪوڊ
echo " Updating repository metadata"
apt-get -qq update
# Install PHP with dependencies and NGINX Unit
echo " Installing PHP, NGINX Unit, NGINX, Certbot, and MariaDB"
apt-get -qq install -y --no-install-recommends
certbot
python3-certbot-nginx
php-cli
php-common
php-bcmath
php-curl
php-gd
php-imagick
php-mbstring
php-mysql
php-opcache
php-xml
php-zip
ghostscript
nginx
unit
unit-php
mariadb-server
NGINX يونٽ ۽ ورڈپریس سان استعمال ڪرڻ لاءِ پي ايڇ پي کي ترتيب ڏيڻ
اسڪرپٽ ڊاريڪٽري ۾ سيٽنگون فائل ٺاهي ٿي conf.d. هي PHP اپلوڊس لاءِ وڌ ۾ وڌ فائل سائيز کي سيٽ ڪري ٿو، PHP جي نقص آئوٽ کي STDERR ڏانهن موڙي ٿو، تنهن ڪري اهي NGINX يونٽ لاگ ۾ لکيل آهن، ۽ NGINX يونٽ کي ٻيهر شروع ڪري ٿو.
اسڪرپٽ ڪوڊ
# Find the major and minor PHP version so that we can write to its conf.d directory
PHP_MAJOR_MINOR_VERSION="$(php -v | head -n1 | cut -d' ' -f2 | cut -d'.' -f1,2)"
if [ ! -f "/etc/php/${PHP_MAJOR_MINOR_VERSION}/embed/conf.d/30-wordpress-overrides.ini" ]; then
echo " Configuring PHP for use with NGINX Unit and WordPress"
# Add PHP configuration overrides
cat > "/etc/php/${PHP_MAJOR_MINOR_VERSION}/embed/conf.d/30-wordpress-overrides.ini" << EOM
; Set a larger maximum upload size so that WordPress can handle
; bigger media files.
upload_max_filesize=${UPLOAD_MAX_FILESIZE}
post_max_size=${UPLOAD_MAX_FILESIZE}
; Write error log to STDERR so that error messages show up in the NGINX Unit log
error_log=/dev/stderr
EOM
fi
# Restart NGINX Unit because we have reconfigured PHP
echo " Restarting NGINX Unit"
service unit restart
ورڈپریس لاءِ ماريا ڊي بي ڊيٽابيس سيٽنگون بيان ڪرڻ
اسان ماريا ڊي بي کي MySQL تي چونڊيو آهي جيئن ان ۾ وڌيڪ ڪميونٽي سرگرمي آهي ۽ اهو پڻ ممڪن آهي ڊفالٽ طرفان بهتر ڪارڪردگي مهيا ڪري ٿي (شايد، هتي سڀ ڪجهه آسان آهي: MySQL انسٽال ڪرڻ لاء، توهان کي هڪ ٻيو مخزن شامل ڪرڻو پوندو، تقريبن. مترجم).
# Set up the WordPress database
echo " Configuring MariaDB for WordPress"
mysqladmin create wordpress || echo "Ignoring above error because database may already exist"
mysql -e "GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"localhost" IDENTIFIED BY "$WORDPRESS_DB_PASSWORD"; FLUSH PRIVILEGES;"
ورڈپریس CLI پروگرام کي انسٽال ڪرڻ
هن قدم تي، اسڪرپٽ پروگرام کي انسٽال ڪري ٿو WP-CLI. ان سان گڏ، توهان ورڈپریس سيٽنگون انسٽال ۽ منظم ڪري سگهو ٿا بغير دستي طور تي فائلن کي ايڊٽ ڪرڻ، ڊيٽابيس کي اپڊيٽ ڪرڻ، يا ڪنٽرول پينل ۾ داخل ٿيڻ جي. اهو پڻ استعمال ڪري سگهجي ٿو انسٽال ڪرڻ لاءِ موضوعات ۽ اضافو ۽ تازه ڪاري WordPress.
اسڪرپٽ ڪوڊ
if [ ! -f /usr/local/bin/wp ]; then
# Install the WordPress CLI
echo " Installing the WordPress CLI tool"
curl --retry 6 -Ls "https://github.com/wp-cli/wp-cli/releases/download/v${WORDPRESS_CLI_VERSION}/wp-cli-${WORDPRESS_CLI_VERSION}.phar" > /usr/local/bin/wp
echo "$WORDPRESS_CLI_MD5 /usr/local/bin/wp" | md5sum -c -
chmod +x /usr/local/bin/wp
fi
ورڈپریس کي انسٽال ڪرڻ ۽ ترتيب ڏيڻ
اسڪرپٽ ڊاريڪٽري ۾ ورڈپریس جو جديد نسخو انسٽال ڪري ٿو /var/www/wordpress۽ پڻ سيٽنگون تبديل ڪري ٿو:
ڊيٽابيس ڪنيڪشن يونڪس ڊومين ساکٽ تي ڪم ڪري ٿو TCP جي بدران لوپ بيڪ تي TCP ٽرئفڪ کي گھٽائڻ لاءِ.
ورڈپریس ھڪڙو اڳوڻو شامل ڪري ٿو https:// URL ڏانهن جيڪڏهن ڪلائنٽ HTTPS تي NGINX سان ڳنڍي، ۽ پڻ موڪلي ٿو ريموٽ ميزبان جو نالو (جيئن NGINX پاران مهيا ڪيل آهي) PHP ڏانهن. اسان هن کي سيٽ ڪرڻ لاء ڪوڊ جو هڪ ٽڪرو استعمال ڪندا آهيون.
ورڈپریس لاگ ان لاءِ HTTPS جي ضرورت آهي
URL جي جوڙجڪ خاموشي سان وسيلن تي ٻڌل آهي
ورڈپریس ڊاريڪٽري لاءِ فائل سسٽم تي صحيح اجازتون سيٽ ڪري ٿو.
اسڪرپٽ ڪوڊ
if [ ! -d /var/www/wordpress ]; then
# Create WordPress directories
mkdir -p /var/www/wordpress
chown -R www-data:www-data /var/www
# Download WordPress using the WordPress CLI
echo " Installing WordPress"
su -s /bin/sh -c 'wp --path=/var/www/wordpress core download' www-data
WP_CONFIG_CREATE_CMD="wp --path=/var/www/wordpress config create --extra-php --dbname=wordpress --dbuser=wordpress --dbhost="localhost:/var/run/mysqld/mysqld.sock" --dbpass="${WORDPRESS_DB_PASSWORD}""
# This snippet is injected into the wp-config.php file when it is created;
# it informs WordPress that we are behind a reverse proxy and as such
# allows it to generate links using HTTPS
cat > /tmp/wp_forwarded_for.php << 'EOM'
/* Turn HTTPS 'on' if HTTP_X_FORWARDED_PROTO matches 'https' */
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
$_SERVER['HTTPS'] = 'on';
}
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
EOM
# Create WordPress configuration
su -s /bin/sh -p -c "cat /tmp/wp_forwarded_for.php | ${WP_CONFIG_CREATE_CMD}" www-data
rm /tmp/wp_forwarded_for.php
su -s /bin/sh -p -c "wp --path=/var/www/wordpress config set 'FORCE_SSL_ADMIN' 'true'" www-data
# Install WordPress
WP_SITE_INSTALL_CMD="wp --path=/var/www/wordpress core install --url="${WORDPRESS_URL}" --title="${WORDPRESS_SITE_TITLE}" --admin_user="${WORDPRESS_ADMIN_USER}" --admin_password="${WORDPRESS_ADMIN_PASSWORD}" --admin_email="${WORDPRESS_ADMIN_EMAIL}" --skip-email"
su -s /bin/sh -p -c "${WP_SITE_INSTALL_CMD}" www-data
# Set permalink structure to a sensible default that isn't in the UI
su -s /bin/sh -p -c "wp --path=/var/www/wordpress option update permalink_structure '/%year%/%monthnum%/%postname%/'" www-data
# Remove sample file because it is cruft and could be a security problem
rm /var/www/wordpress/wp-config-sample.php
# Ensure that WordPress permissions are correct
find /var/www/wordpress -type d -exec chmod g+s {} ;
chmod g+w /var/www/wordpress/wp-content
chmod -R g+w /var/www/wordpress/wp-content/themes
chmod -R g+w /var/www/wordpress/wp-content/plugins
fi
NGINX يونٽ قائم ڪرڻ
اسڪرپٽ PHP کي هلائڻ ۽ ورڈپریس رستن کي پروسيس ڪرڻ لاءِ NGINX يونٽ کي ترتيب ڏئي ٿو، PHP عمل جي نالي جي جڳھ کي الڳ ڪرڻ ۽ ڪارڪردگي سيٽنگن کي بهتر ڪرڻ. هتي ڏسڻ لاء ٽي خاصيتون آهن:
نالو اسپيس لاءِ سپورٽ شرط جي بنياد تي طئي ڪئي وئي آهي، انهي جي جانچ ڪرڻ تي ته اسڪرپٽ ڪنٽينر ۾ هلي رهي آهي. اهو ضروري آهي ڇاڪاڻ ته اڪثر ڪنٽينر سيٽ اپ ڪنٽينرز جي nested لانچ جي حمايت نه ڪندا آھن.
جيڪڏهن نالن جي اسپيس لاءِ سپورٽ آهي، نان اسپيس کي بند ڪريو نيٽ ورڪ. اهو آهي ورڈپریس کي اجازت ڏيڻ جي اجازت ڏيڻ جي ٻنهي پوائنٽن سان ڳنڍڻ ۽ ساڳئي وقت ويب تي دستياب ٿي.
عملن جو وڌ ۾ وڌ تعداد ھيٺ ڏنل بيان ڪيو ويو آھي: (MariaDB ۽ NGINX Uniy هلائڻ لاءِ موجود ياداشت)/ (PHP + 5 ۾ رام جي حد)
هي قدر مقرر ڪيو ويو آهي NGINX يونٽ سيٽنگون.
اهو قدر اهو پڻ ظاهر ڪري ٿو ته اتي هميشه گهٽ ۾ گهٽ ٻه PHP پروسيس هلندا آهن، جيڪو اهم آهي ڇاڪاڻ ته ورڈپریس پاڻ کي تمام گهڻيون غير مطابقت واريون درخواستون ٺاهيندو آهي، ۽ اضافي عملن کان سواء، هلندڙ مثال طور WP-Cron ڀڄي ويندو. توھان پنھنجي مقامي سيٽنگن جي بنياد تي انھن حدن کي وڌائڻ يا گھٽائڻ چاھيو ٿا، ڇو ته ھتي ٺاھيل سيٽنگون قدامت پسند آھن. اڪثر پيداوار سسٽم تي، سيٽنگون 10 ۽ 100 جي وچ ۾ آهن.
اسڪرپٽ ڪوڊ
if [ "${container:-unknown}" != "lxc" ] && [ "$(grep -m1 -a container=lxc /proc/1/environ | tr -d '')" == "" ]; then
NAMESPACES='"namespaces": {
"cgroup": true,
"credential": true,
"mount": true,
"network": false,
"pid": true,
"uname": true
}'
else
NAMESPACES='"namespaces": {}'
fi
PHP_MEM_LIMIT="$(grep 'memory_limit' /etc/php/7.4/embed/php.ini | tr -d ' ' | cut -f2 -d= | numfmt --from=iec)"
AVAIL_MEM="$(grep MemAvailable /proc/meminfo | tr -d ' kB' | cut -f2 -d: | numfmt --from-unit=K)"
MAX_PHP_PROCESSES="$(echo "${AVAIL_MEM}/${PHP_MEM_LIMIT}+5" | bc)"
echo " Calculated the maximum number of PHP processes as ${MAX_PHP_PROCESSES}. You may want to tune this value due to variations in your configuration. It is not unusual to see values between 10-100 in production configurations."
echo " Configuring NGINX Unit to use PHP and WordPress"
cat > /tmp/wordpress.json << EOM
{
"settings": {
"http": {
"header_read_timeout": 30,
"body_read_timeout": 30,
"send_timeout": 30,
"idle_timeout": 180,
"max_body_size": $(numfmt --from=iec ${UPLOAD_MAX_FILESIZE})
}
},
"listeners": {
"127.0.0.1:8080": {
"pass": "routes/wordpress"
}
},
"routes": {
"wordpress": [
{
"match": {
"uri": [
"*.php",
"*.php/*",
"/wp-admin/"
]
},
"action": {
"pass": "applications/wordpress/direct"
}
},
{
"action": {
"share": "/var/www/wordpress",
"fallback": {
"pass": "applications/wordpress/index"
}
}
}
]
},
"applications": {
"wordpress": {
"type": "php",
"user": "www-data",
"group": "www-data",
"processes": {
"max": ${MAX_PHP_PROCESSES},
"spare": 1
},
"isolation": {
${NAMESPACES}
},
"targets": {
"direct": {
"root": "/var/www/wordpress/"
},
"index": {
"root": "/var/www/wordpress/",
"script": "index.php"
}
}
}
}
}
EOM
curl -X PUT --data-binary @/tmp/wordpress.json --unix-socket /run/control.unit.sock http://localhost/config
NGINX ترتيب ڏيڻ
بنيادي NGINX سيٽنگون ترتيب ڏيڻ
اسڪرپٽ NGINX ڪيش لاءِ ڊاريڪٽري ٺاهي ٿي ۽ پوءِ مکيه ترتيب واري فائل ٺاهي ٿي nginx.conf. هينڊلر جي عملن جي تعداد ۽ اپلوڊ لاءِ وڌ ۾ وڌ فائل سائيز جي سيٽنگ تي ڌيان ڏيو. هتي پڻ هڪ لڪير آهي جنهن ۾ شامل آهي ڪمپريشن سيٽنگون فائل بيان ڪيل ايندڙ حصي ۾، بعد ۾ ڪيشنگ سيٽنگون.
ڪلائنٽ ڏانهن موڪلڻ کان اڳ فلائي تي مواد کي دٻائڻ هڪ بهترين طريقو آهي سائيٽ جي ڪارڪردگي کي بهتر ڪرڻ لاء، پر صرف ان صورت ۾ جڏهن ڪمپريشن صحيح ترتيب ڏنل آهي. اسڪرپٽ جو هي حصو سيٽنگن تي ٻڌل آهي هتي کان.
اسڪرپٽ ڪوڊ
cat > ${NGINX_CONF_DIR}/gzip_compression.conf << 'EOM'
# Credit: https://github.com/h5bp/server-configs-nginx/
# ----------------------------------------------------------------------
# | Compression |
# ----------------------------------------------------------------------
# https://nginx.org/en/docs/http/ngx_http_gzip_module.html
# Enable gzip compression.
# Default: off
gzip on;
# Compression level (1-9).
# 5 is a perfect compromise between size and CPU usage, offering about 75%
# reduction for most ASCII files (almost identical to level 9).
# Default: 1
gzip_comp_level 6;
# Don't compress anything that's already small and unlikely to shrink much if at
# all (the default is 20 bytes, which is bad as that usually leads to larger
# files after gzipping).
# Default: 20
gzip_min_length 256;
# Compress data even for clients that are connecting to us via proxies,
# identified by the "Via" header (required for CloudFront).
# Default: off
gzip_proxied any;
# Tell proxies to cache both the gzipped and regular version of a resource
# whenever the client's Accept-Encoding capabilities header varies;
# Avoids the issue where a non-gzip capable client (which is extremely rare
# today) would display gibberish if their proxy gave them the gzipped version.
# Default: off
gzip_vary on;
# Compress all output labeled with one of the following MIME-types.
# `text/html` is always compressed by gzip module.
# Default: text/html
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/vnd.ms-fontobject
application/wasm
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/bmp
image/svg+xml
text/cache-manifest
text/calendar
text/css
text/javascript
text/markdown
text/plain
text/xml
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy;
EOM
ورڈپریس لاءِ NGINX ترتيب ڏيڻ
اڳيون، اسڪرپٽ ورڈپریس لاءِ هڪ ترتيب واري فائل ٺاهي ٿي default.conf فهرست ۾ conf.d. اهو هتي ترتيب ڏنل آهي:
Let's Encrypt ذريعي Certbot مان حاصل ڪيل TLS سرٽيفڪيٽ کي فعال ڪرڻ (ان کي ترتيب ڏيڻ ايندڙ سيڪشن ۾ هوندو)
Let's Encrypt کان سفارشن جي بنياد تي TLS سيڪيورٽي سيٽنگون ترتيب ڏيڻ
ڊفالٽ طور 1 ڪلاڪ لاءِ ڪيشنگ اسڪپ درخواستن کي فعال ڪريو
رسائي لاگنگ کي بند ڪريو، ۽ گڏوگڏ غلطي لاگنگ جيڪڏھن فائل نه ملي، ٻن عام درخواست ٿيل فائلن لاء: favicon.ico ۽ robots.txt
لڪيل فائلن ۽ ڪجهه فائلن تائين رسائي کي روڪيو .phpغير قانوني رسائي يا اڻڄاتل شروعات کي روڪڻ لاء
سرٽيفڪيٽ اليڪٽرانڪ فرنٽيئر فائونڊيشن (EFF) کان هڪ مفت اوزار آهي جيڪو توهان کي اجازت ڏئي ٿو حاصل ڪري ۽ خودڪار طريقي سان TLS سرٽيفڪيٽن جي تجديد Let's Encrypt کان. NGINX ۾ Let's Encrypt کان سرٽيفڪيٽن کي پروسيس ڪرڻ لاءِ Certbot کي ترتيب ڏيڻ لاءِ اسڪرپٽ ھيٺ ڏنل ڪم ڪري ٿو:
NGINX کي روڪي ٿو
ڊائون لوڊ سفارش ٿيل TLS سيٽنگون
سائيٽ لاءِ سرٽيفڪيٽ حاصل ڪرڻ لاءِ Certbot هلائي ٿو
سرٽيفڪيٽ استعمال ڪرڻ لاءِ NGINX کي ٻيهر شروع ڪري ٿو
Certbot کي ترتيب ڏئي ٿو روزانو 3:24 AM تي هلائڻ لاءِ چيڪ ڪرڻ لاءِ ته ڇا سرٽيفڪيٽن جي تجديد ٿيڻ جي ضرورت آهي، ۽ جيڪڏهن ضروري هجي ته، نوان سرٽيفڪيٽ ڊائون لوڊ ڪريو ۽ NGINX کي ٻيهر شروع ڪريو.
اسڪرپٽ ڪوڊ
echo " Stopping NGINX in order to set up Let's Encrypt"
service nginx stop
mkdir -p /var/www/certbot
chown www-data:www-data /var/www/certbot
chmod g+s /var/www/certbot
if [ ! -f ${NGINX_CONF_DIR}/options-ssl-nginx.conf ]; then
echo " Downloading recommended TLS parameters"
curl --retry 6 -Ls -z "Tue, 14 Apr 2020 16:36:07 GMT"
-o "${NGINX_CONF_DIR}/options-ssl-nginx.conf"
"https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf"
|| echo "Couldn't download latest options-ssl-nginx.conf"
fi
if [ ! -f ${NGINX_CONF_DIR}/ssl-dhparams.pem ]; then
echo " Downloading recommended TLS DH parameters"
curl --retry 6 -Ls -z "Tue, 14 Apr 2020 16:49:18 GMT"
-o "${NGINX_CONF_DIR}/ssl-dhparams.pem"
"https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem"
|| echo "Couldn't download latest ssl-dhparams.pem"
fi
# If tls_certs_init.sh hasn't been run before, remove the self-signed certs
if [ ! -d "/etc/letsencrypt/accounts" ]; then
echo " Removing self-signed certificates"
rm -rf "${CERT_DIR}"
fi
if [ "" = "${LETS_ENCRYPT_STAGING:-}" ] || [ "0" = "${LETS_ENCRYPT_STAGING}" ]; then
CERTBOT_STAGING_FLAG=""
else
CERTBOT_STAGING_FLAG="--staging"
fi
if [ ! -f "${CERT_DIR}/fullchain.pem" ]; then
echo " Generating certificates with Let's Encrypt"
certbot certonly --standalone
-m "${WORDPRESS_ADMIN_EMAIL}"
${CERTBOT_STAGING_FLAG}
--agree-tos --force-renewal --non-interactive
-d "${TLS_HOSTNAME}"
fi
echo " Starting NGINX in order to use new configuration"
service nginx start
# Write crontab for periodic Let's Encrypt cert renewal
if [ "$(crontab -l | grep -m1 'certbot renew')" == "" ]; then
echo " Adding certbot to crontab for automatic Let's Encrypt renewal"
(crontab -l 2>/dev/null; echo "24 3 * * * certbot renew --nginx --post-hook 'service nginx reload'") | crontab -
fi
توهان جي سائيٽ جي اضافي حسب ضرورت
اسان مٿي ڳالهايو آهي ته ڪيئن اسان جي اسڪرپٽ NGINX ۽ NGINX يونٽ کي ترتيب ڏئي ٿي هڪ پيداوار لاءِ تيار ڪيل سائيٽ جي خدمت ڪرڻ لاءِ TLSSSL فعال. توھان پڻ ڪري سگھو ٿا، توھان جي ضرورتن تي منحصر ڪري، مستقبل ۾ شامل ڪريو:
حمايت برٽلي، HTTPS تي اڏامندڙ ڪمپريشن کي بهتر بڻايو ويو
توھان جي سائيٽ کي چيڪ ڪري رھيا آھيو توھان سمجھو ته اھو ڪيترو ٽريفڪ سنڀالي سگھي ٿو
اڃا به بهتر سائيٽ جي ڪارڪردگي لاء، اسان کي اپڊيٽ ڪرڻ جي صلاح ڏين ٿا NGINX پلس، اسان جي تجارتي، انٽرپرائز-گريڊ پراڊڪٽ جي بنياد تي اوپن سورس NGINX. ان جا سبسڪرائبرز هڪ متحرڪ طور تي لوڊ ٿيل بروٽلي ماڊل حاصل ڪندا، انهي سان گڏ (اضافي فيس لاءِ) NGINX ModSecurity WAF. اسان پڻ پيش ڪريون ٿا NGINX ايپ تحفظ، NGINX پلس لاءِ WAF ماڊل F5 کان صنعت جي معروف حفاظتي ٽيڪنالاجي جي بنياد تي.
اين بي هڪ انتهائي لوڊ ٿيل سائيٽ جي حمايت لاء، توهان ماهرن سان رابطو ڪري سگهو ٿا سائبربر. اسان ڪنهن به لوڊ هيٺ توهان جي ويب سائيٽ يا خدمت جي تيز ۽ قابل اعتماد آپريشن کي يقيني بڻائينداسين.