Máy chủ hoàn hảo – CentOS 7.1 với Apache2, Postfix, Dovecot, Pure-FTPD, BIND và ISPConfig 3

theanh

Administrator
Nhân viên
Hướng dẫn này chỉ cách cài đặt ISPConfig 3 trên máy chủ CentOS 7.1 (64Bit). ISPConfig 3 là bảng điều khiển lưu trữ web cho phép bạn cấu hình các dịch vụ sau thông qua trình duyệt web: máy chủ web Apache, máy chủ thư Postfix, MySQL, máy chủ tên BIND, PureFTPd, SpamAssassin, ClamAV, Mailman và nhiều dịch vụ khác. Kể từ phiên bản 3.0.4, ISPConfig hỗ trợ đầy đủ cho máy chủ web nginx ngoài Apache; hướng dẫn này sẽ trình bày cách thiết lập máy chủ sử dụng Apache, không phải nginx.


1 Yêu cầu​

Để cài đặt hệ thống như vậy, bạn sẽ cần những thứ sau:
  • Hệ thống máy chủ tối thiểu Centos 7.1. Đây có thể là máy chủ được cài đặt từ đầu như mô tả trong hướng dẫn máy chủ tối thiểu Centos 7.1 của chúng tôi hoặc máy chủ ảo hoặc máy chủ gốc từ công ty lưu trữ đã cài đặt thiết lập Centos 7.1 tối thiểu.
  • Kết nối Internet nhanh.

2 Lưu ý sơ bộ​

Trong hướng dẫn này, tôi sử dụng tên máy chủ server1.example.com với địa chỉ IP 192.168.1.100 và cổng 192.168.1.254. Các thiết lập này có thể khác nhau đối với bạn, vì vậy bạn phải thay thế chúng khi cần thiết.


3 Thiết lập bố cục bàn phím​

