云服务环境搭建
简介
本文主要介绍云服务器的开通以及云服务环境搭建,然后将项目打包,将打包后的代码部署到云服务环境中
一、云服务器开通
记得加上安全组
1 二级菜单1
2 二级菜单2
二、FinalShell工具介绍
后续再补!!!
三、云服务器基本环境搭建
1、安装 nvm
- 在命令行中输入如下地址进行安装
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
// or
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
- 检查有没有安装成功,出现如下表示安装成功
[root@VM-0-2-centos ~]# ll .nvm/
总用量 140
-rw-r--r-- 1 root root 2201 8月 22 01:16 bash_completion
-rwxr-xr-x 1 root root 344 8月 22 01:19 nvm-exec
-rw-r--r-- 1 root root 134284 8月 22 01:16 nvm.sh
[root@VM-0-2-centos ~]#
- 然后查看配置文件是否生成
[root@VM-0-2-centos ~]# ll .bash_profile
-rw-r--r--. 1 root root 176 5月 11 2019 .bash_profile
- 打开 .bash_profile 文件,出现如下内容表示并没有写入 nvm 的内容,nvm 这个指令没有生成
[root@VM-0-2-centos ~]# vim .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
~
".bash_profile" 12L, 176C
- 打开 .bashrc 文件显示如下,表示 nvm 指令写入到 .bashrc 文件中了
[root@VM-0-2-centos ~]# vim .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
".bashrc" 16L, 373C
- 可以使用如下命令将环境变量生效,然后就可以使用 nvm 指令
[root@VM-0-2-centos ~]# source .bashrc
- 验证 nvm 指令,显示版本号表示成功
[root@VM-0-2-centos ~]# nvm -v
0.38.0
2、yum 介绍
- yum 是 CentOS 自带的软件,主要用来管理 CentOS 的软件仓库
- yum -y 表示选择同意
[root@VM-0-2-centos ~]# yum -y
四、CentOS Node.js环境搭建
- 安装最新的 node 版本
[root@VM-0-2-centos ~]# nvm install node
Downloading and installing node v16.7.0...
Downloading https://nodejs.org/dist/v16.7.0/node-v16.7.0-linux-x64.tar.xz...
################################################################################################################# 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v16.7.0 (npm v7.20.3)
Creating default alias: default -> node (-> v16.7.0)
[root@VM-0-2-centos ~]#
- 查看版本号,验证是否安装成功
[root@VM-0-2-centos ~]# node -v
v16.7.0
[root@VM-0-2-centos ~]# npm -v
7.20.3
[root@VM-0-2-centos ~]#
- 安装 cnpm,cnpm 可以更快下载 npm 安装包
npm install -g cnpm --registry=https://registry.npm.taobao.org
- 查看 cnpm 的安装路径
[root@VM-0-2-centos ~]# which cnpm
/root/.nvm/versions/node/v16.7.0/bin/cnpm
[root@VM-0-2-centos ~]#
- 查看版本号
[root@VM-0-2-centos ~]# cnpm -v
cnpm@7.0.0 (/root/.nvm/versions/node/v16.7.0/lib/node_modules/cnpm/lib/parse_argv.js)
npm@6.14.14 (/root/.nvm/versions/node/v16.7.0/lib/node_modules/cnpm/node_modules/npm/lib/npm.js)
node@16.7.0 (/root/.nvm/versions/node/v16.7.0/bin/node)
npminstall@5.0.2 (/root/.nvm/versions/node/v16.7.0/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)
prefix=/root/.nvm/versions/node/v16.7.0
linux x64 4.18.0-305.3.1.el8.x86_64
registry=https://registry.nlark.com
[root@VM-0-2-centos ~]#
五、CentOS Nginx环境搭建
1、安装 Nginx 依赖
- 安装 Nginx 依赖
// 安装 pcre 的依赖
yum -y install pcre*
// 安装 openssl 的依赖
yum -y install openssl*
- 两个依赖安装完成之后就可以安装 Nginx 服务器
- 新建一个目录,将 nginx 源码放到这下面
[root@VM-0-2-centos ~]# mkdir nginx
[root@VM-0-2-centos ~]# ll
总用量 4
drwxr-xr-x 2 root root 4096 8月 22 16:11 nginx
[root@VM-0-2-centos ~]# cd /
[root@VM-0-2-centos /]# cd /root
[root@VM-0-2-centos ~]# ll
总用量 4
drwxr-xr-x 2 root root 4096 8月 22 16:11 nginx
[root@VM-0-2-centos ~]#
- 进入 nginx 目录,下载 nginx 源码
// 进入 nginx 目录
cd nginx
// 下载 nginx 源码
wget http://nginx.org/download/nginx-1.12.2.tar.gz
::: warning
源码大多都是 c 语言编写的,在做 c 的编译时还要下载 gcc、make等工具
:::
- 解压 nginx 源码
[root@VM-0-2-centos nginx]# ls
nginx-1.12.2.tar.gz
[root@VM-0-2-centos nginx]# tar -zxvf nginx-1.12.2.tar.gz
- 进入源码目录下
[root@VM-0-2-centos nginx]# ll
总用量 964
drwxr-xr-x 8 1001 1001 4096 10月 17 2017 nginx-1.12.2
-rw-r--r-- 1 root root 981687 10月 17 2017 nginx-1.12.2.tar.gz
[root@VM-0-2-centos nginx]#
[root@VM-0-2-centos nginx]# cd nginx-1.12.2/
[root@VM-0-2-centos nginx-1.12.2]# ll
总用量 724
drwxr-xr-x 6 1001 1001 4096 8月 22 16:29 auto
-rw-r--r-- 1 1001 1001 278202 10月 17 2017 CHANGES
-rw-r--r-- 1 1001 1001 423948 10月 17 2017 CHANGES.ru
drwxr-xr-x 2 1001 1001 4096 8月 22 16:29 conf
-rwxr-xr-x 1 1001 1001 2481 10月 17 2017 configure
drwxr-xr-x 4 1001 1001 4096 8月 22 16:29 contrib
drwxr-xr-x 2 1001 1001 4096 8月 22 16:29 html
-rw-r--r-- 1 1001 1001 1397 10月 17 2017 LICENSE
drwxr-xr-x 2 1001 1001 4096 8月 22 16:29 man
-rw-r--r-- 1 1001 1001 49 10月 17 2017 README
drwxr-xr-x 9 1001 1001 4096 8月 22 16:29 src
[root@VM-0-2-centos nginx-1.12.2]#
- rwxr-xr-x 中的 x 表示可执行
- 在 CentOS 上执行文件使用 ./可执行文件 或 sh 可执行文件
// 执行 configure 文件
./configure
2、编译源码
- 使用 make 进行编译
[root@VM-0-2-centos nginx-1.12.2]# make -j4
- 编译出错,报错信息如下
make[1]: *** [objs/Makefile:777:objs/src/os/unix/ngx_user.o] 错误 1
make[1]: *** 正在等待未完成的任务....
make[1]: 离开目录“/root/nginx/nginx-1.12.2”
make: *** [Makefile:8:build] 错误 2
- 解决问题:执行如下命令(只能使用 vi 不能使用 vim),
[root@VM-0-2-centos nginx-1.12.2]# cd src/os/unix
[root@VM-0-2-centos unix]# vi ngx_user.c
- 将如下代码注释掉,保存退出
#ifdef __GLIBC__
/* work around the glibc bug */
/* cd.current_salt[0] = ~salt[0]; */
#endif
- 重新进入 nginx 源码目录下,重新编译
[root@VM-0-2-centos unix]# vi ngx_user.c
[root@VM-0-2-centos unix]# cd ..
[root@VM-0-2-centos os]# cd /root
[root@VM-0-2-centos ~]# cd nginx/
[root@VM-0-2-centos nginx]# ls
nginx-1.12.2 nginx-1.12.2.tar.gz
[root@VM-0-2-centos nginx]# cd nginx-1.12.2/
[root@VM-0-2-centos nginx-1.12.2]# make -j4
- 编译结果如下所示
-ldl -lpthread -lcrypt -lpcre -lz \
-Wl,-E
make[1]: 离开目录“/root/nginx/nginx-1.12.2”
[root@VM-0-2-centos nginx-1.12.2]#
- 编译完成后,执行安装
make install
- 目前还不能使用,可以通过 -t 读取配置文件
[root@VM-0-2-centos nginx-1.12.2]# nginx
-bash: nginx: 未找到命令
[root@VM-0-2-centos nginx-1.12.2]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@VM-0-2-centos nginx-1.12.2]#
3、制作软连接
- 软连接可以理解为手动创建快捷方式
[root@VM-0-2-centos nginx-1.12.2]# nginx
-bash: nginx: 未找到命令
// 进入 /usr/bin/ 目录下
[root@VM-0-2-centos nginx-1.12.2]# cd /usr/bin/
[root@VM-0-2-centos bin]#
// 制作软连接:前面是实际路径,后面是链接
[root@VM-0-2-centos bin]# ln -s /usr/local/nginx/sbin/nginx nginx
// 链接指向实际路径
[root@VM-0-2-centos bin]# ll nginx
lrwxrwxrwx 1 root root 27 8月 22 17:34 nginx -> /usr/local/nginx/sbin/nginx
[root@VM-0-2-centos bin]#
- 就可以执行 nginx 指令
[root@VM-0-2-centos bin]# cd
[root@VM-0-2-centos ~]# pwd
/root
[root@VM-0-2-centos ~]# nginx
[root@VM-0-2-centos ~]#
- 查看进程
[root@VM-0-2-centos ~]# ps -ef|grep nginx
root 3880652 1 0 17:41 ? 00:00:00 nginx: master process nginx
nobody 3880653 3880652 0 17:41 ? 00:00:00 nginx: worker process
root 3986465 558468 0 17:45 pts/0 00:00:00 grep --color=auto nginx
[root@VM-0-2-centos ~]# nginx -s stop
[root@VM-0-2-centos ~]# ps -ef|grep nginx
root 4020953 558468 0 17:46 pts/0 00:00:00 grep --color=auto nginx
[root@VM-0-2-centos ~]#
- 查看配置文件
[root@VM-0-2-centos conf]# ls
fastcgi.conf fastcgi_params.default mime.types nginx.conf.default uwsgi_params
fastcgi.conf.default koi-utf mime.types.default scgi_params uwsgi_params.default
fastcgi_params koi-win nginx.conf scgi_params.default win-utf
[root@VM-0-2-centos conf]# vim nginx.conf
- 然后就可以启动 nginx 服务器,并通过 云服务器 IP 进行访问
// 启动 nginx
[root@VM-0-2-centos front-resources]# nginx
// 停止 nginx
[root@VM-0-2-centos front-resources]# nginx -s stop
[root@VM-0-2-centos front-resources]# nginx
// 对启动中的 nginx 进行重启
[root@VM-0-2-centos front-resources]# nginx -s reload
4、制作个性化配置
- 进入 /root/nginx 根目录下,创建一个 nginx.conf 文件
[root@VM-0-2-centos nginx]# cd /root
[root@VM-0-2-centos ~]# ls
nginx
[root@VM-0-2-centos ~]# cd nginx/
[root@VM-0-2-centos nginx]# touch nginx.conf
[root@VM-0-2-centos nginx]# cd /usr/local/nginx/conf/
[root@VM-0-2-centos conf]# vim nginx.conf
[root@VM-0-2-centos conf]#
- 进入主配置文件中修改 nginx.conf 文件中的配置信息
// 指定 user 为 root
# 指定 user 为 root
user root;
worker_processes 1;
// 主配置文件改为监听 9000 端口
server {
listen 9000;
server_name localhost;
- 在配置文件末尾加 include /root/nginx/*.conf; 表示 nginx 会将该目录下的所有以 .conf 结尾的配置文件融合到主配置文件中
# }
#}
include /root/nginx/*.conf;
}
-- 插入 --
- 然后在 /root/nginx/nginx.conf 中写入一些内容
server {
listen 80; // 监听 80 端口
server_name localhost; // 服务名是主机IP
// 用 139.155.40.16/ 只能访问到 front-resources 目录下的文件
root /root/nginx/front-resources;
# autoindex on; // 是否开启 indexOf
// 用来给 http 的 header 中添加不清理缓存的配置
add_header Cache-Control "no-cache, must-revalidate";
// 匹配所有通过 / 路由 添加跨域的支持
location / {
add_header Access-Control-Allow-Origin *;
}
}
- 在 front-resources 目录下添加一个 index.html 文件并写入:
<h1>Hello world</h1>
- 检查配置文件
[root@VM-0-2-centos front-resources]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@VM-0-2-centos front-resources]#
- 在查看文件内容时如果想显示行号,可以按下 shift + 冒号键,然后输入: set nu 即可显示行号
六、CentOS git部署 + 免密更新
1、git 安装
// git 安装
yum -y install git
// 查看版本
git --version
- 如果 git 版本较低,可以对 git 版本进行升级
- 首先 remove 掉 yum 源上的 git
yum remove git
- 然后用 yum 源安装 git 的依赖
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel
// 通过源码编译的方式再安装 git
yum install - y gcc perl-ExtUtils-MakeMaker
yum install -y tcl build-essential tk gettext
- 通过 wget 指令下载 git 最新的版本
wget https://github.com/git/git/archive/v2.9.2.tar.gz
- 解压
tar -zxvf v2.9.2.tar.gz
- 进入源码目录下
cd git-2.9.2
- 使用 make 编译源码
// 编译时指定安装后的可执行文件位于哪
make prefix=/usr/local/git all
- 编译完成后进行安装
make prefix=/usr/local/git install
- 执行 git 指令不成功,进入 /usr/local/git/bin 查看
- 制作软连接
// 进入 /usr/bin
cd /usr/bin
// 制作软连接
ln -s /usr/local/git/bin/git git
- 然后就可以执行 git 指令
git --version
- 在 /root 目录下新建一个目录,用于存放 后端源码
mkdir back-resources
2、设置免密更新
- 通过 ssh 做免密登录
// 通过 ssh-keygen 生成免密登录的密钥
// 通过 -C 属性去填写 git 仓库的用户名
ssh-keygen -t rsa -C “248342961@qq.com”
// 点击三次回车将密钥生成
// 将密钥打印在终端上面
cat ~/.ssh/id_rsa.pub
// 复制密钥后进入 Gitee 仓库 “我的设置”添加密钥
// 将密钥粘贴到密钥内容上
- 将密钥添加到用户设置的好处:对该用户的所有项目都可以免密 clone,不用在每个项目上点“仓库设置”单独设置
- 进入刚才创建的 back-resources 目录下再来 git clone 下载代码
git clone git@gitee.com:lgk2021/xiaomudushu_back-management.git
- 更新代码
// 进入要更新源码的目录下,执行
git pull
七、CentOS MySQL环境安装
- yum 安装 mysql-server
// 注意:我们要安装的是 MySQL 服务端
// 如果输入的是 mysql,则只会安装客户端
yum install mysql-server
- 安装完成后,输入 mysql -u root -p 显示 MySQL 没有启动
完毕!
[root@VM-0-2-centos ~]# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@VM-0-2-centos ~]#
- 检查 MySQL 状态
[root@VM-0-2-centos ~]# service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
Active: inactive (dead)
- 启动 MySQL
[root@VM-0-2-centos ~]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service
[root@VM-0-2-centos ~]#
- 不用输入密码直接回车就可以登录
[root@VM-0-2-centos ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.21 Source distribution
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
- 如果 MySQL 在初始化的时候给了默认密码,可以到 log 日志中去找
cat /var/log/mysqld.log |grep password
- 复制默认密码后,重新登录
mysql -u root -p
- 查看数据库,如果显示:You must reset your password using ALTER USER …
show databases;
- 那就重置密码:密码必须有字母、数字、字符
- 所设置的真正密码同服务器密码
alter user 'root'@'localhost' identified by '示例:lgk123123.';
- 再重新使用设置的密码登录
- 查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
- 新建数据库:book 是数据库名
create database book;
- 删除数据库
drop database db_name;
- 使用数据库
use book;
- 查看数据库表
show tables;
- 创建数据库表:test
CREATE TABLE tb_test(
id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(60) NOT NULL,
score TINYINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY(id)
)ENGINE=InnoDB;
- 删除表
DROP TABLE IF EXISTS tb_name;
- 在使用 Navicat 连接测试数据库时,可能会报错:Test Failed 1130 - Host ‘服务器IP’ is not allowed to connect to this MySQL server
- 可以使用命令行的方式(登录状态)输入下列命令
// 使用数据库
use mysql;
// % 是通配符,表示匹配所有IP
// 使用 mysql_native_password 插件进行验证(与 v8.0 之前的不同了)
// 密码可以使用原来的,也可以设置简单的 123456
create user 'root'@'%' identified with mysql_native_password by '123456';
// 赋予所有权限给 'root'@'%'
grant all privileges on *.* to 'root'@'%';
// 使设置生效
flush privileges;
八、前端项目构建与部署方法
九、后端部署方法
手动部署
- 手动部署就是在本地手动通过 FinalShell 等文件传输工具将源代码上传到 /root/back-resources 目录下
自动部署
- 自动部署是:本地将源代码上传到 git 仓库后,采用 git 免密登录的方式,将代码 git pull 到云服务端本地
- git pull 的操作可以编写自动化脚本执行
编写自动化脚本
- 首先在 /root/back-resources 目录下创建脚本文件
// 切换目录
cd /root/back-resources
// 创建脚本文件
touch update.sh
- vim update.sh 打开脚本文件,在里面编写内容
echo "开始更新「小慕读书」小程序服务端"
cd /root/back-resources/node-imooc-demo
echo "正在更新代码..."
git pull
echo "正在重启服务..."
kill -9 `ps -ef|grep node|grep app.js|awk '{print $2}'`
node app.js &
echo "「小慕读书」小程序服务端启动成功"
echo "开始更新「小慕读书」后台服务端"
cd /root/back-resources/admin-imooc-node
echo "正在更新代码..."
git pull
echo "正在重启服务..."
node app.js &
echo "「小慕读书」后台服务端启动成功"
echo "正在启动「小慕读书」H5服务端"
cd /root/node-imooc-demo
node app.js &