Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Quản Trị Mạng - Trong các bài viết trước đây chúng tôi đã từng giới thiệu tới các bạn những lợi ích của dịch vụ ISPconfig và cách cài đặt ISPconfig 3 trên các nền tảng Ubuntu khác nhau. Hôm nay chúng tôi sẽ giúp người dùng CentOS thiết lập một máy chủ CentOS 5.7 x86_64 cho cài đặt ISPConfig 3. Sau đó tiến hành cài đặt và cấu hình ISPConfig 3.

1. Yêu cầu

  • Trước tiên bạn tải về một trong phiên bản CentOS 5.7 DVDs hoặc CentOS 5.7 CDs tại đây.
  • Một kết nối Internet đủ nhanh để làm việc.

2. Một số lưu ý

Trong bài hướng dẫn sau chúng tôi sử dụng hostname server1.example.com với địa chỉ IP 192.168.0.100 và gateway 192.168.0.1. Bạn cần có sự thiết lập sao cho phù hợp với mình.

3. Cài đặt hệ thống cơ bản

Cho đĩa cài đặt CentOS 5.7 CD hoặc CentOS 5.7 DVD vào hệ thống và khởi động từ nó. Nhấn <ENTER> tại dấu nhắc khởi động.

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Việc thử nghiệm các cài đặt sẽ mất nhiều thời gian, vì vậy chúng ta chọn Skip:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Màn hình Welcome của CentOS xuất hiện, nhấn Next:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Lựa chọn ngôn ngữ phù hợp, nhấn Next:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Chọn tiếp kiểu keyboard:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Do chúng tôi đang cài đặt CentOS 5.7 trên hệ thống hoàn toàn mới nên chọn Yes khi được hỏi “Would you like to initialize this drive, erasing ALL DATA?

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Bây giờ là bước chọn phân vùng được bố trí để cài đặt hệ điều hành. Để đơn giản chúng tôi chọn “Remove linux partitions on selected drives and create default layout.” Điều này sẽ cho kết quả là một /boot nhỏ và phân vùng swap. Tuy nhiên bạn có thể tự do phân vùng cho ổ đĩa cứng của mình nếu muốn. Nhấn Next.

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Chọn Yes khi được hỏi “Are you sure you want to do this?

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Đến bước thiết lập mạng. Theo mặc định, giao diện mạng được cấu hình với DHCP, nhưng ở đây chúng ta đang cài đặt máy chủ, vì vậy sẽ dùng IP tĩnh. Kích Edit để chỉnh sửa.

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Trong cửa sổ pop-up hiện ra, đảm bảo rằng mục Enable IPv4 support được chọn, bạn bỏ đánh dấu tại mục Dynamic IP configuration (DHCP) Enable IPv6 support. Nhập vào một địa chỉ IP tĩnh cho card mạng (ở đây chúng tôi sử dụng IP 192.168.0.100 cho phần hướng dẫn này) và một Netmask phù hợp (chẳng hạn 255.255.255.0; nếu bạn không chắc chắn về giá trị này, truy cập vào đây để được hướng dẫn).

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Thiết lập hostname theo cách thủ công (chẳng hạn server1.example.com), nhập vào một gateway (ví dụ 192.168.0.1) và nhập địa chỉ cho hai máy chủ DNS (ví dụ 8.8.8.8 145.253.2.75):

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Chọn múi giờ của bạn:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Thiết lập mật khẩu root:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3


Tiếp theo chúng ta chọn các phần mềm muốn cài đặt. Chúng tôi khuyến cáo bạn chỉ cần chọn mục Server, ngoài ra bỏ chọn rất cá mục khác (bao gồm Packages from CentOS Extras). Sau đó chọn Customize now rồi nhấn Next.

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Phần lựa chọn sau đây chúng ta cần xác định những nhóm cần cài đặt. Đánh dấu vào các mục: Editors, Text-based Internet, Development Libraries, Development Tools, DNS Name Server, FTP Server, Mail Server, MySQL Database, Server Configuration Tools, Web Server, Administration Tools, Base, System Tools, các mục khác đều bỏ chọn. Nhấn Next.

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Trình cài đặt sẽ kiểm tra sự phụ thuộc của các gói được lựa chọn bên trên:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Sau đó bạn nhấn Next để bắt đầu tiến trình cài đặt:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Trạng thái ổ đĩa cứng đang được format:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Quá trình cài đặt bắt đầu, và phải mất vài phút để hoàn thành.

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Cuối cùng, sau khi kết thúc bạn có thể lấy đĩa CD hay DVD khỏi máy tính và nhấn Reboot.

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Sau khi khởi động lại, bạn sẽ thấy một màn hình như dưới đây. Chọn Firewall configuration và nhấn Run Tool:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Bởi vì chúng ta muốn cài đặt ISPConfig ở cuối bài hướng dẫn này cùng hệ thống tường lửa của nó, nên cần vô hiệu hóa tường lửa mặc định của CentOS. Chọn Disable và nhấn OK. (Tất nhiên bạn có thể kích hoạt nó, nhưng sau này không nên sử dụng thêm các tưởng lửa khác bởi có thể gây xung đột với CentOS).

