今日内容概要
购买服务器和服务器配置
安装mysql
安装redis(源码安装)
安装python3.8(源码安装)
安装uwsgi
配置虚拟环境
安装nginx
上线前端
上线后端
内容详细
1、购买服务器和服务器配置
创建ecs---》按量付费---》选上海---》选2 核4g---》装系统---》centos 7.9 ---》选硬盘ssd 20g---》分配公网ip(外网,大家都可以访问到)--》按使用量付费--》自定义密码--》
软件:xshell连接 mac上没有
finalshell:http://www.hostbuf.com/t/988. html
git---》右键打开bash,用它也可以连接
本地cmd:ssh root@139.224 .254 .58 (公网IP)
ls :查看当前目录下的文件和文件夹
pwd:查看你所在路径
...
root 权限最高,linux所有配置都是文件,一切皆文件
删除文件:rm -rf /*
文件系统--》从 / 开始有很多文件夹 执行之后系统都进不了
ssh root@ip地址 连接方式
软件自带的连接
python 2.7 自带 ---》所有linux,mac都自带2. x --》系统服务 基于python写的 指令:python
python 3.6 .8 自带--》阿里云带的 指令:python3
也自己再装一个python 3.7
yum update -y
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel -y
1.1 项目上线架构流程图
2、安装mysql
wget http://dev.mysql.com/get/mysql57-community-release-el7-10. noarch.rpm
yum -y install mysql57-community-release-el7-10. noarch.rpm
yum install mysql-community-server --nogpgcheck -y
systemctl start mysqld.service
systemctl status mysqld.service
grep "password" /var/log/mysqld.log
qB).l-)aj2)g
mysql -uroot -p 输入密码登录
ALTER USER 'root' @'localhost' IDENTIFIED BY 'Jgx12345?' ;
3、安装redis(源码安装)
wget http://download.redis.io/releases/redis-5.0 .5 .tar.gz
tar -xf redis-5.0 .5 .tar.gz
cd redis-5.0 .5
make
cp -r ~/redis-5.0 .5 /usr/local/redis
vim /usr/local/redis/redis.conf
daemonize yes
esc
:wq
ln -s /usr/local/redis/src/redis-server /usr/bin /redis-server
ln -s /usr/local/redis/src/redis-cli /usr/bin /redis-cli
cd /usr/local/redis
redis-server ./redis.conf &
ctrl + c
ps aux |grep redis
redis-cli
ctrl + c
pkill -f redis -9
4、安装python3.8(源码安装)
cd ~
wget https://www.python.org/ftp/python/3.8 .8 /Python-3.8 .8 .tar.xz
wget https://registry.npmmirror.com/-/binary/python/3.8 .6 /Python-3.8 .6 .tgz
tar -xf Python-3.8 .6 .tgz
cd Python-3.8 .6
./configure --prefix=/usr/local/python38
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel -y
make && make install
ln -s /usr/local/python38/bin /python3 /usr/bin /python3.8
ln -s /usr/local/python38/bin /pip3 /usr/bin /pip3.8
python 2. x
python3 3.6
python3.8 3.8
cd ~
rm -rf Python-3.8 .6
rm -rf Python-3.8 .6 .tar.xz
5、安装uwsgi
pip3.8 install uwsgi
建立软连接
ln -s /usr/local/python38/bin /uwsgi /usr/bin /uwsgi
在 ~目录下:执行uwsgi 测试
6、配置虚拟环境
python3.8 -m pip install --upgrade pip
python3.8 -m pip install --upgrade setuptools
pip3.8 install pbr
pip3.8 install virtualenv
pip3.8 install -U virtualenvwrapper -i https://pypi.douban.com/simple/
ln -s /usr/local/python38/bin /virtualenv /usr/bin /virtualenv
vim ~/.bash_profile
VIRTUALENVWRAPPER_PYTHON=/usr/bin /python3.8
source /usr/local/python38/bin /virtualenvwrapper.sh
esc
:wq
source ~/.bash_profile
mkvirtualenv -p python3.8 luffy
workon luffy
pip3.8 install uwsgi
-----------------------------------------------------------------
没有workon这个快捷命令
不使用虚拟环境了
不使用workon快捷指令了
https://www.cnblogs.com/liuqingzheng/p/9508851. html
用户家路径:mkdir virtual
cd virtual
ln -s /usr/local/python38/bin /virtualenv /usr/bin /virtualenv
virtualenv luffy
source /root/virtual/luffy/bin /activate
deactivate
7、安装nginx
[root@jgx ~]
wget http://nginx.org/download/nginx-1.13 .7 .tar.gz
tar -xf nginx-1.13 .7 .tar.gz
cd nginx-1.13 .7
[root@jgx nginx-1.13 .7 ]
[root@jgx nginx-1.13 .7 ]
ln -s /usr/local/nginx/sbin/nginx /usr/bin /nginx
cd ~
rm -rf nginx-1.13 .7
rm -rf nginx-1.13 .7 .tar.gz
nginx
服务器绑定的域名 或 ip:80
1 )启动
nginx
2 )关闭nginx
nginx -s stop
3 )重启nginx
nginx -s reload
4 )查看端口,强行关闭
ps -aux|grep nginx
kill "pid:进程编号"
8、上线前端
base_url: "http://139.224.254.58:8080/api/v1/"
npm run build
该命令会在项目路径下建dist文件夹,下面放着纯静态文件(html,css,js)
在本地找到前端项目下该文件夹 生成压缩包 拖拽到服务器 ~目录
yum install -y lrzsz
yum install -y unzip
[root@jgx ~]
[root@jgx ~]
[root@jgx ~]
去向Nginx配置目录,备份配置,完全更新配置:填入下方内容
cd /usr/local/nginx/conf
mv nginx.conf nginx.conf.bak
vim nginx.conf
i
events {
worker_connections 1024 ;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80 ;
server_name 127.0 .0 .1 ;
charset utf-8 ;
location / {
root /home/html/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
}
}
esc
:wq
nginx -s reload
9、上线后端
9.1 上线前修改相关配置:
将dev.py内容复制到 pro.py中
修改pro.py:
DEBUG = False
ALLOWED_HOSTS = ['*' ]
CACHES = {
"LOCATION" : "redis://自行更改" ,
}
修改user_settings.py:
BASE_URL = 'http://139.224.254.58:8000'
LUFFY_URL = 'http://139.224.254.58'
复制manage.py到项目根目录下并改名manage_pro.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE' , 'luffy_api.setting.pro' )
9.2 导出项目环境
pip freeze > requirements.txt
9.3 项目提交到远程git仓库
git add .
git commit -m 'v1版本发布了'
git pull origin master
git push origin master
"""
如遇报错不能推送到远方仓库:
清空远程仓库再重新推送
"""
9.4 服务端下载后端
mkdir /home/project
cd /home/project
git clone https://gitee.com/deity-jgx/luffy_api.git
9.5 虚拟环境安装依赖
cd luffy_api
workon luffy
pip install -r requirements.txt
"""
比如mysqlclient装不上 就先进入requirements.txt 注释掉改行 先安装其他依赖
"""
yum install mysql-devel -y
yum install python-devel -y
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
pip install mysqlclient
9.6 uwsgi与nginx后台项目配置
(luffy) [root@jgx luffy_api]
<uwsgi>
<socket>127.0 .0 .1 :8888 </socket>
<chdir>/home/project/luffy_api/</chdir>
<module>luffy_api.wsgi</module>
<processes>4 </processes>
<daemonize>uwsgi.log</daemonize>
</uwsgi>
[uwsgi]
socket = 0.0 .0 .0 :8888
chdir = /home/project/luffy_api/
wsgi-file = luffy_api/wsgi.py
module = luffy_api.wsgi
processes = 4
daemonize = uwsgi.log
cd /usr/local/nginx/conf
vim nginx.conf
server {
listen 8080 ;
server_name 127.0 .0 .1 ;
charset utf-8 ;
location / {
include uwsgi_params;
uwsgi_pass 127.0 .0 .1 :8888 ;
uwsgi_param UWSGI_SCRIPT luffy_api.wsgi;
uwsgi_param UWSGI_CHDIR /home/project/luffy_api/;
}
}
nginx -s reload
9.7 数据库创建用户
mysql -uroot -p
Jgx12345?
create database luffy default charset=utf8;
grant all privileges on luffy.* to 'lqz' @'%' identified by 'Lqz12345?' ;
grant all privileges on luffy.* to 'lqz' @'localhost' identified by 'Lqz12345?' ;
flush privileges;
quit;
9.8 项目的数据库迁移
cd /home/project/luffy_api/
python manage_pro.py migrate
把原来本地的数据,导入到正式库中
9.9 启动uwsgi,重启nginx
uwsgi -x ./luffyapi.xml
nginx -s reload
9.10静态样式收集动静分离
mkdir /home/project/luffy_api/luffy_api/static
cd /home/project/luffy_api/luffy_api/setting
vim pro.py
STATIC_URL = '/static/'
STATIC_ROOT = '/home/project/luffy_api/luffy_api/static'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static" ),)
(luffy) [root@jgx luffy_api]
(luffy) [root@jgx luffy_api]
vim /usr/local/nginx/conf/nginx.conf
location /static {
alias /home/project/luffy_api/luffy_api/static;
}
location /media {
alias /home/project/luffy_api/luffy_api/media;
}
"""
代码位置:
server {
listen 8080;
server_name 127.0.0.1;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8888;
uwsgi_param UWSGI_SCRIPT luffy_api.wsgi;
uwsgi_param UWSGI_CHDIR /home/project/luffy_api/;
}
location /static {
alias /home/project/luffy_api/luffy_api/static;
}
location /media {
alias /home/project/luffy_api/luffy_api/media;
}
}
"""
nginx -s reload
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义