LAMP stack یک پلت فرم توسعه وب منبع باز و محبوب است که می تواند برای اجرا و استقرار وب سایت های پویا و برنامه های مبتنی بر وب استفاده شود. به طور معمول، یک پشته LAMP از وب سرور آپاچی، پایگاه داده MariaDB/MySQL، زبان های برنامه نویسی PHP/Python/Perl تشکیل شده است. LAMP مخفف Linux، Apache، MariaDB/MYSQL، PHP/Python/Perl است. این آموزش گام به گام نحوه نصب Apache، MySQL، PHP (LAMP stack) را در نسخه سرور Ubuntu 20.04 LTS توضیح می دهد.
برای هدف این آموزش، از سیستم اوبونتو زیر استفاده خواهیم کرد.
- سیستم عامل : Ubuntu 20.04 LTS Server Edition
- آدرس IP : 192.168.225.52/24
ابتدا اجازه دهید سرور آپاچی را نصب کنیم.
۱. وب سرور آپاچی را در اوبونتو نصب کنید
اول از همه، سرور اوبونتو را با استفاده از دستورات به روز کنید:
$ sudo apt update
$ sudo apt upgrade
سپس وب سرور آپاچی را نصب کنید:
$ sudo apt install apache2
با دستور بررسی کنید که آیا وب سرور آپاچی در حال اجرا است یا خیر:
$ sudo systemctl status apache2
خروجی خواهد بود:
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabl>
Active: active (running) since Fri 2020-05-29 07:02:26 UTC; 25s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 23996 (apache2)
Tasks: 55 (limit: 2283)
Memory: 5.1M
CGroup: /system.slice/apache2.service
├─23996 /usr/sbin/apache2 -k start
├─23998 /usr/sbin/apache2 -k start
└─23999 /usr/sbin/apache2 -k start
May 29 07:02:26 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
May 29 07:02:26 ubuntuserver apachectl[23981]: AH00558: apache2: Could not reliably det>
May 29 07:02:26 ubuntuserver systemd[1]: Started The Apache HTTP Server.
تبریک می گویم! سرویس آپاچی راه اندازی شده است!!
۱.۱. اجازه دادن به وب سرور آپاچی در فایروال UFW
UFW مخفف Uncomplicated Fire wall، برنامه ای برای مدیریت فایروال شبکه است که برای استفاده آسان طراحی شده است. UFW به طور پیش فرض در تمام نسخه های اوبونتو موجود است.
اگر فایروال UFW را در اوبونتو 20.04 LTS فعال کرده باشید، به طور پیشفرض، مرورگر وب Apache از سیستمهای راه دور قابل دسترسی نیست. شما باید با دنبال کردن مراحل زیر، پورت http
و https را مجاز کنید.
ابتدا پروفایل های برنامه موجود در سیستم اوبونتو را با استفاده از دستور فهرست کنید:
$ sudo ufw app list
خروجی نمونه:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
همانطور که می بینید، پروفایل برنامه های Apache و OpenSSH در UFW نصب شده اند. با استفاده از دستور ufw app info "Profile Name"
می توانید اطلاعات مربوط به هر پروفایل و قوانین موجود در آن را مشاهده کنید .
اجازه دهید با استفاده از دستور زیر به پروفایل نگاه کنیم “Apache Full”
:
$ sudo ufw app info "Apache Full"
خروجی نمونه:
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
همانطور که می بینید، پروفایل "Apache Full"
قوانینی را برای فعال کردن ترافیک به پورت ها 80
و 443
دارد
اکنون دستور زیر را اجرا کنید تا ترافیک ورودی HTTP
و HTTPS
این پروفایل مجاز باشد:
$ sudo ufw allow in "Apache Full"
خروجی مانند زیر را خواهید دید:
Rules updated
Rules updated (v6)
اگر نمیخواهید ترافیک https
مجاز باشد و فقط ترافیک http
(80) مجاز باشد، اجرا کنید:
$ sudo ufw app info "Apache"
۱.۲. وب سرور آپاچی را تست کنید
اکنون، مرورگر وب خود را باز کنید و با آدرس http://localhost/
یا http://IP-Address/
به صفحه آزمایشی آپاچی دسترسی پیدا کنید.
اگر «Apache 2 Ubuntu default page» را همانطور که در زیر نشان داده شده است میبینید، سرور آپاچی کار می کند!
۲. MySQL را در اوبونتو نصب کنید
برای نصب MySQL در اوبونتو، اجرا کنید:
$ sudo apt install mysql-server
بررسی کنید که آیا سرویس MySQL در حال اجرا است یا از دستور استفاده نمی کند:
$ sudo systemctl status mysql
خروجی نمونه:
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-05-29 07:15:22 UTC; 2min 8s ago
Main PID: 25242 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 2283)
Memory: 323.7M
CGroup: /system.slice/mysql.service
└─25242 /usr/sbin/mysqld
May 29 07:15:16 ubuntuserver systemd[1]: Starting MySQL Community Server...
May 29 07:15:22 ubuntuserver systemd[1]: Started MySQL Community Server.
همانطور که در خروجی بالا مشاهده می کنید، MySQL در حال اجرا است!
۲.۱. راه اندازی پسورد کاربری مدیریت پایگاه داده (روت) برای Mysql
به طور پیش فرض، رمز عبور کاربر root
در MySQL خالی است. استفاده از رمز عبور خالی برای حساب مدیریت پایگاه داده توصیه نمی شود. شما باید سرور MySQL خود را با اجرای اسکریپت زیر ایمن کنید:
$ sudo mysql_secure_installation
از شما پرسیده می شود که آیا می خواهید "VALIDATE PASSWORD"
کامپوننت را تنظیم کنید یا خیر. این مؤلفه به کاربران اجازه می دهد تا رمز عبور قوی را برای اعتبار پایگاه داده پیکربندی کنند. اگر فعال باشد، به طور خودکار قدرت رمز عبور را بررسی میکند و کاربران را مجبور میکند تا تنها پسوردهایی را تنظیم کنند که به اندازه کافی ایمن هستند. غیرفعال کردن آن بی خطر است . با این حال، شما باید از یک رمز عبور قوی و منحصر به فرد برای اعتبار پایگاه داده استفاده کنید. اگر نمیخواهید این مؤلفه را فعال کنید، کافی است هر کلیدی را فشار دهید تا از قسمت تأیید رمز عبور عبور کنید و بقیه مراحل را ادامه دهید.
اگر میخواهید VALIDATE PASSWORD
کامپوننت را تنظیم کنید، y وارد کنید:
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y
اگر پاسخ شما بله است ، از شما خواسته می شود تا سطح اعتبارسنجی رمز عبور را انتخاب کنید. اعتبارسنجی رمز عبور موجود کم , متوسط و قوی است . فقط عدد مناسب (۰ برای کم، ۱ برای متوسط و ۲ برای رمز عبور قوی) را وارد کنید و کلید ENTER را بزنید.
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
اکنون رمز عبور کاربر root
در MySQL را وارد کنید. لطفاً توجه داشته باشید که بسته به خط مشی رمز عبوری که در مرحله قبل انتخاب کرده اید، باید از رمز عبور برای کاربر root
استفاده کنید . اگر افزونه را فعال نکرده اید، از هر رمز عبور قوی و منحصر به فردی که انتخاب می کنید استفاده کنید.
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
هنگامی که رمز عبور را دو بار وارد کردید، قدرت رمز عبور را خواهید دید (در مورد ما ۱۰۰ است ). اگر از نظر شما خوب است، Y را فشار دهید تا با رمز عبور داده شده ادامه دهید. اگر از طول رمز عبور راضی نیستید، هر کلید دیگری را فشار دهید و یک رمز عبور قوی تنظیم کنید. من با رمز عبور فعلی خود مشکلی ندارم، بنابراین من y
را انتخاب کردم.
برای بقیه سوالات فقط تایپ کنید y
و ENTER
بزنید. با این کار کاربر ناشناس حذف می شود، ورود کاربر root از راه دور مجاز نیست و پایگاه داده آزمایشی حذف می شود.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
انجام شده! ما رمز عبور کاربر root
در MySQL تنظیم کرده ایم.
۲.۲. تغییر روش احراز هویت برای کاربر root در MySQL
به طور پیشفرض، از MySQL 5.7 و نسخههای جدیدتر در اوبونتو کاربر ریشه MySQL به گونه ای تنظیم شده است تا با استفاده از افزونه auth_socket
احراز هویت کند. اینکار هنگامی که با استفاده از هر برنامه خارجی، به عنوان مثال phpMyAdmin، به سرور پایگاه داده خود دسترسی پیدا می کنید، همه چیز را پیچیده می کند. برای رفع این مشکل، باید روش احراز هویت را از auth_socket به caching_sha2_password
یا mysql_native_password
تغییر دهید.
از نسخه MySQL 8.0، افزونه احراز هویت ترجیحی و پیشفرض caching_sha2_password
است. افزونه احراز هویت caching_sha2_password
، رمزگذاری رمز عبور امن تری را نسبت به افزونه mysql_native_password
ارائه می دهد.
برای تغییر پلاگین احراز هویت، با استفاده از دستور زیر به اعلان MySQL خود وارد شوید:
$ sudo mysql
یا
$ mysql -u root -p
رمز عبور MySQL root
را که در مرحله قبل تنظیم کردیم را وارد کنید.
دستور زیر را در اعلان mysql اجرا کنید تا روش احراز هویت فعلی را برای تمام حساب های کاربری MySQL پیدا کنید:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
برای تغییر افزونه auth_socket
به caching_sha2_password
دستور زیر را در اعلان MySQL اجرا کنید. اگر افزونه VALIDATE PASSWORD
را فعال کرده اید ، مطمئن شوید که از یک رمز عبور قوی بر اساس الزامات خط مشی فعلی استفاده کرده اید. یک رمز عبور قوی حداقل از 8 کاراکتر شامل یک حرف بزرگ، یک حرف کوچک، یک عدد و یک کاراکتر خاص تشکیل شده است.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';
در دستور بالا یک رمز عبور قوی و منحصربفرد به انتخاب خود جایگزین Password123#@!
کنید .
تغییرات را با استفاده از دستور به روز کنید:
mysql> FLUSH PRIVILEGES;
اکنون بررسی کنید که آیا افزونه احراز هویت فعلی تغییر کرده است؟
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
خوب! اکنون کاربر root
در MySQL می تواند با استفاده از رمز عبور برای دسترسی به شل MySQL احراز هویت کند.
خروج از شل MySQL:
mysql> exit
توجه داشته باشید:
حتی اگر افزونه caching_sha2_password
رمزگذاری ایمن پیشرفتهتری را ارائه میکند، برخی مشکلات سازگاری با نصبهای موجود MySQL دارد. اگر با مشکلات سازگاری مواجه شدید، باید افزونه mysql_native_password
را به عنوان افزونه احراز هویت پیش فرض تنظیم کنید.
برای تغییر به افزونه mysql_native_password
، دستور زیر را در اعلان MySQL اجرا کنید.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
تغییرات را با استفاده از دستور به روز کنید:
mysql> FLUSH PRIVILEGES;
۳. PHP را در اوبونتو نصب کنید
برای نصب PHP اجرا کنید:
$ sudo apt install php libapache2-mod-php php-mysql
پس از نصبPHP، فایل info.php
را در دایرکتوری ریشه آپاچی ایجاد کنید. معمولاً پوشه ریشه آپاچی در اکثر توزیعهای لینوکس مبتنی بر دبیان خواهد /var/www/html/
یا /var/www/
است. در اوبونتو 20.04 LTS، این دایرکتوری /var/www/html/
است.
اجازه دهید فایل info.php
را در دایرکتوری ریشه apache ایجاد کنیم:
$ sudo vi /var/www/html/info.php
خطوط زیر را اضافه کنید:
<?php
phpinfo();
?>
برای ذخیره و خروج از فایل ، کلید ESC
را فشار دهید و :wq
تایپ کنید . برای اعمال تغییرات، سرویس apache را مجددا راه اندازی کنید.
$ sudo systemctl restart apache2
۳.۱. PHP را تست کنید
مرورگر وب خود را باز کنید و به آدرس http://IP-address/info.php
بروید.
اطلاعات php مانند نسخه، API سرور و جزئیات تمام پلاگین های فعال شده php را مشاهده خواهید کرد.
معمولاً وقتی کاربر از وب سرور درخواست دایرکتوری می کند، آپاچی ابتدا به دنبال فایلی با نام index.html
می گردد. اگر میخواهید آپاچی را تغییر دهید تا فایل index.php
را به اولویت بالاتری بررسی کند. مطابق شکل زیر به موقعیت اول فایل dir.conf
بروید.
$ sudo vi /etc/apache2/mods-enabled/dir.conf
در اینجا محتویات فایل فوق آمده است.
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
index.php
را در فایل به قسمت اول منتقل کنید . پس از ایجاد تغییرات، فایل dir.conf
شما مانند زیر خواهد بود.
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
کلید ESC
را فشار دهید و تایپ کنید :wq
تا فایل ذخیره و بسته شود. برای اعمال تغییرات، سرویس Apache را مجددا راه اندازی کنید.
$ sudo systemctl restart apache2
۳.۲. ماژول های PHP را نصب کنید
برای بهبود عملکرد PHP، می توانید ماژول های اضافی PHP را نصب کنید.
برای فهرست کردن ماژولهای PHP موجود، اجرا کنید:
$ sudo apt-cache search php- | less
خروجی نمونه:
از کلیدهای جهت نما برای بررسی نتیجه استفاده کنید. برای خروج، q
تایپ کنید.
برای یافتن جزئیات هر ماژول php خاص، به عنوان مثال php-gd ، اجرا کنید:
$ sudo apt-cache show php-gd
برای نصب یک ماژول php اجرا کنید:
$ sudo apt install php-gd
فراموش نکنید که پس از نصب یک ماژول php، سرویس Apache را مجددا راه اندازی کنید. برای بررسی اینکه آیا ماژول بارگذاری شده است یا نه، فایل info.php را در مرورگر خود باز کنید و بررسی کنید که آیا وجود دارد یا خیر.
تبریک می گویم! همانطور که می بینید، نصب apache، mysql، php (پشته LAMP) در اوبونتو 20.04 LTS بسیار آسان است. اکنون می توانید میزبانی وب سایت های خود را با استفاده از پشته LAMP شروع کنید.
افزودن نظر