SELinux là phần mở rộng bảo mật của CentOS, nhưng nó sẽ gây nhiều phiền phức cho hệ thống, và trong phần cài đặt này chúng ta không cần cấu hình nó. Đặc biệt là nếu bạn muốn cài ISPConfig thì nhất thiết phải vô hiệu hóa SELinux. Chọn Disable > OK.

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Nhấn Exit để thoát khỏi cửa sổ Setup Agent:

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Khởi động lại hệ thống với quyền root để những thay đổi có hiệu lực:

reboot


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

Bây giờ chúng ta bắt đầu chỉnh sửa /etc/hosts như sau:

vi /etc/hosts

 # Do not remove the following line, or various programs
 # that require network functionality will fail.
 127.0.0.1               localhost.localdomain localhost
 192.168.0.100           server1.example.com server1
 ::1             localhost6.localdomain6 localhost6

5. Cấu hình địa chỉ IP bổ sung

(Phần này là tùy chọn không bắt buộc. Hướng dẫn này sẽ giúp bạn biết cách bổ dung thêm địa chỉ IP cho giao diện mạng eth0 của mình trường hợp cần thiết. Nếu bạn chỉ sử dụng một địa chỉ IP và nó hoạt động tốt, bạn có thể bỏ qua bước này.)

Giả sử giao diện mạng của chúng ta là eth0, sau đó có một tập tin /etc/sysconfig/network-scripts/ifcfg-eth0 chứa nội dung thiết lập cho eth0. Chúng ta có thể sử dụng như một ví dụ cho giao diện mạng ảo mới eth0:0:

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0

Bây giờ muốn sử dụng địa chỉ IP 192.168.0.101 trên giao diện ảo eth0:0 trước tiên cần mở tập tin /etc/sysconfig/network-scripts/ifcfg-eth0:0 và chỉnh sửa như dưới đây:

vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

 # Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
 DEVICE=eth0:0
 BOOTPROTO=static
 BROADCAST=192.168.0.255
 IPADDR=192.168.0.101
 NETMASK=255.255.255.0
 NETWORK=192.168.0.0
 ONBOOT=yes

Sau đó restart lại mạng:

/etc/init.d/network restart

(Bạn cũng có thể điều chỉnh lại /etc/hosts sau khi thêm một IP mới, mặc dù điều này là không cần thiết.)

Tiếp theo chạy:

ifconfig

Bạn sẽ thấy địa chỉ IP mới của mình ở đầu ra:

