百度云项目部署 (nginx+前端vue+nodejs+express+mysql)

181 阅读5分钟

我用的工具:Xshell7 和 Xftp7

首先要准备一个云服务器,然后将vue代码文件打包成dist文件

nginx的安装和配置(linux系统)

我参考的是这个网站www.runoob.com/linux/nginx…

首先得用Xshell7成功连接云服务器!!!

一、安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

二、首先要安装 PCRE

PCRE 作用是让 Nginx 支持 Rewrite 功能。

1、下载 PCRE 安装包,下载地址: downloads.sourceforge.net/project/pcr…

软件一般都安装在 /usr/local/src 下

[root@bogon src]# cd /usr/local/src/
[root@bogon src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

2、解压安装包:

[root@bogon src]# tar zxvf pcre-8.35.tar.gz

3、进入安装包目录

[root@bogon src]# cd pcre-8.35

4、编译安装 

[root@bogon pcre-8.35]# ./configure
[root@bogon pcre-8.35]# make && make install

5、查看pcre版本

[root@bogon pcre-8.35]# pcre-config --version

image.png

三、安装nginx

image.png

1、下载 Nginx,下载地址:nginx.org/en/download…(版本自己选)

[root@bogon src]# cd /usr/local/src/
[root@bogon src]# wget http://nginx.org/download/nginx-1.18.0.tar.gz

2.解压安装包

[root@bogon src]# tar zxvf nginx-1.18.0.tar.gz

3、进入安装包目录

[root@bogon src]# cd nginx-1.18.0

4、编译安装

[root@bogon nginx-1.18.0]# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
[root@bogon nginx-1.18.0]# make
[root@bogon nginx-1.18.0]# make install

5、查看nginx版本

[root@bogon nginx-1.18.0]# /usr/local/webserver/nginx/sbin/nginx -v

image.png

四、配置nginx

1.使用Xftp7 连接百度云

image.png

2.将dist文件夹拖入/usr/local/webserver/nginx/html文件夹下

image.png

3.配置nginx.conf文件

image.png 在/usr/local/webserver/nginx/conf 文件夹中找到 nginx.conf文件,右击选择记事本编辑

切记,一定要用英文模式下的分号!!!


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    
    #以上这部分也不用管,主要修改以下部分
    
    server {
        listen       80;# 前端代码运行在公网的端口号
        server_name  localhost; 

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root /usr/local/webserver/nginx/html/dist;#root指定了/对应的单页静态资源目录,这个配置可以让你的css,js被顺利加载;当nginx找不到客户端资源会返回一个404页面
            index  index.html;
            try_files $uri $uri/ /index.html; # 解决history模式下刷新404问题
          
            
            #语法:try_files 【$uri】 【 $uri/】 【参数】
	    #当用户请求https://manage.test.com/login时,
	    #一.如果配置了上面的默认index,会依次请求
	    #1./usr/local/webserver/nginx/html/dist/login   查找有没有login这个文件,没有的话
            #2./usr/local/webserver/nginx/html/dist/index.html  有就直接返回
			
	    #二.如果没有配置了上面的默认index或者配置了没有找到对应的资源,会依次请求
	    #1./usr/local/webserver/nginx/html/dist/login   查找有没有login这个文件,没有的话
	    #2./usr/local/webserver/nginx/html/dist/login/  查找有没有login这个目录,没有的话
            #3.请求/usr/local/webserver/nginx/html/dist下的index.html  nginx内部通过 try_files 做了一个子请求
            # 总结:
            #   try_files 这话的意思是试着去访问一下当前浏览所请求的页面
            #   $uri 当前请求的路径 如果找到就返回
            #   $uri/ 把当前请求的路径当成一个目录去找下面的文件如果找到了就返回
            #   /index.html 如果上面两个都没有找到就直接返回 index.html

\
        }
	
        #对 "/api" 启用反向代理
        location /api {
	proxy_set_header Host $host; #header添加请求host信息
        proxy_set_header X-Real-IP $remote_addr;# header增加请求来源IP信息
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 增加代理记录
	proxy_pass http://127.0.0.1:8080; # 代理地址,这是我后端接口在服务器上的地址(用公网ip应该也行)
         }
         ###
         
         
        #下面一块是压缩文件,可以不写
        gzip on;

        gzip_buffers 32 4k;

        gzip_comp_level 6;

        gzip_min_length 200;

        gzip_types text/css text/xml application/javascript;

        gzip_vary on;
        #压缩文件模块截止的地方,下面也不用管

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        #以下部分不用管
        ......
        ......
        ......
}

