前端新手的ubuntu初始化设置


远程登录,增加用户,提升权限

linux允许多人、同时、在不同的地点,操作同一台服务器。
可以设置多个用户,分组,可以修改设置每个用户的权限。
通过ssh协议进行远程链接,登录云主机。

当拥有了一台云主机后:

  1. 先用root账户进行ssh远程登录
    ssh -p [port] username@ip_address
  2. 用命令添加其他用户,并将用户拉入更高权限的组。
    useradd manager -m 增加名为manager的用户,-m参数会同时在/home目录下建立manager目录
    passwd manager设置manager用户的密码
    gpasswd -a manager sudo 将manager添加到sudo组,-a参数表示添加用户到组
  3. 在sudoers文件中设置新增用户的权限,打开sudoers文件
    vi /etc/sudoers
  4. 在root ALL=(ALL:ALL) ALL的下面一行,添加一行
    manager ALL=(ALL:ALL) ALL
我在实作中执行完第3步后,不执行第4步,该用户也是具有管理员权限的。

要使用ssh进行远程免密链接,需要在我们的本地机上生成ssh的公钥和私钥。
这两把钥匙文件,其中公钥文件将交给远程服务器保存。
每次本地机进行ssh链接远程主机时,本地机会先用自己的私钥进行加密,而远程主机会用保存的本地机的公钥进行解密,确认对方的身份之后就可允许对方登录。
这么做就实现了免密登录。如果远程主机没有持有对方的公钥,那么本地机就需要输入自己的用户密码登录。

安装git

主要使用git将本地机代码push到服务器上。或者在服务器上从github clone代码。

  1. 首先更新apt-get的源,顺便升级已安装的软件,接着安装git包。
    apt-get update
    apt-get upgrade
    apt-get install git
  2. 给manager用户在服务器上生成一个ssh公钥和私钥
    ssh-keygen该命令会在用户根目录下创建.ssh目录,并生成id_rsa和id_rsa.pub文件
  3. 在本地机用户目录下的.ssh文件夹内,启动命令行工具,将本地机的公钥保存到服务器上
    ssh-copy-id manager@id_address -p [port] 这行命令会在远端manager目录下生成一个authorized_keys文件。
    cat .ssh/authorized_keys 在manager的用户根目录中(/home/manager)用cat命令打印出该文件内容
  4. 将服务器的ssh公钥保存到github上

尝试使用git
这里以push一个本地hexo静态站为例:

  1. 创建远端仓库
    cd /var/repo
    git init --bare hexo-blog.git
    mkdir /var/www/hexo
    vim /var/repo/hexo_static.git/hooks/post-receive 创建一个hooks钩子文件,在文件中添加如下两行
    #!/bin/bash
    git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f
    chmod +x /var/repo/hexo_static.git/hooks/post-receive 保存后使文件具有可执行权限
  2. 在hexo中设置仓库地址
    在配置文件中修改如下信息

    deploy:
    type: git
    repo: ssh://[uername]@[ip_address]:[port]/var/repo/hexo_static.git
    branch: master
  3. 运行hexo d,将hexo静态站推到远端仓库
hexo建站可参考网络文章,或我的这篇

设置防火墙

主要设置iptables的配置项。
这里罗列一个简单的入门配置。
该配置能达到以下防护:

以下具体的端口号(如3989,8080,19898)可根据个人业务修改
  1. 只允许80端口和8080端口的http请求
  2. 只允许3989 19898端口的ssh访问
  3. 屏蔽对80端口在60s内访问超过150次的敏感ip
*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
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 8080 -j ACCEPT

# allow ssh port login
-A INPUT -p tcp -m state --state NEW --dport 3989 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 19898 -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 incommin 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

开启iptables设置规则 iptables-restore < /etc/iptables.up.rules

设置nginx

  1. 安装nginx
    sudo apt-get install nginx
  2. 设置nginx的配置文件
    在/etc/nginx/conf.d下新建一个配置文件,命名为test-8080.conf的文件,填充类似如下内容。将达到这些效果:能够将访问app.test.cn的域名转发到8080端口的应用去处理;对blog.test.cn的访问将用hexo的静态站呈现

    upstream test {
      server 127.0.0.1:8080;
    }
    server {
      listen 80;
      server_name app.test.cn;
      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://test;
        proxy_redirect off;
    
      }
    }
    server {
      listen 80;
      listen [::]:80 ipv6only=on;
      server_name blog.test.cn;
      root /var/www/hexo;
      index index.html index.htm;
    }
  3. 在dns解析中添加相应域名解析的a记录
  4. 重载nginx的设置
    sudo nginx -s reload

这时我们的hexo静态站应该就可以通过blog.test.cn访问了。

设置mongodb

  1. 参阅官网的安装教程进行mongodb的安装
  2. 修改mongodb的默认端口
    sudo vi /etc/mongod.conf 在该文件将port更改为你想更改的port
  3. 去/etc/iptables.up.rules增加你设置的端口
  4. 重载iptables设定
    iptables-restore < /etc/iptables.up.rules
    如遇错误可尝试重启服务器,在进行重载
  5. 启动mongodb
    sudo service mongod restart
  6. 打开mongo命令行工具
    mongo --host 127.0.0.1:[port]

成功链接数据库说明安装配置正确

相关推荐