[root@server1 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:89:71:35
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:307 errors:0 dropped:0 overruns:0 frame:0
          TX packets:251 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:29217 (28.5 KiB)  TX bytes:45961 (44.8 KiB)

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:89:71:35
          inet addr:192.168.0.101  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

[root@server1 ~]#

6. Vô hiệu hóa tường lửa và SELinux

(Bạn có thể bỏ qua bước này nếu đã thực hiện ở phần cuối của mục 3 – cài đặt hệ thống cơ bản - trang 2. Nếu không có thể làm theo hướng dẫn dưới đây.)

Chạy dòng lệnh:

system-config-securitylevel

Tại cửa sổ hiện ra, chọn Disable ở cả hai mục Security Level SELinux to Disabled. Nhấn OK.

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Sau đó reboot lại hệ thống:

reboot

7. Cài đặt một số phần mềm cần thiết

Đầu tiên chúng ta import các key GPG cho các gói phần mềm:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Kích hoạt các kho contrib và centosplus:

vi /etc/yum.repos.d/CentOS-Base.repo

Chỉnh sửa các dòng như dưới đây:

 [base]
 [...]
 exclude=postfix
 [...]
 [updates]
 [...]
 exclude=postfix
 [...]
 [centosplus]
 [...]
 enabled=1
 includepkgs=postfix
 [...]
 [contrib]
 [...]
 enabled=1
 [...]

Cập nhật các gói hiện tại cho hệ thống:

yum update

Cài đặt một số gói phần mềm cần thiết:

yum groupinstall 'Development Tools'

yum groupinstall 'Development Libraries'

8. Quota

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

Để cài đặt quota, chạy lệnh sau:

yum install quota

Chỉnh sửa /etc/fstab và thêm dòng ,usrquota,grpquota vào /dev/VolGroup00/LogVol00:

vi /etc/fstab

 /dev/VolGroup00/LogVol00 /                       ext3    defaults,usrquota,grpquota        1 1
 LABEL=/boot             /boot                   ext3    defaults        1 2
 tmpfs                   /dev/shm                tmpfs   defaults        0 0
 devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
 sysfs                   /sys                    sysfs   defaults        0 0
 proc                    /proc                   proc    defaults        0 0
 /dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

Sau đó chạy:

touch /aquota.user /aquota.group
chmod 600 /aquota.*
mount -o remount /
quotacheck -avugm
quotaon -avug

9. Cài đặt Apache, MySQL, phpMyAdmin

Đầu tiên chúng ta cần kích hoạt kho lưu trữ RPMforge trên hệ thống CentOS để cài đặt các gói không có sẵn trong kho của CentOS 5.7:

wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
rpm --import RPM-GPG-KEY.dag.txt

cd /tmp
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

Trường hợp liên kết trên không còn hoạt động, bạn có thể tìm thấy phiên bản khác của rpmforge-release tại đây.

Như vậy bạn đã có thể cài đặt các gói cần thiết bằng một dòng lệnh sau:

yum install ntp httpd mysql-server php php-mysql php-mbstring php-mcrypt phpmyadmin


10. Cài đặt Dovecot

Các gói Dovecot có sẵn trong kho lưu trữ của CentOS, nhưng nó không hỗ trợ MySQL. Vì vậy chúng ta cần gỡ bỏ những Dovecot hiện có và cài đặt gói Dovecot mới (từ Atrpms) hỗ trợ MySQL.

yum remove dovecot

Tạo tập tin /etc/yum.repos.d/atrpms.repo mới:

vi /etc/yum.repos.d/atrpms.repo

và chèn dòng sau vào tập tin:

 [atrpms]
 name=Red Hat Enterprise Linux 5 - $basearch - ATrpms
 baseurl=http://dl.atrpms.net/el5-$basearch/atrpms/stable
 failovermethod=priority
 exclude=dovecot-2*
 includepkgs=dovecot dovecot-sieve
 
 #
 # requires stable
 #
 [atrpms-testing]
 name=Red Hat Enterprise Linux 5 - $basearch - ATrpms testing
 baseurl=http://dl.atrpms.net/el5-$basearch/atrpms/testing
 failovermethod=priority
 enabled=1
 exclude=dovecot-2*
 includepkgs=dovecot dovecot-sieve
 
 #
 # requires stable and testing
 #
 [atrpms-bleeding]
 name=Red Hat Enterprise Linux 5 - $basearch - ATrpms bleeding
 baseurl=http://dl.atrpms.net/el5-$basearch/atrpms/bleeding
 failovermethod=priority
 enabled=0

import các key quan trọng tge gpg của atrpm:

wget http://ATrpms.net/RPM-GPG-KEY.atrpms
rpm --import RPM-GPG-KEY.atrpms

Cài đặt Dovecot:

yum install dovecot dovecot-sieve

Trên hệ thống 64-bit bạn chạy lệnh:

ln -s /usr/lib64/dovecot/ /usr/lib/dovecot

Bây giờ chúng ta tạo hệ thống link khởi động cho Dovecot:

chkconfig --levels 235 dovecot on
/etc/init.d/dovecot start

Nếu gặp lỗi sau đối với Dovecot:

Fatal: listen(::, 143) failed: Address already in use

Bạn khắc phục bằng cách mở file /etc/dovecot.conf:

vi /etc/dovecot.conf

và thêm vào dòng listen = *:

 [...]
 #listen = *, [::]
 listen = *
 [...]

Sau đó thử khởi động lại Dovecot.

/etc/init.d/dovecot start

11. Cài đặt Postfix với MySQL Support

Các gói Postfix thông thường từ kho CentOS không hỗ trợ MySQL, nhưng chúng ta sẽ sử dụng CentOS Plus để khắc phục vấn đề này. Trước tiên cần gỡ bỏ Postfix:

yum remove postfix

Và cài đặt lại từ CentOS Plus repository:

yum install postfix

Tắt Sendmail và khởi động Postfix, MySQL:

chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start

chkconfig --levels 235 sendmail off
chkconfig --levels 235 postfix on
/etc/init.d/sendmail stop
/etc/init.d/postfix start

12. Cài đặt Getmail

yum install getmail

13. Thiết lập MySQL Passwords và cấu hình phpMyAdmin

Chúng ta tiến hành thiết lập mật khẩu cho MySQL với tài khoản root:

mysql_secure_installation

[root@server1 tmp]# mysql_secure_installation




NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!


In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] <-- ENTER
New password: <-- yourrootsqlpassword
Re-enter new password: <-- yourrootsqlpassword
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]   ... 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? [Y/n] <-- ENTER
 ... 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? [Y/n] <-- ENTER
 - 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? [Y/n] <-- ENTER
 ... Success!