编辑完成后ctrl + s 保存文件

4.启动nginx

/usr/local/webserver/nginx/sbin/nginx

此时在网址栏输入公网ip应该就能访问到你的前端页面啦(如果不是部署在80端口上的话,公网ip后面记得加上你部署的端口号喔)

停止nginx的命令

/usr/local/webserver/nginx/sbin/nginx -s stop

其他命令

/usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件 
/usr/local/webserver/nginx/sbin/nginx -s reopen # 重启 Nginx 
chkconfig iptables off                          # 关闭防火墙 
/usr/local/webserver/nginx/sbin/nginx -t        # 检查配置文件nginx.conf的命令

5.如果不能访问,记得设置一下云服务器的安全组规则,不懂得可以百度喔

安装nodejs

在有epel源的前提下,可以直接直接指定nodejs版本安装。没有就先安装下

yum install epel-release

不清楚版本和安装指令可以查看这个node源码(二进制发行版)文档,它对应不同的平台都有具体说明github.com/nodesource/… 拉到最下方找到run on CentOS 那一块儿

image.png

# 先设置要安装的版本
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
# 安装
yum install nodejs -y
# 完成后查看下node版本
node -v
# 显示是v14.15.1,成功!

安装express

推荐全局安装

  npm -g install express

mysql的安装和配置

1.进入 /usr/local文件夹

cd /usr/local

2.安装mysql

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz

3.解压mysql

tar xvJf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz

4.更改文件夹名称

mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql-8.0

5.创建data文件夹 存储文件

cd mysql-8.0
mkdir data

image.png

6.创建用户组以及用户和密码

groupadd mysql
useradd -g mysql mysql

7.授权用户

chown -R mysql.mysql /usr/local/mysql-8.0

8.进入bin目录下,初始化基础信息

cd bin
./mysqld --user=mysql --basedir=/usr/local/mysql-8.0 --datadir=/usr/local/mysql-8.0/data/ --initialize

9.编辑my.cnf文件

vi /etc/my.cnf

打开后里面是空白,将以下代码复制进去即可(按 i 进入编辑模式,Esc 退出编辑模式,退出编辑模式后 :wq 保存 ) 若想要了解详细配置,可参考blog.csdn.net/weixin_4466…

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql-8.0
datadir=/usr/local/mysql-8.0/data/
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
#lower_case_table_names=1

10.添加mysql服务到系统

cd ../         #回到mysql-8.0目录下

cp -a ./support-files/mysql.server /etc/init.d/mysql

11.授权以及添加服务

chmod +x /etc/init.d/mysql

chkconfig --add mysql

12.启动mysql

service mysql start

13.查看启动状态

service mysql status

14.将mysql命令添加到服务,建立软连接

 ln -s /usr/local/mysql-8.0/bin/mysql /usr/bin

15.获取临时密码

 cat /data/mysql/mysql.err
 
 

image.png

复制临时密码,若最后一个字符是.也要复制上去

16.登录mysql

mysql -uroot -p

将复制的密码粘贴上去,粘贴上去的密码不会显示出来的,粘贴好直接回车就行

如果有如下报错,

Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) ";

可以去/tmp目录下新建一个mysql.sock文件夹(注意/tmp 和 /usr 是平级目录,都在根目录中)

17.登陆成功后修改密码,其中123456是新的密码自己设置(推荐123456,好记)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

18.执行   使密码生效

flush privileges;

19.选择 mysql 数据库

use mysql;

20.修改远程连接并生效

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

flush privileges;

21.至此就可以在自己的电脑上尝试连接云服务器的数据库啦 以navicat 为例,ip地址填公网ip

image.png

结尾

如果有小伙伴是手动编译安装的nodejs的话,执行./configure命令可能会报错: ./configure: line 7: exec: python: not found 建议参考 blog.csdn.net/weixin_3125…

安装完后执行./configure命令应该还会报错: ModuleNotFoundError: No module named '_bz2' 建议参考 blog.csdn.net/u014589856/…