تنظیم سرور Apache با PHP و SSH در Linux

در سفر من برای یادگیری اصول اولیه لینوکس و مدیریت سرور مهارتهای اساسی که هر توسعه دهنده باید داشته باشد ، حتی جلوی آن. من یادداشت هایی را نیز گرفته ام که ممکن است به دیگران نیز کمک کند. در این وبلاگ ، من بینش خود را در مورد تنظیم سرور Apache با PHP در لینوکس به اشتراک می گذارم. اگر این موضوع را مفید می دانید ، به من اطلاع دهید – من چیزهای بیشتری برای اشتراک گذاری دارم! 😊
بیایید با اجرای دستور زیر برای نصب بسته های لازم شروع کنیم:
دستور زیر را برای نصب بسته های لازم اجرا کنید:
sudo apt update && sudo apt upgrade -y
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql -y
1. چرا php-mysql
و نه فقط mysql
؟
-
php-mysql
یک پسوند PHP است که به PHP اجازه می دهد تا با پایگاه داده های MySQL ارتباط برقرار کند. - بدون
php-mysql
، اسکریپت های PHP قادر به تعامل با MySQL نخواهند بود.
2. چیست libapache2-mod-php
؟
-
libapache2-mod-php
یک ماژول Apache است که پردازش PHP را در سرور وب Apache امکان پذیر می کند. - این تضمین می کند که آپاچی می تواند اداره کند
.php
پرونده ها و اجرای اسکریپت های PHP.
سپس دستورات زیر را اجرا کنید:
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl start apache2
- شروع می شود سرویس آپاچی بلافاصلهبشر
- با این حال ، آن به طور خودکار شروع نمی شود در راه اندازی مجدد
sudo systemctl enable apache2
- فعال کردن سرویس Apache برای شروع به طور خودکار در بوتبشر
پایگاه داده MySQL را پیکربندی کنید
اسکریپت امنیتی MySQL را برای تأمین امنیت پایگاه داده خود اجرا کنید:
sudo mysql_secure_installation
- رمز عبور ریشه را تنظیم کنید
- کاربران ناشناس را حذف کنید
- ورود به سیستم ریشه از راه دور
- پایگاه داده های تست را حذف کنید
- جداول ممتاز بارگیری مجدد
سپس ، به MySQL وارد شوید و یک پایگاه داده ایجاد کنید:
sudo mysql -u root -p
داخل mysql:
CREATE DATABASE mydatabase;
CREATE USER 'abdessamad'@'%' IDENTIFIED BY '123456789';
# Creates a new MySQL user myuser with the password mypassword.
# The @'%' part allows the user to connect from any host (% is a wildcard representing any IP address).
GRANT ALL PRIVILEGES ON mydatabase.* TO 'abdessamad'@'%';
# Refreshes the MySQL server's internal cache of user privileges. This is necessary after creating users or changing privileges to apply the changes.
FLUSH PRIVILEGES;
EXIT;
برای خدمت به سایت PHP خود آپاچی را پیکربندی کنید
پرونده های PHP خود را به فهرست وب ریشه منتقل کنید:
sudo rm -rf /var/www/html/*
sudo nano /var/www/html/index.php
این کد PHP را اضافه کنید:
echo "its finaly working ..."
?>
ذخیره و خروج.
مجوزهای مناسب را تنظیم کنید:
# Change ownership of all files and directories in /var/www/html recursively
# The user and group ownership is set to 'www-data' which is the default user/group for web servers (Nginx/Apache)
sudo chown -R www-data:www-data /var/www/html
# - Owner (www-data) has read, write, and execute permissions (7)
# - Group (www-data) and Others have read and execute permissions, but no write permissions
sudo chmod -R 755 /var/www/html
راه اندازی مجدد آپاچی:
sudo systemctl restart apache2
اکنون باید روی LocalHost کار کند:
6. آپاچی را برای دسترسی به شبکه پیکربندی کنید
پیکربندی پیش فرض Apache را ویرایش کنید:
sudo nano /etc/apache2/sites-available/000-default.conf
پیدا کردن DocumentRoot /var/www/html
و اضافه کنید:
DocumentRoot /var/www/html
AllowOverride All
Require all granted
ذخیره و خروج.
اجازه ترافیک را از طریق فایروال:
sudo ufw allow 80/tcp
sudo ufw allow 3306/tcp
sudo ufw reload
فعال کردن mod_rewrite
:
sudo a2enmod rewrite
sudo systemctl restart apache2
اکنون IP سرور خود را با استفاده از: بررسی کنید:
ip a
اکنون می توانید به آن در خارج از VM و دسترسی به شبکه دسترسی پیدا کنید:
اگر کار نمی کند ، یا می خواهید از خارج از دستگاه محلی در شبکه به سرور دسترسی پیدا کنید ، به جای NAT در VMware یا VirtualBox از یک شبکه پل استفاده کنید. این به شما امکان می دهد به جای IP خصوصی از یک آدرس IP محلی (به عنوان مثال ، 192.xxx) استفاده کنید.
اگر سرور Apache و MySQL شما روی سرورهای جداگانه قرار می گیرند ، باید:
اجازه دسترسی از راه دور mySQL را داشته باشید
فایل پیکربندی MySQL را ویرایش کنید:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
پیدا کردن bind-address = 127.0.0.1
و آن را به:
bind-address = 0.0.0.0
ذخیره و خروج (CTRL + X
، پس Y
، پس ENTER
). اکنون هرکسی می تواند از راه دور به DB شما دسترسی پیدا کند.
mysql را دوباره راه اندازی کنید:
sudo systemctl restart mysql
اکنون اجازه می دهیم آن را با صفحه PHP پویا آزمایش کنیم:
sudo mysql -u root -p
CREATE DATABASE mydatabase;
USE mydatabase;
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
author VARCHAR(255) NOT NULL,
genre VARCHAR(100),
published_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
$servername = "localhost";
$username = "myuser";
$password = "mypassword";
$dbname = "mydatabase";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$title = $_POST['title'];
$author = $_POST['author'];
$genre = $_POST['genre'];
$published_date = $_POST['published_date'];
$sql = "INSERT INTO books (title, author, genre, published_date)
VALUES ('$title', '$author', '$genre', '$published_date')";
if ($conn->query($sql) === TRUE) {
echo "New book added successfully";
} else {
echo "Error: " . $sql . "
" . $conn->error;
}
}
// Fetching all books
$sql = "SELECT id, title, author, genre, published_date FROM books";
$result = $conn->query($sql);
$conn->close();
?>
lang="en">
charset="UTF-8">
name="viewport" content="width=device-width, initial-scale=1.0">
Create a New Book
Create a New Book
Book List
if ($result->num_rows > 0) {
echo "
Title
Author
Genre
Published Date
";
while($row = $result->fetch_assoc()) {
echo "
" . $row["title"] . "
" . $row["author"] . "
" . $row["genre"] . "
" . $row["published_date"] . "
";
}
echo "
";
} else {
echo "No books found";
}
?>
اکنون اجازه می دهیم SSH را تنظیم کنیم:
sudo apt install openssh-server
sudo systemctl start ssh
sudo ufw allow ssh
sudo ufw reload
ssh-keygen -t rsa -b 4096 -C "[your_email@example.com](mailto:your_email@example.com)"
# to get your server username or create a new user if you want with sudo useradd -m -s /bin/bash newusername
whoami
# to get your server ip
hostname -I
ssh-copy-id username@server_ip
سپس سعی کنید:
ssh username@server_ip
با دنبال کردن این مراحل ، اکنون یک سرور وب کاملاً کاربردی قادر به مدیریت برنامه های PHP ، مدیریت تعامل پایگاه داده و امکان دسترسی از راه دور ایمن از طریق SSH هستید. این تنظیم نه تنها از توسعه پشتیبانی می کند بلکه پایه و اساس استقرار برنامه های دنیای واقعی را نیز فراهم می کند.
اگر این راهنما را مفید دیدید ، به من اطلاع دهید! یادداشت ها و مقالات زیادی در مورد موضوعات مختلف وجود دارد تا به شما در رسیدن به مهارت های برنامه نویسی خود به سطح بعدی کمک کند. من خوشحال می شوم که بینش بیشتری به اشتراک بگذارم! 🚀