网站上线部署 一、网站运行机制 1. 名词解释 域名
域名俗称网址,是由一串用点分隔的名字组成,用于标识互联网上的计算机。
原本用于标识互联网上计算机使用的是 IP 地址,但是由于 IP 地址不便于记忆,所以人们便设计出来比较容易记忆的域名,然后通过 DNS 将域名和 IP 地址关联,这样人们便可以通过记忆域名直接访问到对应的计算机。
DNS 服务器
DNS (Domain Name System),可以理解为互联网上的一项服务,他可以将域名转换成其对应的 IP 地址。
可以将其理解为字典,字典中存储的就是域名和 IP 地址一一对应的键值对。
本地 hosts 文件
windows: c:\windows\system32\drivers\etc\hosts
mac: /etc/hosts
服务器
服务器其实就是一台计算机,但是这台计算机并和我们自己的的 PC 不一样,不是日常使用的,而是提供某项互联网服务的。
比如 web 服务器,能为我们提供网页服务,email 服务器,能为我们提供电子邮件服务,FTP 服务器能为我们提供文件存储服务等等。
为计算机安装不同的服务应用程序,即可提供相应的服务。
常见的web 服务应用程序: Apache、Nginx、IIS、Node.js
2. 网站请求流程(简化版) 静态页面 网页只请求和响应简单的 HTML、CSS、JavaScript 文件,未和服务端进行任何数据通信。这样的页面叫做静态页面。
动态页面 页面内有和服务器进行数据通信,这样的页面叫做动态页面。
前后端分离的页面
前后端分离的项目中,页面中的数据渲染是在浏览器中完成的。
前后端分离的页面请求分为两部分: 静态页面请求 + ajax 数据请求
前后端不分离的页面
前后端不分离的项目中,页面中的数据渲染操作是在服务器端完成的。
前后端不分离的页面一次请求就能完成。
二、网站上线部署流程 1. 服务器购买 国内服务器: 阿里云 ECS(Elastic Compute Service),腾讯云 CVM(Cloud Virtual Machine) 等
国外服务器: 日本 Vultr , 美国 Linode, 谷歌云,微软 Azure,亚马逊 AWS 等
这一步需要创建好服务器实例,分配好外网 IP 地址。
2. 域名购买 国内: 万网(阿里)、腾讯等
国外: Godaddy
3. 域名解析(配置 DNS) 注册好域名之后需要将域名映射到自己服务器对应的 IP 地址,这样别人才能通过域名访问到我们的服务器。
这个步骤叫做域名解析,通过域名服务商提供的后台就可以操作,一般域名解析都会有延迟,不是即时生效的。
4. 服务器环境搭建 配置服务器,Mac 系统下直接用终端就ok
windows下需要用到 git bash, 或者别的工具(Putty)
需要用到的 Linux 系统操作命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # 远程连接命令 ssh root@域名 # 展示当前文件夹路径 pwd # 切换文件夹目录 cd 目录路径 # 展示当前文件夹中内容 ls # 编辑文件 vim 文件路径 # 传输文件 scp 本地文件路径 root@域名:远程路径 # 解压文件命令 unzip
4.1 安装 CentOS 开发人员相关包 1 yum groupinstall 'Development tools'
####4.2 配置免密登陆
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # 在自己电脑上 生成本地 秘钥对 ssh-keygen -t rsa # 生成的位置 # mac 在 ~/.ssh # windows 在 C:\users\你的用户名\.ssh # 在服务器创建了一个.ssh 文件夹 mkdir .ssh # 切换到这个文件夹 cd .ssh # 创建了一个文件 touch authorized_keys # 我们把自己电脑上的 id_rsa.pub 文件中的内容 放到 authorized_keys文件中 echo "cqHuvyGI2EXH5EOT/wsjIlNqH6kRaGRzLOcYAoYyn+0nsPhEfFOkv1cii9Ax9naeJuw78LapaXxmGgkcBWdk2W1KXkL5tPIZUIZAfwJ4PihDQ+0rUj5Yar741NvZYNYZ+xa1RBeziR3gbwdTLPV22Et9TTiLVEY0bNXxgvI1GGvT87f+sFB5hEB0HyQpDFyjDN+UyxTKf/Zf/7Z2z/Qz2kWTFI6oaCNfScdhjEUO8qzSsjR+9X5hE6dxmz8EII0jvAumnBy0kcIv9BaQ6TCQrijh0TWWkih2HRq8prmBzCWxb3a2A/f9PM+E6kdDBZ9lJTgB4ww8IQDxVXxhg5B14pR7ULA0rpT4ITPNFzzkVt5mo2m1bF0VH3HFiJWATaLCHZoKm8Qij6LbDL20dr4StE4zJ2fEKhi7c4CU= Ryan@panmings-MBP.lan" >> authorized_keys # 退出服务器,下次直接就能免密登陆了 exit
4.3 安装Nginx 1 2 3 4 5 6 7 8 9 10 # 添加 Nginx 源 sudo yum install epel-release # 安装 Nginx sudo yum install nginx # 启动 Nginx sudo systemctl start nginx # 配置防火墙规则 sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
4.4 安装Node.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # yum自带源中没有Node.js,所以首先要获取Node.js资源: curl --silent --location https://rpm.nodesource.com/setup_14.x | bash - # 安装 Node.js yum install -y nodejs # 安装完成之后使用如下指令测试安装是否成功 node -v # 安装pm2 node.js程序管理工具 npm i pm2 -g # 使用pm2 启动node.js项目 pm2 start 文件名 # 停止 pm2 stop 文件名或者id # 从pm2的管理列表中删除 pm2 delete 文件名或者id
4.5 安装MySQL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # 下载并安装 MySQL 源 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm # 安装 MySQL sudo yum install mysql-community-server -y # 如果上一步报错 执行下面的语句 之后 再次执行一下上面的安装Mysql的语句 sudo yum module disable mysql # 启动MySQL sudo systemctl start mysqld # 找到默认密码 # MySQL安装完毕之后会自动设置一个默认密码,我们需要找到默认密码 grep 'temporary password' /var/log/mysqld.log # 连接到MySQL数据库,修改密码 mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'xyq2386152296XYQ_';
5. 上传网站资源 可以使用 scp 命令,也可以安装 FTP (vsftpd)工具。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 scp 本地文件 root@域名:远程路径 # 在服务器创建文件夹 mkdir /home/nginx/ # 把网页文件移动到创建好的文件夹里 mv ./dist.zip /home/nginx/ # 解压压缩文件 cd /home/ningx unzip ./dist.zip # 修改文件夹名字 mv dist ilovefe # 结果就是 /home/nginx/ilovefe 这个文件夹中放的就是我们的网页文件了
6. 配置Nginx 创建一个ilovefe.conf文件
1 2 3 4 5 6 7 8 9 10 cd /etc/nginx/conf.d # 创建配置文件 touch ilovefe.conf vim ilovefe.conf # 按i键 进出插入模式 # 复制下面的内容,粘贴进去 # 保存退出 # 按一下esc退出编辑模式 # 然后输入 下面的内容 敲回车 :wq
ilovefe.conf
1 2 3 4 5 6 7 8 9 10 server { listen 80; server_name ilovefe.com; location / { root /home/nginx/ilovefe; index index.html index.htm; } }
7. 接口项目部署步骤
修改配置文件中的 mysql 数据库密码
上传项目压缩文件到服务器
在服务器上解压项目文件到 /home/nginx/ilovefeadmin
为项目安装依赖项 npm i
修改mysql数据库 密码规则
1 2 3 4 5 6 use mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'xyq2386152296XYQ_' PASSWORD EXPIRE NEVER; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xyq2386152296XYQ_'; # 查看是否已经修改成功 select user,host,plugin from user where user='root';
创建新的数据库
在之前的nginx配置文件中添加反向代理的配置:
1 2 3 4 location ^~ /api/ { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://127.0.0.1:3000; }
ilovefeamdin.conf
1 2 3 4 5 6 7 8 server { listen 80; server_name admin.ilovefe.com; location / { proxy_pass http://127.0.0.1:3000; } }