Cleaning up...



All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!


[root@server1 tmp]#

Tiếp theo là cấu hình phpMyAdmin. Chúng tôi thay đổi cấu hình Apache để phpMyAdmin cho phép kết nối không chỉ từ localhost, bằng cách chú thích dòng <Directory "/usr/share/phpmyadmin">:

vi /etc/httpd/conf.d/phpmyadmin.conf

 #
 #  Web application to manage MySQL
 #
 
 #<Directory "/usr/share/phpmyadmin">
 #  Order Deny,Allow
 #  Deny from all
 #  Allow from 127.0.0.1
 #</Directory>
 
 Alias /phpmyadmin /usr/share/phpmyadmin
 Alias /phpMyAdmin /usr/share/phpmyadmin
 Alias /mysqladmin /usr/share/phpmyadmin

Thay đổi xác nhận trong phpMyAdmin từ cookie tới http:

vi /usr/share/phpmyadmin/config.inc.php

 [...]
 /* Authentication type */
 $cfg['Servers'][$i]['auth_type'] = 'http';
 [...]

Tạo hệ thống liên kết khởi động cho Apache và chạy nó:

chkconfig --levels 235 httpd on
/etc/init.d/httpd start

Bây giờ bạn có thể khởi động trình duyệt của mình lên và nhập vào địa chỉ http://server1.example.com/phpmyadmin/ hoặc http://192.168.0.100/phpmyadmin/, đăng nhập với tài khoản root và mật khẩu root MySQL.

14. Cài đặt Amavisd-new, SpamAssassin và ClamAV

Bạn sử dụng dòng lệnh sau để cài đặt cùng lúc 3 dịch vụ này:

yum install amavisd-new spamassassin clamav clamd unzip bzip2 unrar perl-DBD-mysql

Mở file /etc/sysconfig/amavisd:

vi /etc/sysconfig/amavisd

