node,到数据库,到前端,边学边做,终于是搞出来了。
之所以做的这么慢是怕所学的知识不扎实,所以看完node,看koa,看完koa看egg,因为egg是最新的库,而且最近很火,所以就用egg.js了。
然后恶补linux的命令,发现数据库的sql语句非常看不懂,于是就恶补mysql,又看了mongodb,最后决定用mongodb,因为语法简直和js一样。
前端使用的react,想法很简单,因为工作中用的就是vue,已经很熟了,想再学学react,redux,学完redux以后对状态管用有了新的认识,感觉之前用的vuex简直就是模棱两可,
部署服务器让我对linux命令的系统神秘感淡化了很多,其实只是入门的话,简单的部署,安装个nginx,git什么的没有那么难,对于我这个非专业运维,完全够用了。
egg.js
mongodb+mongoose
react+react-router-dom+redux
ssh root@你的IP地址
部署前端代码我用的Xshell5,用法很简单。
后端代码用的git push 再在服务器上拉取。
root账号进行操作,总会给各个人员相应的账号
adduser username
gpasswd -a username sudo
cat查看文件
cat /etc/sudoers(这个文件是权限的配置文件)
cd到这个文件夹,打开文件
vi sudoers
# User privilege specification
root ALL=(ALL:ALL) ALL
username ALL=(ALL:ALL) ALL (在这里添加)
ssh username@39.106.133.41
22端口改为别的
本地生成公钥和私钥
ssh-keygen --help
cd ~/.ssh
ssh-keygen -t rsa -b 4096
把本地的公钥上传到服务器授权文件中
vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
sudo service ssh restart
vi /etc/ssh/sshd_configPort 2222 (在这里修改端口)
AllowUsers usernamePermitRootLogin yes (允许root账号登陆,可以改为no)
PasswordAuthentication yes (允许账号密码登陆,可以改为no)
ssh -p 2222 username@你的IP
sudo apt-get update
wget curl git
sudo apt-get install wget curl git
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source /root/.bashrc
nvm install node
node -v
npm -v
安装
cnpm(用cnpm用惯了,感觉npm下载太慢了)
npm i cnpm -g
列出子文件
ls
-l是查看时间的
ls -al (查看隐藏问价以及列出最后编辑时间)
vi编辑文件
首先要按一下i进入编辑模式
权限问题在命令前面加上sudo就好
:q //不保存文件退出
:q! //不保存文件强制退出
:wq //保存文件并退出
:wq! //强制保存文件并退出
ls -a可以查看到未编辑完的文件,删除 rm 文件名 rm -rf慎用(r递归f强制删除)
mv移动文件或者重命名
pm2 start app.js --name 'username' //起个别名
pm2 delete username
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
ssh-keygen -R 172.16.152.209
Host 39.106.133.41 found: line 3
Nginx是一个高性能的HTTP和反向代理服务器,也可以新建端口
apt-get install nginx
service nginx configtest
nginx配置文件全在/etc/nginx下
cat nginx.conf
/etc/nginx/sites-enabled
upstream web{
server 39.96.114.57:3000;
}
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html; // 文件存放位置
index index.html index.htm; //文件优先级
location / {
proxy_pass http://web;
}
}
nginx 新增端口
server {
listen 8080;
server_name 39.106.133.41;
root /usr/share/nginx/blog; (这里是新建的文件夹)
index index.html index.htm;
}
upstream webserver{
server 39.106.133.41:8080;
server 39.106.133.41:8090;
}
server {
listen 80;
server_name 39.106.133.41;
location / {
proxy_pass http://webserver;
}
}
nginx命令
名称 | 命令 |
启动nginx | nginx -c /etc/nginx/nginx.conf |
关闭 nginx | nginx -s stop |
重读配置文件 | nginx -s reload kill -HUP nginx |
常用命令 | service nginx {start|stop|status|restart|reload|configtest} |
mongodb
wget http://.../mongodb.tgz
data文件夹和log文件夹放在了var中
mongod --dbpath=/var/mongodb/data --logpath /var/mongodb/logs/log.log -fork
react或者vue项目,打包上传到相应的nginx里面
egg的话可以用git,就像平时上传代码一样,再cnpm i安装依赖
egg官方文档写的很明白,有自带的进城守护。
npm start
npm stop