مقدمه

اتوماسیون سرور مجازی اکنون به دلیل ماهیت یکبار مصرف محیط های کاربردی مدرن ، نقش اساسی در مدیریت سیستم ها ایفا می کند. ابزارهای مدیریت پیکربندی مانند Ansible معمولاً برای ساده سازی فرایند خودکار سازی تنظیم سرور مجازی با تعیین مراحل استاندارد برای سرور مجازی جدید استفاده می شود و در عین حال خطای انسانی مرتبط با تنظیمات دستی را نیز کاهش می دهد. Ansible یک معماری ساده را ارائه می دهد که نیازی به نصب نرم افزار ویژه روی گره ها ندارد. همچنین مجموعه ای از ویژگی ها و ماژول های داخلی را فراهم می کند که نوشتن اسکریپت های اتوماسیون را تسهیل می کند. در این راهنما نحوه استفاده از Ansible برای خودکارسازی مراحل موجود در راهنمای ما درباره نحوه نصب وردپرس با LAMP در اوبونتو .04 توضیح داده شده است. وردپرس محبوب ترین CMS (سیستم مدیریت محتوا) در اینترنت است که به کاربران امکان می دهد وبلاگ ها و وب سایتهای قابل انعطاف را فراتر از MySQL با پردازش PHP تنظیم کنند. پس از راه اندازی ، تقریباً تمام مراحل اجرا از طریق web frontend قابل انجام است. پیش نیازها برای اجرای تنظیم خودکار ارائه شده توسط playbook که در این راهنما در مورد آن صحبت می کنیم ، به این موارد نیاز دارید: • یک گره کنترل Ansible : یک دستگاه اوبونتو .04 که دارای Ansible نصب شده و تنظیم شده است تا با استفاده از کلیدهای SSH به میزبان های Ansible شما متصل شود. اطمینان حاصل کنید که گره کنترل دارای یک کاربر معمولی با مجوزهای sudo باشد و فایروال فعال نیز داشته باشد ، همانطور که در راهنمای راه اندازی سرور مجازی اولیه ما توضیح داده شده است. برای تنظیم Ansible ، لطفا راهنمای ما در مورد نحوه نصب و پیکربندی Ansible در اوبونتو .04 را دنبال کنید. • یک یا چند هاست Ansible: یک یا چند سرور مجازی از راه دور Ubuntu .04 که قبلاً به کمک راهنمای نحوه استفاده از Ansible برای خودکارسازی تنظیمات اولیه سرور مجازی در اوبونتو .04 تنظیم شده اند. قبل از ادامه کار ، ابتدا باید اطمینان حاصل کنید که گره کنترل Ansible شما قادر به اتصال و اجرای دستورات در هاست (های) Ansible باشد. برای بررسی اتصال ، لطفاً مرحله 3 نحوه نصب و پیکربندی Ansible در اوبونتو .04 را بررسی کنید. این Playbook چه کاری انجام می دهد؟ این playbook Ansible از طریق روشی که در راهنمای ما در مورد نحوه نصب وردپرس با LAMP در اوبونتو .04 ارائه شده است ، جایگزینی برای اجرای دستی فراهم می کند. اجرای این playbook اقدامات زیر را در هاست Ansible شما انجام خواهد داد: 1) aptitude را نصب میکند ، که توسط Ansible به عنوان جایگزینی برای مدیر بسته apt ارجحیت داده میشود. 2)بسته های LAMP مورد نیاز و پسوندهای PHP را نصب میکند. 3) یک Apache VirtualHost جدید برای وب سایت وردپرس ایجاد و فعال مینماید. 4) ماژول بازنویسی Apache (mod_rewrite) را فعال میکند. 5) وب سایت پیش فرض Apache را غیرفعال میکند. 6) رمز ورود را برای کاربر root MySQL تنظیم میکند. 7) حساب های MySQL ناشناس را حذف و پایگاه داده را آزمایش میکند. 8) برای وب سایت وردپرس یک بانک اطلاعاتی MySQL و کاربر جدید ایجاد میکند. 9)UFW را تنظیم میکند تا ترافیک HTTP روی درگاه پیکربندی شده انجام شود (به طور پیش فرض 80). 10) وردپرس را دانلود و باز میکند. 11) مالکیت و مجوزهای صحیح دایرکتوری را تنظیم میکند. 12) با استفاده از الگوی ارائه شده ، فایل wp-config.php را تنظیم کنید. پس از پایان کار playbook ، بر اساس گزینه هایی که در متغیرهای پیکربندی خود تعریف کرده اید ، یک نصب وردپرس در یک محیط LAMP اجرا می شود. نحوه استفاده از این Playbook اولین کاری که ما باید انجام دهیم این است که وردپرس را در playbook LAMP و متعلقات آن از منبع do-community / ansible-playbooks را دریافت کنیم. ما باید این منبع را به یک پوشه محلی در داخل گره کنترل Ansible تبدیل کنیم. اگر قبلا با دنبال کردن راهنمای دیگری ، این منبع را کلون کرده اید ، به کپیansible-playbooks موجود خود دسترسی پیدا کنید و یک دستور git pull را اجرا کنید تا مطمئن شوید که مطالب به روز شده را دارید: ⦁ $ cd ~/ansible-playbooks ⦁ ⦁ $ git pull اگر این اولین بار است که از منابع do-community / ansible-playbooks استفاده می کنید ، باید با کلون کردن منبع در پوشه هوم فولدر خود شروع کنید: ⦁ $ cd ~ ⦁ ⦁ $ git clone https://github.com/do-community/ansible-playbooks.git ⦁ ⦁ $ cd ansible-playbooks فایل های مورد علاقه ما در داخل پوشه wordpress-lamp_ubuntu04 قرار گرفته اند که دارای ساختار زیر است: wordpress-lamp_ubuntu04 ├── files │ ├── apache.conf.j2 │ └── wp-config.php.j2 ├── vars │ └── default.yml ├── playbook.yml └── readme.md در اینجا در مورد هر یک از این فایل ها آمده است: files / apache.conf.j2: فایل الگو برای تنظیم Apache VirtualHost. files / wp-config.php.j2: فایل الگو برای تنظیم فایل پیکربندی WordPress. vars / default.yml: فایل متغیر برای شخصی سازی تنظیمات playbook. playbook.yml: فایل playbook ، شامل کارهایی که باید روی سرور مجازی راه دور اجرا شود. readme.md: فایل متنی حاوی اطلاعات مربوط به این playbook . ما برای سفارشی سازی گزینه های playbook ، فایل متغیرهای آن را ویرایش خواهیم کرد. به دایرکتوری wordpress-lamp_ubuntu04 دسترسی پیدا کنید و فایل vars / default.yml را با استفاده از ویرایشگر خط فرمان مورد نظر خود باز کنید: ⦁ $ cd wordpress-lamp_ubuntu04 ⦁ ⦁ $ nano vars/default.yml این فایل شامل چند متغیر است که باید به آن توجه کنید: vars/default.yml --- #System Settings php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL Settings mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #HTTP Settings http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" لیست زیر شامل توضیح مختصری در مورد هر یک از این متغیرها و نحوه تغییر آنها می باشد: php_modules: آرایه ای حاوی افزونه های PHP که باید برای پشتیبانی از راه اندازی وردپرس شما نصب شوند. شما نیازی به تغییر این متغیر ندارید ، اما در صورت نیاز برای ستاپ خاص شما، باید افزودنه های جدید به لیست اضافه کنید. mysql_root_password: کلمه عبور مورد نظر برای حساب MySQL ریشه mysql_db: نام پایگاه داده MySQL که باید برای وردپرس ایجاد شود. mysql_user: نام کاربر MySQL که باید برای وردپرس ایجاد شود. mysql_password: رمز عبور برای کاربر جدید MySQL. http_host: نام دامنه شما. http_conf: نام فایل پیکربندی که در Apache ایجاد می شود. http_port: درگاه HTTP برای این هاست مجازی ، که به طور پیش فرض 80 است. پس از اتمام به روزرسانی متغیرهای داخل vars / default.yml ، این فایل را ذخیره کنید و ببندید. اگر از nano استفاده کرده اید ، این کار را با فشار دادن CTRL + X ، Y انجام دهید. سپس enter را بزنید. اکنون آماده اجرای این playbook در یک یا چند سرور مجازی هستید. بیشتر playbook ها به گونه پیش فرض تنظیم شده اند که در هر سرور مجازی موجود شما اجرا می شود. ما می توانیم از فلگ -l استفاده کنیم تا مطمئن شویم که فقط یک زیر مجموعه از سرور مجازی ها یا یک سرور مجازی منفرد تحت تأثیر Playbook قرار گرفته است. ما همچنین می توانیم از فلگ -u استفاده کنیم تا مشخص کنیم از کدام کاربر روی سرور مجازی از راه دور استفاده می کنیم تا دستورات playbook را روی میزبان از راه دور متصل کنیم. برای اجرای playbook فقط در server1 ، با اتصال به عنوان sammy ، می توانید از دستور زیر استفاده کنید: ⦁ $ ansible-playbook playbook.yml -l server1 -u sammy ⦁ خروجی مشابه این دریافت خواهید کرد: Output PLAY [all] ***************************************************************************************************************************** TASK [Gathering Facts] ***************************************************************************************************************** ok: [server1] TASK [Install prerequisites] *********************************************************************************************************** ok: [server1] … TASK [Download and unpack latest WordPress] ******************************************************************************************** changed: [server1] TASK [Set ownership] ******************************************************************************************************************* changed: [server1] TASK [Set permissions for directories] ************************************************************************************************* changed: [server1] TASK [Set permissions for files] ******************************************************************************************************* changed: [server1] TASK [Set up wp-config] **************************************************************************************************************** changed: [server1] RUNNING HANDLER [Reload Apache] ******************************************************************************************************** changed: [server1] RUNNING HANDLER [Restart Apache] ******************************************************************************************************* changed: [server1] PLAY RECAP ***************************************************************************************************************************** server1 : ok=22 changed= unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 توجه: برای کسب اطلاعات بیشتر در مورد نحوه اجرای Ansible playbooks ، راهنمای Ansible Cheat Sheet Guide را بررسی کنید. پس از پایان راه اندازی Playbook ، می توانید به مرورگر وب خود بروید تا نصب وردپرس را از همانجا به پایان برسانید. به نام دامنه یا آدرس IP عمومی سرور مجازی خود بروید: http: // server_host_or_IP صفحه ای مانند این را مشاهده خواهید کرد: پس از انتخاب زبانی که می خواهید برای نصب وردپرس خود استفاده کنید ، مرحله نهایی برای تنظیم کاربر و رمزعبور وردپرس به شما ارائه می شود تا بتوانید وارد کنترل پنل شوید: با کلیک بر روی صفحه ، شما به صفحه ای منتقل می شوید که از شما خواسته می شود وارد شوید: پس از ورود به سیستم ، شما به داشبورد مدیریت وردپرس منتقل می شوید: برخی از مراحل بعدی رایج برای سفارشی سازی نصب وردپرس شامل انتخاب تنظیمات permalinks برای پست های شما (می توانید در Settings > Permalinks بیابید) و انتخاب تم جدید (در Appearance > Themes) میباشد. محتوای Playbook می توانید تنظیمات سرور LAMP وردپرس را که در این آموزش مشاهده شده است ، در پوشه wordpress-lamp_ubuntu04 در داخل منبع DigitalOcean Community Playbooks مشاهده کنید. برای کپی یا دانلود مستقیم محتوای اسکریپت ، روی دکمه Raw به سمت بالای هر اسکریپت کلیک کنید. محتویات کامل Playbook و همچنین فایل های مرتبط با آن نیز برای راحتی شما در اینجا گنجانده شده است. vars / default.yml فایل متغیر default.yml حاوی مقادیری است که در وظایف playbook از جمله تنظیمات بانک اطلاعاتی و نام دامنه برای پیکربندی در Apache استفاده خواهد شد. vars/default.yml #System Settings php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL Settings mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #HTTP Settings http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" files/apache.conf.j2 فایل apache.conf.j2 یک فایل الگوی Jinja 2 است که یک آپشن جدید Apache VirtualHost را پیکربندی می کند. متغیرهای مورد استفاده در این الگو در فایل متغیر vars / default.yml تعریف شده اند. files/apache.conf.j2 <VirtualHost *:{{ http_port }}> ServerAdmin webmaster@localhost ServerName {{ http_host }} ServerAlias www.{{ http_host }} DocumentRoot /var/www/{{ http_host }} ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/{{ http_host }}> Options -Indexes </Directory> <IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule> </VirtualHost> files/wp-config.php.j2 فایل wp-config.php.j2 یکی دیگر از الگوهای Jinja است که برای تنظیم فایل اصلی پیکربندیWordPress استفاده می شود. متغیرهای مورد استفاده در این الگو در فایل متغیر vars / default.yml تعریف شده اند. کلیدهای احراز هویت منحصر به فرد با استفاده از یک عملکرد ترکیبی ایجاد می شوند. files/info.php.j2 <?php /** * The base configuration for WordPress * * The wp-config.php creation script uses this file during the * installation. You don't have to use the web site, you can * copy this file to "wp-config.php" and fill in the values. * * This file contains the following configurations: * * * MySQL settings * * Secret keys * * Database table prefix * * ABSPATH * * @link https://codex.wordpress.org/Editing_wp-config.php * * @package WordPress */ // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define( 'DB_NAME', '{{ mysql_db }}' ); /** MySQL database username */ define( 'DB_USER', '{{ mysql_user }}' ); /** MySQL database password */ define( 'DB_PASSWORD', '{{ mysql_password }}' ); /** MySQL hostname */ define( 'DB_HOST', 'localhost' ); /** Database Charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8' ); /** The Database Collate type. Don't change this if in doubt. */ define( 'DB_COLLATE', '' ); /** Filesystem access **/ define('FS_METHOD', 'direct'); /**#@+ * Authentication Unique Keys and Salts. * * Change these to different unique phrases! * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again. * * @since 2.6.0 */ define( 'AUTH_KEY', '{{ ansible_date_time.iso8601_micro | hash('sha256') }}' ); define( 'SECURE_AUTH_KEY', '{{ ansible_date_time.iso8601_micro | hash('sha256') }}' ); define( 'LOGGED_IN_KEY', '{{ ansible_date_time.iso8601_micro | hash('sha256') }}' ); define( 'NONCE_KEY', '{{ ansible_date_time.iso8601_micro | hash('sha256') }}' ); define( 'AUTH_SALT', '{{ ansible_date_time.iso8601_micro | hash('sha256') }}' ); define( 'SECURE_AUTH_SALT', '{{ ansible_date_time.iso8601_micro | hash('sha256') }}' ); define( 'LOGGED_IN_SALT', '{{ ansible_date_time.iso8601_micro | hash('sha256') }}' ); define( 'NONCE_SALT', '{{ ansible_date_time.iso8601_micro | hash('sha256') }}' ); /**#@-*/ /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each * a unique prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'wp_'; /** * For developers: WordPress debugging mode. * * Change this to true to enable the display of notices during development. * It is strongly recommended that plugin and theme developers use WP_DEBUG * in their development environments. * * For information on other constants that can be used for debugging, * visit the Codex. * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define( 'WP_DEBUG', false ); /* That's all, stop editing! Happy publishing. */ /** Absolute path to the WordPress directory. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( __FILE__ ) . '/' ); } /** Sets up WordPress vars and included files. */ require_once( ABSPATH . 'wp-settings.php' ); playbook.yml فایل playbook.yml جایی است که کلیه وظایف این مجموعه تعریف شده است. این کار با تعریف گروه سرور مجازی هایی که باید هدف این مجموعه باشند (all) شروع می شود ، و پس از آن برای تعریف اینکه وظایف باید بصورت پیش فرض با افزایش امتیاز (sudo) انجام شود یا خیر، از become: true استفاده می کند. سپس ، فایل متغیر vars / default.yml را برای بارگذاری گزینه های پیکربندی شامل می شود. playbook.yml --- - hosts: all become: true vars_files: - vars/default.yml tasks: - name: Install prerequisites apt: name=aptitude update_cache=yes state=latest force_apt_get=yes tags: [ system ] - name: Install LAMP Packages apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] tags: [ system ] - name: Install PHP Extensions apt: name={{ item }} update_cache=yes state=latest loop: "{{ php_modules }}" tags: [ system ] # Apache Configuration - name: Create document root file: path: "/var/www/{{ http_host }}" state: directory owner: "www-data" group: "www-data" mode: '0755' tags: [ apache ] - name: Set up Apache VirtualHost template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Reload Apache tags: [ apache ] - name: Enable rewrite module shell: /usr/sbin/a2enmod rewrite notify: Reload Apache tags: [ apache ] - name: Enable new site shell: /usr/sbin/a2ensite {{ http_conf }} notify: Reload Apache tags: [ apache ] - name: Disable default Apache site shell: /usr/sbin/a2dissite 000-default.conf notify: Restart Apache tags: [ apache ] # MySQL Configuration - name: Set the root password mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock tags: [ mysql, mysql-root ] - name: Remove all anonymous user accounts mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Remove the MySQL test database mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Creates database for WordPress mysql_db: name: "{{ mysql_db }}" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Create MySQL user for WordPress mysql_user: name: "{{ mysql_user }}" password: "{{ mysql_password }}" priv: "{{ mysql_db }}.*:ALL" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] # UFW Configuration - name: "UFW - Allow HTTP on port {{ http_port }}" ufw: rule: allow port: "{{ http_port }}" proto: tcp tags: [ system ] # WordPress Configuration - name: Download and unpack latest WordPress unarchive: src: https://wordpress.org/latest.tar.gz dest: "/var/www/{{ http_host }}" remote_src: yes creates: "/var/www/{{ http_host }}/wordpress" tags: [ wordpress ] - name: Set ownership file: path: "/var/www/{{ http_host }}" state: directory recurse: yes owner: www-data group: www-data tags: [ wordpress ] - name: Set permissions for directories shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type d -exec chmod 750 {} \\;" tags: [ wordpress ] - name: Set permissions for files shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type f -exec chmod 640 {} \\;" tags: [ wordpress ] - name: Set up wp-config template: src: "files/wp-config.php.j2" dest: "/var/www/{{ http_host }}/wordpress/wp-config.php" tags: [ wordpress ] handlers: - name: Reload Apache service: name: apache2 state: reloaded - name: Restart Apache service: name: apache2 state: restarted با خیال راحت این فایل ها را به بهترین وجه متناسب با نیازهای فردی خود در گردش کارتان تغییر دهید. نتیجه در این راهنما ، ما از Ansible برای خودکارسازی روند نصب و راه اندازی وب سایت وردپرس با LAMP روی سرور مجازی اوبونتو .04 استفاده کرده ایم. اگر می خواهید کارهای دیگری در این playbook را برای سفارشی سازی تنظیمات سرور مجازی خود انجام دهید ، لطفاً به راهنمای مقدماتی Ansible ( پیکربندی مدیریت 101: نوشتن Ansible Playbooks) مراجعه کنید.

نحوه استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18.04

چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04 تنظیم کرد (شروع سریع)

چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی خود استفاده کرد

، ,php ,ansible ,playbook ,mysql ,فایل ,سرور مجازی ,default yml ,vars default ,که در ,changed server1 ,root password mysql ,community ansible playbooks ,******************************************************************************************************* changed server1 ,changed server1 running

مشخصات

برترین جستجو ها

آخرین جستجو ها

لیدی بلاگ Spotlight سنگ و سبو منبع کویل دار املاک منطقه 22 تهران چیتگر مای پیکس لاو | فیلم و عکس | خبر و سرگرمی میز کار من دکتر سعیدناصحی اسکین کر شیراز مبلمان اداری و صندلی اداری نوین چیر