搭建nextjs脚手架遇到的问题及解决

问题

nextjs是react的ssr后端渲染框架,在搭建过程中遇到一些问题,再次记录下来。

  1. 使用antd ui框架,同时使用scss预处理器,在next.config.js中同时使用with-lesswith-sass,并没有达到预期中的结果,scss文件解析正常,antd样式全丢。
  2. 实现antd的按需加载
  3. 使用typescript,如何配置。

    查看更多

分享到 评论

ubuntu 16.04 安装 postgresql 10

添加postgreql源

$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
$ sudo sh -c ‘echo “deb http://apt.postgresql.org/pub/repos/apt/ lsb_release -cs-pgdg main” >> /etc/apt/sources.list.d/pgdg.list’

安装 postgresql

$ sudo apt-get update
$ sudo apt-get install postgresql postgresql-contrib libpq-dev

添加用户

$ sudo -u postgres createuser –superuser roleuser

设置密码

$ sudo -u postgres psql
\password postgres
\q

修改配置 pg_hba.conf

local all all trust #修改peer为trust

修改设置postgresql.conf,让postgresql可远程访问

listen_addresses = ‘*’

在 pg_hba.conf 中添加

host all all 192.168.1.0/24 md5

192.168.1.0 ip换为自己的ip,

分享到 评论

使用travis-ci实现持续部署

前面已经使用travis部署自己的gitpage了,有些方法可以扩展到部署项目。这样就能够在我提交代码的时候,travis就可以就自动更新服务器的代码,并自动构建。
通过git clone命令把这个项目克隆到本地,然后在项目根目录下添加一个**.travis.yml**文件。这个文件是travis-ci持续集成的关键,它定义了你所有持续集成的操作。为了简单起见,我们仅仅使用它进行自动化部署:

1
2
3
4
5
language: node_js
node_js:
- "10"
after_success:
- ssh root@xxx.xxx.xxx.xxx -p yyy 'cd /home/www/project && git pull && npm run build'

配置ssh登录,前面已经写过。这样就可以登录远程服务器并完成,但是暴露密码总是不可以的…

travis 免密登录

  1. 在本地通过gem安装travis命令行工具(macOS默认支持ruby):
    1
    gem install travis
    使用travis登录:
    1
    travis login
    然后输入github的账号密码即可。
    加密本地ssh-key并自动写入.travis.yml:

** –add参数表示自动添加脚本到.travis.yml文件中**

1
travis encrypt-file ~/.ssh/id_rsa --add

这时会看到.travis.yml多了一段before_install的内容:

1
2
3
before_install:
- openssl aes-256-cbc -K $encrypted_e65149523857_key -iv $encrypted_e65149523857_iv
-in id_rsa.enc -out ~\/.ssh/id_rsa -d

然后把最后一行的“\”转义符删掉,并换行顶格添加如下两条内容:

1
2
- chmod 600 ~/.ssh/id_rsa
- echo -e "Host xxx.xxx.xxx.xxx\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config

切记把xxx.xxx.xxx.xxx换成你服务器的IP。
最后把添加.travis.yml的项目push到github即可。
重新回到travis-ci.org的页面,进入项目,就能够看到持续集成的效果了。

问题

使用travis登录远程服务器已经达成,拉去代码也可以,但是这次遇到一个问题:zsh:1: commad not found:npm,明明手动登录可以使用npm的,travis就不可以了呢?
排查了下发现原因是因为node是使用nvm管理的,npm不在**/usr/bin**下导致的,那一个解决方案就通过包管理器方式安装 Nodejs

分享到 评论

使用SSH登录远程服务器

一般使用ssh访问远程服务器的命令是:

1
ssh username@ip地址

例如:ssh root@112.232.12.12,然后输入密码即可访问。
<–more–>

以Mac OS为例,别名登录

使用cd ~/.ssh/ 进入ssh目录,会看到有config、known_hosts两个文件,一般的没有设置的话,只会有known_hosts,可以使用touch config命令创建config文件。

使用vim编辑config文件,添加如下内容:

1
2
3
4
Host txy
HostName 1xx.1xx.1xx.1
User root
IdentitiesOnly yes

其中:
1、Host 后边的是别名,以后可以根据这个名称进行访问;
2、HostName是你的主机IP地址;
3、User为主机登录的用户名;
4、IdentitiesOnly yes固有配置;

设置完成,后期的话使用:ssh txy 然后输入密码,就可以登录到远程主机啦!

密钥登录

每次登录SH都需要输入密码很麻烦,而且可能不太安全。SSH还能使用另外一种登录方式,也就是使用密钥登录。这种登录方式需要客户端生成一堆公钥私钥对,然后将公钥添加到服务器中,这样下次就可以直接登录了。

首先生成SSH密钥,依照提示输入信息即可。默认生成在用户主目录中的.ssh文件夹中。带pub的是公钥,接下来需要添加到服务器中。

然后登陆服务器,打开.ssh文件夹,在authorized_keys中添加到对应公钥。然后退出SSH重新登陆试试,成功的话不需要输入密码就会直接进入远程服务器。

分享到 评论

将git项目推送到多个地址

git设置

公司开发项目迁移,中间大约一周左右的测试期,两边地址都要上传,那么如何方便快捷的把代码托管到多个平台呢?
例如我有下面两个仓库:

1
2
https://gitlab.com/***/doctor.git 
https://github.com/***/doctor.git

先添加第一个仓库:

1
git remote add origin https://gitlab.com/***/doctor.git 

再添加第二个仓库:

1
git remote set-url --add origin https://github.com/***/doctor.git

如果还有其他,则可以像添加第二个一样继续添加其他仓库。

然后使用下面命令提交:

1
2
3
git push origin --all
或者特定分支
git push origin [branch]

打开.git/config,可以看到这样的配置:

1
2
3
4
[remote "origin"]
url = https://github.com/***/doctor.git
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://gitlab.com/***/doctor.git

刚才的命令其实就是添加了这些配置。如果不想用命令行,可以直接编辑该文件,添加对应的url即可。
如果两个地址的账号还不一样呢?

多账号ssh设置

首先生成另一个ssh公钥, 比如id_rsa_doctor,id_rsa_doctor.pub,
然后配置**.ssh**文件夹下的config文件,没有的话建立。

1
2
3
4
5
6
7
8
9
Host default
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
#second 第二个账号
Host second
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_doctor

这样的话就可以一次操作后,提交到两个仓库地址了。

分享到 评论