服务器部署过程

2018-06-13  本文已影响31人  love_program

服务器部署过程

  1. 购买自己的域名
  2. 域名备案
  3. 购买服务器
  4. 配置服务器应用环境
  5. 项目远程部署和发布与更新
  1. 腾讯云
  2. 阿里云
  3. 百度云
  4. 爱名网
  5. godaddy
  1. 阿里云 ECS
  2. 亚马逊 AWS
  3. 百度云
  1. 阿里云备案
  2. 备案服务号管理

登录服务器(以阿里云为例子)

ssh root@60.205.231.190
  1. 在自己的电脑上生成私钥和公钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
//-t 指定是rsa算法
//-b 指定公钥和私钥的大小,这里是四个字节,越大安全,性能也就越差
//-C 指定邮箱
//会在~/.ssh目录下面生成id_rsa和id_rsa.pub文件,公钥可以给别人,但是私钥一定不能给别人
  1. ssh加密解密比较慢,客户端可以开启ssh代理,加快速度
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
  1. 服务器配置
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
eval "$(ssh-agent -s)"//开启ssh代理服务,加快解密速度
ssh-add ~/.ssh/id_rsa
  1. 把本地的公钥上传到服务器授权文件中
//1. 在服务器.ssh目录下新建授权文件
vi ~/.ssh/authorized_keys
//2. 将本地的公钥id_rsa.pub文件内容拷贝到服务器授权文件中
  1. 执行完以上步骤,在执行以下ssh登录就不需要密码登录了
ssh root@60.205.231.190

增加ssh连接服务器安全等级

  1. 修改/etc/ssh/sshd_config 这个文件
vi /etc/ssh/sshd_config
// Port 2222 默认ssh的默认端口是22,我们将他改成2222
//PermitRootLogin yes 默认为yes,改为no, 用户就不能以root用户登录了
//PasswordAuthentication yes 默认为yes, 可以密码登录,改为no, 用户就不能以密码登录了,只能以公钥和私钥的形式登录
  1. 重启ssh
systemctl restart sshd.service
  1. 此时再以22端口登录的话就报错了
ssh: connect to host 60.205.231.190 port 22: Connection refused
  1. 正确的登录方式
ssh -p 2222 root@60.205.231.190

安装部署需要的其他软件

yum install wget curl git

安装node

//1. 安装nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
//2. 安装node指定版本
nvm install 8.11.3
//3. 使用指定版本
nvm use 8.11.3
//4. 查看node版本
node -v
//5. 用cnpm替换npm提高下载模块速度
npm i cnpm -g

编写node程序

vi ~/node/demo.js
...
const http = require('http');
const hostname='60.205.231.190';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-type', 'text/plain');
  res.end('hello world');
})

server.listen(port, hostname, ()=>{
  console.log(`Server running at http://${hostname}:${port}`);
})
...
node demo.js
//地址栏输入http://60.205.231.190:3000/程序既可跑起来了

安装pm2

//全局安装
npm install pm2 -g
//启动一个项目
pm2 start app.js --name 'demo'
//查看这个项目的详细信息
pm2 show demo
//删除该项目
pm2 delete demo
//查看pm2当前启动的项目
pm2 list

安装nginx

  1. 安装
//安装nginx依赖环境
yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
cd ~ && mkdir source && cd source
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
//生成makefile文件
./configure
make && make install
  1. 将nginx添加到环境变量
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx

ps: 上面语法是为nginx创建一个软连接,
具体语法是ln -s 源文件 目标文件,要写成绝对路径

  1. nginx 相关命令
//启动
nginx 
//检查nginx配置是否错误
nginx -t
//重启nginx
nginx -s reload
//关闭nginx
nginx -s stop
  1. 参考更多nginx

安装mysql

cd ~/source
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
yum repolist all | grep mysql
sudo yum install mysql-community-server -y
//开启mysql服务
sudo systemctl start mysqld.service
//查看mysql服务状态
sudo systemctl status mysqld.service
//查看mysql临时登录密码
sudo grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p + 临时的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin!888';
//开启远程连接
use mysql;
select Host, User from user;
//第一个root表示用户名,%表示所有的电脑都可以连接,也可以设置某个ip地址运行连接,BY后面的字符串表示密码).表示任何数据库都可以被访问 %表示任意的ip都可以访问,这句话的意思表示允许数据库被任何主机以root用户以Credan!888(远程连接的密码,不是本地访问的密码)密码进行访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin!888' WITH GRANT OPTION;
//刷新授权
flush privileges;

安装mongod

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz  
mv  mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb 
//添加到环境变量,加入到~/.bash_profile文件里面
export PATH=/usr/local/mongodb/bin:$PATH 
source ~/.bash_profile 
mkdir -p /data/db
  1. 用上面创建好的admin账号,创建其他账号
    • use admin
    • db.auth("admin", "admin")
    • use yourdatabase
    • db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })
  2. db.auth("admin", "admin") 验证用户是否添加成功,返回1表示添加成功
  3. 修改上面mongod.conf配置文件 将auth=true打开,并且重启mongod
  4. 本地通过robo 3T 链接服务器mongo


    image.png
上一篇 下一篇

猜你喜欢

热点阅读