ตั้งค่าและกำหนดค่าเซิร์ฟเวอร์แอปพลิเคชันบน Ubuntu 24.04
บทนำ
การติดตั้งและกำหนดค่าเซิร์ฟเวอร์แอปพลิเคชันบน Ubuntu 24.04 เป็นสิ่งจำเป็นสำหรับการปรับใช้เว็บแอปพลิเคชันในสภาพแวดล้อมการผลิต ไม่ว่าคุณจะโฮสต์แอปพลิเคชัน Node.js บริการเว็บ Python หรือเว็บไซต์ที่ใช้ PHP เซิร์ฟเวอร์แอปพลิเคชันที่กำหนดค่าอย่างถูกต้องจะเป็นพื้นฐานสำหรับการปรับใช้ที่เชื่อถือได้ ปลอดภัย และสามารถขยายได้
บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับการตั้งค่าเซิร์ฟเวอร์แอปพลิเคชันที่พร้อมใช้งานในสภาพแวดล้อมการผลิตบน Droplet ของ Linux-Console.net ที่รัน Ubuntu 24.04 คุณจะได้เรียนรู้วิธีติดตั้งและกำหนดค่าคอมโพเนนต์สำคัญ การตั้งค่า reverse proxy ด้วย Nginx การปกป้องเซิร์ฟเวอร์ของคุณด้วยใบรับรอง SSL และการปรับใช้แอปพลิเคชันโดยใช้ systemd สำหรับการจัดการกระบวนการ การกำหนดค่านี้เป็นไปตามแนวปฏิบัติที่ดีที่สุดในการใช้งานจริง เพื่อให้แน่ใจว่าเซิร์ฟเวอร์ของคุณพร้อมที่จะรับมือกับภาระงานในโลกจริง
ประเด็นสำคัญ
- กำหนดค่าเซิร์ฟเวอร์แอปพลิเคชันที่พร้อมใช้งานสำหรับการผลิตบน Ubuntu 24.04 โดยใช้ Droplet ของ Linux-Console.net
- ตั้งค่า Nginx เป็นพร็อกซีแบบย้อนกลับเพื่อจัดการคำขอที่เข้ามาและส่งต่อการรับส่งข้อมูลไปยังแอปพลิเคชันของคุณ
- นำการเข้ารหัส SSL/TLS มาใช้โดยใช้ Let’s Encrypt เพื่อการเชื่อมต่อที่ปลอดภัย
- ปรับใช้และจัดการแอปพลิเคชันโดยใช้
systemdสำหรับการจัดการกระบวนการที่เชื่อถือได้ - ใช้มาตรการเสริมความปลอดภัยรวมถึงการกำหนดค่ากำแพงไฟและสิทธิ์ของผู้ใช้
- รองรับหลายประเภทแอปพลิเคชันรวมถึงแอป Node.js, Python และ PHP
คุณสมบัติพื้นฐาน
ก่อนที่คุณจะเริ่ม ให้ตรวจสอบว่าคุณมีสิ่งต่อไปนี้:
- Droplet ของ Linux-Console.net ที่ใช้ Ubuntu 24.04. หากคุณต้องการสร้าง Droplet หนึ่ง สามารถทำตามคู่มือของเราเกี่ยวกับการตั้งค่าเซิร์ฟเวอร์เริ่มต้นด้วย Ubuntu ซึ่งรวมถึงการสร้างผู้ใช้ที่ไม่ใช่ root พร้อมสิทธิ์
sudoและการตั้งค่าไฟร์วอลล์ - ชื่อโดเมนชี้ไปที่ที่อยู่ IP ของ Droplet ของคุณ คุณสามารถตั้งค่านี้ได้โดยทำตามคู่มือของเราเกี่ยวกับวิธีการตั้งค่า Host Name กับ Linux-Console.net
- มีความคุ้นเคยเบื้องต้นกับบรรทัดคำสั่งของ Linux และการเข้าถึงเซิร์ฟเวอร์ของคุณผ่าน SSH
ขั้นตอนที่ 1 — อัปเดตแพ็กเกจของระบบ
เริ่มต้นด้วยการอัปเดตดัชนีแพ็กเกจของระบบและอัปเกรดแพ็กเกจที่มีอยู่เพื่อให้แน่ใจว่าคุณมีแพตช์ความปลอดภัยและเวอร์ชันซอฟต์แวร์ล่าสุด
sudo apt update
sudo apt upgrade -y
สิ่งนี้จะช่วยให้เซิร์ฟเวอร์ Ubuntu 24.04 ของคุณมีข้อมูลแพ็กเกจล่าสุดและการอัปเดตความปลอดภัย Ubuntu 24.04 มีเวอร์ชันแพ็กเกจที่อัปเดตเมื่อเทียบกับ Ubuntu 22.04 รวมถึงเวอร์ชันใหม่ของ systemd, Nginx และคอมโพเนนต์หลักอื่นๆ
ขั้นตอนที่ 2 — การติดตั้ง Nginx เป็นพร็อกซีแบบย้อนกลับ
Nginx ทำหน้าที่เป็นรีเวิร์สพร็อกซี จัดการคำขอ HTTP และ HTTPS ที่เข้ามา และส่งต่อไปยังเซิร์ฟเวอร์แอปพลิเคชันของคุณ การตั้งค่านี้มีประโยชน์หลายประการ ได้แก่ การยกเลิกการเข้ารหัส SSL ความสามารถในการกระจายโหลด และเพิ่มความปลอดภัยโดยการเก็บเซิร์ฟเวอร์แอปพลิเคชันไว้ด้านหลังพร็อกซี
ติดตั้ง Nginx โดยใช้ apt:
sudo apt install nginx -yหลังจากติดตั้งแล้ว ให้เริ่มต้นและเปิดใช้ Nginx ให้ทำงานอัตโนมัติเมื่อตอนบูต:
sudo systemctl start nginx
sudo systemctl enable nginxตรวจสอบว่า Nginx กำลังทำงานอยู่:
sudo systemctl status nginxคุณควรเห็นผลลัพธ์ที่บ่งชี้ว่า Nginx กำลังทำงานอยู่และใช้งานได้
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-12-18 07:03:01 UTC; 32s ago
Docs: man:nginx(8)
Main PID: 46284 (nginx)
Tasks: 3 (limit: 4656)
Memory: 2.4M (peak: 5.3M)
CPU: 46ms
CGroup: /system.slice/nginx.service
├─46284 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
├─46286 "nginx: worker process"
└─46287 "nginx: worker process"
Dec 18 07:03:01 Anish-Ubuntu-24 systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Dec 18 07:03:01 Anish-Ubuntu-24 systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.ขั้นตอนที่ 3 — การตั้งค่าไฟร์วอลล์
Ubuntu 24.04 ใช้ UFW (Uncomplicated Firewall) สำหรับการจัดการไฟร์วอลล์ กำหนดค่าให้อนุญาตการรับส่งข้อมูล HTTP, HTTPS และ SSH ในขณะที่บล็อกพอร์ตอื่นที่ไม่จำเป็น
ก่อนอื่น ตรวจสอบให้แน่ใจว่าได้ติดตั้ง UFW แล้ว และตรวจสอบสถานะของมัน:
sudo ufw statusถ้า UFW ยังไม่ได้เปิดใช้งาน ให้เปิดใช้งานและกำหนดกฎที่จำเป็น:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enablesudo ufw allow 'Nginx Full'
sudo ufw enable
Rules updated
Rules updated (v6)
Rules updated
Rules updated (v6)
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startupโปรไฟล์ Nginx Full อนุญาตให้ทั้งการรับส่งข้อมูล HTTP (พอร์ต 80) และ HTTPS (พอร์ต 443) ตรวจสอบกฎไฟร์วอลล์:
sudo ufw status verbose
คุณควรเห็นกฎที่อนุญาตให้ OpenSSH และ Nginx ใช้ทราฟฟิกได้เต็มรูปแบบ
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80,443/tcp (Nginx Full) ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80,443/tcp (Nginx Full (v6)) ALLOW IN Anywhere (v6) ขั้นตอนที่ 4 — การตั้งค่า SSL กับ Let’s Encrypt
การรักษาความปลอดภัยของเซิร์ฟเวอร์แอปพลิเคชันของคุณด้วยการเข้ารหัส SSL/TLS เป็นสิ่งจำเป็นสำหรับการปรับใช้ในสภาพแวดล้อมจริง Let’s Encrypt ให้ใบรับรอง SSL ฟรีที่สามารถต่ออายุโดยอัตโนมัติได้
ติดตั้ง Certbot และปลั๊กอิน Nginx:
sudo apt install certbot python3-certbot-nginx -yรับใบรับรอง SSL สำหรับโดเมนของคุณ แทนที่ your_domain ด้วยชื่อโดเมนจริงของคุณ:
sudo certbot --nginx -d your_domain -d www.your_domainCertbot จะแจ้งให้คุณกรอกที่อยู่อีเมลและถามว่าคุณต้องการเปลี่ยนเส้นทางการรับส่งข้อมูลจาก HTTP ไปยัง HTTPS หรือไม่ ให้เลือกเปลี่ยนเส้นทางเพื่อความปลอดภัยที่ดียิ่งขึ้น ใบรับรองจะได้รับการต่ออายุโดยอัตโนมัติก่อนหมดอายุ
ทดสอบกระบวนการต่ออายุอัตโนมัติ:
sudo certbot renew --dry-runหากคำสั่งนี้เสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด การต่ออายุอัตโนมัติจะถูกตั้งค่าอย่างถูกต้อง
ขั้นตอนที่ 5 — การตั้งค่า Nginx เป็นพร็อกซีแบบย้อนกลับ
สร้างการกำหนดค่าเซิร์ฟเวอร์บล็อกของ Nginx เพื่อส่งต่อทราฟฟิกไปยังเซิร์ฟเวอร์แอปพลิเคชันของคุณ ตัวอย่างนี้แสดงการกำหนดค่าทั่วไปที่คุณสามารถปรับใช้กับประเภทแอปพลิเคชันต่าง ๆ ได้
สร้างไฟล์การตั้งค่าใหม่สำหรับโดเมนของคุณ:
sudo nano /etc/nginx/sites-available/your_domainเพิ่มการกำหนดค่าดังต่อไปนี้ โดยแทนที่ your_domain ด้วยโดเมนจริงของคุณและปรับ URL ใน proxy_pass ให้ตรงกับพอร์ตของแอปพลิเคชันของคุณ:
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name your_domain www.your_domain;
ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
การตั้งค่านี้:
- เปลี่ยนเส้นทางการรับส่งข้อมูล HTTP เป็น HTTPS
- ยกเลิก SSL ที่ระดับ Nginx
- ส่งต่อคำขอไปยังแอปของคุณที่กำลังรันบนพอร์ต 3000 (ปรับตามความจำเป็น)
- เก็บข้อมูลที่อยู่ IP ของลูกค้าและข้อมูลโปรโตคอล
เปิดใช้งานการกำหนดค่าโดยสร้างลิงก์สัญลักษณ์:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/ทดสอบการตั้งค่า Nginx เพื่อหาข้อผิดพลาดของไวยากรณ์:
sudo nginx -tหากการทดสอบผ่าน ให้โหลด Nginx ใหม่เพื่อใช้การเปลี่ยนแปลง:
sudo systemctl reload nginxขั้นตอนที่ 6 — การติดตั้งไลบรารีและส่วนประกอบที่จำเป็นสำหรับการรันแอปพลิเคชัน
การพึ่งพาระหว่างรันไทม์ที่คุณต้องการขึ้นอยู่กับประเภทของแอปพลิเคชันของคุณ ส่วนนี้ครอบคลุมการตั้งค่าสำหรับแอปพลิเคชัน Node.js, Python และ PHP
การติดตั้ง Node.js
สำหรับแอปพลิเคชัน Node.js ให้ติดตั้ง Node.js โดยใช้รีโพซิทอรีของ NodeSource เพื่อรับเวอร์ชัน LTS ล่าสุด:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejsตรวจสอบการติดตั้ง:
node --version
npm --versionv20.19.6
10.8.2การติดตั้ง Python และ pip
Ubuntu 24.04 มาพร้อมกับ Python 3.12 โดยค่าเริ่มต้น ติดตั้ง pip และเครื่องมือสร้างสภาพแวดล้อมเสมือน:
sudo apt install python3-pip python3-venv -yตรวจสอบการติดตั้ง:
python3 --version
pip3 --versionpip3 --version
Python 3.12.3
pip 24.0 from /usr/lib/python3/dist-packages/pip (python 3.12)การติดตั้ง PHP และ PHP-FPM
สำหรับแอปพลิเคชัน PHP ให้ติดตั้ง PHP และ PHP-FPM (ตัวจัดการกระบวนการ FastCGI):
sudo apt install php-fpm php-mysql php-mbstring php-xml php-curl -yตรวจสอบว่า PHP-FPM กำลังทำงานอยู่:
sudo systemctl status php8.3-fpm Loaded: loaded (/usr/lib/systemd/system/php8.3-fpm.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-12-18 08:02:36 UTC; 1min 56s ago
Docs: man:php-fpm8.3(8)
Process: 59077 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.3/fpm/pool.d/www.conf 83 (code=exited, >
Main PID: 59074 (php-fpm8.3)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 4656)
Memory: 9.5M (peak: 10.4M)
CPU: 97ms
CGroup: /system.slice/php8.3-fpm.service
├─59074 "php-fpm: master process (/etc/php/8.3/fpm/php-fpm.conf)"
├─59075 "php-fpm: pool www"
└─59076 "php-fpm: pool www"
Dec 18 08:02:36 Anish-Ubuntu-24 systemd[1]: Starting php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager...<$> หมายเหตุ: Ubuntu 24.04 มาพร้อมกับ PHP 8.3 ปรับหมายเลขเวอร์ชันหากระบบของคุณใช้เวอร์ชันที่แตกต่างกัน <$>
ขั้นตอนที่ 7 — การสร้างบริการ Systemd สำหรับแอปพลิเคชันของคุณ
Systemd จัดการแอปพลิเคชันของคุณในฐานะบริการ เพื่อให้แน่ใจว่ามันจะเริ่มทำงานโดยอัตโนมัติเมื่อบูตเครื่อง และรีสตาร์ทหากเกิดข้อผิดพลาด ตัวอย่างนี้สร้างบริการ systemd สำหรับแอปพลิเคชัน Node.js แต่คุณสามารถปรับใช้กับประเภทแอปพลิเคชันอื่นได้
สร้างไฟล์บริการ systemd:
sudo nano /etc/systemd/system/your-app.serviceเพิ่มการตั้งค่าต่อไปนี้ ปรับเส้นทางและตัวแปรสภาพแวดล้อมตามที่ต้องการ:
[Unit]
Description=Your Application Server
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/your-app
Environment="NODE_ENV=production"
Environment="PORT=3000"
ExecStart=/usr/bin/node /var/www/your-app/server.js
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.targetจุดสำคัญในการตั้งค่า:
Type=simple: สำหรับแอปพลิเคชันที่ทำงานในพื้นหน้าUser=www-data: เรียกใช้แอปพลิเคชันด้วยผู้ใช้ที่ไม่ใช่ root เพื่อความปลอดภัยWorkingDirectory: กำหนดไดเรกทอรีทำงานของแอปพลิเคชันRestart=on-failure: รีสตาร์ทแอปพลิเคชันโดยอัตโนมัติหากเกิดข้อผิดพลาดRestartSec=10: รอ 10 วินาทีก่อนรีสตาร์ท
โหลดระบบ systemd ใหม่และเริ่มบริการของคุณ:
sudo systemctl daemon-reload
sudo systemctl start your-app
sudo systemctl enable your-appตรวจสอบสถานะการให้บริการ:
sudo systemctl status your-app● your-app.service
Loaded: loaded (/etc/systemd/system/your-app.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-12-18 08:07:30 UTC; 4ms ago
Main PID: 59408 ((node))
Tasks: 1 (limit: 4656)
Memory: 512.0K (peak: 512.0K)
CPU: 936us
CGroup: /system.slice/your-app.service
└─59408 "(node)"
Dec 18 08:07:30 Anish-Ubuntu-24 systemd[1]: your-app.service: Scheduled restart job, restart counter is at 4.
Dec 18 08:07:30 Anish-Ubuntu-24 systemd[1]: Started your-app.service.ตัวอย่างแอปพลิเคชัน Python
สำหรับแอปพลิเคชัน Python ที่ใช้ Gunicorn บริการ systemd ของคุณอาจมีลักษณะดังนี้:
[Unit]
Description=Your Python Application
After=network.target
[Service]
Type=notify
User=www-data
WorkingDirectory=/var/www/your-app
Environment="PATH=/var/www/your-app/venv/bin"
ExecStart=/var/www/your-app/venv/bin/gunicorn --bind 127.0.0.1:8000 app:app
Restart=on-failure
[Install]
WantedBy=multi-user.targetตัวอย่างแอปพลิเคชัน PHP
สำหรับแอปพลิเคชัน PHP โดยทั่วไปคุณจะใช้ PHP-FPM ร่วมกับ Nginx กำหนดค่า Nginx ให้ส่งคำขอไปยัง PHP-FPM:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}ขั้นตอนที่ 8 — การปรับใช้แอปพลิเคชันของคุณ
สร้างไดเรกทอรีสำหรับแอปพลิเคชันของคุณและตั้งค่าการอนุญาตที่เหมาะสม:
sudo mkdir -p /var/www/your-app
sudo chown -R www-data:www-data /var/www/your-appปรับใช้ไฟล์แอปพลิเคชันของคุณไปยังไดเรกทอรีนี้ คุณสามารถใช้ Git, SCP หรือวิธีการปรับใช้อื่น ๆ ได้:
cd /var/www/your-app
sudo -u www-data git clone https://github.com/your-username/your-repo.git .ติดตั้ง dependencies และสร้างแอปพลิเคชันของคุณตามความจำเป็น สำหรับ Node.js:
sudo -u www-data npm install --productionสำหรับ Python:
sudo -u www-data python3 -m venv venv
sudo -u www-data ./venv/bin/pip install -r requirements.txtหลังจากการเปิดใช้งาน ให้รีสตาร์ทบริการแอปพลิเคชันของคุณ:
sudo systemctl restart your-appขั้นตอนที่ 9 — แนวทางปฏิบัติที่ดีที่สุดสำหรับการเสริมความแข็งแกร่งในการผลิต
ใช้มาตรการด้านความปลอดภัยเหล่านี้เพื่อเสริมความแข็งแกร่งให้กับเซิร์ฟเวอร์แอปพลิเคชันของคุณสำหรับการใช้งานจริง
ปิดการล็อกอินผู้ใช้ Root ผ่าน SSH
แก้ไขการตั้งค่า SSH:
sudo nano /etc/ssh/sshd_configตั้งค่าต่อไปนี้:
PermitRootLogin no
PasswordAuthentication noรีสตาร์ท SSH:
sudo systemctl restart sshdตั้งค่าการอัปเดตความปลอดภัยอัตโนมัติ
เปิดใช้งานการอัปเดตความปลอดภัยอัตโนมัติ:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgradesตั้งค่าการหมุนเวียนล็อก
กำหนดค่าการหมุนเวียนของบันทึกเพื่อป้องกันไม่ให้ไฟล์บันทึกใช้พื้นที่ดิสก์ แก้ไขการตั้งค่า logrotate:
sudo nano /etc/logrotate.d/your-appเพิ่ม :
/var/www/your-app/logs/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data www-data
sharedscripts
}ตรวจสอบพื้นที่ดิสก์
ตั้งค่าการตรวจสอบเพื่อแจ้งเตือนเมื่อพื้นที่ดิสก์ใกล้เต็ม ติดตั้งและกำหนดค่าเครื่องมือตรวจสอบ:
sudo apt install htop iotop -yขั้นตอนที่ 10 — การแก้ไขปัญหาที่พบบ่อย
ส่วนนี้กล่าวถึงปัญหาที่พบบ่อยซึ่งคุณอาจเจอเมื่อกำลังตั้งค่าเซิร์ฟเวอร์แอปพลิเคชันของคุณ
แอปพลิเคชันเปิดไม่ได้
ตรวจสอบสถานะและบันทึกของบริการ:
sudo systemctl status your-app
sudo journalctl -u your-app -n 50 --no-pagerปัญหาที่พบบ่อยได้แก่:
- เส้นทางไฟล์ไม่ถูกต้องในไฟล์บริการ systemd
- ตัวแปรสภาพแวดล้อมหายไป
- ข้อผิดพลาดเกี่ยวกับสิทธิ์ (ตรวจสอบให้แน่ใจว่าผู้ใช้บริการสามารถเข้าถึงไฟล์ของแอปพลิเคชันได้)
Nginx 502 ข้อผิดพลาดเกตเวย์ไม่ถูกต้อง
โดยปกติสิ่งนี้หมายความว่า Nginx ไม่สามารถเชื่อมต่อกับแอปพลิเคชันของคุณ ตรวจสอบ:
- แอปพลิเคชันของคุณกำลังทำงาน:
sudo systemctl status your-app- แอปพลิเคชันกำลังฟังที่พอร์ตที่ถูกต้อง:
sudo netstat -tlnp | grep 3000- URL ของ
proxy_passในการกำหนดค่าNginxของคุณตรงกับพอร์ตของแอปพลิเคชันของคุณ
ปัญหาใบรับรอง SSL
หากใบรับรอง SSL ไม่สามารถต่ออายุได้:
- ตรวจสอบบันทึกของ Certbot:
sudo tail -f /var/log/letsencrypt/letsencrypt.log- ตรวจสอบให้แน่ใจว่าบันทึก DNS ของโดเมนของคุณชี้ไปยังเซิร์ฟเวอร์ของคุณ:
dig your_domain- ตรวจสอบให้แน่ใจว่าพอร์ต 80 และ 443 เปิดอยู่ในไฟร์วอลล์ของคุณ
การใช้หน่วยความจำสูง
ตรวจสอบการใช้หน่วยความจำ:
free -h
htopหากแอปพลิเคชันของคุณใช้หน่วยความจำมากเกินไป ให้พิจารณา:
- การปรับแต่งโค้ดแอปพลิเคชันของคุณ
- การเพิ่ม RAM ของ Droplet ของคุณ
- การใช้งานแคชชิงระดับแอปพลิเคชัน
คำถามที่พบบ่อย
1. เซิร์ฟเวอร์แอปพลิเคชันใน Ubuntu คืออะไร?
เซิร์ฟเวอร์แอปพลิเคชันคือสภาพแวดล้อมของเซิร์ฟเวอร์ที่รันและจัดการแอปพลิเคชันเว็บ บน Ubuntu 24.04 โดยทั่วไปจะเกี่ยวข้องกับการกำหนดค่าสภาพแวดล้อมการรันไทม์ (เช่น Node.js, Python, หรือ PHP) การตั้งค่า reverse proxy (เช่น Nginx) และการใช้ systemd ในการจัดการกระบวนการแอปพลิเคชัน เซิร์ฟเวอร์แอปพลิเคชันจะจัดการคำขอที่เข้ามา ประมวลผลโค้ดของแอปพลิเคชัน และส่งผลลัพธ์กลับไปยังไคลเอนต์
2. ฉันจะตั้งค่า systemd สำหรับแอปของฉันได้อย่างไร?
ในการกำหนดค่า systemd สำหรับแอปพลิเคชันของคุณ คุณจะต้องสร้างไฟล์บริการ นี่คือตัวอย่างทีละขั้นตอน:
สมมติว่าการใช้งานของคุณเป็นแอป Node.js ที่อยู่ที่ /home/ubuntu/my-app และคุณต้องการรันมันด้วย npm start โดยใช้ผู้ใช้ ubuntu
- สร้างไฟล์บริการ systemd:
sudo nano /etc/systemd/system/my-app.service- เพิ่มเนื้อหาต่อไปนี้ไปยังไฟล์:
[Unit]
Description=My Node.js App
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/my-app
ExecStart=/usr/bin/npm start
Restart=on-failure
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target- โหลดระบบ systemd ใหม่เพื่อให้รับรู้บริการใหม่:
sudo systemctl daemon-reload- เปิดใช้งานบริการให้เริ่มทำงานเมื่อบูทเครื่อง:
sudo systemctl enable my-app- เริ่มใช้งานแอปพลิเคชัน:
sudo systemctl start my-appตอนนี้ แอปของคุณจะทำงานเบื้องหลัง รีสตาร์ทเมื่อเกิดข้อผิดพลาด และเริ่มต้นโดยอัตโนมัติเมื่อเปิดเครื่อง คุณสามารถตรวจสอบสถานะได้ด้วย:
sudo systemctl status my-appวิธีนี้ใช้ได้กับแอปพลิเคชันส่วนใหญ่ เพียงปรับ ExecStart, User และ WorkingDirectory ตามที่จำเป็นสำหรับสแตกของคุณ
3. ฉันควรใช้ Nginx หรือ Apache สำหรับรีเวิร์สพร็อกซีของฉัน?
ทั้ง Nginx และ Apache ทำงานได้ดีในฐานะรีเวิร์สพร็อกซี่ แต่ Nginx มักถูกเลือกใช้กับเซิร์ฟเวอร์แอปพลิเคชันสมัยใหม่เนื่องจากใช้หน่วยความจำน้อยกว่า มีประสิทธิภาพดีกว่าเมื่อมีการใช้งานพร้อมกันจำนวนมาก และการตั้งค่าการทำงานเป็นรีเวิร์สพร็อกซี่ทำได้ง่ายกว่า
Nginx ยังเชี่ยวชาญในการจัดการเนื้อหาสแตติกและการพร็อกซีคำร้องไปยังเซิร์ฟเวอร์แอปพลิเคชัน ทำให้เหมาะอย่างยิ่งสำหรับการใช้งานในสภาพแวดล้อมจริง Apache ยังคงเป็นตัวเลือกที่มั่นคง โดยเฉพาะหากคุณต้องการโมดูลเฉพาะหรือคุ้นเคยกับไวยากรณ์การตั้งค่าของมันมากกว่า
4. ฉันจะปกป้องเซิร์ฟเวอร์แอปพลิเคชันของฉันบน Ubuntu 24.04 ได้อย่างไร?
รักษาความปลอดภัยเซิร์ฟเวอร์แอปพลิเคชันของคุณโดย: เปิดใช้งานไฟร์วอลล์ UFW และอนุญาตเฉพาะพอร์ตที่จำเป็น, ติดตั้งใบรับรอง SSL ด้วย Let’s Encrypt, เรียกใช้งานแอปพลิเคชันเป็นผู้ใช้ที่ไม่ใช่ root, ปิดการใช้งานการเข้าสู่ระบบ SSH ของ root, ตั้งค่าให้อัปเดตความปลอดภัยโดยอัตโนมัติ, ทำให้ซอฟต์แวร์และแพ็กเกจต่างๆ เป็นปัจจุบัน และตั้งค่าการอนุญาตไฟล์อย่างเหมาะสม นอกจากนี้ ใช้รหัสผ่านที่แข็งแรงหรือคีย์ SSH, ตั้งค่า fail2ban เพื่อป้องกันการโจมตีแบบ brute-force และตรวจสอบบันทึกของแอปพลิเคชันและระบบเป็นประจำเพื่อหากิจกรรมที่น่าสงสัย
5. ฉันสามารถโฮสต์หลายแอปบนเซิร์ฟเวอร์ Ubuntu เครื่องเดียวได้ไหม?
ใช่ คุณสามารถโฮสต์หลายแอปพลิเคชันบนเซิร์ฟเวอร์ Ubuntu 24.04 เครื่องเดียวได้ ตั้งค่าบริการ systemd แยกต่างหากสำหรับแต่ละแอปพลิเคชัน โดยแต่ละตัวฟังที่พอร์ตต่างกัน (เช่น 3000, 3001, 8000) ตั้งค่าเซิร์ฟเวอร์บล็อกของ Nginx (โฮสต์เสมือน) สำหรับแต่ละโดเมนหรือซับโดเมน โดยแต่ละบล็อกจะพร็อกซี่ไปยังพอร์ตแอปพลิเคชันที่เหมาะสม วิธีนี้ช่วยให้คุณใช้ทรัพยากรเซิร์ฟเวอร์ได้อย่างมีประสิทธิภาพในขณะเดียวกันก็ยังคงแยกแอปพลิเคชันออกจากกัน
6. ฉันจะตรวจสอบได้อย่างไรว่ามือถือของฉันทำงานถูกต้องหรือไม่?
ตรวจสอบว่าแอปพลิเคชันของคุณกำลังทำงานโดยการตรวจสอบสถานะของระบบ service ด้วย sudo systemctl status your-app ตรวจสอบบันทึกของแอปพลิเคชันโดยใช้ sudo journalctl -u your-app -f เพื่อดูเอาต์พุตบันทึกแบบเรียลไทม์ ทดสอบแอปพลิเคชันโดยเข้าถึงผ่านโดเมนหรือที่อยู่ IP ของคุณ ตรวจสอบว่า Nginx กำลังส่งคำขอไปอย่างถูกต้องโดยตรวจสอบบันทึกการเข้าถึงและบันทึกข้อผิดพลาดของ Nginx ที่ /var/log/nginx/access.log และ /var/log/nginx/error.log ตรวจสอบการใช้งานทรัพยากรด้วย htop หรือ free -h เพื่อให้แน่ใจว่าแอปพลิเคชันของคุณไม่ได้ใช้ CPU หรือหน่วยความจำมากเกินไป
ข้อสรุป
คุณได้ตั้งค่าและกำหนดค่าเซิร์ฟเวอร์แอปพลิเคชันที่พร้อมใช้งานสำหรับการผลิตบน Ubuntu 24.04 สำเร็จแล้ว Droplet ของคุณบน Linux-Console.net ตอนนี้ติดตั้ง Nginx เป็นรีเวิร์สพร็อกซี, การเข้ารหัส SSL/TLS, การจัดการเซอร์วิสด้วย systemd และมาตรการเสริมความปลอดภัย การตั้งค่านี้รองรับการติดตั้ง Node.js, Python, PHP และแอปพลิเคชันเว็บอื่น ๆ ในสภาพแวดล้อมที่ปลอดภัยและสามารถปรับขนาดได้
การตั้งค่าตามแนวทางปฏิบัติที่ดีที่สุดในการผลิต รวมถึงการรีสตาร์ทบริการโดยอัตโนมัติ การต่ออายุใบรับรอง SSL การป้องกันไฟร์วอลล์ และสิทธิ์ผู้ใช้ที่เหมาะสม เซิร์ฟเวอร์แอปพลิเคชันของคุณพร้อมที่จะรองรับงานจริงและสามารถปรับขนาดได้ตามความต้องการที่เพิ่มขึ้น
สำหรับการเรียนรู้เพิ่มเติมและการตั้งค่าขั้นสูง สำรวจบทแนะนำที่เกี่ยวข้องบน Linux-Console.net เหล่านี้:
- วิธีติดตั้งและใช้งาน Docker บน Ubuntu - เรียนรู้การใช้คอนเทนเนอร์เพื่อการติดตั้งและจัดการแอปพลิเคชันที่ง่ายขึ้น
- วิธีการกำหนดค่า Nginx เป็น Reverse Proxy บน Ubuntu - เจาะลึกการกำหนดค่า Reverse Proxy ของ Nginx ขั้นสูง
- มาตรการความปลอดภัยที่แนะนำเพื่อปกป้องเซิร์ฟเวอร์ของคุณ - เทคนิคการเสริมความปลอดภัยเพิ่มเติมสำหรับเซิร์ฟเวอร์ในการผลิต
พร้อมที่จะเริ่มใช้งานแอปพลิเคชันของคุณหรือยัง? เริ่มต้นได้กับ Linux-Console.net Droplets เพื่อสร้างโครงสร้างพื้นฐานที่สามารถปรับขนาดได้และเชื่อถือได้สำหรับเซิร์ฟเวอร์แอปพลิเคชันของคุณ ด้วยฟีเจอร์ต่างๆ เช่น การสำรองข้อมูลอัตโนมัติ การตรวจสอบ และการตั้งราคาที่ยืดหยุ่น Linux-Console.net Droplets จึงมอบพื้นฐานที่คุณต้องการสำหรับการใช้งานจริง
ขอบคุณที่เรียนรู้ร่วมกับชุมชน Linux-Console.net