Trong trường hợp bố cục bàn phím của máy chủ không khớp với bàn phím của bạn, bạn có thể chuyển sang bàn phím bên phải (trong trường hợp của tôi là "de" cho bố cục bàn phím tiếng Đức, bằng lệnh localectl:
Mã:
localectl set-keymap de
Để có danh sách tất cả các bản đồ phím khả dụng, hãy chạy:
Mã:
localectl list-keymaps
Tôi muốn cài đặt ISPConfig ở cuối hướng dẫn này, ISPConfig đi kèm với tập lệnh tường lửa Bastille mà tôi muốn sử dụng làm tường lửa, do đó, tôi tắt tường lửa CentOS mặc định ngay bây giờ. Tất nhiên, bạn có thể thoải mái bật tường lửa CentOS và cấu hình theo nhu cầu của mình (nhưng sau đó bạn không nên sử dụng bất kỳ tường lửa nào khác vì rất có thể nó sẽ can thiệp vào CentOS tường lửa).

Chạy...
Mã:
yum -y installnet-tools
systemctl stop firewalld.service
systemctl disable firewalld.service
để dừng và vô hiệu hóa tường lửa CentOS.

Sau đó, bạn nên kiểm tra xem tường lửa đã thực sự bị vô hiệu hóa chưa. Để thực hiện, hãy chạy lệnh:
Mã:
iptables -L
Đầu ra sẽ trông như thế này:
Mã:
[root@server1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Mã:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Mã:
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Hoặc sử dụng lệnh firewall-cmd:
Mã:
firewall-cmd --state
Mã:
[root@server1 ~]# firewall-cmd --state
not running
[root@server1 ~]#
Bây giờ tôi sẽ cài đặt trình chỉnh sửa cấu hình mạng và trình chỉnh sửa dựa trên shell "nano" mà tôi sẽ sử dụng trong các bước tiếp theo để chỉnh sửa cấu hình tệp:
Mã:
yum -y install nano wget NetworkManager-tui
Nếu bạn chưa cấu hình card mạng trong quá trình cài đặt, bạn có thể thực hiện ngay bây giờ. Chạy...
Mã:
nmtui
... và đi đến Chỉnh sửa kết nối:





Chọn giao diện mạng của bạn:





Sau đó điền thông tin chi tiết về mạng của bạn - tắt DHCP và điền địa chỉ IP tĩnh, mặt nạ mạng, cổng của bạn và một hoặc hai máy chủ tên, sau đó nhấn Ok:



Tiếp theo chọn OK để xác nhận những thay đổi bạn đã thực hiện trong cài đặt mạng



và Thoát để đóng công cụ cấu hình mạng nmtui.



Bạn nên chạy
Mã:
ifconfig
ngay bây giờ để kiểm tra xem trình cài đặt có nhận đúng địa chỉ IP của bạn không:
Mã:
[root@server1 ~]# ifconfigens33: flags=4163 mtu 1500 inet 192.168.1.100 netmask 255.255.255.0 phát sóng 192.168.1.255 inet6 fe80::20c:29ff:fecd:cc52 prefixlen 64 scopeid 0x20 ether 00:0c:29:cd:cc:52 txqueuelen 1000 (Ethernet) Gói RX 55621 byte 79601094 (75,9 MiB) Lỗi RX 0 bị loại bỏ 0 tràn 0 khung 0 Gói TX 28115 byte 2608239 (2,4 MiB) Lỗi TX 0 bị loại bỏ 0 tràn 0 sóng mang 0 va chạm 0lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 0 (Local Loopback) Gói RX 0 byte 0 (0,0 B) Lỗi RX 0 bị loại bỏ 0 tràn 0 khung 0 Gói TX 0 byte 0 (0,0 B) Lỗi TX 0 bị loại bỏ 0 tràn 0 sóng mang 0 va chạm 0
Nếu card mạng của bạn không hiển thị ở đó, thì nó không được bật khi khởi động. Trong trường hợp này, hãy mở tệp /etc/sysconfig/network-scripts/ifcfg-eth0
Mã:
nano /etc/sysconfig/network-scripts/ifcfg-ens33
và đặt ONBOOT thành yes:
Mã:
[...]
ONBOOT=yes
[...]
và khởi động lại máy chủ.

Kiểm tra /etc/resolv.conf của bạn xem nó có liệt kê tất cả các máy chủ tên mà bạn đã định cấu hình trước đó không:
Mã:
cat /etc/resolv.conf
Nếu máy chủ tên bị thiếu, hãy chạy
Mã:
nmtui
và thêm lại các máy chủ tên bị thiếu.

Bây giờ, hãy chuyển sang cấu hình...


4 Điều chỉnh /etc/hosts​

Tiếp theo, chúng ta chỉnh sửa /etc/hosts. Làm cho nó trông như thế này:
Mã:
nano /etc/hosts
Mã:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.1.100 server1.example.com server1

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

5 Vô hiệu hóa SELinux​

SELinux là tiện ích mở rộng bảo mật của CentOS, có thể cung cấp bảo mật mở rộng. Theo tôi, bạn không cần nó để cấu hình một hệ thống an toàn và nó thường gây ra nhiều vấn đề hơn là lợi ích (hãy nghĩ về điều đó sau khi bạn đã dành một tuần để khắc phục sự cố vì một số dịch vụ không hoạt động như mong đợi, và sau đó bạn phát hiện ra rằng mọi thứ đều ổn, chỉ có SELinux gây ra sự cố). Do đó, tôi vô hiệu hóa nó (điều này là bắt buộc nếu bạn muốn cài đặt ISPConfig sau này).

Chỉnh sửa /etc/selinux/config và đặt SELINUX=disabled:
Mã:
nano /etc/selinux/config
Mã:
# Tệp này kiểm soát trạng thái của SELinux trên hệ thống.# SELINUX= có thể lấy một trong ba giá trị sau:# enforcing - Chính sách bảo mật SELinux được thực thi.# permissive - SELinux in cảnh báo thay vì thực thi.# disabled - Không có chính sách SELinux nào được tải.SELINUX=disabled# SELINUXTYPE= có thể sử dụng một trong hai giá trị sau:#targeted - Các quy trình được nhắm mục tiêu được bảo vệ,#mls - Bảo vệ bảo mật nhiều cấp độ.SELINUXTYPE=targeted
Sau đó, chúng ta phải khởi động lại hệ thống:
Mã:
khởi động lại

6 Kích hoạt các kho lưu trữ bổ sung và cài đặt một số phần mềm​

Trước tiên, chúng ta nhập khóa GPG cho các gói phần mềm:
Mã:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Sau đó, chúng ta kích hoạt kho lưu trữ EPEL trên hệ thống CentOS của mình vì nhiều gói mà chúng ta sẽ cài đặt trong quá trình hướng dẫn này không có sẵn trong kho lưu trữ CentOS 7 chính thức:
Mã:
yum -y install epel-release
Mã:
yum -y install yum-priorities
Chỉnh sửa /etc/yum.repos.d/epel.repo...
Mã:
nano /etc/yum.repos.d/epel.repo
... và thêm dòng priority=10 vào phần [epel]:
Mã:
[epel]name=Gói bổ sung cho Enterprise Linux 7 - $basearch#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearchmirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearchfailovermethod=priorityenabled=1priority=10gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7[...]
Sau đó, chúng tôi cập nhật các gói hiện có trên hệ thống:
Mã:
yum update
Bây giờ, chúng tôi cài đặt một số gói phần mềm cần thiết sau này:
Mã:
yum -y groupinstall 'Development Tools'

7 Quota​

(Nếu bạn đã chọn một lược đồ phân vùng khác với tôi, bạn phải điều chỉnh chương này để hạn ngạch áp dụng cho các phân vùng mà bạn cần.)

Để cài đặt quota, chúng ta chạy lệnh này:
Mã:
yum -y install quota
Bây giờ chúng ta kiểm tra xem quota đã được bật cho hệ thống tệp nơi lưu trữ dữ liệu trang web (/var/www) và maildir (var/vmail) hay chưa. Trong ví dụ thiết lập này, tôi có một phân vùng gốc lớn, vì vậy tôi tìm kiếm ' / ':
Mã:
mount | grep ' / '
Mã:
[root@server1 ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
[root@server1 ~]#
Nếu bạn có phân vùng /var riêng, hãy sử dụng:
Mã:
mount | grep ' /var '
thay vào đó. Nếu dòng chứa từ "noquota", hãy tiến hành các bước sau để bật hạn ngạch.

Bật hạn ngạch trên phân vùng / (root)​

Thông thường, bạn sẽ bật hạn ngạch trong tệp /etc/fstab, nhưng nếu hệ thống tệp là hệ thống tệp gốc "/", thì hạn ngạch phải được bật bằng tham số khởi động của Linux Kernel.

Chỉnh sửa tệp cấu hình grub:
Mã:
nano /etc/default/grub
tìm kiếm theo dòng bắt đầu bằng GRUB_CMDLINE_LINUX và thêm rootflags=uquota,gquota vào tham số dòng lệnh để dòng kết quả trông như thế này:
Mã:
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto vconsole.keymap=us rhgb quiet rootflags=uquota,gquota"
và áp dụng các thay đổi bằng cách chạy lệnh sau.
Mã:
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_bak
grub2-mkconfig -o /boot/grub2/grub.cfg
và khởi động lại máy chủ.
Mã:
khởi động lại
Bây giờ hãy kiểm tra xem hạn ngạch có được bật không:
Mã:
mount | grep ' / '
Mã:
[root@server1 ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
[root@server1 ~]#
Khi quota đang hoạt động, chúng ta có thể thấy "usrquota,grpquota" trong danh sách tùy chọn gắn kết.


Bật quota trên phân vùng /var riêng biệt​

Nếu bạn có phân vùng /var riêng biệt, hãy chỉnh sửa /etc/fstab và thêm ,uquota,gquota vào phân vùng / (/dev/mapper/centos-var):
Mã:
nano /etc/fstab
Mã:
#
# /etc/fstab
# Được tạo bởi anaconda vào CN 21/09/2014 16:33:45
#
# Các hệ thống tập tin có thể truy cập được, theo tham chiếu, được duy trì trong '/dev/disk'
# Xem các trang hướng dẫn fstab(5), findfs(8), mount(8) và/hoặc blkid(8) để biết thêm thông tin
#
/dev/mapper/centos-root / xfs defaults 1 1
/dev/mapper/centos-var /var xfs defaults,uquota,gquota 1 2
UUID=9ac06939-7e43-4efd-957a-486775edd7b4 /boot xfs defaults 1 3
/dev/mapper/centos-swap swap swap defaults 0 0
Sau đó chạy
Mã:
mount -o remount /var
Mã:
quotacheck -avugm
quotaon -avug
để bật hạn ngạch. Khi bạn gặp lỗi không có oartition nào được bật hạn ngạch, hãy khởi động lại máy chủ trước khi tiếp tục.


8 Cài đặt Apache, MySQL, phpMyAdmin​

Chúng ta có thể cài đặt các gói cần thiết chỉ bằng một lệnh duy nhất:
Mã:
yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadmin
 
Back
Bên trên