第一部分:系统优化与安全部分
1:开启ssh密钥登录,并禁用ssh密码认证,同时修改其ssh端口为 "不便透露"
2:为系统创建普通账户 xxx ,禁止root直接登录,运行普通用户使用key登录
3:对历史命令添加时间戳
vi /etc/profile #将下面内容添加进去
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"
HISTSIZE=1000
4:修改系统时区为上海
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5:锁定apache,mysql,nginx,ftp,games,nobody,postfix,ntp等无需登录的用户
6:修改linux系统打开最大文件数(修改如下文件,添加下面内容:表示修改为65536,重启后 ulimit -n 可以验证)
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
第二部分:应用程序部署与安全配置部分
7:mysql5.7的安装,参看https://wsfnk.com/archives/49.html
8:将mysql端口改成13522,并只监听127.0.0.1,且root不能远程管理,并创建数据库sjk普通账户,管理博客boke数据库
cat /etc/my.cnf
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]
port=13522
bind-address=127.0.0.1
datadir=/web-boke/mysql-data
socket=/web-boke/mysql-data/mysql.sock
log-error=/web-boke/mysql-data/mysqld.log
pid-file=/web-boke/mysql-data/mysqld.pid
symbolic-links=0
character-set-server=utf8
#log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid
[mysql]
socket=/web-boke/mysql-data/mysql.sock
default-character-set=utf8
#
[client]
socket=/web-boke/mysql-data/mysql.sock
default-character-set=utf8
10:安装php及php-fpm
#安装php56
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-gd
yum install --enablerepo=remi --enablerepo=remi-php56 php-fpm
#安装php74
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install php74-php-dom php74-php-gd.x86_64 php74-php-mysqlnd.x86_64 php74-php php74-php-pecl-xhprof php74-php-gd php74-php-phpunit-PHPUnit
yum install php74-php-pecl-xdebug php74-php-opcache php74-php-devel php74-php-mbstring php74-php-mcrypt php74-php-fpm.x86_64
systemctl start php74-php-fpm.service
systemctl enable php74-php-fpm.service
11:对php参数进行优化,将php.ini最大上传限制改成8M,时区改成上海,关闭版本显示
vi /etc/php.ini
#vi /etc/opt/remi/php74/php.ini
date.timezone = "Asia/Shanghai"
upload_max_filesize = 8m
expose_php = Off
12:php-fpm优化,将其改成执行200次php请求后,将内存释放给操作系统,并将进程端口改成13521,并加入日志(小内存vps不优化基本跑几天就死了)
#php54版本
vi /etc/php-fpm.d/www.conf
#pm = dynamic #这是默认的设置,有static和dynamic
listen = 127.0.0.1:13521
pm.max_children = 24 #运行创建的最大php-fpm子进程数量
pm.start_servers = 16 # 动态模式下,起始php-fpm进程数量
pm.min_spare_servers =12 #动态方式下,服务器空闲时最小php-fpm进程数量
pm.max_spare_servers = 24 #动态方式下,服务器空闲时最大php-fpm进程数量
pm.max_requests = 200 #php-fpmphp-fpm工作进程处理完多少请求后自动重启,防止系统不释放内存,导致内存耗尽
error_log = /web-boke/applog/php-fpm/error.log
#remi的php74版本
vi /etc/opt/remi/php74/php-fpm.d/www.conf
#pm = dynamic
listen = 127.0.0.1:13521
pm.max_children = 24
pm.start_servers = 16
pm.min_spare_servers =12
pm.max_spare_servers = 24
pm.max_requests = 200
php_admin_value[error_log] = /web-boke/applog/php-fpm/error.log
14:按天对nginx的日志进行分割
1、创建文件并赋予执行权限
touch /web-boke/nginx/conf/auto_nginx_log_shard.sh
chmod +x /web-boke/nginx/conf/auto_nginx_log_shard.sh
2、写分割脚本内容
cat /web-boke/nginx/conf/auto_nginx_log_shard.sh
#!/bin/bash
#此脚本用于自动分割Nginx的日志,包括access.log和error.log
#每天00:00执行此脚本 将前一天的access.log重命名为access-xxxx-xx-xx.log格式,并重新打开日志文件
#Nginx日志文件所在目录
LOG_PATH=/web-boke/applog/nginx/
#获取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#获取pid文件路径
PID=/web-boke/nginx/logs/nginx.pid
#分割日志
mv ${LOG_PATH}access.log ${LOG_PATH}${YESTERDAY}_access.log
mv ${LOG_PATH}error.log ${LOG_PATH}${YESTERDAY}_error.log
#向Nginx主进程发送USR1信号,重新打开日志文件
kill -USR1 `cat ${PID}`
3、写入定时任务
crontab -e
00 00 * * * /bin/bash /web-boke/nginx/conf/auto_nginx_log_shard.sh
第三部分:监控与分析部分
15:每周校验网站/web-boke/html代码的md5值
cat /home/wsfnk/md5_check.sh
#!/bin/bash
find /web-boke/html -name "*.*" |while read line
do
md5sum $line >> boke-md5-check-date "+%Y-%m-%d"
done
16:配置filebeat,将nginx日志发送到ELK分析平台上
#filebeat安装
#配置yum源(选择版本号为5的,因为版本6的document_type字段好像不能使用了)
vi /etc/yum.repos.d/filebeat.repo
[elastic-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
#安装filebeat5
yum install filebeat -y
#配置filebeat
vi /etc/filebeat/filebeat.yml
filebeat.prospectors:
- input_type: log
paths:
- /var/log/nginx/access.log
document_type: wsfnk-nginx-access
#------------ Logstash output -----------------
output.logstash:
# The Logstash hosts
hosts: ["223.84.153.80:5044"]
#启动
systemctl start filebeat
systemctl enable filebeat
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论