Cài đặt các công cụ biên dịch

# yum groupinstall " Development Tools"  -y
# yum install expat-devel pcre pcre-devel openssl-devel -y

Chọn phiên bản Apache từ nguồn https://github.com/apache/httpd/releases

Ví dụ chọn 2.4.37 lấy được link tải tag.gz là: https://github.com/apache/httpd/archive/2.4.37.tar.gz

Tải về máy lưu tại file: httpd-2.4.37.tar.gz bằng tool wget, nếu chưa có wget thì cài vào bằng lệnh yum install wget -y

# wget https://github.com/apache/httpd/archive/2.4.37.tar.gz -O httpd-2.4.37.tar.gz

Chọn phiên bản Apache Portable Runtime tại https://github.com/apache/apr

Ví dụ chọn 1.6.5 với link tải là: https://github.com/apache/apr/archive/1.6.5.tar.gz, tải về lưu với tên ví dụ là apr-1.6.5.tar.gz

# wget https://github.com/apache/apr/archive/1.6.5.tar.gz -O apr-1.6.5.tar.gz

Chọn phiên bản Apache Portable Runtime util tại https://github.com/apache/apr-util/releases

Ví dụ chọn bản 1.6.1 với link tải là: https://github.com/apache/apr-util/archive/1.6.1.tar.gz tải về lưu với tên đặt là apr-util-1.6.1.tar.gz

# wget https://github.com/apache/apr-util/archive/1.6.1.tar.gz -O apr-util-1.6.1.tar.gz

Build Apache

Giải nén tất cả 3 file vừa tải về ở trên

# tar -xzf httpd-2.4.37.tar.gz
# tar -xzf apr-1.6.5.tar.gz
# tar -xzf apr-util-1.6.1.tar.gz

Có 3 thư mục tương ứng giải nén ra, bạn kiểm tra bằng lệnh apr-1.6.5, apr-util-1.6.1, httpd-2.4.37 (kiểm tra bằng ls)

Cần di chuyển thư mục apr-1.6.5 vào httpd-2.4.37/srclib/apr

Cần di chuyển thư mục apr-util-1.6.1 vào httpd-2.4.37/srclib/apr-util

# mv apr-1.6.5 httpd-2.4.37/srclib/apr
# mv apr-util-1.6.1 httpd-2.4.37/srclib/apr-util

Như vậy thư mục httpd-2.4.37 đã chứa mã nguồn để sẵn sàng biên dịch thành mã máy.

Di chuyển vào thư mục httpd-2.4.37 và chạy tạo thiết lập bằng script ./buildconf

# cd httpd-2.4.37
# ./buildconf

Tiếp theo chạy configure, thiết lập tham số xem tại configure

Muốn kích hoạt module, tính năng nào dùng thiết lập --enable-FEATURE, --enable-MODULE=shared, --enable-MODULE=static

Chọn MPM cho Apache: --with-mpm=event hoặc --with-mpm=MPM hoặc --with-mpm=worker

Chọn thư mục cài đặt ví dụ chọn /etc/httpd thêm vào --prefix=/etc/httpd

# --prefix=/etc/httpd --exec-prefix=/etc/httpd --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc/httpd/conf --includedir=/usr/include/apache --libexecdir=/usr/lib/apache --libdir=/usr/lib/apache --mandir=/usr/share/man --datadir=/var/www --localstatedir=/var --with-included-apr --with-mpm=event --with-ssl=/usr --enable-ssl

Sau khi chạy nó sẽ chuẩn bị các thiết lập, các module để tiến hành biên dịch thành mã máy. Nếu các tham số tùy chọn nhập vào dòng lệnh ./configure quá nhiều (ví dụ bạn tùy biến cao, lựa chọn disable/enable nhiều loại module) thì bạn tạo ra một file chạy ví dụ file configure.custome bằng lệnh touch configure.custome, chmod nó chạy được bằng lệnh chmod +x configure.custome, mở file đó ra thêm nội dung dạng sau:

#!/bin/sh
"./configure" \
	"--prefix=/etc/httpd" \
	"--exec-prefix=/etc/httpd" \
	"--bindir=/usr/bin" \
	"--sbindir=/usr/sbin" \
	"--sysconfdir=/etc/httpd/conf" \
	"--with-pcre=/usr/local" \
	"--includedir=/usr/include/apache" \
	"--libexecdir=/usr/lib/apache" \
	"--libdir=/usr/lib/apache" \
	"--mandir=/usr/share/man" \
	"--datadir=/var/www" \
	"--localstatedir=/var" \
	"--with-included-apr" \
	"--with-mpm=event" \
	"--with-ssl=/usr" \
	"--enable-ssl"

Sau đó lưu lại, lúc này thay vì chạy ./configure bạn chạy ./configure.custome

Thi hành lệnh

# make

Thi hành biên dịch và cài đặt

# make install

Tạo User/Group mặc định chạy Apache

Tạo gropup và user tên: apache / apache

# sudo groupadd apache
# sudo useradd apache -g apache --no-create-home --shell /sbin/nologin

Sửa file httpd.conf, tìm tơi dùng User, Group và cập nhật user/group mới

User apache
Group apache

Thiết lập dịch vụ Apache với CentOS 6

Tạo file dịch vụ

# vim /etc/init.d/httpd
 #!/bin/sh
#
# Startup script for the Apache Web Server
#
# chkconfig: 345 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#	       HTML files and CGI.
# processname: httpd
# pidfile: /var/run/httpd.pid
# config: /etc/httpd/conf/httpd.conf


# Source function library.
. /etc/rc.d/init.d/functions

# See how we were called.
case "$1" in
start)
echo -n "Starting httpd: "
daemon httpd -DSSL
echo
touch /var/lock/subsys/httpd
;;
stop)
echo -n "Shutting down http: "
killproc httpd
echo
rm -f /var/lock/subsys/httpd
rm -f /var/run/httpd.pid
;;
status)
status httpd
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reloading httpd: "
killproc httpd -HUP
echo
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac

exit 0

Sau đó chmod cho phép chạy, và thiết lập tự động chạy

chmod +x /etc/init.d/httpd
service httpd start
chkconfig httpd on

Thiết lập dịch vụ Apache với CentOS 7

Tạo Unit dịch vụ với file httpd.service và biên tập nội dung như sau

# vi /etc/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/sbin/httpd -k start
ExecReload=/usr/sbin/httpd -k graceful
ExecStop=/usr/sbin/httpd -k graceful-stop
PIDFile=/var/logs/httpd.pid
KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Thiết lập chạy cùng hệ thống

# systemctl daemon-reload
# systemctl start httpd
# systemctl enable httpd

Firewall

# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-service=https --permanent

Sau đó khởi động lại Firewall

# firewall-cmd --reload

Truy cập địa chỉ host để kiểm tra