一键部署LNMP架构和Discuz论坛的脚本

#!/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.10.5/bbs/install/index.php
#访问论坛网址:http://192.168.10.5/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<<EOF
[client]                                    
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock    
 
[mysql]                                    
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock
auto-rehash
 
[mysqld]
user = mysql 
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306    
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
EOF
#更改mysql安装目录和配置文件的属主属组
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
#设置软链接,方便系统识别
ln -s /usr/local/mysql/bin/* /usr/local/bin
ln -s /usrlocal/mysql/sbin/* /usr/local/sbin
#初始化数据库
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data &>/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 "123456\r"}
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 "exit\r"}
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
<?php
phpinfo();
?>
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

### 回答1: 好的,以下是一个在 Ubuntu 系统上一键部署 LNMPLinux + Nginx + MySQL + PHP)的脚本: ``` #!/bin/bash # 安装 Nginx sudo apt-get update sudo apt-get install nginx -y # 安装 MySQL sudo apt-get install mysql-server -y # 安装 PHP sudo apt-get install php-fpm php-mysql -y # 配置 Nginx sudo sed -i 's/index index.html index.htm;/index index.php index.html index.htm;/g' /etc/nginx/sites-available/default sudo sed -i 's/# location ~ \.php$ {/location ~ \.php$ {/g' /etc/nginx/sites-available/default sudo sed -i 's/fastcgi_pass unix:\/var\/run\/php\/php7.0-fpm.sock;/fastcgi_pass unix:\/var\/run\/php\/php7.4-fpm.sock;/g' /etc/nginx/sites-available/default sudo echo '\tinclude fastcgi.conf;' >> /etc/nginx/sites-available/default sudo echo '}' >> /etc/nginx/sites-available/default # 重启 Nginx 和 PHP-FPM sudo service nginx restart sudo service php7.4-fpm restart # 检查是否部署成功 if [ $(curl -I -m 10 -o /dev/null -s -w %{http_code} localhost) == 200 ]; then echo "LNMP has been successfully installed!" else echo "Failed to install LNMP." fi ``` 请注意,在使用此脚本之前,请确保已安装 `curl` 命令。 ### 回答2: 一键部署LNMP脚本是一种自动化脚本,可以帮助快速搭建和配置LNMPLinux+Nginx+MySQL+PHP)服务器环境。以下是一个简单的一键部署LNMP脚本的示例: ```bash #!/bin/bash # 安装必要的软件包 apt-get update apt-get install -y nginx mysql-server php-fpm # 配置Nginx rm /etc/nginx/sites-enabled/default cp /path/to/your/nginx-config /etc/nginx/sites-available/ ln -s /etc/nginx/sites-available/nginx-config /etc/nginx/sites-enabled/ service nginx restart # 配置MySQL mysql_secure_installation service mysql restart # 配置PHP cp /etc/php/7.2/fpm/php.ini /etc/php/7.2/fpm/php.ini.backup cp /path/to/your/php-config /etc/php/7.2/fpm/php.ini service php7.2-fpm restart echo "LNMP环境部署完成!" ``` 使用上述脚本,只需将Nginx配置文件和PHP配置文件替换为你实际使用的配置文件路径,然后运行脚本即可。脚本会自动更新系统软件包,安装Nginx、MySQL和PHP,并进行一些基本的配置。启动脚本后,你将拥有一个已配置好的LNMP服务器环境。 请注意,此示例仅作为参考脚本,具体配置和路径可能因操作系统和软件版本而有所不同。在实际使用中,建议根据自己的需求和环境进行适当的修改和优化。 ### 回答3: 一键部署LNMPLinux + Nginx + MySQL + PHP)脚本是一种简化LNMP环境部署的工具,可将LNMP环境快速地搭建起来。下面是一个简单的一键部署LNMP脚本: #!/bin/bash # 安装 Nginx apt-get update apt-get install -y nginx # 安装 MySQL apt-get install -y mysql-server # 安装 PHP apt-get install -y php-fpm php-mysql # 配置 Nginx echo "server { listen 80; server_name example.com; location / { root /var/www/html; index index.php index.html index.htm; try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }" > /etc/nginx/sites-available/default ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/ # 重启 Nginx service nginx restart echo "LNMP环境部署完成!" 以上脚本首先更新系统并安装Nginx、MySQL和PHP,然后配置Nginx来处理PHP文件。最后,重启Nginx服务。执行该脚本后,LNMP环境就会被快速地搭建起来,并且可以在/var/www/html目录下放置网站文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值