云服务器介绍、安装环境所需依赖、上线前后端流程操作

今日内容概要

  • 购买服务器和服务器配置
  • 安装mysql
  • 安装redis(源码安装)
  • 安装python3.8(源码安装)
  • 安装uwsgi
  • 配置虚拟环境
  • 安装nginx
  • 上线前端
  • 上线后端

内容详细

1、购买服务器和服务器配置

# 阿里,华为,腾讯云服务器---》按量付费---》用多少花多少钱

# 保证阿里云内要大于100块余额才能买,先用后付费

# 项目上线,需要一台服务器---》买的云服务器---》centos7.9

# 登录阿里云 搜索ECS
	创建ecs---》按量付费---》选上海---》选2核4g---》装系统---》centos 7.9---》选硬盘ssd 20g---》分配公网ip(外网,大家都可以访问到)--》按使用量付费--》自定义密码--》


# 远程连接  ssh
	软件:xshell连接  mac上没有
	finalshell:http://www.hostbuf.com/t/988.html
	git---》右键打开bash,用它也可以连接

	本地cmd:ssh root@139.224.254.58(公网IP)

# 全是linux命令
	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 安装软件命令  update更新   -y:yes
    
    yum -y groupinstall "Development tools"  # 批量把开发用的软件都装上 git...
	
	yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel  -y  # 解决依赖  --》不装的话 python可能装不上

1.1 项目上线架构流程图

image

2、安装mysql

# 1 下载mysql57
	wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm


# 2 安装 mysql57
	yum -y install mysql57-community-release-el7-10.noarch.rpm
	yum install mysql-community-server --nogpgcheck -y


# 3 启动mysql 并查看启动状态 
	systemctl start mysqld.service  # 启动mysql服务
	systemctl status mysqld.service  # 查看服务

# 4 查看默认密码并登录
	grep "password" /var/log/mysqld.log
		qB).l-)aj2)g
	mysql -uroot -p 输入密码登录

# 5 修改密码
	ALTER USER 'root'@'localhost' IDENTIFIED BY 'Jgx12345?';


# 远程连接链不上去,在服务器本地连接可以了

3、安装redis(源码安装)

# 下载redis-5.0.5
	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

# 编译环境  src路径下就有可执行文件---》redis-server,redis-cli等
	make 

# 复制环境到指定路径完成安装
	cp -r ~/redis-5.0.5 /usr/local/redis

# 配置redis可以后台启动:修改下方内容
	vim /usr/local/redis/redis.conf

	daemonize yes

# 完成配置修改
	esc
	:wq

# 建立软连接  redis-server和redis-cli 是在/usr/local/redis/src/这个路径下,它不在环境变量中, 在任意路径敲redis-cli ---》软连接到/usr/bin/,这个路径在环境变量---》以后在任意路径敲 redis-server都有响应
	ln -s /usr/local/redis/src/redis-server /usr/bin/redis-server
    
	ln -s /usr/local/redis/src/redis-cli /usr/bin/redis-cli

# 后台运行redis
	cd /usr/local/redis
	redis-server ./redis.conf &

	ctrl + c
    
# 查看服务是否启动
	ps aux |grep redis
    
# 测试redis环境
	redis-cli
	ctrl + c

# 关闭redis服务
	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  # 以3.8.6为例

# 解压安装包
	tar -xf Python-3.8.6.tgz

# 进入目标文件
	cd Python-3.8.6

# 配置安装路径:/usr/local/python3
# 把python3.8.8 编译安装到/usr/local/python38路径下
	./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

# 建立软连接:/usr/local/python38路径不在环境变量,终端命令 python3,pip3
	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

# 测试阶段使用wsgiref,性能低,上线使用uwsgi性能高,它用c写的
# 安装
	pip3.8 install uwsgi  # bin路径下就会有uwsgi这个可执行文件,但是这个路径不在环境变量,换到其他路径找不到
    
	建立软连接
	ln -s /usr/local/python38/bin/uwsgi /usr/bin/uwsgi
    
	在 ~目录下:执行uwsgi 测试

6、配置虚拟环境

# 1 安装依赖
	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

# 2 配置虚拟环境:填入下方内容
	vim ~/.bash_profile

	VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.8
source /usr/local/python38/bin/virtualenvwrapper.sh

# 3 退出编辑状态
	esc

# 4 保存修改并退出
	:wq

# 5 更新配置文件内容
	source ~/.bash_profile

# 6 虚拟环境默认根目录:~/.virtualenvs

# 7 创建虚拟环境
	mkvirtualenv -p python3.8 luffy

# 虚拟环境也要装uwsgi
	workon luffy  # 正常进入虚拟环境
	pip3.8 install uwsgi
    
    
    
-----------------------------------------------------------------
    
### 如果安装virtualenvwrapper失败
	没有workon这个快捷命令
	不使用虚拟环境了
	不使用workon快捷指令了
	https://www.cnblogs.com/liuqingzheng/p/9508851.html
# 不使用virtualenvwrapper创建和使用虚拟环境
	用户家路径: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 ~]# cd ~

