a coder's diaries

0%

服务器部署与发布

登录服务器

在本地终端输入:

1
2
ssh root@host  //host是服务器的公共IP地址,默认端口号22,默认用户是root
password //是购买云服务器时设置的密码

配置管理账号

登录服务器后输入:

1
2
3
4
adduser managername          //managername是自己定义的名字
gpasswd -a username sudo //给新账号增加sudo权限
sudo visudo //修改新账号的权限,在root下增加 => managername ALL=(ALL:ALL) ALL
ssh service restart //重启ssh服务

ssh无密码登录

1, 在本地终端,如果没有ssh key:

1
2
3
ssh-keygen -t rsa -b 4096 -C email   //生成新的ssh key
eval "$(ssh-agent -s)" //启动代理
ssh-add ~/.ssh/id_rsa //把key加入到代理中

2, 在服务器上:

1
2
3
sudo vi ~/.ssh/authorized_keys    //生成文件,把本地的id_rsa.pub里的内容粘贴进去
chmod 600 authorized_keys //更改执行权限
sudo service ssh restart //重启ssh服务

修改默认登录端口

在服务器上:

1
2
sudo vi /etc/ssh/sshd_config     // 修改端口号22, UseDNS为no, 末尾加AllowUsers managername
sudo service ssh restart

关闭root权限

1
2
sudo vi /etc/ssh/sshd_config     //修改sshd_config文件, PermitRootLogin为no,PasswordAuthentication为no,PermitEmptyPasswords为no
sudo service ssh start

配置iptables

1
2
3
4
5
sudo iptables -F                                //清空防火墙设置
sudo vi /etc/iptables.up.rules //配置防火墙
sudo iptables-restore < /etc/iptables/up.rules //重新载入规则
sudo ufw status //查看防火墙状态
sudo ufw enable //激活防火墙

iptables配置内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
*filter

# allow all connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# allow out traffic
-A OUTPUT -j ACCEPT

# allow http, https
-A INPUT -p tcp --dport 443 -j ACCEPT

# 80 port
-A INPUT -p tcp --dport 80 -j ACCEPT

# allow ssh port login
-A INPUT -p tcp -m state --state NEW --dport 2222 -j ACCEPT

# ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7

#drop incoming sensitive connections
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 150
-j DROP

# reject all other inbound
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

配置Fail2Ban

1
2
3
4
sudo vi /etc/network/if-up.d/iptables     //设置开机自动启动
sudo apt install fail2ban //安装Fail2Ban
sudo vi /etc/fail2ban/jail.conf //修改bantime=3600,destemail为自己的email,action=%(action_mw)s
sudo service fail2ban status //查看Fail2Ban状态

创建iptables文件内容如下:

1
2
3
#!/bin/sh
iptables-resotre /etc/iptables/up.rules
sudo chmod +x /etc/network/if-up.d/iptables

安装NodeJS

1
2
3
4
5
6
7
8
sudo apt install vim open ssl build-essential libssl-dev wget curl git                //安装一些工具
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash //安装nvm
nvm install version //使用nvm安装node,version为node的版本号
nvm use version //使用此版本
nvm alias default version //设置默认版本
npm --registry=https://registry.npm.taobao.org install -g cnpm //npm淘宝镜像
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p //系统文件监控数
npm i pm2 webpack gulp grunt-cli -g //使用npm安装一些工具

使用PM2启动服务

1
pm2 start app.js

Nginx 配置端口号

1
2
3
4
5
6
7
sudo service apache2/apache stop  //停止apache服务
update-rc.d -f apache2 remove //移除apache
sudo apt install nginx //安装nginx
cd /etc/nginx/conf.d
vi filename //增加配置文件
sudo nginx -t
sudo nginx -s reload //重新载入nginx

配置内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
upstream aname {         #aname是自己起的名字
server 127.0.0.1:8081; #8081为自己定义的端口号,需要加入阿里云安全组
}

server {
listen 80;
server_name host; #host为公网IP
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://aname;
proxy_redirect off;
}
}