运用脚本部署lamp架构
一、环境检查
1、关闭了防火墙和selinux
[root@stw ~]
[root@stw ~]
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@stw ~]
[root@stw ~]
[root@stw ~]
[root@stw ~]
Disabled
2、能ping通外网
[root@stw ~]
PING www.a.shifen.com (183.2.172.177) 56(84) bytes of data.
64 bytes from 183.2.172.177 (183.2.172.177): icmp_seq=1 ttl=128 time=28.8 ms
64 bytes from 183.2.172.177 (183.2.172.177): icmp_seq=2 ttl=128 time=23.0 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 23.023/25.937/28.851/2.914 ms
3、端口号(80端口没有被启用)
[root@stw ~]
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:6000 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::6000 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 ::1:6010 :::*
二、部署apache
1、三个依赖包需要下载
(apr-1.7.0.tar.gz、apr-util-1.6.1.tar.gz、httpd-2.4.54.tar.gz)
[root@stw ~]
rz waiting to receive.
[root@stw ~]
rz waiting to receive.
[root@stw ~]
rz waiting to receive.
[root@stw ~]
anaconda-ks.cfg Desktop httpd-2.4.54.tar.gz Pictures Videos
apr-1.7.0.tar.gz Documents initial-setup-ks.cfg Public
apr-util-1.6.1.tar.gz Downloads Music Templates
2、编写apache.sh
echo "正在部署yum仓库"
rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null
yum -y install epel-release &>/dev/null
echo "yum仓库部署完成"
echo "正在安装需要的工具包,请稍后..."
yum -y install bzip2 vim make wget openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ libxml2-devel &>/dev/null
echo "正在部署apr"
tar -xzvf /root/apr-1.7.0.tar.gz &>/dev/null
cd /root/apr-1.7.0
sed -i '/$RM "$cfgfile"/d' configure
./configure --prefix=/usr/local/apr &>/dev/null
make &>/dev/null
make install &>/dev/null
echo "apr部署完成"
echo "正在部署apr-util"
cd /root
tar -xzvf apr-util-1.6.1.tar.gz &>/dev/null
cd /root/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr &>/dev/null
make &>/dev/null
make install &>/dev/null
echo "apr-utils部署完成"
echo "正在部署apache"
cd /root
tar -xzvf httpd-2.4.54.tar.gz &>/dev/null
cd /root/httpd-2.4.54
./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork &>/dev/null
make &>/dev/null
make install &>/dev/null
/usr/local/apache/bin/apachectl start
echo "apache部署完成"
3、运行apache.sh
[root@stw ~]
[root@stw ~]
正在部署yum仓库
yum仓库部署完成
正在安装需要的工具包,请稍后...
正在部署apr
apr部署完成
正在部署apr-util
apr-utils部署完成
正在部署apache
apache部署完成

