【PHP环境】LAMP+DiscuzX3.4环境搭建

版权声明:本文为博主原创文章,转载注明出处 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、在浏览器中输入对应的地址即可安装,安装需要数据库用户名密码等

猜你喜欢

转载自blog.csdn.net/u010875635/article/details/82587324
今日推荐