LNMP脚本一键部署
#!/bin/bash
#function:练习
#author:ming 20220614
if [ $USER == 'root' ]
then
echo '管理员,你好'
else
echo '你不是管理员,请使用管理员账号登录,以继续操作'
sleep 2
exit
fi
Websit=www.feixeer.com
ping $Websit -c 4 &> /dev/null
if [ $? == 0 ]
then
echo "外网可以正常访问"
else
echo "请检查你的网络设置"
fi
systemctl status firewalld.service &> /dev/null
if [ $? != 0 ]
then
echo "你的防火墙没有在运行"
else
systemctl stop firewalld.service
systemctl disable firewalld.service
echo "已关闭你的防火墙"
fi
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config && echo "关闭selinux"
if [ `cat /etc/passwd |grep www |awk -F':' '{print$1}'` == "www" ] &> /dev/null;then
echo -e "\033[33m用户\033[32m www \033[0m已经存在\033[0m"
else
echo -e "\033[31m将创建LNMP管理用户www\033[0m" && sleep 2
useradd -s /sbin/nologin www
fi
if [ `cat /etc/passwd |grep mysql |awk -F':' '{print$1}'` == "mysql" ] &> /dev/null;then
echo -e "\033[33m用户\033[32m mysql \033[0m已经存在\033[0m"
else
echo -e "\033[31m将创建LNMP管理用户mysql\033[0m" && sleep 2
useradd -s /sbin/nologin mysql
fi
CMAKE() {
echo -e "\033[32m 正在安装cmake\033[0m" && sleep 3
cd /usr/local/src
if [ -f cmake-3.9.0.tar.gz ];then
tar xfz cmake-3.9.0.tar.gz
cd cmake-3.9.0
./configure 2>/root/cmake_error.log
make && make install
fi
}
BOOST() {
echo -e "\033[32m 正在安装boost\033[0m" && sleep 2
cd /usr/local/src
if [ -f boost_1_59_0.tar.gz ];then
tar xfz boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/boost
fi
}
MYSQL_install() {
echo -e "\033[32m 正在安装mysql\033[0m\n" && sleep 4
if [ ! -d /usr/local/mysql/data ]
then
mkdir -pv /usr/local/mysql/data
fi
yum install -y ncurses-devel* libtirpc* rpcgen* gcc openssl* gcc-* bzip2-* bison
cd /usr/local/src
if [ -f mysql-5.7.37.tar.gz ];then
tar xfz mysql-5.7.37.tar.gz
cd mysql-5.7.37
cmake . \
-DCMAKE\_INSTALL\_PREFIX=/usr/local/mysql -DMYSQL\_DATADIR=/usr/local/mysql/data/ \
-DMYSQL\_UNIX\_ADDR=/usr/local/mysql/mysql.sock -DWITH\_INNOBASE\_STORAGE\_ENGINE=1 \
-DWITH\_MYISAM\_STORAGE\_ENGINE=1 -DENABLED\_LOCAL\_INFILE=1 -DEXTRA\_CHARSETS=all \
-DDEFAULT\_CHARSET=utf8 -DDEFAULT\_COLLATION=utf8\_general\_ci -DMYSQL\_USER=mysql \
-DWITH\_DEBUG=0 -DWITH\_EMBEDDED\_SERVER=1 -DDOWNLOAD_BOOST=1 -DENABLE_DOWNLOADS=1 -DWITH_BOOST=/usr/local/boost
sleep 2
make && make install
if [ $? -eq 0 ];then
echo -e "\033[31m 安装成功\033[0m"
else
rm -rf /usr/local/src/mysql-5.7.37
rm -rf /usr/local/mysql
userdel -r mysql && echo -e "\033[31m 安装失败,正在清除\033[0m"
exit 0
fi
fi
}
MYSQL_init() {
echo -e "\033[32m 将开启MYsql\033[0m" && sleep 4
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
chown mysql.mysql /usr/local/mysql/ -R
ln -sf /usr/local/mysql/bin /usr/bin
ln -sf /usr/local/mysql/lib /usr/lib
if [ ! -f /etc/my.cnf ];then
touch /etc/my.cnf
echo "[mysqld]" > /etc/my.cnf
echo "datadir=/usr/local/mysql/data" >> /etc/my.cnf
echo "socket=/usr/local/mysql/mysql.sock" >> /etc/my.cnf
echo "log-error=/var/log/mysql.log" >> /etc/my.cnf
fi
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile && sleep 2
echo -e "\033[32m 开始写入配置 \033[0m"
if [ -f /etc/my.cnf ]
then
sed -i -e 's:datadir=.*:datadir=/usr/local/mysql/data:g' /etc/my.cnf
sed -i -e 's:socket=.*:socket=/usr/local/mysql/mysql.sock:g' /etc/my.cnf
sed -i -e 's:log-error=.*:log-error=/var/log/mysql.log:g' /etc/my.cnf
fi
}
MYSQL() {
CMAKE
BOOST
MYSQL_install
MYSQL_init
}
nginx_install() {
echo -e "\033[0m即将开始安装Nginx服务......\033[0m" && sleep 4
cd /usr/local/src
yum install -y gcc openssl-devel libxml2-devel libxslt-devel gd-devel perl-devel* perl-ExtUtils-Embed
sleep 4
if [ -f nginx-1.21.6.tar.gz ];then
tar xfz nginx-1.21.6.tar.gz
cd nginx-1.21.6
./configure \
--prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_realip_module \
--with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module \
--with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module \
--with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module \
--with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_perl_module=dynamic \
--with-threads --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module \
--with-http_slice_module --with-mail --with-mail_ssl_module --with-compat --with-file-aio --with-http_v2_module
make && make install
if [ $? -eq 0 ];then
echo -e "\033[32mNginx编译成功......\033[0m"
else
echo -e "\033[31mNginx编译失败......\033[0m"
sleep 2
exit 1
fi
fi
}
nginx_init() {
cat > /usr/local/nginx/conf/nginx.conf <<EOF
user www www;
worker_processes 2;
worker_rlimit_nofile 65535;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 10240;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '\$remote_addr - \$remote_user [\$time_local] "\$request" '
'\$status \$body_bytes_sent "\$http_referer" '
'"\$http_user_agent" "\$http_x_forwarded_for"';
access_log logs/access.log main;
server_tokens off;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
include /usr/local/nginx/conf/conf.d/*.conf;
}
EOF
echo -e "\033[32mNginx主配置文件已写入...\033[0m\n" && sleep 2
if [ ! -d /usr/local/nginx/conf/conf.d ];then
mkdir /usr/local/nginx/conf/conf.d
fi
cat > /usr/local/nginx/conf/conf.d/www.nginx.conf <<EOF
server {
listen 80;
root html/web01;
server_name localhost;
index index.php index.html index.htm;
location ~ \.php(.*)$ {
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$DOCUMENT_ROOT\$fastcgi_script_name;
fastcgi_param PATH_INFO \$2;
include fastcgi.conf;
fastcgi_connect_timeout 180;
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
}
location ~ /\.ht {
deny all;
}
location / {
try_files \$uri \$uri/ /?\$args;
}
}
EOF
echo -e "\033[32mNginx区域配置文件已写入...\033[0m\n" && sleep 4
}
NGINX() {
nginx_install
nginx_init
}
php_install() {
echo -e "\033[32m 开始安装PHP需要的依赖........ \033[0m" && sleep 2
yum install -y gcc-c++ libxml2 libzip libxml2-devel openssl openssl-devel \
bzip2 bzip2-devel libcurl libcurl-devel* libjpeg libjpeg-devel libpng libpng-devel \
freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel \
gd net-snmp-devel* oniguruma* sqlite-devel*
yum install -y https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.7.1-1.el7.remi.x86_64.rpm
yum install -y https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel-6.9.7.1-1.el7.remi.x86_64.rpm
sleep 2
echo -e "\033[32m 开始安装PHP\033[0m " && sleep 2
cd /usr/local/src
if [ -f php-8.0.20.tar.gz ];then
tar xfz php-8.0.20.tar.gz
cd php-8.0.20
./configure \
--prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=mysqlnd \
--enable-pdo --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/ --enable-fpm --with-fpm-user=www \
--with-fpm-group=www --with-pcre-regex --with-zlib --with-bz2 --enable-calendar --disable-phar --with-curl \
--enable-dba --with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir \
--with-freetype-dir --enable-gd-jis-conv --with-mhash --enable-mbstring --enable-opcache=yes --enable-pcntl \
--enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath --with-snmp --disable-ipv6 \
--with-gettext --disable-rpath --disable-debug --enable-embedded-mysqli --with-mysql-sock=/usr/local/mysql/
if [ $? -eq 0 ];then
make && make install
else
echo -e "\033[31m 编译PHP时出现问题... \033[0m"
cd /usr/local/src
rm -rf php-8.0.20
exit 0
fi
fi
}
php_init() {
if [ -d /usr/local/php/etc ];then
cp /usr/local/src/php-8.0.20/php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/src/php-8.0.20/sapi/fpm/php-fpm.service /etc/systemd/system/
systemctl daemon-reload
chown www.www /usr/local/php -R
cat > /usr/local/php/etc/php-fpm.conf <<EOF
[global]
pid = /run/php-fpm.pid
error_log = /var/log/php-fpm.log
log_level = notice
daemonize = yes
include = /usr/local/php/etc/php-fpm.d/*.conf
EOF
echo -e "\033[32mPHP主配文件写入完毕\033[0m\n" && sleep 2
cat > /usr/local/php/etc/php-fpm.d/www.conf <<EOF
[www]
listen = /dev/shm/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
user = www
group = www
listen.owner = www
listen.group = www
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
EOF
echo -e "\033[32mPHP子配文件写入完毕\033[0m\n" && sleep 2
/usr/local/php/sbin/php-fpm -t 2>> /root/lanmp_error.log
if [ $? -eq 0 ]
then
echo -e "\033[32m配置文件正确......\033[0m"
else
echo -e "\033[31m配置文件存在问题,请在安装结束后进行调整......\033[0m"
echo -e "\033[31m 详细请查看\033[32m /root/lanmp_error.log\033[0m文件\033[0m"
sleep 6
fi
fi
}
PHP() {
php_install
php_init
}
sql_nginx() {
echo -e "\033[32m即将开始mysql数据库初始化......\n请按提示操作\033[0m" && sleep 4
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --explicit_defaults_for_timestamp
echo -e "\033[31m\n上面输出的\033[32m root:xxxx \033[0m\nroot后面的字符为你的mysql初始root密码\033[0m"
source /etc/profile && sleep 2
read -p "你的初始密码是:" you_put
read -p "请设置新的MYSQLroot密码:" NEW_pwd
service mysql start
echo -e "\033[32m请更改root密码(与上面一致)\033[0m \033[31m格式:set password='密码';\033[0m \n然后回车,再\"exit;\""
sleep 2
mysql -uroot -p$you_put
sleep 2
echo -e "\033[32m开始创建nginx的数据库\033[0m"
read -p "请输入数据库名称:" SQL_name
read -p "请设置数据库用户名:" SQL_user
read -p "请设置数据库密码:" SQL_pwd
echo -e "\033[31m主机名必须经过更改,否则默认的\033[32mlocalhost\033[0m会出现'与数据库建立连接失败'\033[0m" && sleep 2
read -p "请设置预更改的主机名(或已更改的主机名):" SQL_host
mysql -uroot -p$NEW_pwd -e "CREATE DATABASE $SQL_name;"
mysql -uroot -p$NEW_pwd -e "CREATE USER '$SQL_user'@'localhost' IDENTIFIED BY '$SQL_pwd';"
mysql -uroot -p$NEW_pwd -e "GRANT ALL ON $SQL_name.* TO '$SQL_user'@'$SQL_host' IDENTIFIED BY '$SQL_pwd';"
mysql -uroot -p$NEW_pwd -e "GRANT ALL ON $SQL_name.* TO '$SQL_user'@'localhost' IDENTIFIED BY '$SQL_pwd';"
mysql -uroot -p$NEW_pwd -e "FLUSH PRIVILEGES;"
sleep 2
cd /usr/local/src
tar xfz wordpress-6.0-zh_CN.tar.gz
mv wordpress/wp-config-sample.php wordpress/wp-config.php
sed -i -e "s/database_name_here/$SQL_name/g" wordpress/wp-config.php
sed -i -e "s/username_here/$SQL_user/g" wordpress/wp-config.php
sed -i -e "s/password_here/$SQL_pwd/g" wordpress/wp-config.php
sed -i -e "s/localhost/$SQL_host/g" wordpress/wp-config.php
mkdir /usr/local/nginx/html/web01
cp -r /usr/local/src/wordpress/* /usr/local/nginx/html/web01/
sleep 2
echo -e "\033[32mNginx的CMS拷贝完毕\033[0m"
echo -e "新的MYSQLroot密码:$NEW_pwd \n新创建的数据库名称:$SQL_name \n新创建的数据库用户名:$SQL_user \n新创建的数据库密码:$SQL_pwd \n更改的主机名:$SQL_host" > /root/.lanmp_count.txt
}
yum -y install gcc*
echo -e "\033[41;36m请运行脚本前修改主机名,后面时请输入你修改的主机名 \033[0m"
echo -e "\033[32m为了支持脚本运行你需要准备:\033[33m\n boost_1_59_0.tar.gz\n cmake-3.9.0.tar.gz\n mysql-5.7.37.tar.gz\n nginx-1.21.6.tar.gz\n php-8.0.20.tar.gz\n wordpress-6.0-zh_CN.tar.gz\n\033[0m以上6个安装包(位置:\033[31m/usr/local/src\033[0m)\033[0m"
echo -e "\033[36m安装包链接链接:链接:https://pan.baidu.com/s/1uPMMqK2v7-TKKcqARD9tpA 提取码:1234\033[0m"
read -p "你是否已准备好(yes or no):" I
if [ $I == "no" ];then
echo "即将退出......" && sleep 4
exit 0
else
echo "将继续执行......" && sleep 2
fi
echo -e "\033[31m 提示:请按照顺序来安装\033[33m \n1.MYSQL\n2.NGINX\n3.PHP\n4.sql_nginx\033[0m \033[0m"
read -p "请输入一个数字并按Enter键确认:" QQ
case "$QQ" in
1)
echo "正在安装MYSQL"
MYSQL
;;
2)
echo "正在安装NGINX"
NGINX
;;
3)
echo "正在安装PHP"
PHP
;;
4)
echo "正在更改配置文件并安装cms"
sql_nginx
echo -e "\033[32m即将启动服务......\033[0m"
/usr/local/nginx/sbin/nginx && sleep 2
/usr/local/php/sbin/php-fpm && sleep 2
echo -e "\033[32m重要账号信息位于:/root/.lanmp_count.txt\033[0m"
echo -e "\033[32m现在可以通过IP:\033[33m`ip a|grep ens|grep inet|awk '{print$2}'|awk -F'/' '{print$1}'`\033[0m在浏览器访问了\033[0m"
;;
*)
echo "你输入的是其他选择,现在只能选择这些"
esac
LNMP脚本一键部署相关推荐
- shell脚本一键部署lnmp架构
shell脚本一键部署lnmp架构 1. 创建存放脚本的目录 2. 创建脚本文件 3. 编写脚本 4. 通过IP地址直接访问PHP界面 1. 创建存放脚本的目录 [root@localhost ~]# ...
- shell脚本 一键部署 Lnmp 及社区论坛 服务架构
shell脚本 一键部署 Lnmp 一键部署 Lnmp 一键部署 注:亲,记得把所需要的软件包,先放到/opt目录中:以及该机子的内存大小.核数先设置好! #!/bin/bash #先配置好yum e ...
- shell脚本一键部署LNMP
前言 使用shell脚本一键部署LNMP需要的安装包 nginx-1.15.9.tar.gz mysql-boost-5.7.20.tar.gz php-7.1.10.tar.bz2 Discuz_X ...
- Centos6.5可视化界面脚本一键部署服务
该脚本目前支持Jdk.Tomcat.Oracle.Mysql.MongDb.LAMP.LNMP.服务的部署[Oracle支持Centos所有版本] 该脚本一些命令,思想参考了百度,甚至是csdn大佬一 ...
- lnmp的一键部署(脚本)
#!/bin/bash #安装环境依赖包 systemctl stop firewalld systemctl disable firewalld setenforce 0 yum -y instal ...
- 使用shell脚本一键部署LNMP架构
#/bin/bash##将需要的安装包传到/opt目录下,并关闭防火墙 systemctl stop firewalld systemctl disable firewalld &>/d ...
- centos7 ssr一键脚本_RHEL7(Centos7)下使用shell脚本一键部署服务
今天配置服务觉得有些麻烦,想着写一个能一键配置nfs服务端的shell脚本,当然在安装之前需要配置一个yum源,所以我一并将这些功能写在了一个shell脚本里. 脚本如下: #author:Roya ...
- 脚本一键部署 (DHCP、dns、pxe、raid、nfs+apache+expect、lvm、磁盘分区、监控资源)
目录 一.DHCP 二.DNS 三.PXE(一键装机) 四.RAID 五.DFS+APACHE+免密登录(expect) 六.LVM 七.磁盘分区 八.监控资源(cpu.内存等) 九.系统信息(主机名 ...
- 脚本一键部署(dhcp、dns、pxe、raid、nfs+apache+expect、lvm、磁盘分区、监控资源)
目录 一.DHCP 二.DNS 三.PXE(一键装机) 四.RAID 五.DFS+APACHE+免密登录(expect) 六.LVM 七.磁盘分区 八.监控资源(cpu.内存等) 九.系统信息(主机名 ...
最新文章
- Android Preference 须知
- 科目三中模拟灯光使用考试常见的错误 广州学车网光大国际驾校学车
- web service基础知识
- perl 中文处理 乱码
- 智慧故事----每次进来看看都会有收获
- mysql查找多个表并更新值_Mysql子查询,连接,多表更新
- unique path 阶梯
- 华为交换机S3700基本配置
- Excel文件内容比对 -- Java Apache Poi
- Spring与Spring Framework的入门介绍以及学习文章整理
- 利用msf 对靶机metasploittable2 进行信息收集
- 自定义组件使用v-modle
- 大数据揭秘区块链人才大迁徙:那个你身边悄悄离职的人去哪儿了?
- 【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令-用户账户管理-文件(夹)共享(net)
- 什么是计算机?计算机硬件详细介绍和参数解读[2]
- 如何做好微信朋友圈推广?
- 实名认证需谨慎,避免陷入隐私泄露风险
- 王垠的面试 和 P 与 NP
- fatal: 无法访问 ‘‘github.com/“:GnuTLS recv error (-110): The TLS connection was non-properly terminated.
- HiPER月光网吧宽带安全网关接入解决方案(转)
热门文章
- ipvsadm命令方法
- 教你用canvas画n角星星
- 华为APP安装问题:更新包与已安装应用的签名不一致
- 怎么理清自己的编程思路
- 分组密码与高级加密标准(一)
- java群面_【埃森哲Java面试】一共有三面吧,第一面群面,第二面技术吧。-看准网...
- Python发送网络请求(requests)
- 车载诊断测试——无诊断数据库怎么使用CANoe做诊断测试?
- 华为云网站备案操作流程
- gearman java_gearman安装,提示错误:configure: error: could not find boost