一、准备操作系统,安装必备软件
1、web服务器Nginx
二、配置Nginx
三、部署Vue.js项目
1、dist文件存放在一个目录下
2、配置default.conf文件
四、部署Django项目
1、mysql
- 安装mysql
sudo apt install mysql-server
- 启动mysql
sudo /etc/init.d/mysql start
- 以root身份登录并调整用户身份验证
sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;
- 可以确认 root 用户确实使用 auth_socket 插件进行了身份验证。我们需要使用下面的“ALTER USER”命令切换到“密码验证”的使用。确保使用安全密码(应超过 8 个字符,结合数字、字符串和特殊符号),因为它将替换你在执行上述命令“sudo mysql_secure_installation” 时设置的密码。运行以下命令。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
- 重新加载授权表并将更改更新到 MySQL 数据库。通过执行以下命令来执行此操作。
FLUSH PRIVILEGES;
- 确认 root 用户不再使用 auth_socket 进行身份验证。通过再次运行以下命令来执行此操作。
SELECT user,authentication_string,plugin,host FROM mysql.user;
- 由于我们更改了 root 的身份验证方法,因此我们无法使用之前使用的相同命令打开 MySQL 控制台。即“sudo mysql”。我们需要包括用户名和密码参数,如下所示。
mysql -u root -p
- 查看权限
select user,host from mysql.user;
目前root只有localhost权限
- 更新权限
update mysql.user set host = '%' where user = 'root';
然后打开navicat premium尝试连接数据mysql数据库
由于服务器有防火墙机制,所以连接失败。3306端口为对外开放。
- 防火墙操作
# 开启
service firewalld start
# 重启
service firewalld restart
#关闭
service firewalld stop
- 防火墙配置,把3306端口配置进去,防止拦截
# 查询端口是否开放
firewall-cmd --query-port=3306/tcp
# 开放3306端口
firewall-cmd --permanent --add-port=3306/tcp
# 移除3306端口
firewall-cmd --permanent --remove-port=3306/tcp
# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
- 进入云服务器
vi /etc/mysql/mysql.conf.d/mysqld.cnf
- 修改数据库配置文件
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0
-
然后navicat premium连接数据成功。
-
安装redis
sudo apt install redis-server
- Redis 服务将会自动启动。想要检查服务的状态
sudo systemctl status redis-server
- 默认情况下,Redis 不允许远程连接。配置 Redis 来接受远程访问,使用你的文本编辑器打开 Redis 配置文件。
cd /etc/redis
- 修改redis.conf文件
vim redis.conf
注释掉
bind 127.0.0.1 ::1
修改
protected-mode no
打开requirepass并设置密码
requirepass **********
- 保存这个文件,并且重启 Redis 服务,使应用生效:
sudo systemctl restart redis-server
- 使用下面的命令来验证 Redis 服务器正在监听端口
6379:
ss -an | grep 6379
-
下一步,你将需要配置你的防火墙,允许网络流量通过 TCP 端口
6379。 -
将Python项目放入云服务器目录
-
通过pycharm导出本地配置文件
pip3 freeze > requirements.txt
- 用check检查是否正确
python3 manage.py check
- 在数据中创建数据表
- 执行数据库同步
python3 manage.py migrate
- 把djiago项目部署在wsgi上面,静态文件(js/css/img)通过nginx解析磁盘,动态请求通过nginx解析wsgi。
pip install uwsgi
- 创建trip.ini配置
[uwsgi]
socket = 127.0.0.1:9090
master = 1
processes = 1
pidfile = /var/run/tripPython.pid
daemonize = /var/log/uwsgi/tripPython.log
module = tripPython.wsgi:application
chdir = /mnt/www/tripPython
listen = 100
buffer-size = 32768
max-requests = 200
- 新建目录
mkdir -p /var/log/uwsgi/
- 启动配置
uwsgi --ini tripPython.ini
- ngnix配置
cd /etc/nginx/conf.d
server {
listen 8000;
server_name localhost;
location / {
uwsgi_pass 127.0.0.1:9090;
uwsgi_param UWSGI_SCRIPT tripPython.wsgi;
include uwsgi_params;
}
- 然后刷新nginx
nginx -s reload
- 项目settings.py中
ALLOWED_HOSTS = ['47.92.143.244','127.0.0.1']
- 修改完项目需要重启uwsgi
通过
ps -ef | grep uwsgi查看端口号,然后通过kill -HUP 6829重启uwsig。
-
现在http://47.92.143.244/admin 下css和js找不到
-
需要进入django项目中,把静态文件收集过来
cd /mnt/www/tripPython
python3 manage.py
python3 manage.py collectstatic
- 这里有一个冲突我们需要设置下
-
然后再执行
python3 manage.py collectstatic -
然后改回原来的配置
- 现在静态文件还不能识别,静态文件应该去磁盘查找,我们需要配置下。
-
我们在8000端口号下查看某一个静态文件
-
在非8000端口号
- 我们继续增加配置
- 非8000端口也可以访问静态资源了
-
复制前端图片资源到Python项目
-
修改python项目中图片全路径
-
图片资源可以看到
-
继续添加配置
- 然后master就可以访问
五、项目中终端用到的命令
- 在终端中使用jobs命令可以查看当前正在运行的后台进程。该命令会显示一个列表,包含所有正在后台运行的进程的进程ID(PID)、启动命令和启动时间等信息。"fg 7" 命令用于将第7个后台进程切换到前台继续运行。
jobs
fg 7
- 该命令是使用kill命令向PID为222572的进程发送SIGUSR2信号。SIGUSR2信号是一个用户定义信号,可以用于各种目的,例如提示进程执行特定操作或触发软件升级。
kill -USR2 222572
- 这个终端命令用于列出所有用户下的所有进程,并通过 grep 命令过滤出包含 redis 关键字的进程信息。
ps aux|grep redis
ps -ef | grep uwsgi