新买了服务器,第一件事就是初始化配置。以下是我在 Ubuntu 18.04 上搭建环境的实际步骤,包括踩过的坑。
确认系统版本
输出:
1 2 3 4
| Distributor ID: Ubuntu Description: Ubuntu 18.04.1 LTS Release: 18.04 Codename: bionic
|
顺便看看资源配置:
1 2 3 4
| lscpu free -h df -h uptime
|
安装 Nginx
1 2 3
| sudo apt-get update sudo apt-get install nginx -y nginx -v
|
基本操作:
1 2 3 4 5
| sudo service nginx start sudo service nginx stop sudo service nginx restart sudo service nginx reload sudo systemctl enable nginx
|
验证是否成功:
看到欢迎页面说明装好了。
安装 MongoDB
Ubuntu 18.04 直接装:
1 2
| sudo apt-get install mongodb -y mongo --version
|
管理命令:
1 2 3 4
| sudo service mongodb start sudo service mongodb stop sudo service mongodb restart sudo systemctl status mongodb
|
迁移数据目录(重要)
MongoDB 默认数据在 /var/lib/mongodb,系统盘一般不大,建议迁到数据盘。
创建新目录:
1 2 3 4
| sudo mkdir -p /data/db/mongodb sudo mkdir -p /data/log/mongodb sudo touch /data/log/mongodb/mongodb.log sudo chmod 777 /data/log/mongodb/mongodb.log
|
停止服务,迁移数据:
1 2 3
| sudo service mongodb stop sudo cp -r /var/lib/mongodb/* /data/db/mongodb/ sudo chown -R mongodb:mongodb /data/db/mongodb
|
关键:删掉 diagnostic.data 目录
1 2 3
| cd /data/db/mongodb/ sudo rm -rf diagnostic.data/ sudo rm -f *.lock
|
不删这个目录,重启后会触发修复,耗时很长。
修改配置:
1
| sudo vim /etc/mongodb.conf
|
改这几项:
1 2 3 4 5
| dbpath=/data/db/mongodb logpath=/data/log/mongodb/mongodb.log logappend=true bind_ip = 127.0.0.1 port = 27017
|
启动验证:
1 2 3
| sudo service mongodb start tail -n 500 /data/log/mongodb/mongodb.log mongo
|
启用认证
配置文件里加上:
创建管理员:
1 2 3 4 5 6 7
| mongo use admin db.createUser({ user: "admin", pwd: "your_password", roles: [ { role: "root", db: "admin" } ] })
|
安装 Redis
1
| sudo apt-get install redis-server -y
|
管理:
1 2 3 4
| redis-server sudo service redis-server start sudo service redis-server stop sudo systemctl enable redis-server
|
测试:
1 2 3 4 5 6 7
| redis-cli 127.0.0.1:6379> ping PONG 127.0.0.1:6379> set test_key "hello" OK 127.0.0.1:6379> get test_key "hello"
|
Redis 安全配置
1
| sudo vim /etc/redis/redis.conf
|
修改:
1 2 3 4 5 6 7 8 9 10 11
| bind 127.0.0.1 requirepass your_strong_password
rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command CONFIG "CONFIG_6f4a8b2c"
maxmemory 256mb maxmemory-policy allkeys-lru
|
重启生效:
1
| sudo service redis-server restart
|
配置防火墙 UFW
1 2 3
| sudo apt-get install ufw -y sudo ufw enable sudo ufw status
|
配置规则:
1 2 3 4 5 6 7
| sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 8080/tcp
|
系统优化
文件描述符限制
1
| sudo vim /etc/security/limits.conf
|
添加:
1 2 3 4
| * soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535
|
内核参数优化
1
| sudo vim /etc/sysctl.conf
|
添加:
1 2 3 4 5 6 7 8 9 10
| net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200
vm.swappiness = 10 vm.dirty_ratio = 40 vm.dirty_background_ratio = 10
|
生效:
时区设置
1 2
| sudo timedatectl set-timezone Asia/Shanghai timedatectl status
|
监控和日志
安装 htop
1 2
| sudo apt-get install htop -y htop
|
查看各类日志
1 2 3 4 5
| journalctl -xe sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log sudo tail -f /data/log/mongodb/mongodb.log sudo tail -f /var/log/redis/redis-server.log
|
自动更新
1 2
| sudo apt-get install unattended-upgrades -y sudo dpkg-reconfigure -plow unattended-upgrades
|
MongoDB 备份脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/backup/mongodb" DB_NAME="your_database"
mkdir -p $BACKUP_DIR mongodump --db $DB_NAME --out $BACKUP_DIR/$DATE
cd $BACKUP_DIR tar -czf $DATE.tar.gz $DATE rm -rf $DATE
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
|
加入定时任务:
1
| 0 2 * * * /path/to/backup_mongodb.sh
|
常见问题排查
服务起不来时:
1 2 3
| sudo journalctl -u mongodb -n 50 ls -la /data/db/mongodb/ sudo netstat -tlnp | grep 27017
|
连接问题:
1 2 3
| mongo --host 127.0.0.1 --port 27017 sudo ufw status netstat -plntu | grep 27017
|
至此,一个基础的 Ubuntu 18.04 服务器环境就搭建完成了,包括 Nginx、MongoDB、Redis,还有基本的安全配置和备份策略。