服务器相关教程

引言

之前购买了个服务器,捣鼓了几个月后被封了。。。
因此本篇记录了新建服务器中配置ssh,git,flask等相关操作,以备后用

很多地方比较简略,欢迎讨论

新建linux服务器

购买服务器

配置ssh

  1. 本地使用ssh命令:
    1
    ssh-keygen

得到~/.ssh/id_rsa.pub(公钥) 和 ~/.ssh/id_rsa(私钥)。私钥文件放在本地且保密。公钥要复制一份放到远程服务器上面。

  1. 本地使用scp命令:

    1
    scp ~/.ssh/id_rsa.pub <username>@<serverip>:
  2. ssh登录远程服务器:

    1
    ssh <username>@<serverip>
  3. 进入~/.ssh目录(若没有需使用mkdir创建):

    1
    cd ~/.ssh
  4. 创建authorized_keys文件:

    1
    touch authorized_keys
  5. 将id_rsa.pub的内容追加到authorized_keys中:

    1
    cat ~/id_rsa.pub >> authorized_keys

配置showsocks

  1. 安装python和pip3:

    1
    apt-get install python3 python3-pip
  2. 安装wheel setuptools showsocks:

    1
    pip3 install wheel setuptools showsocks
  3. 编写配置文件:

    1
    vim /etc/shadowsocks.json
1
2
3
4
5
6
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "abcdefg",
"method": "aes-256-cfb"
}

其中8388与abcdefg可以修改为自定义端口与密码

method有好多种,这里使用aes-256-cfb

  1. 启动shadowsocks:

    1
    ssserver -c /etc/shadowsocks.json -d start

    报错:AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup
    修改:

    1. find / -name openssl.py
    2. 打开文件:vim /usr/local/lib/python3.6/dist-packages/shadowsocks/crypto/openssl.py
    3. 将EVP_CIPHER_CTX_cleanup替换为EVP_CIPHER_CTX_reset
    4. ssserver -c /etc/shadowsocks.json -d start
    
  2. 配置系统自启动

    1. /etc/systemd/system/shadowsocks.service ```
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
          2. 添加内容:
      ```ini
      [Unit]
      Description=Shadowsocks

      [Service]
      TimeoutStartSec=0
      #注意此处的ssserver的绝对路径
      #建议使用whereis ssserver 进行查找确认
      ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks.json

      [Install]
      WantedBy=multi-user.target
  3. 启用服务

    1
    systemctl enable shadowsocks
  4. 启动服务

    1
    systemctl start shadowsocks
  5. 查看服务状态

    1
    systemctl status shadowsocks

应该出现绿色的active标识表示正常,否则根据提示信息进行相应配置

  1. 本地下载shadowsocks客户端
    填写服务器地址、服务器端口、密码加密方式

    代理端口为1080

    单击 确定

配置git服务器

  1. 新建git用户和组

    1
    2
    grouopadd git
    useradd -g git git
  2. 新建相关文件夹

    1
    2
    3
    4
    5
    cd /home
    mkdir git
    cd git
    mkdri repository //该目录为git仓库
    chown -R git:git repository //将拥有者改为git用户
  3. 配置ssh

    1. -t rsa -C "your mail"```
      1
      2
      3
      示例:
      ```bash
      ssh-keygen -t rsa -C "123456789@qq.com"
    2. 本地使用scp命令:

      1
      scp ~/.ssh/id_rsa.pub <username>@<serverip>:
    3. ssh登录远程服务器:

      1
      ssh git@<serverip>
    4. 进入~/.ssh目录(若没有需使用mkdir创建):

      1
      cd ~/.ssh
    5. 创建authorized_keys文件:

      1
      touch authorized_keys
    6. 将id_rsa.pub的内容追加到authorized_keys中:

      1
      cat ~/id_rsa.pub >> authorized_keys
  4. 更换git服务器:

    1
    git branch -r

如果remote是origin则执行

1
git remote set-url origin remote_git_address

  1. 通过git-shell禁止用户ssh

    1. 查看git-shell是否安装

      1
      which git-shell

      如果没有,卸载git重新安装

      1
      which git-shell

      记下地址

    2. vimlink
      1
      2
      3
      4
      5
          找到git:x:1001..../bin/bash这一行,一般在最后一行
      将/bin/bash修改为git-shell的地址

      ## 新建普通用户
      1. 创建用户和组```grouopadd examplegroup
1
useradd -d /home/yourname -m -s /bin/bash -g examplegroup yourname

-d指定目录 -m创建目录 -s指定shell -g指定用户组

  1. 增加sudo权限
    1
    2
    3
    4
    5
    chmod u+w /etc/sudoers
    vim /etc/sudoers
    在root ALL=(ALL:ALL) ALL下追加一行
    yourname ALL=(ALL:ALL) ALL 保存退出
    chmod u-w /etc/sudoers

安装java11与tomcat

切换到普通用户

  1. apt-get update```
    1
    2. ```sudo apt-get install openjdk-11-jdk
  2. apt-get install tomcat8```
    1
    2
    3
    4
    5
    6
    7
    8
    4. 浏览器输入 <IP>:8080测试


    ## 安装flask、nginx、uwsgi

    1. 切换到普通用户并安装flask
    ```bash
    pip3 install flask
  3. 安装nginx

    1
    2
    sudo apt-get install nginx
    nginx -v

若报错:This is most likely caused by the lack of administrative privileges associated with your user account

~/.bashrc```
1
追加```export PATH=$PATH:/usr/sbin

1
2
3
source ~/.bashrc
nginx -v
sudo service nginx start

浏览器输入IP显示nginx欢迎界面

停止nginx

1
sudo servcie nginx stop

  1. 配置nginx
    1
    vim /etc/nginx/sites-enabled/default

最后添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
server_name <IP>;
charset utf-8;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_PYHOME /root/myproject/venv;
uwsgi_param UWSGI_CHDIR /root/myproject;
uwsgi_param UWSGI_SCRIPT run:app;
}
}

1
nginx -t

显示 successful

1
sudo service nginx start

浏览器显示502

  1. 安装uwsgi
    安装编译工具
    1
    2
    3
    sudo apt-get install build-essential
    sudo apt-get install python3-dev
    sudo apt-get install libpcre3 libpcre3-dev

安装uwsgi

1
pip3 install uwsgi -I

配置.ini文件

1
2
3
4
5
6
[uwsgi]                                                     
socket = 127.0.0.1:8000
plugins = python //pip安装的uwsgi建议删除该行
chidir = //项目地址
wsgi-file = run.py//建议写绝对地址
callable = app

  1. 安装supervisor
    1
    2
    apt-get install supervisor
    vim /etc/supervisor/supervisord.conf

追加:

1
files = /etc/supervisor/*.conf

1
vim /etc/supervisor/conf.d/Flasr.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[program:yourProgramName]
directory =/home/web/Flaskr
command= uwsgi --ini /home/web/uwsgi.ini
autostart = true
startsecs = 5
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /tmp/Flaskr.log
stopasgroup=false
killasgroup=false

保存并退出

1
sudo supervisorctl update

上传Flaskr并测试

  1. 从git服务器上clone相关文件
  2. 写manage.py
  3. 附相关参考资料