初始化服务器基础环境

设置服务器安全组

  • 授权对象: 0.0.0.0/0, 允许所有ip及端口访问

  • ssh协议默认端口号: 22, http协议的默认端口号: 80, https协议默认端口号: 443

'''
连接服务器: ssh root@39.99.156.25

编辑文件: vim ~/.bash_profile, 类似于windows的环境变量
	ggdG: 删除文件中的全部内容
	
	export PATH=$PATH:$HOME/bin
	PS1='Path:\w\n>:'

重新加载文件: source ~/.bash_profile, [ˈprəʊfaɪl], 轮廓

yum -y update 
yum -y groupinstall "Development tools" 
yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel 
'''

搭建开发环境

安装mysql

'''
上传本地安装包: scp -r 本地安装包路径 root@39.99.156.25:~ 

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

启动mysql57并查看启动状态:
	systemctl start mysqld.service
	systemctl status mysqld.service

查看默认密码并登录:
	grep "password" /var/log/mysqld.log
	mysql -uroot -p

修改密码:
	ALTER USER 'root'@'localhost' IDENTIFIED BY 'Cql123456';

密码出现问题: https://www.cnblogs.com/black-fact/p/11613361.html
'''

安装redis

'''
上传本地压缩包: scp -r 本地压缩包路径 root@39.99.156.25:~ 

解压: 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

建立软链接:
	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: redis-server &

关闭redis服务: pkill -f redis -9
'''

安装python3.6

'''
上传本地压缩包: scp -r 本地压缩包路径 root@39.99.156.25:~

解压: tar -xf Python-3.6.7.tar.xz

进入目标文件夹: cd Python-3.6.7

配置安装路径: ./configure --prefix=/usr/local/python3

编译并安装: make && sudo make install

建立软链接:
	ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
	ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3

删除安装包和压缩包
	rm -rf Python-3.6.7
	rm -rf Python-3.6.7.tar.xz

配置pip源
	mkdir ~/.pip
	cd ~/.pip && vim pip.conf
	
	[global]
	index-url = http://pypi.douban.com/simple
	[install]
	use-mirrors =true
	mirrors =http://pypi.douban.com/simple/
	trusted-host =pypi.douban.com
'''

安装uwsgi

'''
在真实环境下安装: pip3 install uwsgi

建立软链接: ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
'''

虚拟环境管理模块

'''
安装:
	pip3 install virtualenv
	pip3 install virtualenvwrapper

编辑文件: vim ~/.bash_profile
    export WORKON_HOME=~/.virtualenvs  # 虚拟环境的存放目录
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/python3/bin/virtualenv
    source /usr/local/python3/bin/virtualenvwrapper.sh  # 打开终端自动启用

重新加载文件: source ~/.bash_profile

参考: https://www.cnblogs.com/freely/p/8022923.html
'''

安装nginx

'''
上传本地压缩包: scp -r 本地压缩包路径 root@39.99.156.25:~

解压:tar -xf nginx-1.13.7.tar.gz

进入目标文件夹: cd nginx-1.13.7

配置安装路径: ./configure --prefix=/usr/local/nginx

编译并安装: make && sudo make install

建立软链接: ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

删除安装包和压缩包
	rm -rf nginx-1.13.7
	rm -rf nginx-1.13.7.tar.gz
'''

项目上线

前端

'''
# ...\luffycity\src\assets\js\settings.js
export default {
    base_url: 'http://39.99.156.25:8000',  // 后端url地址
}

将本地项目打包: cnpm run build

上传打包文件: scp -r 打包文件路径 root@39.99.156.25:/home/html

备份文件: cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

编辑文件: vim /usr/local/nginx/conf/nginx.conf
	ggdG

    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;  
                index index.html; 
                try_files $uri $uri/ /index.html;  # 解决vue单页面刷新报错
            }
        }
    }   

启动nginx: nginx
关闭nginx: nginx -s stop
更改配置文件后重载nginx: nginx -s reload
'''

后端