Và bỏ ký tự chú thích (dấu #) tại dòng CONFIG_FILE="/etc/amavisd.conf":

 ### Uncomment this if you want to use amavis with sendmail milter interface.
 ### See README.milter for details.
 #
 #MILTER_SOCKET="local:/var/amavis/amavis-milter.sock"
 #MILTER_SOCKET="10024@127.0.0.1"
 
 ### These are other defaults.
 #AMAVIS_ACCOUNT="amavis"
 CONFIG_FILE="/etc/amavisd.conf"
 #MILTER_FLAGS=""

Khởi động freshclam, amavisd, and clamd...

sa-update
chkconfig --levels 235 amavisd on
chkconfig --levels 235 clamd on
/usr/bin/freshclam
/etc/init.d/amavisd start
/etc/init.d/clamd start

… và tạo một số thư mục cần thiết:

mkdir /var/run/amavisd /var/spool/amavisd /var/spool/amavisd/tmp /var/spool/amavisd/db
chown amavis /var/run/amavisd /var/spool/amavisd /var/spool/amavisd/tmp /var/spool/amavisd/db
ln -s /var/run/clamav/clamd.sock /var/spool/amavisd/clamd.sock


15. Cài đặt Apache2 với mod_php, mod_fcgi/PHP5, và suPHP

ISPConfig 3 cho phép bạn sử dụng mod_php, mod_fcgi/PHP5, cgi/PHP5, và suPHP trên mỗi website cơ bản.

mod_fcgid không có sẵn trong kho lưu trữ chính thức của CentOS, nhưng chúng ta có thể sử dụng các gói dành cho CentOS 5.x tại đây. Kích hoạt kho lưu trữ này bằng lệnh sau:

cd /etc/yum.repos.d/
wget http://centos.karan.org/kbsingh-CentOS-Extras.repo

Mở /etc/yum.repos.d/kbsingh-CentOS-Extras.repo...

vi /etc/yum.repos.d/kbsingh-CentOS-Extras.repo

… và thiết lập gpgcheck thành 0, enabled thành 1 trong [kbs-CentOS-Testing]:

 [...]
 # pkgs in the -Testing repo are not gpg signed
 [kbs-CentOS-Testing]
 name=CentOS.Karan.Org-EL$releasever - Testing
 gpgcheck=0
 gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
 enabled=1
 baseurl=http://centos.karan.org/el$releasever/extras/testing/$basearch/RPMS/

Sau đó bạn có thể cài đặt Apache2 với mod_php5, mod_fcgid, và PHP5: 

yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-mbstring php-mcrypt php-mhash php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel

Tiếp theo mở /etc/php.ini...

vi /etc/php.ini

… và thay đổi các thông báo lỗi để chúng không được hiển thị quá lâu, thêm cgi.fix_pathinfo = 1 vào cuối file:

 [...]
 ;error_reporting  =  E_ALL
 error_reporting = E_ALL & ~E_NOTICE
 [...]
 cgi.fix_pathinfo = 1

Cài đặt suPHP:

cd /tmp
wget http://suphp.org/download/suphp-0.7.1.tar.gz
tar xvfz suphp-0.7.1.tar.gz
cd suphp-0.7.1/
./configure --prefix=/usr --sysconfdir=/etc --with-apr=/usr/bin/apr-1-config --with-apxs=/usr/sbin/apxs --with-apache-user=apache --with-setid-mode=owner --with-php=/usr/bin/php-cgi --with-logfile=/var/log/httpd/suphp_log --enable-SUPHP_USE_USERGROUP=yes
make
make install

Thêm module suPHP cho cấu hình Apache:

vi /etc/httpd/conf.d/suphp.conf

 LoadModule suphp_module modules/mod_suphp.so

Tạo file /etc/suphp.conf:

vi /etc/suphp.conf

 [global] ;Path to logfile logfile=/var/log/httpd/suphp.log ;Loglevel loglevel=info ;User Apache is running as webserver_user=apache ;Path all scripts have to be in docroot=/ ;Path to chroot() to before executing script ;chroot=/mychroot ; Security options allow_file_group_writeable=true allow_file_others_writeable=false
 allow_directory_group_writeable=true
 allow_directory_others_writeable=false
 ;Check wheter script is within DOCUMENT_ROOT
 check_vhost_docroot=true
 ;Send minor error messages to browser
 errors_to_browser=false
 ;PATH environment variable
 env_path=/bin:/usr/bin
 ;Umask to set, specify in octal notation
 umask=0077
 ; Minimum UID
 min_uid=100
 ; Minimum GID
 min_gid=100
 
 [handlers]
 ;Handler for php-scripts
 x-httpd-suphp="php:/usr/bin/php-cgi"
 ;Handler for CGI-scripts
 x-suphp-cgi="execute:!self"

Cuối cùng restart Apache:

/etc/init.d/httpd restart

a. Ruby

Từ phiên bản 3.0.3, ISPConfig 3 được xây dựng để hỗ trợ Ruby. Thay vì sử dụng CGI/FastCGI, ISPConfig phụ thuộc trên mod_ruby có sẵn trong máy chủ của Apache.

Với CentOS 5.7, không có sẵn gói mod_ruby. Vì vậy chúng ta cần biên dịch nó:

yum install httpd-devel ruby ruby-devel

Tải về và cài đặt mod_ruby:

cd /tmp
wget http://modruby.net/archive/mod_ruby-1.3.0.tar.gz
tar zxvf mod_ruby-1.3.0.tar.gz
cd mod_ruby-1.3.0/
./configure.rb --with-apr-includes=/usr/include/apr-1
make
make install

Cuối cùng là thêm các module mod_ruby cho cấu hình Apache, tạo file /etc/httpd/conf.d/ruby.conf:

vi /etc/httpd/conf.d/ruby.conf

 LoadModule ruby_module modules/mod_ruby.so

Và restart Apache:

/etc/init.d/httpd restart

b. WebDAV

WebDAV đã được kích hoạt sẵn, nhưng để kiểm tra điều này, mở tập tin /etc/httpd/conf/httpd.conf và chắc chắn rằng 3 module dưới đây đang hoạt động:

vi /etc/httpd/conf/httpd.conf

 [...]
 LoadModule auth_digest_module modules/mod_auth_digest.so
 [...]
 LoadModule dav_module modules/mod_dav.so
 [...]
 LoadModule dav_fs_module modules/mod_dav_fs.so
 [...]

Nếu chỉnh sửa /etc/httpd/conf/httpd.conf, đừng quên khởi động lại Apache:

/etc/init.d/httpd restart

16. Cài đặt PureFTPd

PureFTPd có thể cài bằng lệnh sau:

yum install pure-ftpd

Tạo hệ thống liên kết startup và khởi động PureFTPd:

chkconfig --levels 235 pure-ftpd on
/etc/init.d/pure-ftpd start

Bây giờ chúng ta cấu hình PureFTPd để cho phép FTP và TLS. Bằng cách kết hợp phương pháp mã hóa TLS sẽ làm cho giao thức FTP được an toàn hơn rất nhiều.

Trước tiên chúng ta cài đặt OpenSSL để phục vụ cho TLS:

yum install openssl

Mở /etc/pure-ftpd/pure-ftpd.conf...

vi /etc/pure-ftpd/pure-ftpd.conf

Nếu bạn muốn cho phép FTP và FTP, chỉ cần set TLS 1:

 [...]
 # This option can accept three values :
 # 0 : disable SSL/TLS encryption layer (default).
 # 1 : accept both traditional and encrypted sessions.
 # 2 : refuse connections that don't use SSL/TLS security mechanisms,
 #     including anonymous sessions.
 # Do _not_ uncomment this blindly. Be sure that :
 # 1) Your server has been compiled with SSL/TLS support (--with-tls),
 # 2) A valid certificate is in place,
 # 3) Only compatible clients will log in.
 
 TLS                      1
 [...]

Chúng ta sẽ tạo chứng chỉ SSL trong /etc/ssl/private/. Đầu tiên cần tạo thư mục này:

mkdir -p /etc/ssl/private/

Sau đó tạo chứng chỉ SSL trong đó:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Điền vào các câu trả lời như gợi ý sau:

Country Name (2 letter code) [GB]: <-- Nhập vào nên nước của bạn (e.g., "DE").
State or Province Name (full name) [Berkshire]: <-- Nhập vào tên tỉnh.
Locality Name (eg, city) [Newbury]: <-- Nhập tên thành phố.
Organization Name (eg, company) [My Company Ltd]: <-- Nhập tên của tổ chức/công ty đang làm việc (e.g., the name of your company).
Organizational Unit Name (eg, section) []: <-- Enter your Organizational Unit Name (e.g. "IT Department").
Common Name (eg, your name or your server's hostname) []: <-- Enter the Fully Qualified Domain Name of the system (e.g. "server1.example.com").
Email Address []:
<-- Enter your Email Address.

Thay đổi quyền cho chứng chỉ SSL:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Cuối cùng restart PureFTPd:

/etc/init.d/pure-ftpd restart

Như vậy bạn có thể kết nối sử dụng FTP client của mình, tuy nhiên bạn nên cấu hình FTP client cho TLS.

17. Cài đặt một Chrooted DNS Server (BIND9)

Đầu tiên chạy:

yum install bind-chroot

Sau đó là:

chmod 755 /var/named/
chmod 775 /var/named/chroot/
chmod 775 /var/named/chroot/var/
chmod 775 /var/named/chroot/var/named/
chmod 775 /var/named/chroot/var/run/
chmod 777 /var/named/chroot/var/run/named/
cd /var/named/chroot/var/named/
ln -s ../../ chroot
touch /var/named/chroot/var/named/named.local
cp /usr/share/doc/bind-9.3.6/sample/var/named/named.root /var/named/chroot/var/named/named.root
touch /var/named/chroot/etc/named.conf.local
vi /var/named/chroot/etc/named.conf

 //
 // named.conf
 //
 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
 // server as a caching only nameserver (as a localhost DNS resolver only).
 //
 // See /usr/share/doc/bind*/sample/ for example named configuration files.
 //
 options {
         listen-on port 53 { any; };
         listen-on-v6 port 53 { any; };
         directory       "/var/named/chroot/var/named";
         dump-file       "/var/named/chroot/var/named/data/cache_dump.db";
         statistics-file "/var/named/chroot/var/named/data/named_stats.txt";
         memstatistics-file "/var/named/chroot/var/named/data/named_mem_stats.txt";
         allow-query     { any; };
         recursion yes;
 };
 logging {
         channel default_debug {
                 file "data/named.run";
                 severity dynamic;
         };
 };
 zone "." IN {
         type hint;
         file "named.root";
 };
 include "/var/named/chroot/var/named/named.local";

chkconfig --levels 235 named on
/etc/init.d/named start

BIND sẽ chạy trong một chroot jail theo /var/named/chroot/var/named/. Chúng ta sẽ sử dụng ISPConfig để cấu hình BIND (zones...).

18. Cài đặt Vlogger, Webalizer, và AWStats

Đầu tiên chạy dòng lệnh:

yum install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder

Sau đó bạn chạy các lệnh sau:

cd /tmp
wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz
tar xvfz vlogger-1.3.tar.gz
mv vlogger-1.3/vlogger /usr/sbin/
rm -rf vlogger*

19. Cài đặt Jailkit

Jailkit chỉ cần thiết nếu bạn muốn Chroot user SSH, cần lưu ý rằng Jailkit phải được cài đặt trước ISPConfig. Tuyệt đối không làm ngược lại.

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./configure
make
make install
cd ..
rm -rf jailkit-2.14*

20. Cài đặt fail2ban

Cũng như cài đặt với máy chủ Ubuntu 11.10, tùy chọn này không bắt buộc nhưng bạn nên cài đặt nó bởi ISPConfig sẽ theo dõi hiển thị log:

yum install fail2ban

chkconfig --levels 235 fail2ban on
/etc/init.d/fail2ban start

21. Cài đặt rkhunter

rkhunter có thể được cài đặt bằng lệnh sau:

yum install rkhunter


22. Cài đặt SquirrelMail

Để cài đặt dịch vụ webmail client SquirrelMail bạn sử dụng lệnh sau:

yum install squirrelmail

Và restart Apache:

/etc/init.d/httpd restart

Sau đó cấu hình cho SquirrelMail:

/usr/share/squirrelmail/config/conf.pl

Thông báo cho SquirrelMail về việc sử dụng Courier-IMAP/-POP3:

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color off
S   Save data
Q   Quit

Command >> <-- D


SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others.  If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct.  This does not change everything.  There are
only a few settings that this will change.

Please select your IMAP server:
    bincimap    = Binc IMAP server
    courier     = Courier IMAP server
    cyrus       = Cyrus IMAP server
    dovecot     = Dovecot Secure IMAP server
    exchange    = Microsoft Exchange IMAP server
    hmailserver = hMailServer
    macosx      = Mac OS X Mailserver
    mercury32   = Mercury/32
    uw          = University of Washington's IMAP server

    quit        = Do not change anything
Command >> <-- dovecot


SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others.  If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct.  This does not change everything.  There are
only a few settings that this will change.

Please select your IMAP server:
    bincimap    = Binc IMAP server
    courier     = Courier IMAP server
    cyrus       = Cyrus IMAP server
    dovecot     = Dovecot Secure IMAP server
    exchange    = Microsoft Exchange IMAP server
    hmailserver = hMailServer
    macosx      = Mac OS X Mailserver
    mercury32   = Mercury/32
    uw          = University of Washington's IMAP server

    quit        = Do not change anything
Command >> dovecot

              imap_server_type = dovecot
         default_folder_prefix = <none>
                  trash_folder = Trash
                   sent_folder = Sent
                  draft_folder = Drafts
            show_prefix_option = false
          default_sub_of_inbox = false
show_contain_subfolders_option = false
            optional_delimiter = detect
                 delete_folder = false

Press any key to continue... <-- press a key


SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color off
S   Save data
Q   Quit

Command >> <--S


SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color off
S   Save data
Q   Quit

Command >> <--Q

Cuối cùng chúng ta cần chỉnh sửa lại file /etc/squirrelmail/config_local.php và tạo chú thích cho biến $default_folder_prefix, nếu không bạn sẽ gặp lỗi “Query: CREATE "Sent" Reason Given: Invalid mailbox name” sau khi đăng nhập SquirrelMail.

vi /etc/squirrelmail/config_local.php

 <?php
 
 /**
  * Local config overrides.
  *
  * You can override the config.php settings here.
  * Don't do it unless you know what you're doing.
  * Use standard PHP syntax, see config.php for examples.
  *
  * @copyright &copy; 2002-2006 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id: config_local.php,v 1.2 2006/07/11 03:33:47 wtogami Exp $
  * @package squirrelmail
  * @subpackage config
  */
 
 //$default_folder_prefix                = '';
 ?>

Bây giờ bạn có thể truy cập vào địa chỉ http://server1.example.com/webmail hoặc http://192.168.0.100/webmail và đăng nhập SquirrelMail.

23. Cấu hình ISPConfig 3

Để cài đặt ISPConfig 3 từ bản mới nhất, sử dụng lệnh;

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Tiếp theo chạy:

php -q install.php

Quá trình cài đặt ISPConfig 3 sẽ được bắt đầu:

[root@server1 install]# php -q install.php


--------------------------------------------------------------------------------
 _____ ___________   _____              __ _         ____
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| | ___\ \
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/
                                              __/ |
                                             |___/
--------------------------------------------------------------------------------


>> Initial configuration

Operating System: CentOS 5 or compatible

    Following will be a few questions for primary configuration so be careful.
    Default values are in [brackets] and can be accepted with <ENTER>.
    Tap in "quit" (without the quotes) to stop the installer.


Select language (en,de) [en]: 
Installation mode (standard,expert) [standard]: <-- ENTER

Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [server1.example.com]: <-- ENTER

MySQL server hostname [localhost]: <-- ENTER

MySQL root username [root]: <-- ENTER

MySQL root password []: <-- yourrootsqlpassword

MySQL database to create [dbispconfig]: <-- ENTER

MySQL charset [utf8]: <-- ENTER

Generating a 2048 bit RSA private key
...............+++
...+++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]: <-- ENTER
State or Province Name (full name) [Berkshire]: <-- ENTER
Locality Name (eg, city) [Newbury]: <-- ENTER
Organization Name (eg, company) [My Company Ltd]: <-- ENTER
Organizational Unit Name (eg, section) []: <-- ENTER
Common Name (eg, your name or your server's hostname) []: <-- ENTER
Email Address []: <-- ENTER
Configuring Jailkit
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring BIND
Configuring Apache
Configuring Vlogger
Configuring Apps vhost
Configuring Firewall
Installing ISPConfig
ISPConfig Port [8080]: <-- ENTER

Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Restarting services ...
Stopping MySQL:                                            [  OK  ]
Starting MySQL:                                            [  OK  ]
Shutting down postfix:                                     [  OK  ]
Starting postfix:                                          [  OK  ]
Stopping saslauthd:                                        [FAILED]
Starting saslauthd:                                        [  OK  ]
Shutting down Mail Virus Scanner (amavisd):                [  OK  ]
Starting Mail Virus Scanner (amavisd):                     [  OK  ]
Stopping Clam AntiVirus Daemon:                            [  OK  ]
Starting Clam AntiVirus Daemon: Bytecode: Security mode set to "TrustSigned".
                                                           [  OK  ]
Stopping Dovecot Imap:                                     [  OK  ]
If you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.
Fatal: listen(::, 143) failed: Address already in use
Starting Dovecot Imap:                                     [FAILED]
Stopping httpd:                                            [  OK  ]
[Mon Sep 26 13:29:58 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
Starting httpd:                                            [  OK  ]
Stopping pure-ftpd:                                        [  OK  ]
Starting pure-ftpd:                                        [  OK  ]
Installation completed.
[root@server1 install]#

Các dịch vụ được cấu hình tự động nên bạn không cần thiết lập thủ công.

Trường hợp Dovecot gặp lỗi khởi động với thông báo:

Fatal: listen(::, 143) failed: Address already in use

Bạn khắc phục bằng cách mở /etc/dovecot.conf:

vi /etc/dovecot.conf

Và thêm vào dòng listen = *:

 [...]
 #listen = *, [::]
 listen = *
 [...]

Sau đó khởi động lại Dovecot:

/etc/init.d/dovecot start

Tiếp theo bạn có thể truy cập vào ISPConfig 3 theo đường dẫn http://server1.example.com:8080/ hoặc http://192.168.0.100:8080/. Đăng nhập với username và password đều là admin (bạn nên thay đổi password mặc định này).

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Thiết lập máy chủ CentOS 5.7 x86_64 và cài đặt ISPConfig 3

Hệ thống của bạn đã sẵn sàng để sử dụng.

24. Các link tham khảo

CentOS: http://www.centos.org/
ISPConfig: http://www.ispconfig.org/

Thứ Bảy, 22/10/2011 06:10
11 👨 10.585