版权声明:本文为博主原创文章,转载注明出处 https://blog.csdn.net/u010875635/article/details/82587324
已经将Apache、Mysql、PHP、Discuz打包成一键安装包,自动解决依赖,无需联网。
下载地址(文件较大,两部分):
第一部分:https://download.csdn.net/download/u010875635/10656421
第二部分:https://download.csdn.net/download/u010875635/10656437
以上run安装包可在配置好防火墙、关闭SELINUX情况下直接运行后20分钟左右自动安装完所有程序。
若无积分下载,可按照下面设置自行安装。
若只是安装LAMP,而无需Discuz的,安装完毕后将/opt/apache-2.4/htdocs/eksheet/下面的文件全部删除、并删除mysql的eksheet数据库。或者分离run文件(前10行为安装脚本),自行修改脚本。
以下内容在准备好对应文件之后,可直接作为安装脚本(确保可联网,需要下载依赖包),一键安装。需要文件如下:
文件名称 | 描述 |
---|---|
CentOS-7-x86_64-Minimal-1804.iso | 系统镜像 |
apr-1.6.3.tar.gz | Apache依赖包 |
apr-util-1.6.1.tar.gz | |
pcre-8.20.tar.gz | |
httpd-2.4.34.tar.gz | Apache |
mysql-5.6.40-linux-glibc2.12-x86_64.tar.xz | mysql数据库 |
php-7.0.31.tar.gz | php |
DiscuzX3.4.tar.gz | Discuz论坛 |
将以上除iso以外文件放置到某个文件夹,例如/tmp/source,然后将以下保存为autorun.sh(先按照说明把系统先配置一下,关闭防火墙和selinux),赋予执行权限,然后输入以下命令即可自动安装(注意要以root权限执行):
sed -i 's/\r//g' ./autorun.sh #去除windows编辑器中带入的回车
./autorun.sh /tmp/source
脚本及说明内容:
#!/bin/bash
# 以下为LAMP+DiscuzX3.4安装过程(为方便管理移植,使用VmWare14虚拟机进行安装)
# 本文件可以修改后缀txt为sh作为shell脚本运行
# !!!注意:若是在windows编辑成脚本到linux,需要手动处理\r,执行以下命令即可:sed -i 's/\r//g' xxx.sh
# 一、准备文件
# 1、L(Linux) -- CentOS-7-x86_64-Minimal-1804.iso
# 2、A(Apache) -- httpd-2.4.34.tar.gz(含依赖文件pcre-8.20.tar.gz、apr-1.6.3.tar.gz、apr-util-1.6.1.tar.gz)
# 3、M(MySql) -- mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
# 4、P(PHP) -- php-7.0.31.tar.gz
# 5、Discuz -- DiscuzX3.4.tar.gz
# 6、VmWare -- VMware-workstation-full-14.1.3-9474260.exe
# 二、安装系统
# 1、安装VmWare并破解(略)
# 2、新建虚拟机存储路径,例如: E:\VistualMachine\CentOS
# 3、使用VmWare新建虚拟机:
# a)安装镜像iso选择CentOS-7-x86_64-Minimal-1804.iso
# b)虚拟机名称为CentOS7_Discuz,位置为E:\VistualMachine\CentOS7_DiscuzX3.4
# c)处理器数量1,每个处理器内核数量2
# d)内存3GB以上
# e)网络使用NAT
# f)磁盘大小随意,不少于10G,一般肯定是越大越好
# g)磁盘文件放在E:\VistualMachine\CentOS7_DiscuzX3.4\CentOS7_Discuz.vmdk
# h)其它默认,然后开始安装虚拟机
# 4、安装过程
# a)选择 Install CentOS7
# b)语言默认English即可,因为没有界面,设置中文没有意义
# c)时区DATE$TIME设置为Asia/Shanghai,其它默认
# d)设置root密码和用户ekontrol,密码随意,例如ekontrol234和ekontrol123
# e)等待安装完毕,提示重启
# 注意:以下所有配置,无特殊说明,均以root身份登录执行
# 三、系统配置
# 1、配置网络,启动后会发现网络未连接,假设网卡名称为ens33,可以用命令
# a)修改网络自启动:vi /etc/sysconfig/network-scripts/ifcfg-ens33将ONBOOT=no改为yes
# b)虚拟机连接cdrom,挂载安装镜像CDROM到/mnt,mount /dev/cdrom /mnt
# c)安装net-tool,安rpm -ivh /mnt/Packages/net-tools-2.0-0.22.20131004git.el7.x86_64.rpm
# d)卸载镜像,umount -l /dev/cdrom
# e)修改/etc/yun.conf,将keepcache=0改为1,方便保存包,避免以后重新安装系统时系统没有维护了。
# f)重启
# g)查询本机ip,ifconfig
# 2、后续操作通过Windows远程比较方便,可以复制指令
# a)在Windows上安装HyperTerminal或者其它例如Putty也可以
# b)通过ssh远程,输入ip,用户名和密码即可
# 3、修改系统配置
# a)修改启动等待时间为0,sed -i 's/set\stimeout=5/set timeout=0/g' /boot/grub2/grub.cfg
# f)关闭selinux,sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
# e)关闭防火墙,systemctl disable firewalld.service #禁止firewall开机启动
# d)重启
# 四、文件传输
# 1、使用HyperTerminal或者WinScp将包含有Discuz、httpd、mysql、php、debs的source文件夹上传至/home//ekontrol下
# 2、查看文件是否已经上传完毕,ls /home/ekontrol/source
# 3、脚本处理
# a)将此脚本改名为autorun.sh上传至虚拟机
# b)将虚拟机的CDROM连接上
# c)执行sed -i 's/\r//g' autorun.sh去除windows下的回车标记
# d)赋予执行权限,chmod +x autorun.sh
# e)运行脚本./autorun.sh
#检查是否root权限,后面要操作系统文件夹,必须root权限
if [ `whoami` != "root" ];then
echo "please login as root"
exit
fi
#判断输入参数
if [ $# != 1 ] ; then
echo "USAGE: $0 sourcedir"
echo "sourcedir is the apache/mysql/php/discuz contained folder"
echo " example: $0 /tmp/source"
exit 1;
fi
#######################################
# 相关变量
#######################################
# 传送文件目录,由输入决定
#sourcedir="/home/ekontrol/source"
sourcedir=$1
#mysql root password
mysqlrootpassword="ekontrol234"
mysqlnewusername="user1"
mysqlnewuserpassword="123456"
mysqldatabasename="eksheet"
#web site directory name
apachewebdirname="eksheet"
#######################################
# 相关变量
#######################################
# 五、软件部署安装
# 1、安装依赖,以下方法二选一:
# a)有网情况下,先输入
yum makecache
#然后再输入以下命令
yum install -y expat-devel gcc gcc-c++ openssl-devel perl perl-devel perl-Module-Install.noarch libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl
# b)无网情况下,解压x86_64.tar.gz,移动到yum缓存目录下
# #释放以前的缓存
# cd $sourcedir
# xz -d x86_64.tar.xz
# tar -xvf x86_64.tar
# rm -rf /var/cache/yum/*
# mv x86_64 /var/cache/yum/
# 然后再输入以下命令,利用缓存安装
# yum install -C -y expat-devel gcc gcc-c++ openssl-devel perl perl-devel perl-Module-Install.noarch libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl
# 2、安装Apache
tar -xzvf apr-1.6.3.tar.gz
cd ./apr-1.6.3
./configure --prefix=/opt/apr-1.6
make
make install
cd ..
rm -rf ./apr-1.6.3
tar -xzvf apr-util-1.6.1.tar.gz
cd ./apr-util-1.6.1
./configure --prefix=/opt/apr-util-1.6 -with-apr=/opt/apr-1.6/bin/apr-1-config
make
make install
cd ..
rm -rf ./apr-util-1.6.1
tar -xzvf pcre-8.20.tar.gz
cd ./pcre-8.20
./configure --prefix=/opt/pcre-8.2
make
make install
cd ..
rm -rf ./pcre-8.20
tar -xzvf httpd-2.4.34.tar.gz
cd ./httpd-2.4.34
./configure --prefix=/opt/apache-2.4 --sysconfdir=/etc/httpd --enable-so --enable-rewirte --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-pcre=/opt/pcre-8.2 --with-apr=/opt/apr-1.6 --with-apr-util=/opt/apr-util-1.6
make
make install
cd ..
rm -rf httpd-2.4.34
# 配置Apache虚拟主机
# 修改配置文件,/etc/httpd/httpd.conf
# 选作,若是多个网站,可以增加端口增加一行即可,例如:Listen 81
# 去掉vhost注释,用于支持多个虚拟主机,命令如下:
httpdconf="/etc/httpd/httpd.conf"
sed -i "s/#Include\s\/etc\/httpd\/extra\/httpd-vhosts.conf/Include \/etc\/httpd\/extra\/httpd-vhosts.conf/g" $httpdconf
sed -i "s/#LoadModule\svhost_alias_module modules\/mod_vhost_alias.so/LoadModule vhost_alias_module modules\/mod_vhost_alias.so/g" $httpdconf
#新建用于放置网站的文件夹,并将/opt/apache-2.4/htdocs/index.html移动到里面
webdir="/opt/apache-2.4/htdocs/"${apachewebdirname}
mkdir $webdir
#修改配置文件/etc/httpd/extra/httpd-vhost.conf,设置各个端口对应的网站位置和名称及路径
httpdvhostconf="/etc/httpd/extra/httpd-vhosts.conf"
#backup
mv $httpdvhostconf ${httpdvhostconf}".bak"
#create new file
echo "">$httpdvhostconf
sed -i "1i\<VirtualHost *\:80>" $httpdvhostconf
sed -i "2i\ ServerAdmin webmaster@$apachewebdirname.com" $httpdvhostconf
sed -i "3i\ DocumentRoot \"\/opt\/apache-2.4\/htdocs\/$apachewebdirname\"" $httpdvhostconf
sed -i "4i\ ServerName $apachewebdirname.com" $httpdvhostconf
sed -i "5i\ ServerAlias www.$apachewebdirname.com" $httpdvhostconf
sed -i "6i\ ErrorLog "logs\/$apachewebdirname.com-error_log"" $httpdvhostconf
sed -i "7i\ CustomLog "logs\/$apachewebdirname.com-access_log" common" $httpdvhostconf
sed -i '8i\<\/VirtualHost>' $httpdvhostconf
#service
cp /opt/apache-2.4/bin/apachectl /etc/init.d/httpd
sed -i '2i # chkconfig: 2345 70 30' /etc/init.d/httpd
sed -i '3i # description: Apache' /etc/init.d/httpd
chkconfig --add httpd
#启动服务并测试
systemctl restart httpd
#在浏览器中输入ip,如果显示It works则Apache安装OK
# 3、安装mysql
#删除 mariadb数据库
rpm -e --nodeps $(rpm -qa|grep mariadb)
#创建用户和组
userdel mysql
groupdel mysql
mkdir /home/mysql
mkdir /home/mysql/data
groupadd mysql
useradd -g mysql -d /home/mysql mysql
cd $sourcedir
#复制文件
xz -d mysql-5.6.40-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-5.6.40-linux-glibc2.12-x86_64.tar
cd mysql-5.6.40-linux-glibc2.12-x86_64
rm -rf data/*
mv * /home/mysql
cd ..
rm -rf mysql-5.6.40-linux-glibc2.12-x86_64
chown -R mysql:mysql /home/mysql
#创建软链接
ln -sf /home/mysql/bin/mysql /bin/mysql
#删除并新增配置文件 /etc/my.cnf,命令如下:
mycnf="/etc/my.cnf"
rm -rf $mycnf
echo "">>$mycnf
sed -i '1i\[mysqld]' $mycnf
sed -i '2i\port = 3306' $mycnf
sed -i '3i\basedir=/home/mysql' $mycnf
sed -i '4i\datadir=/home/mysql/data' $mycnf
sed -i '5i\socket=/tmp/mysql.sock' $mycnf
#初始化
cd /home/mysql
./scripts/mysql_install_db --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data
#配置服务和开机启动
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --level 35 mysqld on
/etc/init.d/mysqld restart
#设置密码
/home/mysql/bin/mysqladmin -u root password $mysqlrootpassword
#增加新用户
mysql -uroot -pekontrol234 -e "
CREATE USER $mysqlnewusername@'%' IDENTIFIED BY $mysqlnewuserpassword;
grant all privileges on *.* to $mysqlnewusername@'%' identified by $mysqlnewuserpassword with grant option;
use mysql;
delete from user where user='';
flush privileges;
quit"
# 4、安装php
cd $sourcedir
tar -xzvf php-7.0.31.tar.gz
cd ./php-7.0.31
./configure --prefix=/opt/php-7.0 --with-apxs2=/opt/apache-2.4/bin/apxs --with-mysql-sock=/tmp/mysql.sock --with-mysqli --enable-mysqlnd --with-pdo-mysql=mysqlnd --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
make
make install
#复制配置文件和后续变更php版本需要的库
cp php.ini-development /opt/php-7.0/lib/php.ini
cp libs/libphp7.so /opt/php-7.0/
cd ..
rm -rf php-7.0.31
#修改配置文件,vi /opt/php-7.0/lib/php.ini
phpini="/opt/php-7.0/lib/php.ini"
#将mysqli与mysql关联
sed -i "s/mysqli.default_socket\s=.*/mysqli.default_socket = \/tmp\/mysql.sock/g" $phpini
#pdo与mysql关联
sed -i "s/pdo_mysql.default_socket\s=.*/pdo_mysql.default_socket = \/tmp\/mysql.sock/g" $phpini
#时区设置
sed -i "s/^date.timezone\s=.*/date.timezone = Asia\/Shanghai/g" $phpini
#关联Apache,/etc/httpd/httpd.conf
#添加:
sed -i '1i\ AddType application\/x-httpd-php .php' $httpdconf
sed -i '2i\ AddType application\/x-httpd-php-source .phps' $httpdconf
#修改增加 index.php默认页
sed -i 's/DirectoryIndex\s*index.html/DirectoryIndex index.php index.html/g' $httpdconf
#网站下新建index.php,如下:
testphp=${webdir}"/index.php"
echo "<?php">$testphp
echo " phpinfo();">>$testphp
echo "?>">>$testphp
#重启Apache
systemctl restart httpd
#浏览器测试
# 六、Discuz安装(最好先重启下服务器)
# 1、解压Discuz,将upload下面的内容(不包括upload自身)放置到对应的Apache网站文件夹下
cd $sourcedir
tar -xzvf DiscuzX3.4.tar.gz
mv DiscuzX3.4/upload/* $webdir
rm -rf DiscuzX3.4
# 2、在mysql中新建数据库
mysql -uroot -p$mysqlrootpassword -e "
create database $mysqldatabasename;
quit
"
# 七、显示相关信息
echo "Congragulations to you!"
echo "Apache-2.4 install success!"
echo "MySql-5.6 install success!"
echo "PHP-7.0.31 install success!"
echo "*********************************************"
#mysql root password
echo "MySql root password:"$mysqlrootpassword
echo "*********************************************"
echo "MySql new user name:"$mysqlnewusername
echo "*********************************************"
echo "MySql new user password:"$mysqlnewuserpassword
echo "*********************************************"
echo "MySql new database:"$mysqldatabasename
echo "*********************************************"
#web site directory name
#echo apachewebdirname="eksheet"
echo "Website directory:"$webdir
echo "*********************************************"
# 3、在浏览器中输入对应的地址即可安装,安装需要数据库用户名密码等