一、脚本内容
脚本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
二、安全设计
- 数据库安全:
-
root密码设置为高强度密码(含特殊字符)
-
WordPress使用独立数据库账户
- 服务安全:
-
隐藏Nginx版本信息
-
PHP仅监听本地端口(127.0.0.1:9000)
- 配置合规:
- MySQL配置二进制日志保留30天(审计合规)
三、使用注意事项
- 系统要求:
-
仅适用CentOS 7
-
需要root权限执行
- 路径固化:
-
网站根目录锁定为
/usr/share/nginx/html -
无法通过参数修改安装路径
- 版本限定:
-
PHP强制安装7.2版本
-
MariaDB锁定10.4版本
- 安装风险:
-
会主动卸载已有MariaDB
-
覆盖现有Nginx配置
-
MySQL密码硬编码在脚本中(安全风险)
以上是我代码中存在问题,大家使用的时候要注意哦
欢迎您提出问题,并指正代码中的不足
请不要以此视为定论,这只是我的个人经验
2472

被折叠的 条评论
为什么被折叠?



