آموزش نصب Apache ،MariaDB و پردازشگر کد PHP در CentOS 8 به همراه تست
در این مقاله میخوانید
LAMP مجموعهای از نرمافزارهای متنباز هستند که معمولاً باهم نصب میشوند و امکان میزبانی از وبسایتهای داینامیک و وباپلیکیشنهای نوشتهشده به زبان PHP را فراهم میکنند. LAMP سرواژهای است که از حرف اول واژههای سیستمعامل Linux، وبسرور Apache، دیتابیس MariaDB و پردازشگر کد PHP تشکیل شده است.
در مجموعه LAMP، لایه دیتابیس معمولاً سرور MySQL است؛ اما تا قبل از عرضه CentOS 8، کاربران نمیتوانستند از مخزنهای موجود به MySQL دسترسی داشته باشند. بههمیندلیل، از MariaDB استفاده میشود که درواقع نسخهای از MySQL است و بهعنوان جایگزین MySQL بهشمار میآید.
شما میتوانید بدون نیاز به تغییر هیچکدام از کدهای وبسایت یا برنامهتان، بهجای MySQL از MariaDB استفاده کنید. در این مقاله از آموزش سنت او اس، ابتدا نحوه نصب مجموعه نرمافزار LAMP روی سرورهای CentOS 8 را به شما آموزش خواهیم داد و درادامه، از MariaDB بهعنوان سیستم مدیریت دیتابیس استفاده خواهیم کرد.
خرید سرور لینوکس با وب سرور آپاچی از پارس پک
شما میتوانید از این مقاله برای مدیریت سرورهای لینوکس خود استفاده کنید و اگر قصد خرید هر یک از سرویسهای لینوکسی پارس پک را دارید، میتوانید با کارشناسان فروش ما در ارتباط باشید. همچنین، شما میتوانید برای اطلاع از تعرفهها و هزینهها به لینکهای زیر مراجعه کنید.
پیشنیازها
برای اینکه بتوانید این راهنمای آموزشی را دنبال کنید و نصب LAMP را بهدرستی انجام دهید؛ باید به پیشنیازهایی دسترسی داشته باشید. بنابراین بایستی بهعنوان یک کاربر غیر روت به سرور CentOS 8 دسترسی پیدا کنید و فایروال و امتیاز sudo روی سرور شما نصب شود.
مرحله ۱. نصب آپاچی
برای شروع این آموزش (نصب LAMP) و اینکه بتوانیم وبسایت را به کاربران نمایش دهیم، به وبسرور آپاچی نیاز خواهیم داشت. آپاچی وبسروری متنباز است که صفحات PHP را نیز میتواند نمایش دهد. برای نصب این نرمافزار، از پکیجمنیجر dnf، پکیجمنیجر پیشفرض CentOS 8، استفاده خواهیم کرد.
با دستور زیر پکیج httpd را نصب کنید:
sudo dnf install httpd
درادامه، پیغامی مبنیبر تأیید نصب پکیج httpd دریافت خواهید کرد. برای تأیید، کلید Y را لمس کنید. پس از اتمام نصب، دستور زیر را برای فعالسازی و شروع سرور وارد کنید:
sudo systemctl start httpd
درصورتیکه پکیج Firewalld را فعال کرده باشید، باید امکان اتصال به اینترنت را دراختیار Apache قرار دهید. دستور زیر تمامی اتصالات HTTP که بهصورت پیشفرض روی پورت ۸۰ انجام میشوند، برای همیشه مجاز خواهد کرد:
sudo firewall-cmd --permanent --add-service=http
برای تأیید تغییرات، میتوانید دستور زیر را اجرا کنید:
sudo firewall-cmd --permanent --list-all
خروجی این دستور باید شبیه به تصویر زیر باشد:
Output public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
برای اعمال تغییرات، تنظیمات فایروال را با استفاده از دستور Reload باید دوباره بارگذاری کنید:
sudo firewall-cmd –reload
پس از اضافهکردن آپاچی به فایروال، میتوانید آدرس IP یا نام دامنه سرور خودتان را در مرورگر وارد کنید تا از نصب کامل آن مطمئن شوید. درصورتیکه روی سرور خودتان آدرس دامنه را تنظیم نکردهاید و آدرس IP سرور را هم نمیدانید، میتوانید با کمک دستور زیر، آدرس IP سرور را پیدا کنید:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
دستور بالا، چند آدرس IP را به شما نمایش میدهد که میتوانید همه آنها را جداگانه در مرورگر امتحان کنید. اگر آدرس IP را درست وارد کرده باشید، صفحهای مشابه صفحه زیر را مشاهده میکنید:
اگر این صفحه را ببینید، میتوانید مطمئن باشید که وبسرور بهدرستی نصب شده است.
مرحله ۲. نصب MariaDB
اکنون که وبسرور وبسایتتان را نصب و راهاندازی کردهاید، باید سیستم مدیریت دیتابیس داشته باشید تا بتوانید اطلاعات وبسایت خود را در آن نگهداری کنید. همانطورکه گفتیم، در این آموزش ما از MariaDB استفاده میکنیم که درواقع نسخه سبکتری از MySQL است.
برای نصب این نرمافزار مدیریت دیتابیس، دستور زیر را وارد کنید:
sudo dnf install mariadb-server
پس از اتمام نصب، میتوانید با استفاده از دستور زیر سرور MariaDB را فعال و راهاندازی کنید:
sudo systemctl start mariadb
فعالسازی اسکریپت امنیتی
برای افزایش امنیت سرور دیتابیس خود، بهتر است اسکریپت امنیتیای را اجرا کنید که بههمراه خود MariaDB عرضه میشود. این اسکریپت برخی از تنظیمات پیشفرض غیرایمن را غیرفعال و امکان دسترسی به سرور دیتابیس شما را هم محدود خواهد کرد. با استفاده از دستور زیر، این اسکریپت را آغاز کنید:
sudo mysql_secure_installation
این دستور برای تغییر بعضی از تنظیمات از شما اجازه میگیرد و با تأیید آنها، میتوانید برخی از تنظیمات MariaDB را تغییر دهید. دستور اول از شما میخواهد که پسورد root دیتابیس را وارد کنید. این پسورد با پسورد root سیستم تفاوت دارد و درواقع همان رمزعبور یوزر ادمین دیتابیس است که به آن کاملاً دسترسی دارد. ازآنجاکه بهتازگی MariaDB را نصب کرده و تغییری در ساختار آن ایجاد نکردهاید، این رمزعبور هم خالی خواهد بود و فقط کافی است کلید Enter را فشار دهید.
وارد کردن رمزعبور root
در قدم بعدی، از شما خواسته میشود که رمزعبور root را برای دیتابیس خود وارد کنید. mariaDB از روش تصدیق اعتبار خاصی استفاده میکند که درمقایسهبا انتخاب رمزعبور ایمنتر است؛ ازاینرو، به انجام این کار نیازی نیست. درادامه، کلید N و سپس کلید Enter را فشار دهید تا به مرحله بعدی بروید.
از این مرحله بهبعد میتوانید برای تمامی درخواستها کلید Y و سپس کلید Enter را انتخاب کنید تا تنظیمات پیشفرض این اسکریپت اعمال شوند. پس از اتمام کار، یوزرهای ناشناس و دیتابیسهای آزمایشی حذف خواهند شد و امکان لاگین ریموت یوزر root غیرفعال خواهد شد و این تنظیمات جدید بارگذاری خواهند شد تا بلافاصله سرور بتواند آنها را اجرایی کند.
درنهایت، دستور زیر را وارد کنید تا وارد کنسول MariaDB شوید:
sudo mysql
با دستور بالا، بهعنوان یوزر root به سرور MariaDB متصل خواهید شد و باید خروجی زیر را مشاهده کنید:
Output Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.3.17-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
همانطورکه دیدید، به استفاده از رمزعبور برای اتصال به سرور نیازی نداشتید. دلیل این موضوع نیز این است که برای اتصال از روش unix_socket بهجای رمزعبور استفاده میشود. ممکن است تصور کنید که این موضوع باعث کاهش امنیت سیستم میشود؛ اما درواقع ایمنتر از استفاده از روش رمزعبور است.
در این روش، فقط افرادی میتوانند به یوزر root دیتابیس دسترسی داشته باشند که امکان دسترسی Sudo به سرور را هم داشته باشند. برای مثال، نمیتوانید از اپلیکیشن PHP خودتان به یوزر روت دیتابیس دسترسی داشته باشید.
یوزرنیم و پسورد اختصاصی برای هر دیتابیس
اگر میخواهید روی سرور خودتان چندین دیتابیس داشته باشید، بهتر است برای امنیت بیشتر، هر دیتابیس یوزر اختصاصی با سطح دسترسی محدودتری داشته باشد. برای یادگیری نحوه این کار، درادامه دیتابیسی با نام example_database و یوزری با نام example_user ایجاد میکنیم. البته شما میتوانید برای دیتابیس و یوزرهای خودتان از هر اسم دیگری هم استفاده کنید:
برای ایجاد دیتابیس جدید، در کنسول MariaDB دستور زیر را وارد کنید:
CREATE DATABASE example_database;
اکنون میتوانید یوزری جدید برای دیتابیس خودتان بسازید و دسترسی کامل دیتابیسی را به او بدهید که ایجاد کردهاید. دستور زیر از عبارت password بهعنوان رمزعبور یوزر جدید استفاده میکند؛ اما بهتر است از رمزهای عبور قویتری برای یوزر دیتابیس خودتان استفاده کنید:
GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
دستور بالا به کاربر example_user دسترسی کاملی به example_database خواهد داد و درعینحال، امکان ایجاد یا تغییر دیگر دیتابیسها را به او نخواهد داد.
از دستور زیر استفاده کنید تا مطمئن شوید تمامی تنظیمات اعمالشده ذخیره و فعال شدهاند:
FLUSH PRIVILEGES;
سپس، با دستور زیر از کنسول MariaDB خارج شوید:
Exit
با لاگین دوباره در کنسول MariaDB، میتوانید مطمئن شوید که یوزر جدید دسترسیهای لازم را دارد. البته این بار بهجای دسترسی روت، از دسترسی کاربر جدید استفاده کنید:
mysql -u example_user –p
فلگ –p در دستور بالا رمزعبوری را از شما دریافت خواهد کرد که برای کاربر جدید ایجاد کردهاید. پس از لاگینکردن در کنسول MariaDB، با دستور زیر دسترسی خودتان به دیتابیس example_database را تأیید کنید:
SHOW DATABASES;
این دستور خروجی زیر را به شما نمایش میدهد:
Output +--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)
برای خروج از کنسول MariaDB، دوباره دستور Exit را تایپ کنید. در این مرحله، سیستم دیتابیس شما راهاندازی میشود و میتوانید بهسراغ نصب و راهاندازی PHP بروید تا مراحل نصب LAMP تکمیل شوند.
مرحله ۳. نصب PHP
تا اینجا، Apache را برای نمایش اطلاعات و MariaDB را برای نگهداری و مدیریت دادههای وبسایتمان نصب کردیم. PHP وظیفه پردازش کدها و آمادهسازی محتوای پویا برای نمایش به کاربر نهایی را برعهده دارد. در این مرحله، علاوهبر نصب PHP، باید پکیج php-mysqlnd را هم نصب کنید تا امکان ارتباط PHP با دیتابیسهای برپایه MySQL را فراهم کنید. بقیه پکیجهای اصلی PHP نیز بهصورت خودکار نصب خواهند شد.
برای نصب پکیجهای PHP و php-mysqlnd با استفاده از پکیجمنیجر dnf، دستور زیر را اجرا کنید:
sudo dnf install php php-mysqlnd
پس از اتمام نصب، باید وبسرور Apache را ریاستارت کنید تا ماژول PHP راهاندازی شود:
sudo systemctl restart httpd
اکنون وبسرور شما کاملاً راهاندازی شده است. در قدم بعدی، باید اسکریپت تست PHP بنویسیم تا مطمئن شویم که همهچیز طبق انتظار پیش میرود.
مرحله ۴. تست اتصال PHP با آپاچی
اگر با استفاده از تنظیمات پیشفرض آپاچی را نصب کنید، پوشه روت سرور شما در آدرس /var/www/html خواهد بود. برای اینکه بتوانید از PHP استفاده کنید، نیازی نیست هیچکدام از تنظیمات پیشفرض آپاچی را تغییر دهید و فقط باید دسترسیهای مربوط به پوشه روت آپاچی را تغییر دهید. با این کار میتوانید فقط با دسترسی کاربر سیستم و بدون نیاز به دستور Sudo فایلهای موجود در این دایرکتوری را دستکاری کنید.
دستور زیر مالکیت پوشه روت آپاچی را به کاربر و گروهی به نام Sammy انتقال میدهد. برای اعمال این دستور در سیستم خودتان، نام کاربری و گروه بولدشده را با اطلاعات سیستم خودتان جایگزین کنید:
sudo chown -R sammy.sammy /var/www/html/
حالا با استفاده از PHP باید صفحهای تستی ایجاد کنیم تا مطمئن شویم که وبسرور طبق انتظار عمل میکند. ادیتور متنی پیشفرضی که روی CentOS 8 عرضه میشود، VI نام دارد. VI ادیتور متنی قدرتمندی است؛ اما ممکن است کاربرانی که تجربه کافی ندارند، چندان با آن راحت نباشند.
درصورتیکه شما هم جزو این دسته از کاربران هستید، میتوانید ادیتورهایی مثل Nano را نصب کنید تا راحتتر بتوانید فایلهای CentOS 8 را ویرایش کنید:
sudo dnf install nano
کلید اینتر را بزنید و سپس کلید Y را لمس کنید تا نصب ادیتور متنی Nano آغاز شود. سپس، فایل جدیدی به نام info.php را در مسیر /var/www/html ایجاد کنید:
nano /var/www/html/info.php
درادامه، کدهای PHP زیر را داخل آن وارد کنید. این کدها اطلاعات مربوط به نسخه PHP نصبشده روی سرور شما را نمایش خواهند داد:
<?php phpinfo();
در پایان کار، تغییرات را ذخیره کنید و فایل info.php را ببندید. در ادیتور نانو، برای این کار کلیدهای کنترل X را فشار دهید. سپس، عبارت Y را تایپ و کلید Enter را لمس کنید.
اکنون میتوانیم امتحان کنیم که آیا وبسرور ما میتواند محتوای تولیدشده PHP را بهدرستی نمایش دهد یا خیر. برای این کار، آدرس دامنه یا IP سرور خودتان را بههمراه /info.php در قسمت جستوجوی مرورگرتان وارد کنید:
http://server_host_or_IP/info.php
اگر همهچیز بهدرستی انجام شده باشد، باید صفحه زیر را مشاهده کنید:
پس از بررسی اطلاعات مربوط به نسخه PHP روی سرور خودتان، بهتر است این فایل را حذف کنید؛ زیرا حاوی اطلاعات حساسی درباره سرور و محیط PHP نصبشده روی آن است. برای این کار، از دستور rm استفاده کنید:
rm /var/www/html/info.php
هر زمانی که نیاز داشته باشید، میتوانید این فایل را دوباره ایجاد و امتحان کنید.
مرحله ۵. تست اتصال دیتابیس ازطریق PHP
اگر میخواهید مطمئن شوید که PHP میتواند به MariaDB دسترسی داشته باشد و کوئریهای دیتابیس را اجرا کند، جدولی آزمایشی با اطلاعات غیرواقعی میتوانید ایجاد کنید. سپس، تلاش کنید که از این اطلاعات با استفاده از اسکریپت PHP کوئری بگیرید. قبل از هرچیز، با استفاده از کاربریای که در قدم دوم ایجاد کردید، به کنسول MariaDB متصل شوید:
mysql -u example_user –p
جدولی با عنوان todo_list ایجاد کنید. برای این منظور، کافی است دستور زیر را در کنسول MariaDB وارد کنید:
CREATE TABLE example_database.todo_list ( item_id INT AUTO_INCREMENT, content VARCHAR(255), PRIMARY KEY(item_id) );
سپس، دستور زیر را با مقادیر متفاوت تکرار کنید تا چند ردیف مختلف داخل جدول شما ایجاد شود:
INSERT INTO example_database.todo_list (content) VALUES ("My first important item");
برای اطمینان از ثبت موفق اطلاعات، میتوانید دستور زیر را وارد کنید:
SELECT * FROM example_database.todo_list;
خروجیای که مشاهده میکنید، باید چیزی شبیه به تصویر زیر باشد:
Output +---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)
پس از تأیید اینکه اطلاعات بهدرستی ثبت شدهاند، با دستور exit میتوانید از کنسول MariaDB خارج شوید.
اکنون وقت آن فرارسیده است که اسکریپت PHP بنویسید تا به MariaDB متصل شود و از اطلاعات دیتابیس کوئری بگیرد. با کمک ادیتور متنی مدنظرتان در دایرکتوری روت آپاچی، فایل PHP ایجاد کنید. ما از ادیتور Nano برای این کار استفاده میکنیم:
nano /var/www/html/todo_list.php
سپس، کدهای زیر را داخل فایل PHP ایجادشده وارد کنید:
<?php $user = "example_user"; $password = "password"; $database = "example_database"; $table = "todo_list"; try { $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password); echo "<h2>TODO</h2><ol>"; foreach($db->query("SELECT content FROM $table") as $row) { echo "<li>" . $row['content'] . "</li>"; } echo "</ol>"; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); }
پس از واردکردن این کدها، فایل را ذخیره کنید و ببندید. برای دسترسی به فایل هم، کافی است آدرس دامنه یا IP سرور خودتان را بههمراه /todo-list.php در مرورگر وارد کنید:
http://server_host_or_IP/todo_list.php
درصورتیکه تمامی مراحل را بهدرستی انجام داده باشید، باید اطلاعات واردشده در دیتابیس را بهصورت زیر ببینید:
این بدینمعنی است که محیط PHP شما میتواند به سرور MariaDB وصل شود و از اطلاعات موجود در دیتابیس استفاده کند.
سخن نهایی
در این مقاله آموزش لینوکس از سری مقالات آموزش سیستم عامل، یاد گرفتیم که چگونه میتوانیم سروری را برای نمایش وبسایت یا اپلیکیشنهای PHP راهاندازی کنیم. حالا میتوانید وبسرور آپاچی را روی سرورهایتان نصب کنید و از محیط PHP بخواهید که کدهای برنامه یا وبسایتتان را پردازش کند. همچنین، از MariaDB میتوانید برای ذخیرهسازی اطلاعات استفاده کنید. یادگیری آموزش نصب LAMP به شما کمک میکند تا انواع سرویسهای وب و اپلیکیشهایتان را به راحتی اجرا کنید.
سؤالات متداول
1. LAMP چیست؟
LAMP مجموعهای از نرمافزارهای متنباز هستند که معمولاً باهم نصب میشوند و امکان میزبانی از وبسایتهای داینامیک و وباپلیکیشنهای نوشتهشده به زبان PHP را فراهم میکنند.
2. عبارت LAMP خلاصه چه کلماتی است؟
LAMP سرواژهای است که از حرف اول واژههای سیستمعامل Linux، وبسرور Apache، دیتابیس Maria DP و پردازشگر کد PHP تشکیل شده است.
3. وبسرور آپاچی چه کاربردی دارد؟
آپاچی وبسروری متنباز است که صفحات PHP را هم میتواند نمایش دهد و برای نمایش اطلاعات روی وبسایتمان به آن نیاز خواهیم داشت.