# 下载nginx1.13.7
	wget http://nginx.org/download/nginx-1.13.7.tar.gz

# 解压安装包
	tar -xf nginx-1.13.7.tar.gz

# 进入目标文件
	cd nginx-1.13.7

# 配置安装路径:/usr/local/nginx
	[root@jgx nginx-1.13.7]# ./configure --prefix=/usr/local/nginx

# 编译并安装
	[root@jgx nginx-1.13.7]# make && sudo make install

# 建立软连接:终端命令 nginx
	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环境,服务器运行nginx,本地访问服务器ip
	nginx
	服务器绑定的域名 或 ip:80
    
    
# 命令:
	1)启动
		nginx

	2)关闭nginx
		nginx -s stop

	3)重启nginx
		nginx -s reload

	4)查看端口,强行关闭
		ps -aux|grep nginx
		kill "pid:进程编号"
    
    
    
# 注意:跑在80端口上可以访问,默认阿里云把80端口的安全组开放了,如果跑在8080上,需要开安全组

8、上线前端

# 把vue项目编译成纯的 html css js

# 修改后端地址 luffycity项目下 src/js/assets/settings.js:
	base_url: "http://139.224.254.58:8080/api/v1/"
  
# 在项目下执行cmd命令:
	npm run build    
	该命令会在项目路径下建dist文件夹,下面放着纯静态文件(html,css,js)

# 把dist文件夹压缩,传到服务器上去,使用ngixn代理
	在本地找到前端项目下该文件夹 生成压缩包 拖拽到服务器 ~目录

# 从远端想服务器传文件,需要在服务器安装软件
	yum install -y lrzsz

# 服务端要解压zip
	yum install -y unzip

	[root@jgx ~]# unzip dist.zip

# 移动到某个路径
	[root@jgx ~]# mkdir /home/html
	[root@jgx ~]# mv ~/dist /home/html

# 修改nginx 的配置
	去向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; # 解决单页面应用刷新404问题
        }
    }
}   


# 退出并保存
	esc
	:wq

# 重启nginx
	nginx -s reload
  
# 访问:http://139.224.254.58

image

9、上线后端

9.1 上线前修改相关配置:

# 打开luffy_api后端项目
	将dev.py内容复制到 pro.py中

修改pro.py:

DEBUG = False

ALLOWED_HOSTS = ['*']



# 到公司上线阶段
	# redis的配置
	CACHES = {
		"LOCATION": "redis://自行更改",
	}

修改user_settings.py:

# 后台基URL
# BASE_URL = 'http://127.0.0.1:8000'
BASE_URL = 'http://139.224.254.58:8000'

# 前台基URL
# LUFFY_URL = 'http://127.0.0.1:8080'
LUFFY_URL = 'http://139.224.254.58'

复制manage.py到项目根目录下并改名manage_pro.py

# 修改一处:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffy_api.setting.pro')

9.2 导出项目环境

# Terminal窗口:
	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

# 进入后台项目管理目录同步git仓库中的项目
	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 注释掉改行 先安装其他依赖
"""


# 解决 mysqlclient报错:
	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后台项目配置

# 编写uwsgi的配置文件,让uwsgi启动django

# 创建luffyapi.xml
	(luffy) [root@jgx luffy_api]# vim luffyapi.xml

<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>
# 也可以写另一种格式 ini:
[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


# 配置nginx转发
	cd /usr/local/nginx/conf
	vim nginx.conf
    
# 新增的server
    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 是转发http请求,但是咱们现在uwsgi启动是以socket启动的,所以uwsgi只能接收uwsgi协议的请求,不能接收http请求,所以nginx中这样配置,把本来http的请求通过nginx转成uwsgi_params---》转发给uwsgi
  
  
# 重启nginx
	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;

# 退出mysql
	quit;

9.8 项目的数据库迁移

# 只有库,没有表,迁移数据
# 必须在luffy环境下
# 数据库迁移
	cd /home/project/luffy_api/
	python manage_pro.py migrate


# 导入测试数据---》正式库不这样做
	把原来本地的数据,导入到正式库中

9.9 启动uwsgi,重启nginx

#######虚拟环境也要装uwsgi,正式环境也要装
# 启动uwsgi
	uwsgi -x ./luffyapi.xml


# 重启nginx
	nginx -s reload
  
# redis要启动
# 还要启动celery的beat和work

image

9.10静态样式收集动静分离

# 项目目录下没有 static 文件夹需要新建
	mkdir /home/project/luffy_api/luffy_api/static


# 配置文件修改
# 修改static配置,新增STATIC_ROOT、STATICFILES_DIRS
	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]# cd /home/project/luffy_api
	(luffy) [root@jgx luffy_api]# python /home/project/luffy_api/manage_pro.py collectstatic

# nginx 做动静分离
# 新增的配置静态文件
	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
	nginx -s reload
posted @ 2022-05-06 01:31  Deity_JGX  阅读(351)  评论(0编辑  收藏  举报