'''
# ...\luffyapi\prod_manage.py
...
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "luffyapi.settings.prod_settings")
    ...


# ...\luffyapi\luffyapi\wsgi.py
...
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "luffyapi.settings.prod_settings")
...


# ...\luffyapi\luffyapi\settings\prod_settings.py
...
DEBUG = False

ALLOWED_HOSTS = ['39.99.156.25']

...
BACKEND_BASE_URL = 'http://39.99.156.25:8000'  # 后端url根路径
FRONTEND_BASE_URL = 'http://39.99.156.25:80'  # 前端url根路径
...

# drf框架的配置
REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        # 'rest_framework.renderers.BrowsableAPIRenderer',
    ],
    ...,
}
...


# 导出项目依赖: pip3 freeze > dependencies.txt

# 提交项目到远程仓库: 
	git pull rmt_luffyapi master
	git push rmt_luffyapi master

# 在服务器上创建路飞后端项目存放目录: mkdir /home/project

# 将远程仓库的路飞后端项目克隆到服务器: cd /home/project && git clone https://gitee.com/cql406454833/luffyapi.git

# 在服务器上创建虚拟环境: mkvirtualenv luffyapi
# 切换到新创建的虚拟环境: workon luffyapi
# 在虚拟环境中安装项目所需依赖:
	pip install uwsgi
	pip install -r /home/project/luffyapi/dependencies.txt


创建并编辑uwsgi配置文件: vim /home/project/luffyapi/luffyapi.xml
    <uwsgi>    
       <socket>127.0.0.1:8808</socket>  <!--uwsgi服务的端口--> 
       <chdir>/home/project/luffyapi/</chdir>  <!--路飞后端项目的绝对路径-->            
       <module>luffyapi.wsgi</module>  <!--wsgi文件的相对路径--> 
       <processes>4</processes>  <!--进程数-->     
       <daemonize>uwsgi.log</daemonize>  <!--uwsgi日志文件的相对路径-->
    </uwsgi>


nginx反向代理:
	vim /usr/local/nginx/conf/nginx.conf
	
    ...
    http {
        ...
        # 新增的server
        server {
            listen 8000;
            server_name  127.0.0.1;
            charset utf-8;
            location / {
               include uwsgi_params;
               uwsgi_pass 127.0.0.1:8808;  # 反向代理本地的8080端口
               uwsgi_param UWSGI_SCRIPT luffyapi.wsgi;  # uwsgi依赖于wsgi
               uwsgi_param UWSGI_CHDIR /home/project/luffyapi/;  # 路飞后端项目的绝对路径
            }
        }
    } 
    

数据库设置:
	管理员登录: mysql -uroot -pCql123456
	创建数据库: create database luffyapi default charset=utf8;
	创建用户并设置权限: grant all privileges on luffyapi.* to 'cql'@'%' identified by 'Cql123456';
	保存设置: flush privileges;
	完成路飞后端项目的数据库迁移: python /home/project/luffyapi/prod_manage.py migrate
	创建admin后台超级用户: python /home/project/luffyapi/prod_manage.py createsuperuser


nginx动静分离:
	编辑文件: vim /home/project/luffyapi/luffyapi/settings/prod_settings.py
		STATIC_ROOT = '/home/project/luffyapi/luffyapi/static'  
		STATICFILES_DIRS = (os.path.join(BASE_DIR, "luffyapi", "static"),)
	
	迁移静态文件: 
		mkdir /home/project/luffyapi/luffyapi/static
		python /home/project/luffyapi/prod_manage.py collectstatic
	
	编辑文件: vim /usr/local/nginx/conf/nginx.conf
        ...
        http {
            ...
            server {
                ...
                # nginx动静分离
                location /static {
                    alias /home/project/luffyapi/luffyapi/static;
                }
            }
        }
        

# 重启uwsgi:
	pkill -f uwsgi -9
	uwsgi -x /home/project/luffyapi/luffyapi.xml
	
更改配置文件后重载nginx: nginx -s reload

录入数据库数据: E:\feiqiu\day83
'''