#!/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 " 33[33m用户 33[32m www 33[0m已经存在 33[0m"
else
echo -e " 33[31m将创建LNMP管理用户www 33[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 " 33[33m用户 33[32m mysql 33[0m已经存在 33[0m"
else
echo -e " 33[31m将创建LNMP管理用户mysql 33[0m" && sleep 2
useradd -s /sbin/nologin mysql
fi
CMAKE() {
echo -e " 33[32m 正在安装cmake 33[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 " 33[32m 正在安装boost 33[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 " 33[32m 正在安装mysql 33[0mn" && 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 " 33[31m 安装成功 33[0m"
else
rm -rf /usr/local/src/mysql-5.7.37
rm -rf /usr/local/mysql
userdel -r mysql && echo -e " 33[31m 安装失败,正在清除 33[0m"
exit 0
fi
fi
}
MYSQL_init() {
echo -e " 33[32m 将开启MYsql 33[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 " 33[32m 开始写入配置 33[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 " 33[0m即将开始安装Nginx服务...... 33[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 " 33[32mNginx编译成功...... 33[0m"
else
echo -e " 33[31mNginx编译失败...... 33[0m"
sleep 2
exit 1
fi
fi
}
nginx_init() {
cat > /usr/local/nginx/conf/nginx.conf <
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 " 33[32mNginx主配置文件已写入... 33[0mn" && 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 <
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 " 33[32mNginx区域配置文件已写入... 33[0mn" && sleep 4
}
NGINX() {
nginx_install
nginx_init
}
php_install() {
echo -e " 33[32m 开始安装PHP需要的依赖........ 33[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 " 33[32m 开始安装PHP 33[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 " 33[31m 编译PHP时出现问题... 33[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 <
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 " 33[32mPHP主配文件写入完毕 33[0mn" && sleep 2
cat > /usr/local/php/etc/php-fpm.d/www.conf <
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 " 33[32mPHP子配文件写入完毕 33[0mn" && sleep 2
/usr/local/php/sbin/php-fpm -t 2>> /root/lanmp_error.log
if [ $? -eq 0 ]
then
echo -e " 33[32m配置文件正确...... 33[0m"
else
echo -e " 33[31m配置文件存在问题,请在安装结束后进行调整...... 33[0m"
echo -e " 33[31m 详细请查看 33[32m /root/lanmp_error.log 33[0m文件 33[0m"
sleep 6
fi
fi
}
PHP() {
php_install
php_init
}
sql_nginx() {
echo -e " 33[32m即将开始mysql数据库初始化......n请按提示操作 33[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 " 33[31mn上面输出的 33[32m root:xxxx 33[0mnroot后面的字符为你的mysql初始root密码 33[0m"
source /etc/profile && sleep 2
read -p "你的初始密码是:" you_put
read -p "请设置新的MYSQLroot密码:" NEW_pwd
service mysql start
echo -e " 33[32m请更改root密码(与上面一致) 33[0m 33[31m格式:set password='密码'; 33[0m n然后回车,再"exit;""
sleep 2
mysql -uroot -p$you_put
sleep 2
echo -e " 33[32m开始创建nginx的数据库 33[0m"
read -p "请输入数据库名称:" SQL_name
read -p "请设置数据库用户名:" SQL_user
read -p "请设置数据库密码:" SQL_pwd
echo -e " 33[31m主机名必须经过更改,否则默认的 33[32mlocalhost 33[0m会出现'与数据库建立连接失败' 33[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 " 33[32mNginx的CMS拷贝完毕 33[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 " 33[41;36m请运行脚本前修改主机名,后面时请输入你修改的主机名 33[0m"
echo -e " 33[32m为了支持脚本运行你需要准备: 33[33mn boost_1_59_0.tar.gzn cmake-3.9.0.tar.gzn mysql-5.7.37.tar.gzn nginx-1.21.6.tar.gzn php-8.0.20.tar.gzn wordpress-6.0-zh_CN.tar.gzn 33[0m以上6个安装包(位置: 33[31m/usr/local/src 33[0m) 33[0m"
echo -e " 33[36m安装包链接链接:链接:https://pan.baidu.com/s/1uPMMqK2v7-TKKcqARD9tpA 提取码:1234 33[0m"
read -p "你是否已准备好(yes or no):" I
if [ $I == "no" ];then
echo "即将退出......" && sleep 4
exit 0
else
echo "将继续执行......" && sleep 2
fi
echo -e " 33[31m 提示:请按照顺序来安装 33[33m n1.MYSQLn2.NGINXn3.PHPn4.sql_nginx 33[0m 33[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 " 33[32m即将启动服务...... 33[0m"
/usr/local/nginx/sbin/nginx && sleep 2
/usr/local/php/sbin/php-fpm && sleep 2
echo -e " 33[32m重要账号信息位于:/root/.lanmp_count.txt 33[0m"
echo -e " 33[32m现在可以通过IP: 33[33m`ip a|grep ens|grep inet|awk '{print$2}'|awk -F'/' '{print$1}'` 33[0m在浏览器访问了 33[0m"
;;
*)
echo "你输入的是其他选择,现在只能选择这些"
esac



