全栈开发心得

全栈开发心得

有次朋友想开家店,想弄一套基于微信的电商平台。想问我有没有门路?然后想了想。单子交给别人怎么都是好几万起步,自己虽然大概知道了一整套建站的理论,但是没有动手实现过。恰好,趁这个机会,动一动手。如果努力点,实现出来,基本上可以自称全栈开发了吧。

本篇只是个大概。后面再分几篇细分的文章。讲述项目进行过程中遇到的问题以及解决办法。

总结一下积累的知识,先说技术栈

服务器:腾讯vps + 腾讯cos + pm2 + nginx
后端:typescript + express + mongodb + redis
H5:Vue2 + Vuex + webpack4 + VantUI + less
管理后台:Vue2 + Vuex + webpack4 + elementUI + less

服务器相关

购买没啥好说,基本一路傻瓜点下去就行。首次登陆需密码登陆,首次登陆应该先配置ssh,省事,安全

配置ssh

先在本地电脑上生成ssh公钥

ssh-keygen -t rsa

一路回车,公钥生成在~/.ssh目录下,windows是C:\Users\{用户名}\.ssh。复制id_rsa.pub文件的内容

登陆服务器上,切换到 ~/.ssh目录下,编辑authorized_keys文件。把本地电脑的公钥字符串粘贴到该文件下即可。

现在已经可以再本地电脑上通过 ssh root@39.156.69.79 登陆机器了。

scp

语法是 scp from to

远程路径的语法是:<账号>@<ip>:<路径>

所以一般的操作是,在本地计算机执行scp,上传或者下载文件。而因为本地计算机无法在公网访问,所以一般不在服务器上执行scp命令。

举例,要上传公钥:

1
scp ~/.ssh/id_rsd.pub  root@39.156.69.79:~/.ssh/local_id_rsd.pub

那么反过来,下载则是

1
scp root@39.156.69.79:~/.ssh/id_rsd.pub  ~/.ssh/server_id_rsd.pub

注意:

  • 如果已经配置了ssh登陆,则无痛上传下载,否则,每次操作都需要输入密码
  • 记得下载命名不能冲突,否则会覆盖源文件
  • 直接使用winScp更便捷

修改默认ssh端口

为了增加安全性,最好修改一下ssh的登陆端口,修改方式看简书

添加快捷登陆

再本地电脑上,切换到 ~/.ssh目录下。新建config文件。再文件内部加上

Host tencent
    HostName 39.156.69.79
    User root
    IdentityFile ~/.ssh/id_rsa
    Port 1234

之后就可以通过ssh tencent直接登陆服务器了 。

node安装

yum install nodejs -y

默认安装的是6.17.1版本,所以还得升级

npm install n -g

n latest

nginx

nginx配置路径为:/etc/nginx/

为了方便,可以用ln命令设置软连接,快速定位ln

ls -sfn /etc/nginx/ nginx.ln

这样再当前目录下就有一个nginx.ln的链接到达nginx配置了。

nginx重启

nginx -s reload

我的项目分为3个端。server端、管理后台端与H5端。
server端在项目上知识用pm2启动,然后用nginx隐藏端口

location / {
       proxy_pass http://127.0.0.1:4000;
 }

而两个前端分别webpack打包,上传到cos,然后再由nginx代理,方法一样

location /admin {
     proxy_pass https://app-1258538316.cos.ap-chengdu.myqcloud.com/app/static-admin/dist/index.html;
}

location /h5 {
    proxy_pass https://app-1258538316.cos.ap-chengdu.myqcloud.com/app/static/dist/index.html;
}

就可以。

docker

docker切换国内源

新版的 Docker 使用/etc/docker/daemon.json(Linux) 或者 C:\programdata\docker\config\daemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个):

{
      "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

然后重启docker服务systemctl restart docker(Linux) windows重启电脑吧

Redis

安装redis并且设置密码

docker run --name redis -p 6379:6379 -d redis --requirepass "RedisPasswd"

redis使用

一般作为session的缓存而已。不会单独使用

mongo

centos安装mongo,参照segmentfault并不难

唯一要修改的地方是,创建账号时,role用userAdminAnyDatabase

db.createUser({ user: "root", pwd: "123456", roles: [{ role: "root", db: "admin" }] })

//////////////////////////////以下是docker安装,失败/////////////////////////////////////

docker安装mongodb

docker run -name mongo -p 27019:27019 -d mongo -auth
  1. 进入mongo 容器
    docker exec -it mongo /bin/bash
  2. 添加账户(也可以用客户端操作)
// 进入mongo命令行
mongo
// 切换到admin数据库
use admin
// 创建

db.createUser({ user: "root", pwd: "123456", roles: [{ role: "root", db: "admin" }] })

// 检查是否正确创建
db.auth("root", "123456")

考虑到数据安全性,万一一不小心删除的mongodb的docker。数据全没了。所以还是本地安装靠谱

mongo连接

实现得并不好,就不记录了。

pm2

开发

后端部分

redis作为存储session的配置

前端部分