一键搭建博客脚本LNMP(非编译)Wordpress

一、脚本内容

脚本211行,动动你的小手滚动查看

#!/bin/bash
#
#********************************************************************
#Author:        lhl
#FileName:      lnmp.sh
#Description:       LNMP wordpress 博客系统
#********************************************************************


HTML_DIR=/usr/share/nginx/html
WORDPRESS='latest-zh_CN.tar.gz'
COLOR_TRUE="echo -e \\033[01;32m"
COLOR_FALSE="echo -e \\033[01;31m"
END='\033[0m'
MYSQL_ROOT_PASSWORD='Lhl*513'
MYSQL_WORDPRESS_PASSWORD='Lhl*513'

install_nginx(){
    $COLOR_TRUE"开始安装Nginx"$END
    if [ -d /etc/nginx ];then
    $COLOR_FALSE"Nginx已存在,安装失败"$END
        exit
    fi
    cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx]
name = nginx repo
baseurl = https://nginx.org/packages/mainline/centos/7/\$basearch/
gpgcheck = 0
enabled = 1
EOF
    yum install -y -q nginx &> /dev/null
    [ $? -eq 0 ] && $COLOR_TRUE"NGINX安装成功"$END ||  { $COLOR_FALSE"NGINX安装失败,退出!"$END;exit; }
    
    cat > /etc/nginx/conf.d/default.conf <<EOF
server {
    listen       80;
    root   /usr/share/nginx/html;
    server_name  localhost;


    location / {
          index index.php index.html index.htm;
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   /usr/share/nginx/html;
    }


    location ~ .php$ {
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;
      include        fastcgi_params;
    }
}
EOF




    cat > /etc/nginx/nginx.conf <<EOF


user  nginx;
worker_processes  auto;


error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;




events {
    worker_connections  10240;
}




http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;


    client_max_body_size 100m;
    
    sendfile        on;
    #tcp_nopush     on;


    keepalive_timeout  65;


    #gzip  on;


    server_tokens off;


    include /etc/nginx/conf.d/*.conf;
}
EOF


#    cat > /usr/lib/systemd/system/nginx.service <<EOF
#[Unit]
#After=network.target remote-fs.target nss-lookup.target
#
#[Service]
#Type=forking
#
#ExecStart=/usr/sbin/nginx
#ExecReload=/usr/sbin/nginx -s reload
#ExecStop=/usr/sbin/nginx -s stop
#
#[Install]
#WantedBy=multi-user.target
#EOF


    systemctl daemon-reload
    chown -R root.root /etc/nginx
    systemctl enable --now nginx
    systemctl is-active nginx &> /dev/null ||  { $COLOR_FALSE"NGINX 启动失败,退出!"$END ; exit; }
    $COLOR_TRUE"NGINX安装完成"
}


install_mariadb(){
    $COLOR_TRUE"检查是否存在旧的MariadDB"$END
    rpm -qa | grep -i mariadb &> /dev/null
    [ $? -eq 0 ] && $COLOR_TRUE"卸载旧的MariadDB"$END && `yum -y remove MariaDB-*`  || $COLOR_TRUE"开始安装MariadDB"$END
    
    cat > /etc/yum.repos.d/MariaDB.repo <<EOF
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = https://mirrors.cloud.tencent.com/mariadb/yum/10.4/centos7-amd64 
gpgkey=https://mirrors.cloud.tencent.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF


    yum -y -q install MariaDB-client MariaDB-server &> /dev/null
    systemctl enable --now mariadb
    [ $? -ne 0 ] && { $COLOR_FALSE"数据库启动失败,退出!"$END;exit; }


    sed -ri.bak  -e '/\[server\]/a\character-set-server=utf-8\nlower_case_table_names=1\ndefault_storage_engine=InnoDB\nlog-bin\nexpire_logs_day=30\nbinlog_format=row\ninnodb_autoinc_lock_mode=2\ng  eneral_log=1\nslow_query_log\nlog_queries_not_using_indexes' /etc/my.cnf.d/server.cnf
    systemctl restart mariadb
    # 此语句目前自动建库加用户有问题
    mysql -e "create database wordpress;create user 'wordpress'@'localhost'  identified by '$MYSQL_WORDPRESS_PASSWORD';grant all on wordpress.* to wordpress@'127.0.0.1' identified by '$MYSQL_WORDPRESS_PASSWORD';ALTER USER root@localhost  IDENTIFIED VIA mysql_native_password USING PASSWORD('$MYSQL_ROOT_PASSWORD')" &>/dev/null
    $COLOR_TRUE"MariadDB安装完成"
}




install_php(){
    $COLOR_TRUE"PHP开始安装"
    rpm -Uvh https://mirrors.cloud.tencent.com/epel/epel-release-latest-7.noarch.rpm  &> /dev/null
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm &> /dev/null
    yum -y -q install mod_php72w.x86_64 php72w-cli.x86_64 php72w-common.x86_64 php72w-mysqlnd php72w-fpm.x86_64 &> /dev/null
    systemctl enable --now php-fpm
    $COLOR_TRUE"PHP安装完成"
}




install_wordpress(){
    $COLOR_TRUE"wordpress开始安装"
    rm -rf $HTML_DIR/index.php
    cd $HTML_DIR
    if [ -e $WORDPRESS ];then
        $COLOR_FALSE"文件已存在,直接安装"$END
    else
        wget https://cn.wordpress.org/latest-zh_CN.tar.gz &>/dev/null
    fi
    tar xf $WORDPRESS
    chown -R root.root wordpress
    cp -af $HTML_DIR/wordpress/*  $HTML_DIR
    cp wp-config-sample.php wp-config.php
    sed -i.bak -e 's/database_name_here/wordpress/' -e 's/username_here/wordpress/' -e 's/password_here/'''$MYSQL_WORDPRESS_PASSWORD'''/'  wp-config.php
    systemctl restart nginx
    $COLOR_TRUE"wordpress安装完成"
}


install_nginx


install_mariadb


install_php


install_wordpress

二、安全设计

  1. 数据库安全:
  • root密码设置为高强度密码(含特殊字符)

  • WordPress使用独立数据库账户

  1. 服务安全:
  • 隐藏Nginx版本信息

  • PHP仅监听本地端口(127.0.0.1:9000)

  1. 配置合规:
  • MySQL配置二进制日志保留30天(审计合规)

三、使用注意事项

  1. 系统要求​:
  • 仅适用CentOS 7

  • 需要root权限执行

  1. 路径固化​:
  • 网站根目录锁定为/usr/share/nginx/html

  • 无法通过参数修改安装路径

  1. 版本限定​:
  • PHP强制安装7.2版本

  • MariaDB锁定10.4版本

  1. 安装风险​:
  • 会主动卸载已有MariaDB

  • 覆盖现有Nginx配置

  • MySQL密码硬编码在脚本中(安全风险)

以上是我代码中存在问题,大家使用的时候要注意哦

欢迎您提出问题,并指正代码中的不足

请不要以此视为定论,这只是我的个人经验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑疯雷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值