Nginx项目部署笔记

实现步骤:

第一步:准备操作系统,安装必备的软件

第二步:配置nginx

第三步:部署Vue.js

第四步:部署Django项目

一、nginx安装

nginx: Linux packages

sudo yum install yum-utils

切换到/etc/yum.repos.d/nginx.repo 插入(如果没有nginx.repo 就 vim nginx.repo新建一个)

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

配置 

sudo yum-config-manager --enable nginx-mainline

安装 

sudo yum install nginx

执行

nginx

可以使用ps命令看有没有启动

ps -ef | grep nginx

二、使用WinSCP上传前端项目

将Vue项目api地址(原:localhost:8080/api => 将localhost:8080去掉)

将vue项目 构建执行 npm run bulid ,把打包好的文件压缩成zip文件

在服务器端新建文件夹用于存放项目

使用WinSCP将前端项目上传到服务器文件夹中

使用unzip将文件解压(未安装unzip  可使用  yum install unzip安装)

按pwd获取当前目录并复制  /mnt/www/trip-mobile/dist

去nginx配置文件  cd /etc/nginx/conf.d  编辑里面的default.conf文件,root处改为刚才复制的路径,然后重启nginx配置生效 

nginx -s reload

Nginx项目部署笔记_第1张图片

 三、安装mysql

MySQL :: MySQL 8.0 Reference Manual :: 2.5.1 Installing MySQL on Linux Using the MySQL Yum Repository

wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

然后使用yum进行安装

yum install mysql80-community-release-el7-7.noarch.rpm

执行看有没有相关版本

yum repolist enabled | grep "mysql.*-community.*"

执行安装

sudo yum install mysql-community-server

执行启动mysql服务

systemctl start mysqld

查看mysql状态

systemctl status mysqld

找到初始用户密码,复制下来

sudo grep 'temporary password' /var/log/mysqld.log

登录root账户

mysql -uroot -p

修改新的密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

看一下现在有哪些数据库

show databases

添加远程访问权限

select user,host from mysql.user;

update mysql.user set host = '%' where user = 'root';

flush privileges; //刷新数据库

使用navcat远程连接

防火墙配置

# 开启

service firewalld start

# 重启

service firewalld restart

# 关闭

service firewalld stop

# 查看端口是否开放

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

四、安装redis和python

4.1 redis

 Download | Redis

下载 

wget https://download.redis.io/releases/redis-5.0.14.tar.gz

解压

tar -zxvf redis-5.0.14.tar.gz

进入 redis-5.0.14文件夹

cd redis-5.0.14

编译安装需要安装gcc

yum install gcc gcc-c++

进行编译

make

进行安装

make install

启动redis服务 

cd src

./redis-server

修改redis设置,将 daemonize 改为yes 使其长期启动

cd ..
vim redis.conf

Nginx项目部署笔记_第2张图片

4.2 安装python3

CNPM Binaries Mirror

下载

wget https://registry.npmmirror.com/-/binary/python/3.8.6/Python-3.8.6.tgz

 解压

tar -zxvf Python-3.8.6.tgz

进入目录

cd Python-3.8.6

 执行文件检测(绿色的可以直接执行)(执行前提是安装了gcc)

sh configure

安装python需要的软件包依赖

yum install zlib zlib-devel openssl openssl-devel

yum install glib2-devel openssl-devel pcre-devel bzip2-devel gzip-devel



yum install libffi-devel -y

yum install zlib zlib-devel

yum install libjpeg libjpeg-devel

yum install freetype freetype-devel

新建装python3的文件夹

mkdir /usr/local/python3

安装完重新

./configure prefix=/usr/local/python3

 编译python源代码

make

安装python

make install

由于CentOs自带python2所以pip并不能用,需要更改软连接使得python指向python3,同时设置python2指向python2.7

将python的软链接指向python3

ln -s /usr/local/python3/bin/python3.8.6 /usr/bin/python

由于yum不支持python3,只有用python2才能正常运行,因此需要修改yum的相应配置,使其默认的指向改为python2.7版本,

将#! /usr/bin/python修改为#! /usr/bin/python2;

vim /usr/libexec/urlgrabber-ext-down


vim /usr/bin/yum

五、上传Django后端项目

打开django项目,通过pip freeze > requirements.txt 将相关依赖提取出来

打开WinSCP,将项目上传到nmt/www目录下

安装mysql-devel

yum install mysql-devel

安装python-devel

yum install python-devel

到Django项目上传目录

cd /mnt/www/trip1019

cat requirement.txt

安装所需依赖

pip install -r requirements.txt

修改django下的settings.py文件 修改一下数据库的密码,改成linux中的密码

使用navicat 创建数据库trip

linux中执行,注意不要执行python manage.py makemigrations 因为做项目中时已经执行

python manage.py check

python manage.py migrate

安装uWSGI

Quickstart for Python/WSGI applications — uWSGI 2.0 documentation

pip install uwsgi

uwsgi配置

[uwsgi]
socket = 127.0.0.1:9090 # Django项目运行的地方
master = 1
processes =1
pidfile = /var/run/trip1019.pid   
daemonize = /var/log/uwsgi/trip1019.log
module = trip1019.wsgi:application
chdir = /mnt/www/trip1019
listen = 100
buffer-size = 32768
max-requests = 200

新建  trip1019.ini 将配置文件中内容复制进去

cd /mnt/www

vim trip1019.ini

mkdir -p /var/log/uwsgi/

uwsgi --ini trip1019.ini

查看进程有没有成功

ps -ef | grep uwsgi

 重启uwsgi

kill -HUP 6431

进入到nginx文件夹将default.conf文件复制一份命名为django.conf

cd /etc/nginx/

cd conf.d

cp default.conf django.conf

vim django.conf 

把django.conf 中location中修改为

Nginx项目部署笔记_第3张图片

执行

nginx -t

 重启nginx

nginx -s reload

 进入到django项目的settings.py中

cd /mnt/www/trip1019/trip1019

vim settings.py

在 ALLOWED_HOSTS = []  中添加公网ip地址和 127.0.0.1

重启uwsgi

kill -HUP 6431

在阿里云防火墙中添加8000端口规则

进入到nginx配置,在里面添加location反向代理

cd /etc/nginx/conf.d

vim default.conf

Nginx项目部署笔记_第4张图片

 执行

nginx -t

 重启nginx

nginx -s reload

nginx反向代理

location ^~/api/{

    proxy_pass http://127.0.0.1:8000/;
    add_header X-Slave $upstream_addr;
    proxy_redirect  off;
    proxy_set_header  Host      $host;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
}

重启nginx

nginx -s reload

数据库中要填充数据

把前端static中的图片复制到Django项目中,并把Django项目中settings.py中 MEDIA_URL =[],中添加公网的ip

你可能感兴趣的:(nginx,运维)