用SHELL脚本搭建lnmp

    技术2022-07-16  81

    前言

    本实验在centos7和rhel7.6中运行成功

    需要实验环境有yum源,nginx-1.18.0.tar,mysql-boost-5.7.30.tar,php-7.4.1.tar包和两个devel包oniguruma-5.9.5-3.el7.x86_64.rpm和oniguruma-devel-5.9.5-3.el7.x86_64.rpm

    脚本内容

    #!/bin/bash #------------------------------------------- # Filename: install_lnmp.sh # Revision: 1.0 # Lastdate: 2020/7/1 # Author: 海蜘蛛 # Description: lnmp安装配置 #------------------------------------------- ##########################变量声明############################# #----------------------------------MySQL------------------------- M_SFILE=mysql-boost-5.7.30.tar.gz M_FILE=mysql-5.7.30 M_FILE_DIR=/mysql-5.7.30 M_PREFIX=/usr/local/lnmp/mysql #---------------------------------nginx-------------------------- N_SFILE=nginx-1.18.0.tar.gz N_FILE=nginx-1.18.0 N_FILE_DIR=/nginx-1.18.0 N_PREFIX=/usr/local/lnmp/nginx #----------------------------------php---------------------------- P_SFILE=php-7.4.1.tar.gz P_FILE=php-7.4.1 P_FILE_DIR=/php-7.4.1 P_PREFIX=/usr/local/lnmp/php #############################菜单################################# echo -e '---------------------------' if [ -z "$1" ];then echo "1)编译安装Nginx" echo "2)编译安装MySQL" echo "3)编译安装PHP" echo "4)一键安装lnmp" echo "Usage: { /bin/sh $0 1|2|3|4|--help}" exit fi if [[ "$1" -eq "help" ]];then echo "Please select Install Menu following:" echo "1)编译安装Nginx" echo "2)编译安装MySQL" echo "3)编译安装PHP" echo "4)一键安装lnmp" echo "Usage: { /bin/sh $0 1|2|3|4|--help}" exit fi #############################函数######################### prepare(){ # echo "挂载共享文件" # mountfile echo "拷贝所需要的文件到根目录" copytarfile echo "安装所需要的二进制文件" installdevel echo "创建所需要的的用户" createuser echo "关闭火墙和selinux" stopfire } # mountfile(){ # mount /dev/cdrom /softwaresource # mount //192.168.1.178/lnmp /mnt/ -o //共享主机ip/共享文件 /mnt/ username=共享主机名,password=********* # } copytarfile(){ cp /mnt/$N_SFILE / tar -zxf /$N_SFILE cp /mnt/$M_SFILE / tar -zxf /$M_SFILE cp /mnt/$P_SFILE / tar -zxf /$P_SFILE cp /mnt/oniguruma-5.9.5-3.el7.x86_64.rpm / cp /mnt/oniguruma-devel-5.9.5-3.el7.x86_64.rpm / } installdevel(){ yum install -y samba-client yum install -y gcc gcc-c++ ncurses-devel bison cmake openssl-devel.x86_64 yum install -y libxml2-devel.x86_64 sqlite-devel.x86_64 libpng-devel.x86_64 -y yum install -y oniguruma-5.9.5-3.el7.x86_64.rpm oniguruma-devel-5.9.5-3.el7.x86_64.rpm } createuser(){ useradd -s /sbin/nologin -M mysql useradd -s /sbin/nologin -M nginx } stopfire(){ systemctl stop firewalld setenforce 0 } #————————————————————————————————————————installpackages———————————————————————————————————————————————— installnginx(){ cd $N_FILE_DIR && ./configure --prefix=$N_PREFIX --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx make && make install } installmysql(){ cd $M_FILE_DIR && cmake -DCMAKE_INSTALL_PREFIX=$M_PREFIX -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PROT=3306 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=boost/boost_1_59_0/ make && make install } installphp(){ cd $P_FILE_DIR && ./configure --prefix=$P_PREFIX --with-config-file-path=/usr/local/lnmp/php/etc --with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/lnmp/mysql --enable-gd --without-pear --enable-fpm make && make install } #——————————————————————————————————————configpackages———————————————————————————————————————————————————— confignginx(){ sed -i '45cindex index.php index.html index.htm;' $N_PREFIX/conf/nginx.conf sed -i '65,68s/#//g' $N_PREFIX/conf/nginx.conf sed -i '70,71s/#//g' $N_PREFIX/conf/nginx.conf sed -i '70cinclude fastcgi.conf;' $N_PREFIX/conf/nginx.conf ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/bin/ } configmysql(){ mkdir $M_PREFIX/data chown -R root $M_PREFIX chown -R mysql $M_PREFIX/data ln -s $M_PREFIX/bin/* /usr/local/bin mv /etc/my.cnf /etc/my.cnf.bak cp $M_PREFIX/mysql-test/include/default_my.cnf /etc/my.cnf cp -a $M_PREFIX/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig mysqld on } configphp(){ cp $P_PREFIX/etc/php-fpm.conf.default $P_PREFIX/etc/php-fpm.conf sed -i '/\[global\]/a pid = run/php-fpm.pid' $P_PREFIX/etc/php-fpm.conf cd $P_PREFIX/etc/php-fpm.d && cp www.conf.default www.conf sed -i '23cuser = nginx ' $P_PREFIX/etc/php-fpm.d/www.conf # 将文件23行替换 sed -i '24cgroup = nginx ' $P_PREFIX/etc/php-fpm.d/www.conf # 将文件24行替换 cp $P_FILE_DIR/php.ini-production $P_PREFIX/etc/php.ini sed -i '/\[data\]/a data.timezone = Asia/Shanghai ' $P_PREFIX/etc/php.ini cp $P_FILE_DIR/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm } ############################菜单实现####################### #-----------------------------------install nginx-------------------------- if [[ "$1" -eq "1" ]];then prepare echo "最初的准备工作完成" installnginx echo "nginx安装完成" confignginx echo "nginx配置完成" nginx echo "nginx已经打开" touch $N_PREFIX/html/index.php cat > $N_PREFIX/html/index.php <<EOF <?php phpinfo(); ?> EOF fi #-----------------------------------install MySQL------------------------------- if [[ "$1" -eq "2" ]];then installmysql echo "mysql安装完成" configmysql echo "mysql配置完成" mysqld --user=mysql --initialize-insecure --basedir=$M_PREFIX --datadir=$M_PREFIX/data systemctl start mysql.service mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '0000';" echo "mysql已经打开" fi #-----------------------------------install PHP----------------------------------- if [[ "$1" -eq "3" ]];then installphp echo "php安装完成" configphp echo "php配置完成" /etc/init.d/php-fpm start echo "php已经启动" fi #----------------------------------onestepinstall------------------------------------- if [[ "$1" -eq "4" ]];then prepare echo "最初的准备工作完成" installmysql echo "mysql安装完成" configmysql echo "mysql配置完成" mysqld --user=mysql --initialize-insecure --basedir=$M_PREFIX --datadir=$M_PREFIX/data systemctl start mysql.service mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '0000';" echo "mysql已经打开" installnginx echo "nginx安装完成" confignginx echo "nginx配置完成" nginx echo "nginx已经打开" touch $N_PREFIX/html/index.php cat > $N_PREFIX/html/index.php <<EOF <?php phpinfo(); ?> EOF installphp echo "php安装完成" configphp echo "php配置完成" /etc/init.d/php-fpm start echo "php已经启动" fi

    后记

    在测试过程中,学会打快照对于实验的进行非常有用与方便

    Processed: 0.018, SQL: 9