#!/bin/bash
#软件包:apr-1.6.2.tar、apr-util-1.6.0.tar、 boost_1_59_0.tar、 Discuz_X3.4_SC_UTF8、 mysql-5.7.17.tar、 nginx-1.12.2.tar、 php-7.1.24.tar
#数据库服务器: localhost #本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
#数据库名字: bbs
#数据库用户名: bbsuser
#数据库密码: admin123
#管理员账号: admin
#管理员密码: admin123
#论坛安装网址:http://192.168.40.100/bbs/install/index.php
#访问论坛网址:http://192.168.40.100/bbs/index.php
nginxfuwu () {
systemctl stop firewalld
systemctl disable firewalld &>/dev/null
setenforce 0
#安装依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make &>/dev/null
#创建运行用户、组(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
useradd -M -s /sbin/nologin nginx
#编译安装Nginx
cd /opt
tar zxvf nginx-1.12.2.tar.gz &>/dev/null
cd nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
echo "nginx服务正在编译安装中"
make && make install
echo "nginx服务编译安装完成"
#让系统识别nginx的操作命令
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
#添加 Nginx 系统服务
cat > /lib/systemd/system/nginx.service << EOF
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service &>/dev/null
}
mysqlfuwu () {
#安装依赖包
cd /opt
yum -y install ncurses ncurses-devel bison cmake &>/dev/null
#创建运行用户
useradd -M -s /sbin/nologin mysql
#解压压缩包
tar zxvf mysql-5.7.17.tar.gz -C /opt &>/dev/null
tar zxvf boost_1_59_0.tar.gz -C /usr/local/ &>/dev/null
mv /usr/local/boost_1_59_0 /usr/local/boost
echo "mysql服务正在编译安装中,请等待"
cd /opt/mysql-5.7.17/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DSYSCONFDIR=/etc -DSYSTEMD_PID_DIR=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=/usr/local/boost -DWITH_SYSTEMD=1
make -j4
make install
echo "mysql服务编译安装完成"
#配置mysql文件
cat > /etc/my.cnf</dev/null
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld &>/dev/null
#下载expect命令软件包
yum install -y expect
#修改mysql 的登录密码
function abc {
passwd=$1
/usr/bin/expect <<-EOF
spawn mysqladmin -u root -p password $passwd
expect "Enter password:"
send "r"
expect eof
EOF
}
abc "123456"
#登陆数据库创建用户
function bcd {
/usr/bin/expect <<-EOF
spawn mysql -u root -p
expect "Enter password:" {send "123456r"}
expect "mysql>" {send "CREATE DATABASE bbs;r"}
expect "mysql>" {send "GRANT all ON bbs.* TO 'bbsuser'@'%'IDENTIFIED BY 'admin123';r"}
expect "mysql>" {send "GRANT all ON bbs.* TO 'bbsuser'@'localhost'IDENTIFIED BY 'admin123';r"}
expect "mysql>" {send "flush privileges;r"}
expect "mysql>" {send "exitr"}
expect eof
EOF
}
bcd
}
#安装配置 PHP 解析环境
phpfuwu () {
#安装环境依赖包
cd /opt
yum -y install gd
libjpeg libjpeg-devel
libpng libpng-devel
freetype freetype-devel
libxml2 libxml2-devel
zlib zlib-devel
curl curl-devel
openssl openssl-devel &>/dev/null
cd /opt
tar zxvf php-7.1.24.tar.gz &>/dev/null
cd /opt/php-7.1.24/
echo "php服务正在编译安装,请稍后"
./configure
--prefix=/usr/local/php
--with-mysql-sock=/usr/local/mysql/mysql.sock
--with-mysqli
--with-zlib
--with-curl
--with-gd
--with-jpeg-dir
--with-png-dir
--with-freetype-dir
--with-openssl
--enable-fpm
--enable-mbstring
--enable-xml
--enable-session
--enable-ftp
--enable-pdo
--enable-tokenizer
--enable-zip &>/dev/null
make && make install &>/dev/null
echo "php服务编译安装完成"
#路径优化
ln -s /usr/local/php/bin/* /usr/local/bin/
#调整PHP配置文件
#php有三个配置文件:
#php.ini 主配置文件
#php-fpm.conf 进程服务配置文件
#www.conf 扩展配置文件
#调整主配置文件
cd /usr/local/
mkdir php
cd php
cp /opt/php-7.1.24/php.ini-development /usr/local/php/php.ini
#删除第1170行
sed -i '1170d' /usr/local/php/php.ini
#在第1170行插入内容
sed -i "1169a mysqli.default_socket = /usr/local/mysql/mysql.sock" /usr/local/php/php.ini
sed -i '939d' /usr/local/php/php.ini
sed -i "938a date.timezone = Asia/Shanghai" /usr/local/php/php.ini
#调整进程服务配置文件
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
#将17行内容替换
sed -i '17c pid = run/php-fpm.pid' /usr/local/php/etc/php-fpm.conf
#调整扩展配置文件
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
#启动php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
#配置 Nginx 支持 PHP 解析
#将65到71开头的#去掉
sed -i '65,71s/#//' /usr/local/nginx/conf/nginx.conf
#将69行的script替换成usr/local/nginx/html
sed -i '69s/scripts/usr/local/nginx/html/' /usr/local/nginx/conf/nginx.conf
#安装nginx已修改好
systemctl restart nginx.service
#验证PHP 测试页
cat > /usr/local/nginx/html/index.php<
EOF
}
#部署Discuz!社区论坛 web应用
discuzfuwu () {
cd /opt
unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis &>/dev/null
cd /opt/dis/dir_SC_UTF8
cp -r upload /usr/local/nginx/html/bbs
cd /usr/local/nginx/html/bbs
chown -R root:nginx ./config
chown -R root:nginx ./data
chown -R root:nginx ./uc_client
chown -R root:nginx ./uc_server
chmod -R 777 ./config
chmod -R 777 ./data
chmod -R 777 ./uc_client
chmod -R 777 ./uc_server
}
nginxfuwu
mysqlfuwu
phpfuwu
discuzfuwu