CẤU HÌNH
Software version: 1. OS: CentOS 7.4.1708 (Core) 64bit. 2. Apache: Apache/2.4.6 (CentOS) 3. MariaDB: 10.2.13-MariaDB 4. PHP 7: PHP 7.2.3 (cli)
SCRIPT
!/bin/bash
————————————————–
Software version:
1. OS: CentOS 7.4.1708 (Core) 64bit.
2. Apache: Apache/2.4.6 (CentOS)
3. MariaDB: 10.2.13-MariaDB
4. PHP 7: PHP 7.2.3 (cli)
————————————————–
List function:
1. f_check_root: check to make sure script can be run by user root
2. f_disable_selinux: check selinux status, disable it if it’s enforcing
3. f_update_os: update all the packages
4. f_install_lamp: funtion to install LAMP stack
5. f_open_port: config firewalld to open port 80, 443
6. f_sub_main: function use to call the main part of installation
7. f_main: the main function, add your functions to this place
Function check user root
f_check_root () {
if (( $EUID == 0 )); then
# If user is root, continue to function f_sub_main
f_sub_main
else
# If user not is root, print message and exit script
echo “Please run this script by user root !”
exit
fi
}
Function to disable SELinux
f_disable_selinux () {
SE=cat /etc/selinux/config | grep ^SELINUX= | awk -F'=' '{print $2}'
echo “Checking SELinux status …”
echo “”
sleep 1
if [[ "$SE" == "enforcing" ]]; then
sed -i 's|SELINUX=enforcing|SELINUX=disabled|g' /etc/selinux/config
echo "Disable SElinux and reboot after 5s. Press Ctrl+C to stop script."
echo "After system reboot, please run script again."
echo ""
sleep 5
reboot
fi
}
Function update os
f_update_os () {
echo “Starting update os …”
sleep 1
yum update
yum upgrade -y
echo ""
sleep 1
}
Function install LAMP stack
f_install_lamp () {
########## INSTALL APACHE ##########
echo “Installing apache …”
sleep 1
yum install httpd -y
# This part is optimize for server 2GB RAM
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.original
sed -i '/<IfModule prefork.c/,/<\/IfModule/{//!d}' /etc/httpd/conf/httpd.conf
sed -i '/<IfModule prefork.c/a\ StartServers 4\n MinSpareServers 20\n MaxSpareServers 40\n MaxClients 200\n MaxRequestsPerChild 4500' /etc/httpd/conf/httpd.conf
# Enable and start httpd service
systemctl enable httpd.service
systemctl restart httpd.service
########## INSTALL MARIADB ##########
echo "Add MariaDB to repositories ..."
sleep 1
# Add MariaDB repository
cat > /etc/yum.repos.d/MariaDB.repo <<"EOF"
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
# Update new package
echo "Update package for MariaDB ..."
sleep 1
yum update -y
# Start install MariaDB
echo "Installing MariaDB server ..."
sleep 1
yum install MariaDB-server MariaDB-client -y
# Enable and start mysql service
systemctl enable mariadb
systemctl start mariadb
echo ""
sleep 1
########## INSTALL PHP7 ##########
yum install epel-release -y
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
yum install yum-utils -y
yum-config-manager --enable remi-php72
yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo php-pear -y
# Config to fix error Apache not load PHP file
chown -R apache:apache /var/www
sed -i '/<Directory \/>/,/<\/Directory/{//!d}' /etc/httpd/conf/httpd.conf
sed -i '/<Directory \/>/a\ Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted' /etc/httpd/conf/httpd.conf
# Restart Apache
systemctl restart httpd
}
Function enable port 80,433 in IPtables
f_open_port () {
firewall-cmd –permanent –add-service=http
firewall-cmd –permanent –add-service=https
firewall-cmd –permanent –add-port=80/tcp
firewall-cmd –permanent –add-port=443/tcp
firewall-cmd –reload
}
The sub main function, use to call neccessary functions of installation
f_sub_main () {
f_disable_selinux
f_update_os
f_install_lamp
f_open_port
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
echo ""
echo ""
echo "Please run command to secure MariaDB: mysql_secure_installation"
echo "You can access http://YOUR-SERVER-IP/info.php to see more informations about PHP"
sleep 1
}
The main function
f_main () {
f_check_root
}
f_main
exit