服务器部署相关
服务器预设置
请选择你的服务器
首先你得有一台年轻人自己的服务器,目前来说腾讯云,阿里云等国内的云平台都有学生优惠,对于学生党来说,最便宜的就够用了。我使用的服务器系统是Ubuntu Server 20.04 LTS 64bit。
SSH远程连接
这部分介绍SSH远程连接服务器的具体操作,保姆级别哟
首先我们要配置SSH远程连接我们的服务器,毕竟谁也不想每次操作服务器都得登录云平台,那样太麻烦了。
- 首先我们要在控制台中点击登录,第一步要初始化超级用户ROOT的密码,进入superuser权限:
1
2sudo passwd # 初始化密码
su # 切换到ROOT超级用户 - 然后我们要修改相关的配置文件,允许SSH远程连接服务器:
1
vim /etc/ssh/sshd_config # 编辑ssh配置文件
- 打开文件后,对如下行按照注释进行修改:
1
2
3
4RSAAuthentication yes # 开启rsa验证,需要添加
PubkeyAuthentication yes # 开启公钥登录,一般被注释掉了,去掉前面的#就好
AuthorizedKeysFile .ssh/authorized_keys # 公钥保存位置,原来就有
PasswordAuthentication yes # 开启使用密码登录 - 保存退出后使用如下指令重启SSH服务
1
service sshd restart # 重启ssh服务
- 再在root模式下使用如下指令添加一个用户:输入密码之后即可成功创建一个新用户。
1
adduser takune # takune替换为你的用户名
- 由于部分服务器操作需要
sudo
权限,因此我们要给新添加的用户设置相关的权限:1
2
3
4vim /etc/sudoers # 在该文件下配置新用户的sudo权限
User privilege specification
takune ALL=(ALL:ALL) ALL # 添加sudo权限,使用wq!强制保存配置 - 获取本地SSH公钥之后,按照如下步骤进行配置:到这一步我们终于实现了通过SSH远程连接服务器,就可以更加方便地操作服务器了。
1
2
3
4
5
6ssh takune@123.45.56.890 # takune为你的用户名,@后面为服务器的IP地址
mkdir .ssh # 在该用户的根目录创建一个.ssh文件夹
cd .ssh # 进入.ssh文件夹
touch authorized_keys # 创建名字为authorized_keys的文件
vim authorized_keys # 编辑该文件内容,将SSH公钥复制到文件中后保存退出即可远程SSH连接
sudo service sshd restart # 使用sudo权限重启SSH服务
服务器安装Mysql以及相关配置
通过上一part的配置,我们现在可以使用的本地的powershell远程连接服务器进行相关操作了。下面我们将介绍在服务器安装Mysql的具体步骤以及相关配置使得我们可以远程连接服务器的mysql。
服务器安装mysql步骤
- 通过以下指令更新apt管理的资源包,这样才能够安装的最新版本的Mysql
1
sudo apt update
- 通过以下指令安装Mysql
1
sudo apt install mysql-server
- 安装以后通过以下指令查看mysql运行状态;输出如下所示时,表示mysql已经处于允许状态。
1
sudo systemctl status mysql
mysql远程连接相关配置
在实际开发中,我们往往需要远程连接数据库并对其中的数据进行增删改查的操作。但是在默认情况下,mysql仅监听本地连接。若想允许远程连接数据库,首先需要修改配置文件,让mysql可以监听远程固定IP或所有远程IP。因此这一部分我们将修改mysql的相关配置文件,以实现远程连接的目的。
修改配置文件mysqld.cnf
其中配置文件mysqld.cnf
的路径一般为/etc/mysql/mysql.conf.d/mysqld.cnf
。
- 通过以下命令进入配置文件
mysqld.cnf
;1
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
- 进入配置文件后,找到
bind-address
所在那一行,默认值为127.0.0.1,表示仅监听本地连接。因此我们要将其改为远程IP可访问。通过使用通配符IP地址0.0.0.0可以实现任意IP连接,或者是指定的IP地址。在这里我们将其设置为0.0.0.0,即允许所有IP访问。 - 重启mysql服务
1
sudo systemctl restart mysql
在部分mysql版本的配置文件中没有bind-address
这一行,在适当的地方加上就行
添加新的mysql用户
由于使用ROOT用户进行远程连接可能会出现无法使用密码登录的情况,因此最好创建一个新的用户。
- 首先使用sudo权限进入mysql;
1
sudo mysql
- 进入mysql后,创建一个新的用户,并且设置为使用密码作为认证方式;上述命令中,%表示IP任意,
1
CREATE USER 'userName'@'%' IDENTIFIED WITH mysql_native_password BY 'passwd';
userName
和passwd
修改为自己的用户名和密码。 - 赋予刚刚创建的用户所有数据库的权限,使之成为新的管理用户;
1
GRANT ALL PRIVILEGES ON *.* TO 'userName'@'%' WITH GRANT OPTION;
- 刷新mysql访问权限,退出mysql。到此为止我们就实现了服务器端mysql的安装,并且能够远程连接了。
1
2FLUSH PRIVILEGES;
EXIT;服务器安装Django环境
在本步骤中我们将在服务器搭建Django,并且采用Miniconda来对环境进行管理。
Miniconda
介绍一下,Conda是在Windows、macOS和Linux上运行的开源软件包管理系统和环境管理系统。Conda可以快速安装、运行和更新软件包及其依赖项。Conda可以轻松地在本地计算机上的环境中创建,保存,加载和切换。它是为Python程序创建的,但可以打包和分发适用于任何语言的软件。
因此我们选择安装Anaconda或者Miniconda来管理服务器的Python环境,我选择的是Miniconda(问就是没钱)。
你可以在清华镜像下载对应的Miniconda安装包。下载Miniconda
在本地用powershell输入如下指令将下载好的安装包上传到服务器;
1
scp /path takune@0.0.0.0:/home/takune/
将上述指令中的
/path
替换为Miniconda安装包的路径,takune
替换为你的服务器用户名,0.0.0.0
替换为你的服务器的IP地址。登录服务器使用如下指令进行miniconda的安装;
1
bash name # 将name替换为Miniconda安装包的名字
然后按照提示一路安装即可。
搭建Django环境
- 使用conda指令创建一个django环境(使用的是python3.8版本);这样就完成了服务器Django环境的相关配置了,然后将你的后端项目上传即可。
1
conda create --name django python=3.8
配置uWSGI
介绍:uWSGI可以理解为一个可持续运行的后端的服务器模块,可以修改相关配置文件指定进程、线程的最大数量。
使用conda指令安装uWSGI:1
conda install -c conda-forge uwsgi
按照提示进行相关配置即可
配置Nginx
- 下载Nginx;
1
sudo apt install nginx
- 启动Nginx服务;
1
sudo systemctl start nginx
部署前端
配置完成Nginx后,打开Nginx文件夹下的nginx.conf
文件,其内容有如下一行:1
include /etc/nginx/conf.d/*.conf;
因为该文件include了文件夹conf.d
中所有后缀为.conf
的文件,所以我们只要在文件夹conf.d
中添加对应的.conf
文件即可。因此我们需要新建web.conf
,并将如下内容复制到其中: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
27server {
listen 80;
server_name 00.000.00.00; # add your server IP if you haven't domain
# if you have domain, use this
# listen 443 ssl;
# server_name your domain name;
location / {
root /home/takune/fronted-demo; # It's your fronted-demo path
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api {
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
}
# ssl_certificate /etc/nginx/ssl/zewan.top.crt;
# ssl_certificate_key /etc/nginx/ssl/zewan.top.key;
# ssl_session_timeout 5m;
# ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
# ssl_prefer_server_ciphers on;
error_page 497 https://$host$uri?$args;
}
保存并且退出,使用如下指令检查相关配置和重启服务:1
2sudo nginx -t # 检查nginx是否存在错误
sudo nginx -s reload # 重启nginx服务
到此我们就成功将前端部署到服务器上。