<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علی رضا سلیم زاده</title>
        <link>https://virgool.io/feed/@salimzadeh</link>
        <description>یک شبکه کار برنامه نویس که سخت افزار هم بلده .که یکمی هم تنبل شده</description>
        <language>fa</language>
        <pubDate>2026-06-16 18:28:02</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>علی رضا سلیم زاده</title>
            <link>https://virgool.io/@salimzadeh</link>
        </image>

                    <item>
                <title>داکر چیه ؟</title>
                <link>https://virgool.io/@salimzadeh/%D8%AF%D8%A7%DA%A9%D8%B1-%DA%86%DB%8C%D9%87-viukpakirfjj</link>
                <description>خیلی خلاصه میگم :داکر یک نرم افزاری است که  ماشین مجازی کوچیک شده رو اجرا میکنه ، این یک تعریف بسیار ساده از داکر هست .ماشین مجازی چیه ؟ماشین مجازی به یک کامپیوتری میگن که مجازی شده یعنی همه چیش به صورت مجازیه ، یعنی کارت شبکه ، هارد دیسک و ... به صورت مجازی ساخته میشه و روی یک کامپویتر واقعی ( سیستم عامل واقعی ) راه اندازی میشه .پس با این توصیفات داکر هم دارای هارد هست ، داکر هم دارای کارت شبکه است  و... حالا ماشین مجازی کوچیک چیه ؟ماشین مجازی کوچیک یا اسم تخصصی اون &quot;کانتینر&quot; یه ماشین مجازیه که اضافات اون پاک شده و تنها چیزی روش هست که برای اجرای اون برنامه خاص روش احتیاج هست .مثلا یه کانتینر داریم که Nginx رو برامون ران میکنه پس احتیاجی نیست که چیزای اضافه روش نصب باشه .سعی کردم خیلی خلاصه و مفید توضیح بدم .</description>
                <category>علی رضا سلیم زاده</category>
                <author>علی رضا سلیم زاده</author>
                <pubDate>Tue, 28 Jun 2022 14:50:56 +0430</pubDate>
            </item>
                    <item>
                <title>دستورات کاربردی داکر</title>
                <link>https://virgool.io/@salimzadeh/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-%D8%AF%D8%A7%DA%A9%D8%B1-refkwqsw3jof</link>
                <description>یکسری از دستورات هستند که خیلی کاربردی هستند پس نیازه اونا رو بلد باشیم این دستورات رو براتون لیست کردم با یک توضیح کوتاه که راحتر پیدا کنیم.دستور جستجو در لیست ایمیج ها(پکیج ها) : این دستور لیستی از کانتیر هایی که توی داکر هاب هستند را به ما نشون میده .docker search nginxخروجی دستور سرچکانتیر (ایمیج) رو نصب کنید :این یکی دیگه خیلی کاربردیه بعد از اینکه کانتیر رو پیدا کردید کافیه اینو استفاده کنید و نصبش کنید، نصب به منزله این نیست که راه اندازی انجام شده فقط اومده روی دستگاه شما .docker pull nginxخروجی دستور pullچیزایی که نصب کردیم رو لیست کنیم : با استفاده از دستور زیر کانتیر  (ایمیج) هایی رو که نصب کردیم رو لیست می کنیم برای اینکه بعداً بدونیم چه چیزایی رو نصب کردیم خیلی به درد میخوره docker image listنمونه خروجی دستور image list خوب حالا نوبت دستور اجراست :بعد از نصب لازمه که اونا رو اجرا کنیم اجرای یک ایمیج داکر از خیلی ساده شروع میشه و ممکنه بعضی وقتا خیلی سخت هم بشه(طبق تجربه من) در بهترین حالت ممکنه همه چیز راحت راه بیافته ولی ممکنه سخت هم بشه .docker run -d -p 8083:80 nginxخوب این در ساده ترین حالته ایمیج nginx اجرا شده و از بیرون روی پورت 8083 قابل مشاهده است، وقتی یک ایمیج داکر ران میشه یک کد به شما نشون داده میشه .خروجی دستور راناین یعنی همه چی خوب پیش رفته :)چه چیزایی در حال اجرا هستند ؟بعد از راه اندازی باید ببینیم چه کانتیر هایی در حال اجرا هست با دستور ps می تونیم ببینم چه داکرهایی در حال اجرا هستند، لیستی از ایمیج ها به همراه آی دی، دستورات اجرا شده روی ایمیج ها(بعداً توضیح میدم) طول عمرشون، وضعیت و پورت ها در این لیست مشاهده میشنdocker psنمونه اس از خروجی دستور psلاگ های داخل داکر کسایی که کار کردن میدونن خوندن لاگ ها توی عیب یابی خیلی کمک میکنه با دستور زیر میتونید لاگ های داخل یک داکر رو به راحتی بخونید.docker logs 727704820ea4نمونه ای از دستور logsخوب این دستور یه نکته داره  اونم عددیه که جلوی دستور نوشته میشه ، اون عدد شماره آی دی کانتینری هست که اجرا شده، این عدد رو از کجا گیر بیاریم ؟با استفاده از دستور docker ps به راحتی میتونید ای دی کانتینر مورد نظر رو پیدا کنید از این به بعد همه جا بش میگیم CONTINERID .با استفاده از دستور زیر به داخل کانتینر با بش (bash) وصل میشیم یا یک دستور رو اجرا می کنیم docker exec -it CONTINERID /bin/bashیا با دستور زیر از شاخه اصلی ls میگیریم docker exec -it CONTINERID ls -la /یا هر دستور دیگه رو اجرا میکنیم .</description>
                <category>علی رضا سلیم زاده</category>
                <author>علی رضا سلیم زاده</author>
                <pubDate>Tue, 28 Jun 2022 14:37:10 +0430</pubDate>
            </item>
                    <item>
                <title>ریست کردن پسورد روت در7 centos</title>
                <link>https://virgool.io/@salimzadeh/%D8%B1%DB%8C%D8%B3%D8%AA-%DA%A9%D8%B1%D8%AF%D9%86-%D9%BE%D8%B3%D9%88%D8%B1%D8%AF-%D8%B1%D9%88%D8%AA-%D8%AF%D8%B17-centos-of7yfw5fdjkq</link>
                <description>توی مجموعه ما یه سرور بود که روش centos نصب بود و ما پسورد اونو فراموش کرده بودیم (البته بعدش فهمیدم پسورد رو داشتم ولی آی پی رو اشتباه میزدم :)  )پسورد را به صورت زیر ریست میکنیم : ابتدا کامپیوتر را ری استارت میکنیم تا به گراب(Grub) برسیم و دکمه E رو میزنیم صفحه گراب (Grub)سپس در صفحه بعد روی خطی که با linux16 شروع شده میرویم و دکمه end را میزنیم خطی که با linux16 شروع شده آخر خط کلمه &quot;rd.break&quot; را بدون &quot; تایپ میکنیم  مراقب باشد به کلمه قبلی نچسبیده باشد و سپس دکمه ترکیبی Ctrl+X را میزنیم تا بوت ادامه پیدا کند .rd.breakپس از بوت اولیه وارد محیط debug shell شویم محیط debug shellدستور زیر را تایپ میکنیم و اینتر را میزنیم تا دستور اجرا شود mount -o remount,rw /sysroot/حالا با دستور زیر وارد محیط جدید می شویم (محیط chroot jail)chroot /sysrootدر این حالت انگار که در لینوکس خودمان هستیم و میتوانیم همه دستورات را اجرا کنیم ، پس دستور passwd را برای تغییر پسورد روت اجرا میکنیم و پسورد جدید را میزنیم  سپس دستور زیر را  و اینتر را میزنیم  تا یک فایل با اسمی خاص ساخته شود (این فایل در واقع به selinux میگه فایل ها رو دوباره لیبل گذاری کنه ):touch /.autorelabelدوبار exit را تایپ میکنیم تا از این محیط ها خارج شویم و سیستم با پسورد جدید بوت شود .</description>
                <category>علی رضا سلیم زاده</category>
                <author>علی رضا سلیم زاده</author>
                <pubDate>Sun, 10 Apr 2022 10:13:08 +0430</pubDate>
            </item>
                    <item>
                <title>ری استارت کردن MariaDB Galera Cluster</title>
                <link>https://virgool.io/@salimzadeh/%D8%B1%DB%8C-%D8%A7%D8%B3%D8%AA%D8%A7%D8%B1%D8%AA-%DA%A9%D8%B1%D8%AF%D9%86-mariadb-galera-cluster-sgovhhqvpog1</link>
                <description>خوب در قسمت قبلی راه اندازی یک کلاستر را توضیح دادیم، برای اینکه این کلاستر رو ری استارت کنیم باید روش زیر را استفاده کنیم .اگر از این روش نریم ممکنه کلاستر دیگه به درستی بالا نیاد و دسترسی کلاً قطع بشه.ابتدا وارید مسیر زیر میشیم و اون رو با یک ادیتور باز میکنیم vi /var/lib/mysql/grastate.datخط زیر را  به صورت زیر تغییر میدیم : safe_to_bootstrap: 1بعد با استفاده از دستور زیر PID سرویس mysql را به دست میاوریم ps -aux|grep mysqlنمونه از خروجی دستور قبلحالا با استفاده از دستور زیر این سرویس رو خاموش میکنیم kill -9 17135حالا از دستور زیر برای راه اندازی نود اصلی استفاده میکنیم galera_new_clusterبرای سایر نود ها هم از به صورت معمولی سرویس را ری استارت میکنیم systemctl restart mariadb</description>
                <category>علی رضا سلیم زاده</category>
                <author>علی رضا سلیم زاده</author>
                <pubDate>Sat, 31 Aug 2019 17:03:07 +0430</pubDate>
            </item>
                    <item>
                <title>راه اندازی MariaDB Galera Cluster (کلاستر دیتا بیس MySql)</title>
                <link>https://virgool.io/@salimzadeh/%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-mariadb-galera-cluster-%DA%A9%D9%84%D8%A7%D8%B3%D8%AA%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7-%D8%A8%DB%8C%D8%B3-mysql-ux5pkavkspok</link>
                <description>در پست قبلی  با راه اندازی سرور به صورت master-Master آشنا شدیم در این پست با راه اندزای یک کلاستر به ساده ترین حالت آشنا میشیم در واقع راه اندازی کلاستر برای به دست آوردن درسترس بودن بالاتر (High availability) می باشد .قابل توجه اینکه تمام آموزش هایی که من میدم معمولاً روی CentOS 7 می باشد .نکته بعدی اینکه اسم سرور را قبل از راه اندازی مشخص کنید و تغییر ندهید.(Hostname)ابتدا به مسیر زیر میریم و فایلکانفیگ رو ویرایش می کنیم تا SELinux غیر فعال بشه .vi /etc/selinux/configقسمت های مورد نظر رو به صورت زیر تغییر بدید SELINUX=disabled
