配置权限用户
添加用户密码
#创建用户
adduser xxx
# 设置密码
passwd xxx
配置用户权限
个人用户的权限只可以在本home下有完整权限,其他目录要看别人授权。而经常需要root用户的权限,这时候sudo可以化身为root来操作。新创建的用户并不能使用sudo命令,需要给他添加授权。
找到 sudoers 文件,一般都在 /etc/sudoers
whereis sudoers
添加root 的 w 权限
chmod -v u+w /etc/sudoers
编辑用户权限
vi /etc/sudoers
找到 ## Allow root to run any commands anywher 一行复制一遍 root 的指令
修改为对应的用户名称
收回写权限
chmod -v u-w /etc/sudoers
配置 SSH 登陆
本地添加 rsa key
ssh-keygen -t rsa
将公钥上传服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<host>
:::info 注意事项:如果不是开放22端口,需要 加入 -p 参数调用端口信息不建议给 root 添加 SSH 权限 :::
指令优化
添加 Alias
在 .bash_profile
中添加 alias <alias>='ssh <user>@<host> -p <port>
然后 source ~/.bashrc
或重新打开 terminal 窗口
SSH Config
在 ~/.ssh/config
中增加自己的服务端配置,如果文件不存在,则手动建立即可。使用 ssh <host>
即可快捷进入
修改 SSH 连接端口
修改 SSH 配置文件
vi /etc/ssh/sshd_config
修改 Port 22 为 Port 5050
添加端口到防火墙
开启防火墙(如果没有开启的话)
systemctl start firewalld
修改firewall配置
firewall-cmd --zone=public --add-port=5050/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload
查看添加端口是否成功
如果添加成功则会显示yes,否则no
firewall-cmd --zone=public --query-port=4564/tcp
在网站添加安全组规则
最后重启 SSH
systemctl restart sshd.service
禁用 root 登陆权限
vi /etc/ssh/sshd_config 参数 PermitRootLogin 改为 no
- 网站部署流程
· 配置防火墙
· CentOS 7 &以上
· 开启防火墙(如果没有开启的话)
systemctl start firewalld
· 开启端口
firewall-cmd —zone=public —add-port=80/tcp —permanent命令含义:—zone # 作用域—add-port=80/tcp # 添加端口,格式为:端口/通讯协议—permanent # 永久生效,没有此参数重启后失效
· 重启防火墙
firewall-cmd —reload
· 查询状态
systemctl status firewalld
· Unbuntu &CentOS 6
· iptables
· Ubuntu Server 14.04 Iptables简单实例配置)
配置 Node
- 安装 NVM
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh| bash注意事项:要么重启终端 要么source .bashrc安装 Node - nvm install 8nvm install 9nvm alias stable 8nvm use 8从最近版本中导入包
- nvm install 9 —reinstall-packages-from=8
- 安装 pm2
-
配置 Nginx
Nginx 开关
- Ubuntu
sudo service nginx stopsudo service nginx startsudo service nginx restartCentOS
sudo systemctl start nginxsudo systemctl stop nginxsudo systemctl restart nginx开机自启动Nginx服务:sudo systemctl enable nginx.service提示:ln -s ‘/usr/lib/systemd/system/nginx.service’ ‘/etc/systemd/system/multi-user.target.wants/nginx.service’ - Nginx 服务重启
- Ubuntu
service nginx -s reloadCentOS
sudo nginx -s reload
· 测试配置文件正确性
· sudo nginx -t
- 网站监听
- 配置文档 /etc/nginx/conf.d/xxx.conf
- 配置命名规范 - abc.domain.com-port.conf配置内容
- 普通80端口版本
upstream xxx{ server 127.0.0.1:3000;}server{ listen 80; server_name www.arvinlearn.com 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://xxx; proxy_redirect off; }}SSL 443端口版本
upstream xxx{ server 127.0.0.1:3000;}server{ listen 80; server_name www.arvinlearn.com; #填写绑定证书的域名 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://xxx; proxy_redirect off; }}server{ listen 443; server_name www.arvinlearn.com; #填写绑定证书的域名ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 ssl_prefer_server_ciphers on; 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://xxx; proxy_redirect off; }}
· 错误排查
· 查看监听 80 端口的 Nginx 进程
netstat -lnp | grep 80
· 查看进程的详细信息
ps <进程号>
· 杀掉 Nginx 进程
kill <进程号>
· 重启 Nginx
· 安装 MongoDB
· 官网安装 Monogodb
· CentOS
· 创建文件并编辑配置 MongoDB yum 源
· $ vim /etc/yum.repos.d/mongodb-org-3.6.repo
· 把下面的内容复制进去
· [mongodb-org-3.6]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
· 更新文件,安装
· $ yum update
· $ yum -y install mongodb-org
· 查看版本
· $ mongod —version
· 启动服务
· service mongod start
· 修改 mongodb 端口
· 进入MongoDB配置文件
vi /etc/mongodb.conf
· 更改net的 port 属性为合适的端口
· 重启服务
· service mongod restart
· 添加防火墙设置
· 数据库转移
· 数据库整体导入导出
· 导出数据库
mongodump -h host:port -d databasename -u
- 上传 git
- 给 git 仓库添加 pub key
- PM2 进程运行
- pm2 添加 pm2 配置文件
ecosystem.json{ “apps”: [ { “name”: “name”, “script”: “./server/app.js”, “env”: { “COMMON_VARIABLE”: “true” }, “env_production”: { “NODE_ENV”: “production” } } ], “deploy”: { “production”: { “user”: “xxxx”, “host”: [“xxx”], “port”:”xxxx”, “ref”: “origin/master”, “repo”: “git@xxxxx.git”, “path”: “/xxxxxx”, “ssh_options”: “StrictHostKeyChecking=no”, “pre-deploy-local”: “echo ‘Deploy Done’”,”pre-setup” : “echo ‘commands or local script path to be run on the host before the setup process starts’”,”post-setup”: “echo ‘commands or a script path to be run on the host after cloning the repo’”,”post-deploy” : “npm install && pm2 startOrRestart ecosystem.json —env production” “env”: { “NODE_ENV”: “production” } } }}设置 pm2 setup
pm2 deploy ecosystem.json production setup添加 pm2 设置
注销服务器的 bashrc 的第一行# If not running interactively, don’t do anythingcase $- in i) ;; *) return;;esacNode 项目发布
pm2 deploy ecosystem.json production服务器端设置pm2开机自动启动
· 错误检查
· 如果发现无法更新新的 head,查看 git 版本
· Git版本更新
· 使用传统方法安装 git 2 http://iyuluo.com/2017/08/29/CentOS-7-%E5%AE%89%E8%A3%85%E6%9C%80%E6%96%B0%E7%9A%84-Git/
· 在 CentOS 6/7 以 yum 安裝 git 2 https://medium.com/verybuy-dev/%E5%9C%A8-centos-7-3-%E4%B8%8A%E5%AE%89%E8%A3%9D-git-2-8052587dd1fd
- 配置静态资源的访问规则
新增location ~* ^.+.(jpg|jpeg|gif|png|ico|css|js|pdf|txt){root /path/to/public/}域名备案 - 前面的内容走一遍基本上就全部搞定了,如果是国内服务器则需要备案备案没完成,但是需要开发测试:没备案过的在域名结尾加一个 . 就可以打开了 #奇技淫巧
https://www.zhihu.com/question/62337502 - Docker 的非root用户操作的步骤
- 创建docker组
sudo groupadd docker将当前用户加入docker组
sudo gpasswd -a ${USER} docker重新启动docker服务(下面是CentOS7的命令)
sudo systemctl restart docker运行docker命令
docker ps - 解决Nginx下使用React-router出现404问题
location / {try_files $uri $uri/ /index.html;} - Nginx 开启Gzip
- 跨域解决
https://segmentfault.com/a/1190000011145364https://juejin.im/post/5b505321f265da0f700709ea