三、部署mysql
1、下载依赖包:mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
[root@stw ~]
rz waiting to receive.
[root@stw ~]
anaconda-ks.cfg httpd-2.4.54
apache.sh httpd-2.4.54.tar.gz
apr-1.7.0 initial-setup-ks.cfg
apr-1.7.0.tar.gz Music
apr-util-1.6.1 mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
apr-util-1.6.1.tar.gz Pictures
Desktop Public
Documents Templates
Downloads Videos
2、编写mysql.sh
echo "创建mysql用户"
id mysql &>/dev/null
if [ $? -eq 0 ];thenecho "mysql用户已存在"
elseuseradd -r -M -s /sbin/nologin mysqlecho "mysql用户创建完成"
fi
echo "正在安装工具包"
yum -y install libncurses* &>/dev/null
echo "工具包已安装完成"
echo "正在配置mysql"
cd /root
tar -xzvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local &>/dev/null
ln -s /usr/local/mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql
mkdir -p /opt/data
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /opt/data
echo "mysql配置完成"
echo "正在初始化数据库"
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data/ &>/dev/null
ln -s /usr/local/mysql/include /usr/local/include/mysql
echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
ldconfig
echo "初始化数据库已完成"
echo "正在编辑mysql配置文件"
cat > /etc/my.cnf << EOF
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
EOFsed -ri "s#^(basedir=).*#\1/usr/local/mysql#g" /usr/local/mysql/support-files/mysql.server
sed -ri "s#^(datadir=).*#\1/opt/data#g" /usr/local/mysql/support-files/mysql.server
echo "mysql配置文件编辑完成"
echo "配置mysqld服务的单元文件"cat > /usr/lib/systemd/system/mysqld.service <<EOF
[Unit]
Description=mysql server daemon
After=network.targe[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecReload=/bin/kill -HUP \$MAINPID[Install]
WantedBy=multi-user.target
EOFecho "启动mysqld服务"
systemctl daemon-reload
systemctl enable --now mysqld
echo "配置mysql的环境变量"
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile
echo "mysql的环境变量配置完成"
echo "给数据库设置密码"
read -p "请输入您要设置的数据库密码:" PASSWD
mysql -uroot -e "set password=password('$PASSWD')"
echo "密码设置成功"echo "数据库部署完成"
3、运行mysql.sh
[root@stw ~]
创建mysql用户
mysql用户创建完成
正在安装工具包
工具包已安装完成
正在配置mysql
mysql配置完成
正在初始化数据库
初始化数据库已完成
正在编辑mysql配置文件
mysql配置文件编辑完成
配置mysqld服务的单元文件
启动mysqld服务
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
配置mysql的环境变量
mysql的环境变量配置完成
给数据库设置密码
请输入您要设置的数据库密码:redhat
密码设置成功
数据库部署完成
[root@stw ~]
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:6000 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
LISTEN 0 128 127.0.0.1:6011 *:*
LISTEN 0 128 127.0.0.1:6012 *:*
LISTEN 0 80 :::3306 :::*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::6000 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 ::1:6010 :::*
LISTEN 0 128 ::1:6011 :::*
LISTEN 0 128 ::1:6012 :::*
[root@stw ~]
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.37 MySQL Community Server (GPL)Copyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> exit
四、部署php
1、下载依赖包:php-7.1.10.tar.bz2
[root@stw ~]
rz waiting to receive.
[root@stw ~]
anaconda-ks.cfg httpd-2.4.54.tar.gz
apache.sh initial-setup-ks.cfg
apr-1.7.0 Music
apr-1.7.0.tar.gz mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
apr-util-1.6.1 mysql.sh
apr-util-1.6.1.tar.gz php-7.1.10.tar.bz2
Desktop Pictures
Documents Public
Downloads Templates
httpd-2.4.54 Videos
2、编写php.sh
echo "正在安装依赖包..."
yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel &>/dev/null
echo "依赖包安装完成"
echo "正在解压php包文件"
cd /root
tar -xjvf php-7.1.10.tar.bz2 &>/dev/null
echo "php包文件解压完成"
echo "正在配置编译安装php"
cd /root/php-7.1.10
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql-sock=/tmp/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip &>/dev/nullmake &>/dev/null
make install &>/dev/null
echo "已完成php的配置编译安装"
echo "配置php"
cp php.ini-development /usr/local/php/lib/php.ini
sed -i 's/;date.timezone =/date\.timezone = \Asia\/Shanghai/' /usr/local/php/lib/php.ini
echo "AddType application/x-httpd-php .php" >> /etc/httpd24/httpd.conf
echo "AddType application/x-httpd-php-source .phps" >> /etc/httpd24/httpd.conf
sed -i 's/index.html/index\.php index\.html/' /etc/httpd24/httpd.conf
rm -rf /usr/local/apache/htdocs/index.html
cat > /usr/local/apache/htdocs/index.php << EOF
<?php
phpinfo();
?>
EOFecho "启动服务"
/usr/local/apache/bin/apachectl stop
/usr/local/apache/bin/apachectl start
3、运行php.sh
[root@stw ~]
[root@stw ~]
正在部署yum仓库
yum仓库部署完成
正在安装需要的工具包,请稍后...
正在部署apr
apr部署完成
正在部署apr-util
apr-utils部署完成
正在部署apache
apache部署完成
[root@stw ~]
[root@stw ~]
[root@stw ~]
正在安装依赖包...
依赖包安装完成
正在解压php包文件
php包文件解压完成
正在配置编译安装php
已完成php的配置编译安装
配置php
启动服务

五、将编写的三个脚本结合成lamp脚本
echo "正在部署yum仓库"
rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null
yum -y install epel-release &>/dev/null
echo "yum仓库部署完成"
echo "正在安装需要的工具包,请稍后..."
yum -y install bzip2 vim make wget openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ libxml2-devel &>/dev/null
echo "正在部署apr"
tar -xzvf /root/apr-1.7.0.tar.gz &>/dev/null
cd /root/apr-1.7.0
sed -i '/$RM "$cfgfile"/d' configure
./configure --prefix=/usr/local/apr &>/dev/null
make &>/dev/null
make install &>/dev/null
echo "apr部署完成"
echo "正在部署apr-util"
cd /root
tar -xzvf apr-util-1.6.1.tar.gz &>/dev/null
cd /root/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr &>/dev/null
make &>/dev/null
make install &>/dev/null
echo "apr-utils部署完成"
echo "正在部署apache"
cd /root
tar -xzvf httpd-2.4.54.tar.gz &>/dev/null
cd /root/httpd-2.4.54
./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork &>/dev/null
make &>/dev/null
make install &>/dev/null
/usr/local/apache/bin/apachectl start
echo "apache部署完成"
echo "创建mysql用户"
id mysql &>/dev/null
if [ $? -eq 0 ];thenecho "mysql用户已存在"
elseuseradd -r -M -s /sbin/nologin mysqlecho "mysql用户创建完成"
fi
echo "正在安装工具包"
yum -y install libncurses* &>/dev/null
echo "工具包已安装完成"
echo "正在配置mysql"
cd /root
tar -xzvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local &>/dev/null
ln -s /usr/local/mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql
mkdir -p /opt/data
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /opt/data
echo "mysql配置完成"
echo "正在初始化数据库"
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data/ &>/dev/null
ln -s /usr/local/mysql/include /usr/local/include/mysql
echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
ldconfig
echo "初始化数据库已完成"
echo "正在编辑mysql配置文件"
cat > /etc/my.cnf << EOF
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
EOFsed -ri "s#^(basedir=).*#\1/usr/local/mysql#g" /usr/local/mysql/support-files/mysql.server
sed -ri "s#^(datadir=).*#\1/opt/data#g" /usr/local/mysql/support-files/mysql.server
echo "mysql配置文件编辑完成"
echo "配置mysqld服务的单元文件"cat > /usr/lib/systemd/system/mysqld.service <<EOF
[Unit]
Description=mysql server daemon
After=network.targe[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecReload=/bin/kill -HUP \$MAINPID[Install]
WantedBy=multi-user.target
EOFecho "启动mysqld服务"
systemctl daemon-reload
systemctl enable --now mysqld
echo "配置mysql的环境变量"
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile
echo "mysql的环境变量配置完成"
echo "给数据库设置密码"
read -p "请输入您要设置的数据库密码:" PASSWD
mysql -uroot -e "set password=password('$PASSWD')"
echo "密码设置成功"echo "数据库部署完成"
echo "正在安装依赖包..."
yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel &>/dev/null
echo "依赖包安装完成"
echo "正在解压php包文件"
cd /root
tar -xjvf php-7.1.10.tar.bz2 &>/dev/null
echo "php包文件解压完成"
echo "正在配置编译安装php"
cd /root/php-7.1.10
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql-sock=/tmp/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip &>/dev/nullmake &>/dev/null
make install &>/dev/null
echo "已完成php的配置编译安装"
echo "配置php"
cp php.ini-development /usr/local/php/lib/php.ini
sed -i 's/;date.timezone =/date\.timezone = \Asia\/Shanghai/' /usr/local/php/lib/php.ini
echo "AddType application/x-httpd-php .php" >> /etc/httpd24/httpd.conf
echo "AddType application/x-httpd-php-source .phps" >> /etc/httpd24/httpd.conf
sed -i 's/index.html/index\.php index\.html/' /etc/httpd24/httpd.conf
rm -rf /usr/local/apache/htdocs/index.html
cat > /usr/local/apache/htdocs/index.php << EOF
<?php
phpinfo();
?>
EOFecho "启动服务"
/usr/local/apache/bin/apachectl stop
/usr/local/apache/bin/apachectl start
注意:在运行此脚本之前需要导入五个依赖包并且关闭防火墙和selinux!
[root@stw2 ~]
[root@stw2 ~]
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@stw2 ~]
[root@stw2 ~]
[root@stw2 ~]
[root@stw2 ~]
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
[root@stw2 ~]
rz waiting to receive.
[root@stw2 ~]
rz waiting to receive.
[root@stw2 ~]
rz waiting to receive.
[root@stw2 ~]
rz waiting to receive.
[root@stw2 ~]
rz waiting to receive.
[root@stw2 ~]
anaconda-ks.cfg Downloads php-7.1.10.tar.bz2
apr-1.7.0.tar.gz httpd-2.4.54.tar.gz Pictures
apr-util-1.6.1.tar.gz initial-setup-ks.cfg Public
Desktop Music Templates
Documents mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz Videos
[root@stw2 ~]
[root@stw2 ~]
正在部署yum仓库
yum仓库部署完成
正在安装需要的工具包,请稍后...
正在部署apr
apr部署完成
正在部署apr-util
apr-utils部署完成
正在部署apache
apache部署完成
创建mysql用户
mysql用户创建完成
正在安装工具包
工具包已安装完成
正在配置mysql
mysql配置完成
正在初始化数据库
初始化数据库已完成
正在编辑mysql配置文件
mysql配置文件编辑完成
配置mysqld服务的单元文件
启动mysqld服务
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
配置mysql的环境变量
mysql的环境变量配置完成
给数据库设置密码
请输入您要设置的数据库密码:redhat
密码设置成功
数据库部署完成
正在安装依赖包...
依赖包安装完成
正在解压php包文件
php包文件解压完成
正在配置编译安装php
已完成php的配置编译安装
配置php
启动服务