SELINUXTYPE=targetedاز طریق دستور زیر فایر وال رو غیر فعال کنید systemctl status firewalldسرور را ری استارت کنید و تنظمیاتی که دادید رو بررسی کنید اسم سرورhostname غیر فعال بودن SELinuxsestatusغیر فعال بودن فایروالsystemctl status firewalldدر این نمونه ما دوتا سرور (نود) داریم مشخصات سرور اول :IP=192.168.10.1
Hostname=node1مشخصات سرور دوم:IP=192.168.10.2
HostName=node2روی هر دوتا سرور باید مراحل زیر رو انجام بدیم تا جایی که اعلام کنم فقط روی سرور شماره اول یا دوماین دستور رو بزنید تا منبع MariaDb به مخزن های نصبی اضافه بشه curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bashبعد دستورهای زیر بزنید تا سرویس های مورد نظر نصب بشن yum update
yum -y install MariaDB-serverخوب بعد از نصب وارد مسیر زیر بشید /etc/my.cnf.d/server.cnfمحتویات بخش [galera]  را به صورت زیر تغییر بدید [galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.10.1,192.168.10.2
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2خوب حالا روی سرور اول این دستور رو اجرا کنید galera_new_clusterبعد از اجرا باید بتونید از طریق دستور زیر به MySql  متصل بشید mysql -u rootاگر بدون مشکل وصل شدید دستور زیر را در محیط MySql اجرا کنید show global status like &#039;wsrep_cluster_size&#039;;باید خروجی زیر رو ببینید که نشان از درست بودن سیستم دارد .+--------------------+-------+| Variable_name      | Value |+--------------------+-------+| wsrep_cluster_size | 1     |+--------------------+-------+حالا روی سرور دوم این دستور رو اجرا کنید تا سرویس MySql شروع به کار کنه sudo systemctl start mariadb.serviceحالا مثل سرور اول دستور زیر رو اجرا کنید show global status like &#039;wsrep_cluster_size&#039;;و خروجی اون رو بررسی کنید که باید به صورت زیر باشه +--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+قابل توجه اینکه این روش ساده ترین روش راه اندازی می باشد و هرکدام از بخشها دارای پیچیدگی های بسیار زیادی می باشد.</description>
                <category>علی رضا سلیم زاده</category>
                <author>علی رضا سلیم زاده</author>
                <pubDate>Sat, 20 Jul 2019 16:46:39 +0430</pubDate>
            </item>
                    <item>
                <title>تغییر IP در CentOs ویرایش 7</title>
                <link>https://virgool.io/@salimzadeh/%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-ip-%D8%AF%D8%B1-centos-%D9%88%DB%8C%D8%B1%D8%A7%DB%8C%D8%B4-7-vsvzyic8mryx</link>
                <description>یه مسئله خیلی ساده تغییر IP در لینوکس توزیع CentOS  نسخه 7 ابتدا با دستور زیر لیست کارت های شبکه را میبینیم : #ip addressنمونه لیست کارت های شبکهکارتی که با نام lo شروع شده اسمش لوپ بک است (که اشاره به خود دستگاه دارد )دوتا کارت شبکه دیگر وجود دارد به نام های ens192 و ens 224 کارت هایی که با نام en شروع میشود کارت های Ethernet می باشند.خوب حالا که اسمشون رو میدونممیریم سراغ تغییر.با استفاده از دستور زیر فایل مربوط به کارت شبکه مورد نظر رو باز میکنیم : # vi /etc/sysconfig/network-scripts/ifcfg-eth0 بعد از باز شدن فایل دنبال خطهای زیر می گردیمBOOYPROTO=DHCP
ONBOOT=noو به صورت زیر تغییرشون میدیم :BOOYPROTO=none
ONBOOT=&quot;yes&quot;و بعد به انتخای فایل چند خط زیر رو اضافه میکنیم IPADDR=192.168.11.9
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
DNS1=192.168.11.1از ویرایشگر خارج میشیم و سپس دستور زیر را وارد میکنیم  #service network restart حالا دوباره دستور زیر رو وارد میکنیم باید آی پی تغییر کرده باشه #ip addressتست ساده اش هم اینه که باید بتونید گیت وی رو پینگ کنید نتیجه پینگ گیت وی</description>
                <category>علی رضا سلیم زاده</category>
                <author>علی رضا سلیم زاده</author>
                <pubDate>Sat, 06 Jul 2019 10:37:50 +0430</pubDate>
            </item>
                    <item>
                <title>راه اندزای MYSQL به صورت MASTER-MASTER</title>
                <link>https://virgool.io/@salimzadeh/%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%B2%D8%A7%DB%8C-mysql-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-master-master-krcnz3x6qgsx</link>
                <description>دیتا بیس ها میتونن به صورت Standalone باشند یا با هم در ارتباط باشن وقتی با هم در ارتباط باشن میتونن به صورت های MASTER-SLAVE یا MASTER-MASTER باشن در حالت اول  روی سرور مستر عملیات خواندن و نوشتن انجام میشه و روی سرورهای SLAVE فقط خواندن انجام میشه در حالت دوم روی هر دوتا سرور عملیات خواندن و نشتن انجام میشه .صورت مسئلهچون دوتا سرور فیزیکی داریم و این دوتا از طریق SAN Storage به هم وصل نیستن و دوست داریم که Redundancy  داشته باشیم از حالت master-master استفاده میکنیم تا وب اپ ها از روی دوتا سرور بتونن روی هر دوتا دیتابیس بنویسند  .برای راه اندازی از دوتا سرور Cent Os 7 و دیتا بیس Maria Db ورژن 10.3 استفاده کردیم.برای نصب Maria DB روی Cent Os اول باید ریپازیتوری زیر رو اد کنید /etc/yum.repos.d/MariaDB.repoبعد محتویات زیر رو بریزید توش [mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1بعد هم دستور زیر yum updateبعد هم دستور yum install  MariaDB-server MariaDB-clien بعد از نصب دستور زیر رو اجرا کنید و کلمه عبور ست کنید  mysql_secure_installation و ادامه ماجرا روی سرور اول بعد از نصب سرویس mariadb رو استپ کنید (مطمین باشید که استپ هست )systemctl stop mariadbبعد به مسیر زیر برید و فایل my.cnf رو ویرایش کنید ./etc/my.cnfو قسمت Mysql رو به صورت زیر تغییر بدید :# bind-address          = 127.0.0.1
server-id               = 61
report_host             = master1
log_bin                 = /var/log/mariadb/mariadb-bin
log_bin_index           = /var/log/mariadb/mariadb-bin.index
relay_log               = /var/log/mariadb/relay-bin
relay_log_index         = /var/log/mariadb/relay-bin.index
# replicate-do-db       = testdb
auto_increment_increment = 5
auto_increment_offset = 1و بعد سرویس رو استارت میکنیم systemctl stop mariadbحالا وارد محیط Mysql میشیم  mysql -uroot -p بعد از ورود یک یوزر میسازیم  MariaDB [(none)]&gt; create user &#039;replusr&#039;@&#039;%&#039; identified by &#039;replusr&#039;; و دسترسی میدیم بش  MariaDB [(none)]&gt; grant replication slave on *.* to &#039;replusr&#039;@&#039;%&#039;; حالا وضعیت مستر رو بررسی میکنیم  MariaDB [(none)]&gt;  show master status; خروجیش شبیه این میشه که اسم فایل و Position  مهمه که باید نیگه داریم +--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000009 |      634 |              |                  |
+--------------------+----------+--------------+------------------+حالا روی سرور دوم تقریبا تمام مراحلی رو که در سرور 1 اجرا کردیم در این سرور هم اجرا میکنیم با یه تفاوت های کوچیک اولیش تغییرات داخل این فایله (بقیه مراحل عیناً مثل سرور1 اجرا میشه )داخل این فایل /etc/my.cnfمحتویات رو به صورت زیر تغییر میدیم # bind-address          = 127.0.0.1
server-id               = 62
report_host             = master2
log_bin                 = /var/log/mariadb/mariadb-bin
log_bin_index           = /var/log/mariadb/mariadb-bin.index
relay_log               = /var/log/mariadb/relay-bin
relay_log_index         = /var/log/mymariadbql/relay-bin.index
# replicate-do-db       = testdb
auto_increment_increment = 5
auto_increment_offset = 1قابل توجه اینکه روی سرور اول باید بتونید master2 رو پینگ کنید و روی سرور دوم بتونید master1 رو پینگ کنید اگر به هر دلیلی نمیتونید و نمیخواید میتونید آی پی ست کنید .خوب حالا دستور زیر رو توی سرور دوم اجرا میکنیم (بعدش با کمی تغییر  توی سرور اول )MariaDB [(none)]&gt; STOP SLAVE;MariaDB [(none)]&gt; CHANGE MASTER TO MASTER_HOST=&#039;master1&#039;, MASTER_USER=&#039;replusr&#039;, MASTER_PASSWORD=&#039;replusr&#039;, MASTER_LOG_FILE=&#039;mariadb-bin.000009&#039;, MASTER_LOG_POS=;MariaDB [(none)]&gt; START SLAVE;توی متن بالا مقدار master1 = اسم سرور اول مقدار mariadb-bin.000009 = اسم فایلی که  با دستور show master status; به دست آوردیم مقدار 634 = پوزیشنی که با دستور show master status; به دست آوردیم برای بررسی دستور زیر رو میزنیم  MariaDB [(none)]&gt; SHOW SLAVE STATUS\G  نتیجه باید همچین چیزی بشه اگر ارور یا موردی دیدید باید دلیلش رو بررسی کنید *************************** 1. row ***************************Slave_IO_State: Waiting for master to send event
Master_Host: master1
Master_User: replusr
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mariadb-bin.000009
Read_Master_Log_Pos: 634
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 537
Relay_Master_Log_File: mariadb-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: testdb
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 634
Relay_Log_Space: 828
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:خوب باید همه مراحل رو برای سرور اول هم انجام بدید در صورتی که همه چیز درست باشه وقتی روی یکی از سرور ها یه دیتا بیسی ایجاد کنید یا هرکاری بکنید روی سرور اول هم اجرا خواهد شد .</description>
                <category>علی رضا سلیم زاده</category>
                <author>علی رضا سلیم زاده</author>
                <pubDate>Tue, 02 Jul 2019 13:44:37 +0430</pubDate>
            </item>
            </channel>
</rss>