引言
之前购买了个服务器,捣鼓了几个月后被封了。。。
因此本篇记录了新建服务器中配置ssh,git,flask等相关操作,以备后用
很多地方比较简略,欢迎讨论
新建linux服务器
购买服务器
配置ssh
- 本地使用ssh命令:
1
ssh-keygen
得到~/.ssh/id_rsa.pub(公钥) 和 ~/.ssh/id_rsa(私钥)。私钥文件放在本地且保密。公钥要复制一份放到远程服务器上面。
本地使用scp命令:
1
scp ~/.ssh/id_rsa.pub <username>@<serverip>:
ssh登录远程服务器:
1
ssh <username>@<serverip>
进入~/.ssh目录(若没有需使用mkdir创建):
1
cd ~/.ssh
创建authorized_keys文件:
1
touch authorized_keys
将id_rsa.pub的内容追加到authorized_keys中:
1
cat ~/id_rsa.pub >> authorized_keys
配置showsocks
安装python和pip3:
1
apt-get install python3 python3-pip
安装wheel setuptools showsocks:
1
pip3 install wheel setuptools showsocks
编写配置文件:
1
vim /etc/shadowsocks.json
1 | { |
其中8388与abcdefg可以修改为自定义端口与密码
method有好多种,这里使用aes-256-cfb
启动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
配置系统自启动
/etc/systemd/system/shadowsocks.service ``` 1
2
3
4
5
6
7
8
9
10
11
12
132. 添加内容:
```ini
[Unit]
Description=Shadowsocks
[Service]
TimeoutStartSec=0
#注意此处的ssserver的绝对路径
#建议使用whereis ssserver 进行查找确认
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks.json
[Install]
WantedBy=multi-user.target
启用服务
1
systemctl enable shadowsocks
启动服务
1
systemctl start shadowsocks
查看服务状态
1
systemctl status shadowsocks
应该出现绿色的active标识表示正常,否则根据提示信息进行相应配置
- 本地下载shadowsocks客户端
填写服务器地址、服务器端口、密码加密方式
代理端口为1080
单击 确定
配置git服务器
新建git用户和组
1
2grouopadd git
useradd -g git git新建相关文件夹
1
2
3
4
5cd /home
mkdir git
cd git
mkdri repository //该目录为git仓库
chown -R git:git repository //将拥有者改为git用户配置ssh
-t rsa -C "your mail"``` 1
2
3示例:
```bash
ssh-keygen -t rsa -C "123456789@qq.com"本地使用scp命令:
1
scp ~/.ssh/id_rsa.pub <username>@<serverip>:
ssh登录远程服务器:
1
ssh git@<serverip>
进入~/.ssh目录(若没有需使用mkdir创建):
1
cd ~/.ssh
创建authorized_keys文件:
1
touch authorized_keys
将id_rsa.pub的内容追加到authorized_keys中:
1
cat ~/id_rsa.pub >> authorized_keys
更换git服务器:
1
git branch -r
如果remote是origin则执行1
git remote set-url origin remote_git_address
通过git-shell禁止用户ssh
查看git-shell是否安装
1
which git-shell
如果没有,卸载git重新安装
1
which git-shell
记下地址
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指定用户组
- 增加sudo权限
1
2
3
4
5chmod u+w /etc/sudoers
vim /etc/sudoers
在root ALL=(ALL:ALL) ALL下追加一行
yourname ALL=(ALL:ALL) ALL 保存退出
chmod u-w /etc/sudoers
安装java11与tomcat
切换到普通用户
apt-get update``` 1
2. ```sudo apt-get install openjdk-11-jdk
apt-get install tomcat8``` 1
2
3
4
5
6
7
84. 浏览器输入 <IP>:8080测试
## 安装flask、nginx、uwsgi
1. 切换到普通用户并安装flask
```bash
pip3 install flask安装nginx
1
2sudo apt-get install nginx
nginx -v
若报错:This is most likely caused by the lack of administrative privileges associated with your user account1
追加```export PATH=$PATH:/usr/sbin
1 | source ~/.bashrc |
浏览器输入IP显示nginx欢迎界面
停止nginx1
sudo servcie nginx stop
- 配置nginx
1
vim /etc/nginx/sites-enabled/default
最后添加:1
2
3
4
5
6
7
8
9
10
11
12
13server {
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 |
显示 successful1
sudo service nginx start
浏览器显示502
- 安装uwsgi
安装编译工具1
2
3sudo apt-get install build-essential
sudo apt-get install python3-dev
sudo apt-get install libpcre3 libpcre3-dev
安装uwsgi1
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
- 安装supervisor
1
2apt-get install supervisor
vim /etc/supervisor/supervisord.conf
追加:1
files = /etc/supervisor/*.conf
1 | vim /etc/supervisor/conf.d/Flasr.conf |
1 | [program:yourProgramName] |
保存并退出1
sudo supervisorctl update
上传Flaskr并测试
- 从git服务器上clone相关文件
- 写manage.py
附相关参考资料
这两篇讲的都很好,但我在实际配置中找了很多资料,各有出入,
这两篇中实际结果仍然与机型配置相关。推荐使用gunicorn而不是uwsgi。
后续添加相关教程