拥有一台服务器,可以做多少事?

221 阅读4分钟

最近闲来无事,趁着腾讯云搞活动,整了台服务器,正好复习一下之前的知识,搬砖归搬砖,也要开开心心的搬。

环境安装

作为一名前端开发,接触服务器比较少,下面这些安装环境的方法可能不正规,但是对于自己学习来说,可以熟悉整个流程,还请大家多多指教。下面是以centos 8 为基础安装的

1. docker

为什么装docker呢,我也不知道,但是就是觉得想试着用下,顺便学习下docker的基本用法

安装呢我是按着docker官网的教程来的,由于是新服务器,基本一次就下来了

yum install -y yum-utils

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install docker-ce docker-ce-cli containerd.io

systemctl start docker

就是按着顺序装下来就ok了

常用的docker命令

docker images // 查看镜像
docker container ls //查看容器
docker pull xxx // 拉取镜像
docker image rm xxx // 删除镜像
docker rm xxx //删除容器
docker run // 启动

2. 安装node

前端嘛,node肯定是需要的,下面记录下怎么在centos上装node,简单但是我怕忘了,记录下

对了,我是先装的nvm,用nvm安装的node

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

3. 搭建npm私库

为什么要搭建私库呢,试问哪个前端不想拥有一个私库,开个玩笑,其实在公司使用npm私库,可以把重用的业务代码发成npm包,提高代码复用,etc...好处很多就不一一列举了,下面看看怎么装

安装

私库的搭建有很多种方式,我们采用verdaccio来搭建,有两种方式,

  1. 使用npm全局安装
npm i verdaccio -g

安装完verdaccio我们需要改下配置文件conf.yaml,将listen监听的地址改为0.0.0.0:${prot},端口随意,之前的localhost启动服务之后外网是访问不到的 全局安装完我们需要一个守护程序,要不进程一关私库服务就停了,这里我们使用的pm2

npm i -g pm2

安装完pm2后,我们可以使用下面命令来启动

pm2 start verdaccio

注意: 启动之后如果外网访问不到,看下服务器是否开放对应的端口

  1. 使用docker安装 npm的方式安装很简单,但是docker装了不能不用不是
docker pull verdaccio/verdaccio

用docker搭建要注意数据持久化

首先新建文件来存储配置信息以及缓存安装过的包,我们将文件建到/data下

mkdir verdaccio && cd verdaccio
mkdir conf && mkdir storage
cd conf
touch htpasswd
touch config.yaml
vim config.yaml

在config.yaml中增加下面👇的配置

# path to a directory with all packages
storage: ./storage

auth:
  htpasswd:
    file: ./htpasswd
    # Maximum amount of users allowed to register, defaults to "+inf".
    # You can set this to -1 to disable registration.
    max_users: -1

# a list of other known repositories we can talk to
uplinks:
  npmjs:
    url: https://registry.npm.taobao.org

packages:
  '@*/*':
    # scoped packages
    access: $authenticated
    publish: $authenticated
    proxy: npmjs

  '*':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $authenticated

    # allow all known users to publish packages
    # (anyone can register by default, remember?)
    publish: $authenticated

    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

# log settings
logs:
  - {type: stdout, format: pretty, level: http}
  #- {type: file, path: sinopia.log, level: info}

listen:
  - 0.0.0.0:4873

这套配置是只有登陆的用户才能访问,并且不允许注册,那怎么用?别急下面我们会有增加用户的方法

然后启动

docker run --name verdaccio -d -v /data/verdaccio/conf:/verdaccio/conf  -v /data/verdaccio/storage:/verdaccio/storage  -p 4873:4873 verdaccio/verdaccio

如果发现配置不生效或其他问题看看建的verdaccio文件权限是否正确

此时打开浏览器,访问http:xx.xx.xx.xx:4873,看到下面的截图就算成功搭建了

verdaccio.png

权限

上面我们把配置文件设置成不允许注册,下面我们用其他方式来做注册用户

注册方式提供了两种

  1. 可以通过官方提供的在线工具生成字符串,放到我们之前创建的verdaccio/conf/htpasswd文件中即可

password.png

  1. 可以通过htpasswd-for-sinopia包来注册用户
npm i -g htpasswd-for-sinopia

安装完包后,在之前的htpasswd目录下执行下面命令,一步步按着提示进行即可

sinopia-adduser

至此我们的verdaccio一件搭建完成,现在这种权限控制略显笨拙,到后面我们再想办法优化

4.mysql

前端还要用mysql?玩玩而已,不必认真。面试的时候问职业规划,谁还没说过想做全栈。

我们使用docker来安装mysql

docker pull mysql:8

和verdaccio一样,mysql也必须做数据持久化,要不服务器一挂,数据全丢了,这就尴尬了

我们在/data文件下新建几个文件

mkdir mysql && cd mysql
mkdir config && mkdir data
cd config
vi my.conf

配置以下内容

[mysqld]
user=root
character-set-server=utf8
default_authentication_plugin=mysql_native_password

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

启动容器

docker run -d -p 3306:3306 --restart always --privileged=true --name test_mysql -e MYSQL_ROOT_PASSWORD=123456 -v /data/mysql/config/my.conf:/etc/my.cof -v=/data/mysql/data:/var/lib/mysql mysql:8

在电脑上装一个可视化工具,连接一下试试,不出意外应该没问题了

5. nginx

安装nginx为了之后能方便我们部署一些服务

安装

在centos上安装nginx很简单,也很方便,只需要输入下面的命令

yum -y install nginx

常用命令

systemctl enable nginx // 设置开机启动
service nginx start // 启动 nginx
service nginx stop // 停止 nginx
service nginx restart // 重启 nginx
service nginx reload // 重新加载配置

小结

我们已经安装这些环境,但是还没具体用起来,后续的计划是

  1. 脚手架开发
  2. js类库搭建
  3. 组件库搭建
  4. ci/cd自动发布
  5. 基于egg.js以及vue3开发一个低代码玩具 以后会一点一点更新,算是记录一下过程。