首页
碎碎念
东邻西舍
本站信息
前来吐槽
Search
1
openwrt系统上安装第三方插件
11,241 阅读
2
ubuntu下zerotier的基本使用教程
6,125 阅读
3
给小米R3G更换系统:从padavan刷成openwrt
2,510 阅读
4
为padavan安装SSL证书
1,389 阅读
5
openwrt无线中继功能:实现不插网线就能上网
1,377 阅读
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
登录
Search
标签搜索
Linux
建站
踩坑实录
Ubuntu
Java
MySQL
CSS
折腾搞机
HTML
SQL
MyBatis
Nginx
只言片语
树莓派
OpenWrt
路由器
SSL
Maven
Git
随笔
知识分子没文化
累计撰写
78
篇文章
累计收到
63
条评论
首页
栏目
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
页面
碎碎念
东邻西舍
本站信息
前来吐槽
搜索到
20
篇与
Linux
的结果
2021-12-11
常用的一些Nginx配置
[Meting] [Music server="netease" id="27483168" type="song"/] [/Meting] 目录: 1、监听端口 2、日志功能 2.1、访问日志 2.2、错误日志 3、配置域名 4、静态资源 5、重定向 5.1、网站根目录重定向 5.2、特定目录重定向 6、反向代理 7、负载均衡 8、SSL配置 1、监听端口 server { # 用于HTTP协议 listen 80; # 用于HTTPS协议 listen 443 ssl; # 用于HTTP2 listen 443 ssl http2; # 使用IPv6监听80端口 listen [::]:80; # 仅使用IPv6 listen [::]:80 ipv6only=on; } 2、日志功能 Nginx的日志分为两种:access_log (访问日志)和 error_log(错误日志)。 对于日志的格式,Nginx提供了一种名为 combine 的格式,如果没有明确指定日志格式则默认使用该格式。 如果不使用 combine 格式的话,可以使用 log_format 指令来自定义,其具体用法参考Nginx日志配置详解或者官方文档:HttpLog模块-Nginx中文文档。 2.1、访问日志 访问日志主要记录客户端的请求,客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。 server { # 访问日志文件的写入位置,相对或绝对路径 access_log /path/to/file.log; # 选择访问日志功能的开启(on)或关闭(off) access_log on; } 2.2、错误日志 错误日志记录服务器和请求处理过程中的错误信息。 server{ # 错误日志的写入位置 error_log logs/error.log error; # 错误日志的级别,分为 debug, info, notice, warn, error, crit, alert,emerg,其取值范围是按紧急程度从低到高排列 # 只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error error_log file [level]; } 3、配置域名 server { # 监听domain.com server_name domain.com; # 监听多个域名 server_name domain.com www.domain.com; # 监听所有域名 server_name *.domain.com; # 监听所有顶级域名 server_name domain.*; # 监听未指定的主机名(比如侦听IP地址本身) server_name ""; } 4、静态资源 server { listen 80; server_name domain.com; location / { # 设置网站的根目录 root /path/to/website; } } 5、重定向 5.1、网站根目录重定向 server { listen 80; server_name www.domain.com; # 将 www.domain.com 进行301重定向,跳转至 http://domain.com$request_uri return 301 http://domain.com$request_uri; } 5.2、特定目录重定向 server { listen 80; server_name www.domain.com; # 将链接 http://www.domain.com/redirect-url 进行301重定向,跳转到http://otherdomain.com location /redirect-url { return 301 http://otherdomain.com; } } 如将 domain.com 永久重定向到 www.domain.com: server { listen 80; server_name domain.com; return 301 http://www.$host$request_uri; } 6、反向代理 反向代理 - 维基百科,自由的百科全书 (wikipedia.org) Reverse proxy - Wikipedia server { listen 80; server_name domain.com; # 对特定主机的3000端口进行反向代理 location / { proxy_pass http://0.0.0.0:3000; } } 7、负载均衡 负载均衡 - 维基百科,自由的百科全书 (wikipedia.org) Load balancing (computing) - Wikipedia upstream node_js { server 0.0.0.0:3000; server 0.0.0.0:4000; server 123.131.121.122; } server { listen 80; server_name domain.com; location / { proxy_pass http://node_js; } } 8、SSL配置 server { listen 443 ssl; server_name domain.com; ssl on; # 证书文件,格式不一定都是pem,还可能是其他格式 ssl_certificate /path/to/cert.pem; # 秘钥文件,格式不一定都是pem,还可能是其他格式 ssl_certificate_key /path/to/privatekey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_timeout 1h; ssl_session_cache shared:SSL:50m; add_header Strict-Transport-Security max-age=15768000; } # 将HTTP永久重定向到HTTPS server { listen 80; server_name domain.com; return 301 https://$host$request_uri; } 部分内容转载修改自: Nginx Cheatsheet (hashnode.dev) Nginx日志配置详解_biubiuli的博客-CSDN博客_nginx 日志配置
2021年12月11日
172 阅读
0 评论
0 点赞
2021-09-14
目前最流行的版本控制软件:Git的基本使用
[Meting] [Music server="netease" id="89770" type="song"/] [/Meting] 前排提示: 本篇博客篇幅较长,建议结合目录查看! 目录: 写在前面 1、关于版本控制系统 定义 版本控制的必要性: 常见的版本控制系统 2、Git与Github 0x01.安装Git 0x02.Github中的一些基本概念 Repository Issue Star Fork Pull Request Watch Wiki Gist 0x03.添加SSH key 0x04.克隆仓库 0x05.初始化仓库 0x06.提交修改 0x07.分支操作 查看分支 建立新分支 切换分支 建立并切换到新分支 推送本地分支到远程仓库 合并分支 删除分支 重命名分支 0x08.标签操作 附注标签 轻量标签 切换标签 推送标签 删除标签 查看所有标签 给提交打标签 写在前面 1、关于版本控制系统 定义 版本控制(Version control)是维护项目的标准作法,能追踪项目从诞生一直到定案的过程。此外,版本控制也是一种软件工程技巧,借此能在软件开发的过程中,确保由不同人所编辑的同一程序文件都得到同步,记录项目内各个模块的改动历程,并为每次改动都编上序号。 一种简单的版本控制形式如下:工程的初代版本为“1.0”,当做了第一次改变后,版本等级改为“1.1”,以此类推。因此,版本控制能提供给开发者将项目恢复到之前任一状态的选择权,这种选择权在设计过程进入死胡同时特别重要。 版本控制的必要性: 常会利用版本控制来追踪维护源代码、文件以及配置文件等的改动,并且提供控制这些改动控制权的程序; 有时候,一个程序同时存有两个以上的版本,例如:在一个稳定版本中程序错误已经被修正、但没有加入新功能;在另一个开发版本则有新的功能正在开发、也有新的错误待解决,这使得同时间需要不同的版本; 此外,为了找出只存在于某一特定版本中(由于修正了某些问题、或新加功能所导致)的程序错误,或找出程序错误出现的版本,开发者也需要比对不同版本的代码以找出问题的位置。 常见的版本控制系统 集中式版本控制系统:由一台或多台主计算机组成中心服务器,所有业务单元和项目版本库都集中存储在这个中心服务器上,开发时,要先从中央服务器取得项目最新的版本,一次开发完毕之后,再将工作量推送给中央服务器。就像是一个图书馆,如果要改一本书的内容,则需要把书先从图书馆借出来,然后修改,改完之后再放回图书馆。 因此,集中式版本控制系统最的大缺点就是中央服务器出了问题,所有人都没法工作了。 常见的集中式版本控制系统有SVN、CVS等。 分布式版本控制系统:分布式版本系统没有绝对的中央服务器,每个人的电脑上都是一个完整的版本库,多个人进行协同工作时,只需将自己的修改与其他人的修改进行交换即可 和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,其中一个人的电脑坏了不要紧,从其他人那里复制一个就可以了。 Git就是常见的分布式版本控制系统之一,也是目前最流行的版本控制系统。 2、Git与Github 准确地说,Git与Github根本不是同一个概念。 Git是指由Linus(就是那位二十多年前徒手撸出Linux内核的大佬)编写的分布式版本控制系统,于2005年以GPL发布。最初目的是为了更好地管理Linux内核开发。 自2002年以来,Linus一直使用BitKeeper作为Linux内核主要的版本控制系统以维护代码。在Linux社区中,主张应该使用开放源代码的软件来作为Linux内核的版本控制系统。Linus曾考虑过采用现成软件作为版本控制系统(例如Monotone),但这些软件都存在一些问题,特别是性能不佳。 2005年,Linux社区中的安德鲁·垂鸠写了一个可以连接BitKeeper的存储库的简单程序,BitKeeper著作权拥有者拉里·麦沃伊便认为安德鲁·垂鸠对BitKeeper内部使用的协议进行了逆向工程,决定收回无偿使用BitKeeper的许可。Linux内核开发团队与BitMover公司进行磋商无果后,Linus决定自行开发版本控制系统以替代BitKeeper,在十天的时间编写出git第一个版本。于是,世界上最流行的版本控制系统就这么戏剧式地诞生了。 而GitHub是通过Git进行版本控制的软件源代码托管服务平台,由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、P. J. Hyett和Thomas Preston-Werner使用Ruby on Rails编写而成,于2007年10月1日开始开发。beta版本开始上线于2008年2月,4月份正式上线。这是他们的logo,名字叫Octocat: 截止到2020年1月,GitHub已经有超过4000万注册用户和1.9亿代码库(包括至少2800万开源代码库),事实上已经成为了世界上最大的代码存放网站和开源社区,国内很多人戏称为“全球最大同性交友网站”。 2018年6月4日晚,微软宣布以75亿美元的股票收购GitHub。 Github服务器在国外,处于半被墙的状态,有时正常访问,有时又打不开。与之类似的代码托管平台Gitee可以看做是国内版的Github,缺点是开源项目不如Github丰富,当然,由于在访问时速度更快,更适合国内用户托管代码。而且,部分开源项目是同时托管在这两个平台上的,所以碰到无法打开的Github项目时,在Gitee上找找也许会有惊喜。 0x01.安装Git Git在全平台均可使用。 Git官网:Git (git-scm.com) 官方中文文档:Git - Book (git-scm.com) Windows系统Git安装包下载链接:Git - Downloads Linux系统安装Git:Git - Download for Linux and Unix Mac系统安装Git:Git - Download for macOS 安装完成之后在控制台中输入git,如果出现如下输出说明安装成功: 前面提到过,Git只是一个分布式版本管理软件,每个人的计算机都是一份完整的版本库,对这份版本库进行修改之后,将每个人的修改进行合并。但是如果不在同一个内网中,合并修改就会变得困难。此时也需要一个中央服务器来辅助进行代码的合并。这也就是Github、Gitee、Gitlab等平台最基本的作用。 因此,我们还需要注册一个Github/Gitee账号,将我们的代码托管到平台上面(从某种角度上将它看成一个专门存放代码的云盘也未尝不可)。Github注册账号及用户界面介绍可以参考这篇文章:从0开始学习 GitHub 系列之「加入 GitHub」 (qq.com),本篇博客不再介绍。 0x02.Github中的一些基本概念 Repository 仓库,即项目,要在GitHub上开源一个项目,那就必须要新建一个Repository。 Issue 问题的意思,举个例子,比如开源的项目,别人发现项目中有bug,或者哪些地方做的不够好,他就可以提个Issue,即问题,提的问题多了,也就是 Issues ,然后开发者看到了这些问题就可以去逐个修复,修复ok了就可以一个个的Close掉。 Star 就是给项目点赞,这个star的含金量还是挺高的。 Fork 这个可以翻译成分叉,你想在某个开源项目的基础上做些改进,然后应用到自己的项目中,这个时候就可以Fork这个项目,与此同时你的GitHub主页上就多了一个项目,只不过这个项目是基于这个开源项目(本质上是在原有项目的基础上新建了一个分支)。而你就可以随心所欲的去改进这个项目了,丝毫不会影响原有项目的代码与结构。 Pull Request 发起请求,这个其实是基于Fork的,还是上面那个例子,如果你在项目基础上做了改进,就可以把自己的改进合并到原有项目里,这个时候你就可以发起一个Pull Request(简称PR),原有项目开发者会收到这个请求,这个时候他会review代码,并且测试觉得OK了,就会接受PR,这个时候新的改进会被合并进原有项目。 Watch 可以理解为观察,如果Watch了某个项目,以后如果这个项目有更新,都会收到关于这个项目的通知提醒。 Wiki 一般来说,项目的主页有README文件基本就够了,但是有些时候项目的一些用法很复杂,就需要有详细的说明文档给使用者。这个时候就可以用Wiki,使用markdown语法即可进行编写。 Gist 如果没有项目可以开源,只是单纯的想分享一些代码片段,那这个时候Gist就派上用场了。 0x03.添加SSH key 当我们对代码进行提交时,Github/Gitee要怎么知道是我们提交的代码,而不是别人提交的呢,所以就需要进行授权来确认我们的身份。 Github和Gitee服务器可以选择使用SSH公钥或GPG公钥来进行授权,这里采用SSH授权方式,提交代码之前需要先添加SSH key配置。大概步骤就是先在本地生成SSH key,然后将本地生成的SSH key添加到Github或者Gitee上。 SSH(Secure Shell)是一种建立在应用层基础上的安全协议,一般用于远程登录会话和其他网络服务。由于在传输过程中对数据进行了加密和压缩,因此可以有效防止远程管理过程中的“中间人攻击”,传输速度也会更快,还能够防止”DNS欺骗“和”IP欺骗“等。 生成SSH密钥: ssh-keygen -t rsa 这句命令的意思是用RSA算法生成密钥(windows系统最好在Git Bash下执行,cmd终端可能并没有安装ssh),执行后出来三次提示均按回车,命令执行完会生成id_rsa(密钥)和id_rsa.pub(公钥)这两个文件。Linux/Mac系统在~/.ssh下,windows系统在C:\Users\用户名\.ssh(用户名是自己电脑的用户名)下,需要设置显示隐藏文件选项才能看到。 将id_rsa.pub用文本编辑器打开,复制里面的内容。 添加公钥到Github/Gitee: 进入Github/Gitee的设置界面,在左侧选项列表找到SSH keys选项 将刚才复制的公钥粘贴上去,公钥标题可写可不写,然后保存,这样就完成了公钥的添加。 0x04.克隆仓库 说来惭愧,这是我接触到Github之后很长时间内最常用的操作(因为就只会这一个操作)。命令很简单: git clone [仓库链接] 这个命令的作用就是从Github上下载别人仓库的项目文件,可能是从clone直接音译过来的原因,这个操作一般都称克隆,而不叫下载。 克隆操作只需要有远程仓库链接即可,不需要Github账户也可以进行。克隆完之后项目文件的位置就是执行命令时所处的文件夹。 远程仓库链接在项目主页就可以找到: 0x05.初始化仓库 所谓初始化本地仓库,个人理解就是向本地的项目根目录文件夹中加入一些Git配置文件,使其可以被Git识别以进行版本控制,因为项目文件夹是不能直接进行版本控制的。 初始化本地仓库命令很简单,进入本地项目文件夹(或者用空文件夹),在该目录下执行: git init 也可以在命令后面加入文件夹路径,将指定文件夹初始化成本地仓库: git init [项目文件夹名路径] 项目初始化成功会有Initialized empty Git repository in xxxxxxx的提示,原项目文件夹中多出一个.git隐藏文件夹。此时初始化的本地项目还没有关联到远程仓库。 当然,有本地仓库还不行,我们本意是要把本地仓库推送到远程仓库,因此,还需要在Github/Gitee上建一个远程仓库。点击网站右上角加号,找到“New Repository(新建仓库)” 上图最后三项是用来初始化远程仓库的,如果这三项都不选就创建了仓库,就会提示用命令行来手动初始化远程仓库(所以建议对命令行不感冒的同学直接使用自带的初始化操作)。 来记录一下用命令行手动初始化远程仓库的步骤: 先在本地初始化好的Git项目中新建一个README.md项目说明文件(也可以是别的文件名) 在项目目录下执行命令与远程仓库进行关联: git remote add origin [远程仓库链接] 依次执行以下命令向暂存区加入修改文件,并编辑提交信息 git add README.md # 引号中就是本次提交信息,可修改 git commit -m "first commit" 向远程仓库推送本地仓库文件: Gitee只执行这条命令即可推送: git push -u origin master 从2020年10月开始,Github的默认分支从master变成了main,因此还需要将本地默认主分支重命名为main才能推送成功: git branch -M main git push -u origin main 如果不重命名主分支,就会出现“error: src refspec main does not match any,error: failed to push some refs to ..”的错误。 上述命令执行完之后,再刷新远程仓库界面,就进入了初始化好的远程仓库: 对于都已经初始化过的本地空仓库与远程仓库,使其建立关联可以这样做: # 先关联远程仓库 git remote add origin [仓库远程链接] # 再将远程仓库内容拉取到本地 git pull origin master 0x06.提交修改 所谓修改,就是相对于上次提交之后项目发生的改变(项目文件的增、删、改)。 其中要涉及到push和pull这两个互为相反的概念: Push:直译就是“推”的意思,这个操作可以把本地代码推到远程仓库,这样本地仓库跟远程仓库就可以保持同步了。 Pull:直译为“拉”的意思,如果别人提交代码到远程仓库,这个时候本地仓库代码与远程仓库代码并不一致,所以需要把远程仓库的最新代码拉下来,以保证两端代码的同步。 同时,提交代码前最好设置一下提交者的名字与邮箱,方便在commit记录里显示: git config —global user.name "名字" git config —global user.email "邮箱" 通常一次完整的提交过程如下: 将修改过的文件加入暂存区: git add [修改的文件或者目录] # .表示此目录下所有文件,一次提交的文件较多时,可以使用此命令 git add . 确认提交暂存区中的文件: # -m表示附加提交信息,后面的内容是关于提交的信息说明 git commit -m "提交信息" git add是先把改动添加到一个“暂存区”,可以理解成是一个缓存区域,临时保存改动,而git commit才是最后真正的提交。这样做的好处是防止误提交。 最后将代码推送到远程仓库指定分支,即可完成一次代码提(其中注意,最后提交时Gitee与Github的分支名有所不同): # 推送代码到指定分支 git push origin [分支名] # Github默认分支是main,用以下命令: git push origin main # Gitee默认分支是master,用以下命令: git push origin master 这里的origin是给远程仓库起的名字,当然名字并不唯一,可以是其他名字,只是因为习惯,一般都起名为origin。 一般在多人协作时,为了不产生代码冲突,提交代码前最好进行一次Pull操作: git pull origin [分支名] 查看git仓库当前状态,比如当前所在分支、被修改过的文件、未提交的文件等等: git status 查看提交时产生的所有commit记录: git log 0x07.分支操作 branch即分支的意思,分支的概念在团队协作的时候很重要,假设两个人都在做同一 个项目,这个时候分支就是保证两人能协同合作的最大利器了。举个例子,A, B两人在做同一个项目不同的模块,这个时候A新建了一个分支叫a,B新建了一个分支叫b,这样 A、B做的所有代码改动都在各自的分支上,互不影响,等到都把各自的模块做完 了,最后再统一把分支合并到master主分支。 在本地执行git init命令初始化仓库时默认生成一个主分支master。 而远程仓库的情况就有所不同了,曾经Github远程仓库的默认主分支也是master,但是去年(2020)10月份之后Github将默认主分支名称从master改成了main(据说是因为master这个词意为奴隶的主人,含有种族歧视意味),这也是在前面手动初始化Github仓库时要将主分支名重命名为main的原因。 而Gitee的主分支名称依然是master。 查看分支 查看本地分支列表: git branch 查看远程分支列表: git branch -r 建立新分支 git branch [分支名] 需要注意的是,新创建的分支的内容与当前所在的分支的内容相同,即新分支是基于当前所在的分支而创建的。 当我们建立了新分支以后,默认不会切换到新分支上,当前做出的任何更改还是基于当前所在的分支,所以需要切换分支。 切换分支 git checkout [分支名] 此时进行的改动就是在新分支下面了。当然,也有办法一步到位,加入-b参数即可。 建立并切换到新分支 git checkout -b [分支名] 推送本地分支到远程仓库 在本地建完新分支之后,就可以将本地新分支推送到远程仓库了,以保证两端同步 git push origin [新分支名] 如果本地推送到远程的分支想取另一个名字,那么可以用这条命令: git push origin [本地分支名]:[远程新分支名] 但是强烈不建议这样,这会导致管理混乱,建议本地分支跟远程分支名要保持 一致。 合并分支 当团队中不同成员都完成了开发之后,就可以将改动都合并到一块了。 # 首先切换到要合并到的分支上来,比如master(main)分支或是指定分支 git checkout [分支名]/main/master # 进行合并,将指定分支合并到当前所在的分支(即上一步切换到的分支)上来 git merge [指定分支] 在没有冲突的情况下,代码就可以合并完成了。合并完记得把新代码push到远程仓库。 删除分支 分支建错或者该分支的代码已经顺利合并到其他分支的时候,就可以删除分支了: git branch -d [分支名] 有些时候可能会删除失败,比如该分支的代码还没有合并到master或者其他分支,执行删除分支操作就会失败,Git会提示这个分支上还有未合并的代码,但是也可以强制删除分支: git branch -D [分支名] 以上仅仅为删除本地分支,若要删除远程分支可以可以运行带有 --delete 选项的 git push 命令: git push origin --delete [远程分支名] 重命名分支 将A分支重命名为B分支: git branch -m A B 类似于删除分支,无法重命名时,也可以强制重命名: git branch -M A B 如果是重命名远程分支,推荐的做法是: 删除远程待修改分支 push本地新分支名到远程 0x08.标签操作 开发的时候经常有版本的概念,比如v1.0、v1.1之类的,不同的版本肯定对应不同的代码,所以给代码打上标签,标签名可以是版本号或者其它标记。 Git 支持两种标签:附注标签(annotated)与轻量标签(lightweight)。 附注标签 附注标签是存储在Git数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、邮件地址、日期时间, 此外还有一个标签信息,并且可以使用GNU Privacy Guard(GPG)签名并验证。 通常建议创建附注标签,这样就可以拥有以上所有信息 添加附注标签信息用这条命令: git tag -a [标签名] -m "标签信息" -m参数为可选的,表示指定一条存储在标签中的信息。如果省略-m参数,那么Git会自动打开编辑器,让我们写一句标签信息,就像给提交写注解一样。 利用git show命令可以查看标签信息与对应的提交信息: git show [标签名] 输出会显示打标签者的信息、打标签的日期时间、附注信息与具体的提交信息。 轻量标签 如果只是想用一个临时的标签, 或者因为某些原因不想要保存这些信息,那么就可以用轻量标签。 轻量标签很像一个不会改变的分支——它只是某个特定提交的引用。本质上是将提交校验和存储到一个文件中——没有保存任何其他信息。 创建轻量标签,不需要使用 -a、-s 或 -m 选项,只需要提供标签名: git tag [标签名] 同样的,利用git show命令查看标签信息与对应的提交信息,输出只会显示出提交信息,不会看到额外的标签信息。 切换标签 当要切换到某个tag时,命令与切换分支类似: git checkout [标签名]; 推送标签 同样的,向远程仓库推送单个标签的命令与推送分支也是类似的: git push origin [标签名] 如果一次推送多个标签,可以使用带有--tags的git push命令: git push origin --tags 这条命令会将所有不在远程仓库服务器上的标签全部推送到远程仓库。 删除标签 删除本地标签: git tag -d [标签名] 上述命令并不会从远程仓库中移除这个标签,从远程仓库移除标签有两种办法: git push <remote> :[标签名称] 这种操作的含义是,将冒号前面的空值推送到远程标签名,从而实现删除的效果。 第二种方式相对来说更直观: git push origin --delete [标签名] 查看所有标签 执行git tag命令,就可以列出所有标签: git tag 默认是以字母顺序排列标签。 当然,可带上可选的 -l 选项或者 --list选项,以匹配特定标签名: git tag -l "通配符" # 或者 git tag --list "通配符" 例如,只查阅v2.*版本的标签名: git tag -l "v2.*" 给提交打标签 假设在过去某一个时刻提交了项目更改,后期才想起来忘记给项目打标签了,那么也可以在之后补上标签: git tag -a [标签名] [校验和] 与创建标签命令不同,需要在标签名之后添加一个校验和选项(也可以是部分校验和)。 通过以下命令可以查看每一次提交的校验和与对应的提交信息: git log --pretty=oneline 参考资料: 微信公众号 - stormzhang:从0开始学习Github系列文章 Git 教程 | 菜鸟教程 (runoob.com) Git - Book (git-scm.com) 版本控制 - 维基百科,自由的百科全书 (wikipedia.org) git - 维基百科,自由的百科全书 (wikipedia.org) GitHub - 维基百科,自由的百科全书 (wikipedia.org)
2021年09月14日
264 阅读
0 评论
0 点赞
2021-09-01
Linux设置定时任务:cron的用法
[Meting] [Music server="netease" id="862099032" type="song"/] [/Meting] 目录: 0x01.cron是什么 0x02.crontab命令语法 0x03.crontab任务规则 1、标准规则 2、非标准规则 0x04.其他 1、定时任务生效时间 2、定时任务不生效 3、环境变量相关问题 0x01.cron是什么 cron该词来源于希腊语chronos(χρόνος),原意是时间。是一款类Unix的操作系统下的基于时间的任务管理工具。用户可以通过cron在固定时间、间隔下,运行指定任务(可以是命令和脚本)。 cron的操作由crontab(cron 表)文件驱动,该文件是一个配置文件,用于指定按给定计划定期运行的shell命令。crontab文件存储在保存作业列表和cron守护程序的其他指令的位置。 用户可以拥有自己的个人crontab文件,并且通常有一个系统范围的crontab文件(通常在/etc或/etc的子目录中),只有系统管理员才能编辑。 要新添加一个定时任务,需要编辑crontab文件(即cron表),在其中添加相关任务即可,定时任务的编写规则见第三条。 0x02.crontab命令语法 crontab [ -u user ] { -l | -r | -e } 说明: -u user参数可以设定某一个用户的cron表,前提是必须要有相关权限(比如root权限),才能够设定其他人的crontab文件。如果不使用-u user的话,就是表示设定自己的crontab文件 -e:执行文字编辑器来设定时程表,内定的文字编辑器是vi -r:删除目前的cron表中的所有任务 -l:列出目前cron表中的所有任务 综上,简单总结基本的常用命令: 直接编辑crontab文件: crontab # 这个命令执行完之后,直接接受控制台中的输入流作为任务命令 用编辑器编辑crontab文件: crontab -e 删除当前所有的任务规则: crontab -r 列出目前所有的定时任务: crontab -l 其中,可以在crontab之后加上-u user的参数来操作指定用户对应的crontab文件,前提是必须要有相关权限(比如root权限)。否则就是操作自己的crontab文件。 0x03.crontab任务规则 1、标准规则 简单理解就是执行时间+ 命令的形式。 其中时间是由五个域组成,分别为分钟、小时、天、月份、星期,每个域可以放置单一或多个数值,同时每个域之间都有空格来进行区分,如下所示: ┌──────────── 分钟 (0 - 59) │ ┌──────────── 小时 (0 - 23) │ │ ┌──────────── 天 (1 - 31) │ │ │ ┌──────────── 月份 (1 - 12) │ │ │ │ ┌──────────── 星期中的某天 (0 - 6) (从周日开始算到周六) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * * * * * [用户名] <要执行的命令> 在用户层次的crontab文件中,用户名是可以省略的参数,而系统层次的crontabs文件的任务经常会指定一个或以上的用户进行执行,因此需要增加用户名字段。 注: 在某些系统里,星期日也可以为7 不很直观的用法:如果日期和星期同时被设定,那么当其中的一个条件被满足时,指令便会被执行。而不是同时满足 为方便个人记忆,前5个域可称之为分时日月周 表示时间的每个域里除了可以是具体数值,还可以是表达式或者是多个数值: 逗号(,)列举出多个数值,例如:1,3,4,7 * * * * echo hello world表示在每小时的1、3、4、7分时,打印"hello world"。 连词符(-)表示一个数值范围,例如:1-6 * * * * echo hello world ,表示每小时的1到6分钟内,每分钟都会打印"hello world"。 星号(*)代表任何可能的值。例如:在“小时域”里的星号等同于“每一个小时”。 百分号(%) 表示“每"。例如:*%10 * * * * echo hello world表示,每10分钟打印一回"hello world"。 表格说明: 域 是否必填 允许的值 分钟 是 0–59 小时 是 0–23 天 是 1–31 月份 是 1–12、JAN–DEC 星期中的某天 是 0–6 、SUN–SAT 2、非标准规则 仅由某些cron程序的扩展版本支持,标准版本并不支持。以下这部分是在维基百科英文版本部分就着谷歌大概翻译出来的,如果有误,请以维基百科词条中的原文内容为准,词条链接在文末。 L:“L”代表“最后”。 当在星期字段中使用时,它允许指定诸如给定月份的“最后一个星期五”(“5L”)之类的构造。 在day-of-month字段中,它表示该月的最后一天。 W:'W' 字符允许用于日期字段。 此字符用于指定离给定日期最近的工作日(周一至周五)。 例如,如果将“15W”指定为day-of-month字段的值,则其含义为:“距该月的15日最近的工作日”。 因此,如果15号是星期六,触发器会在14号星期五触发。 如果15日是星期日,触发器会在16日星期一触发。 如果15号是星期二,那么它会在15号星期二触发。 但是,如果将“1W”指定为月份中的某天的值,并且第1天是星期六,则触发器会在第3天的星期一触发,因为它不会“跳过”一个月的天数边界。 仅当月中的某一天是一天,而不是天范围或天列表时,才可以指定“W”字符 #:'#' 允许用于星期字段,并且后面必须跟一个1到5之间的数字。 它允许指定诸如给定月份的“第二个星期五”之类的结构。 例如,在星期字段中输入5#3对应于每个月的第三个星期五 ?:用于代替“*``**”以将月中的某天或一周中的某天留空 /:用于表示跳过某些给定的数。例如,*/3在小时域中等于0,3,6,9,12,15,18,21等被3整除的数; H:'H'表示替换了“散列”值。 因此不是一个固定的数字,例如表示每小时后的20分钟,表示该任务在一个未指定但不变的时间执行一次。 这允许随着时间的推移分散任务,而不是让所有任务同时开始并争夺资源。 0x04.其他 1、定时任务生效时间 需要注意的是,添加定时任务之后crontab需要等待几分钟才会生效,若要使立即生效需要重启cron服务: service cron restart 2、定时任务不生效 如果crontab定时任务不生效,可以排查以下几点: 1、Linux的时间与互联网时间不一致,而crontab中写的互联网时间 2、定时执行的.sh文件无执行权限 3、crontab进程未启动,crontab进程会每分钟去扫描/etc/crontab中的定时任务,故修改后无需重启该进程(重启只会让定时配置马上生效) 4、crontab进程配置文件中未指定具体执行用户 3、环境变量相关问题 在crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个脚本时,是在当前shell环境下进行的,程序能找到环境变量;而系统自动执行任务调度时,除了默认的环境,是不会加载任何其他环境变量的。因此就需要在crontab文件中指定任务运行所需的所有环境变量。 不要假定cron知道所需要的特殊环境,它其实并不知道。所以用户要保证在shell脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。以下三点需要注意: 脚本中涉及文件路径时写绝对路径; 脚本执行要用到环境变量时,通过source命令显式引入,例如: #!/bin/sh source /etc/profile 当手动执行脚本没问题,但是crontab不执行时,可以尝试在crontab中直接引入环境变量解决问题,例如: * * * * * . /etc/profile; /xx/xx/test.sh 参考资料: Linux crontab 命令 | 菜鸟教程 (runoob.com) cron - Wikipedia Cron - 维基百科,自由的百科全书 (wikipedia.org) OpenWrt任务定时cron_hzlarm的博客-CSDN博客_openwrt 定时任务
2021年09月01日
270 阅读
0 评论
0 点赞
2021-06-15
使用蚂蚁笔记搭建个人云笔记
[Meting] [Music server="netease" id="236426" type="song"/] [/Meting] 目录: 前言 1.安装MongoDB 2.下载 3.安装 4.启动 5.其他 5.1 加入开机自启 5.2 设置nginx代理 环境说明: 系统:ubuntu 20.04 数据库:MongoDB 4.4.6 leanote V2.6.1 前言 蚂蚁笔记官网:Leanote 蚂蚁笔记,有极客范的云笔记! 类似于有道笔记、印象笔记等,蚂蚁笔记也是一款笔记软件,最重要的是蚂蚁笔记是开源的,这就意味可以自己搭建服务端。而我的网站平时访客不多,服务器大部分时候处于闲置状态,所以搭建一个属于自己的云笔记是一个不错的选择。 蚂蚁笔记github首页地址:Leanote - open source alternative to Evernote · GitHub,可以下载到各个平台的蚂蚁笔记客户端。 1.安装MongoDB 蚂蚁笔记使用的是MongoDB来存储文章数据,并不是mysql。 ubuntu系统下安装MongoDB的过程参考我的另一篇博客:ubuntu安装MongoDB数据库 - Roookie博客 | 记录 · 收纳 · 分享 (langp.wang),此处不再赘述。 2.下载 用以下命令下载安装文件: sudo wget https://sourceforge.net/projects/leanote-bin/files/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz 然后解压: sudo tar -zxvf leanote-linux-amd64.v2.6.1.bin.tar.gz 解压后的文件夹名称为”leanote“。 如果要手动下载也行,蚂蚁笔记下载地址:Leanote。下载时选择“leanote-linux-amd64.v2.6.1.bin.tar.gz”: 3.安装 先往MongoDB中导入初始数据: # 执行命令时位于“leanote”同级目录下,此命令适用于MongoDB没有开启安全授权的情况 mongorestore -h localhost -d leanote --dir leanote/mongodb_backup/leanote_install_data/ # 当MongoDB开启安全授权时,需要加入“--authenticationDatabase”(后面是用户所在的数据库)与“-u”参数(后面是用户名)执行此命令,否则就会导入失败 mongorestore -h localhost -d leanote --dir leanote/mongodb_backup/leanote_install_data/ --authenticationDatabase admin -u root 控制台界面滚动几下之后,出现“499 document(s) restored successfully. 0 document(s) failed to restore.”字样提示,说明导入成功。 接下来为leanote数据库添加一个账户: # 进入数据库控制台 mongo # 首先切换到leanote数据库下 use leanote; # 添加一个用户root, 密码是abc123 db.createUser({ user: 'root', pwd: 'abc123', roles: [{role: 'dbOwner', db: 'leanote'}] }); # 测试下是否正确,返回1表示正确 db.auth("root", "abc123"); 并修改配置文件leanote/conf/app.conf,找到下面两行: # 填入上面设置的账户密码 db.username=root # if not exists, please leave blank db.password=abc123 # if not exists, please leave blank 根据蚂蚁笔记的官方安装文档,还要将配置文件中的app.secret一项任意做一些更改,否则会有安全隐患 4.启动 蚂蚁笔记的启动脚本位于leanote/bin/目录下,执行脚本启动命令: sudo bash leanote/bin/run.sh 启动后,蚂蚁笔记默认运行在9000端口上,访问的话需要在云服务器的安全组中放行这个端口。访问IP地址或者域名的9000端口即可进入首页: 5.其他 5.1 加入开机自启 将蚂蚁笔记加入开机自启,在/etc/init.d目录下新建一个脚本文件: sudo nano /etc/init.d/leanote.sh 输入以下内容,并根据注释更改相关内容: #!/bin/bash ### BEGIN INIT INFO # Provides: leanote # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start leanote # Description: start leanote ### END INIT INFO # 上面一部分不可少,下面这一部分是命令内容,以exit 0结束 bash /root/leanote/bin/run.sh exit 0 修改完之后ctrl +o保存,ctrl +x退出。执行以下语句给脚本文件足够的执行权限: sudo chmod 755 leanote.sh 最后再将脚本添加到开机启动: sudo update-rc.d leanote.sh defaults 90 # 90表示执行的优先级,数字越大表示越晚执行。 附:移除脚本命令: sudo update-rc.d -f [脚本文件名] remove 5.2 设置nginx代理 为了方便访问,我们可以单独设置一个域名来访问蚂蚁笔记,原理是利用nginx进行反向代理,将本机的9000端口的所有请求转发到新域名上,新建一个nginx配置: upstream note { server 127.0.0.1:9000; } server{ listen 80; # SSL端口配置 listen 443 ssl; # domainName是域名 server_name domainName; location / { proxy_pass http://note; } # 以下为SSL配置部分 没有配置SSL证书的直接删除以下配置即可 # 设置http强制跳转https if ($server_port = 80){ rewrite ^/(.*) https://$host/$1 permanent; } #需要将cert-file-name.pem替换成已上传的证书文件的名称。 ssl_certificate cert-file-name.pem; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。 ssl_certificate_key cert-file-name.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DHE; #表示使用的TLS协议的类型。 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; } 然后重启nginx配置即可: nginx -s reload 附上官方github的wiki:Home · leanote/leanote Wiki · GitHub
2021年06月15日
669 阅读
0 评论
0 点赞
2021-06-11
ubuntu安装MongoDB数据库
[Meting] [Music server="netease" id="176640" type="song"/] [/Meting] 目录: 前言 1、导入MongoDB公共 GPG 密钥 2、创建列表文件 3、用命令安装MongoDB 3.1 安装最新版本 3.2 安装指定版本 4.启动MongoDB 4.1 systemed(systemctl): 4.2 System V Init(service): 5.管理MongoDB数据库 6.卸载MongoDB 附:在更改MongoDB连接端口时遇到的坑 环境说明: 系统:ubuntu 20.04 MongoDB:V4.4.6 前言 MongoDB是一种面向文档的数据库管理系统,即非关系型数据库,用C++等语言撰写而成,以解决应用程序开发社区中的大量现实问题。MongoDB由MongoDB Inc.(当时是10gen团队)于2007年10月开发,2009年2月首度推出,现以服务器端公共许可(SSPL)分发。 MongoDB社区版是免费的,包含Windows、Linux和OS X的二进制版本。许多Linux包管理系统曾经包含MongoDB的包,由于许可证变更,MongoDB已经从Debian、Fedora和Red Hat Enterprise Linux发行版中被移除。 本篇博客中ubuntu安装MongoDB的过程参考自MongoDB官网:Install MongoDB Community Edition on Ubuntu — MongoDB Manual,其他派系Linux安装MongoDB请参考:Install MongoDB Community Edition on Linux — MongoDB Manual。 1、导入MongoDB公共 GPG 密钥 用以下命令从https://www.MongoDB.org/static/pgp/server-4.4.asc导入MongoDB公共GPG密钥: wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add - 出现OK字样表示导入成功。若中途提示gnupg未安装,用以下命令安装: sudo apt-get install gnupg 安装之后尝试重新导入,直至出现OK字样。 2、创建列表文件 在ubuntu上创建列表文件/etc/apt/sources.list.d/mongodb-org-4.4.list,不同版本的ubuntu命令也不同(其实只是命令中的版本号不同): # Ubuntu 20.04 (Focal): echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list # Ubuntu 18.04 (Bionic) echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list # Ubuntu 16.04 (Xenial) echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list 若不确定系统版本号,用“lsb_release -a”命令查看,“Codename”一项即是版本号 3、用命令安装MongoDB 3.1 安装最新版本 输入以下命令安装MongoDB,默认安装最新版: # 更新软件源中的所有软件列表: sudo apt update sudo apt-get install -y mongodb-org 3.2 安装指定版本 如果要安装指定版本,必须分别指定每个组件包和版本号,比如: sudo apt-get install -y mongodb-org=4.4 mongodb-org-server=4.4 mongodb-org-shell=4.4 mongodb-org-mongos=4.4 mongodb-org-tools=4.4 如果只安装MongoDB-org = 4.4,并且不包含组件包,那么无论指定了哪个版本,都将安装每个 MongoDB 包的最新版本。 在安装完指定的MongoDB版本后,用apt命令升级软件时仍会升级到新版本的MongoDB。因此为了防止意外升级,可以将软件包固定在当前安装的版本上: echo "mongodb-org hold" | sudo dpkg --set-selections echo "mongodb-org-server hold" | sudo dpkg --set-selections echo "mongodb-org-shell hold" | sudo dpkg --set-selections echo "mongodb-org-mongos hold" | sudo dpkg --set-selections echo "mongodb-org-tools hold" | sudo dpkg --set-selections 4.启动MongoDB 要运行和管理mongod进程,将使用操作系统内置的init系统。Linux的新版本倾向于使用systemd(使用 systemctl 命令) ,而Linux的旧版本倾向于使用System v init(使用service命令)。这就导致不同的init系统操作mongod进程的命令不同,请根据系统的不同来使用。 如果不确定平台使用的是哪个init系统,请运行以下命令: ps --no-headers -o comm 1 然后根据结果选择下面的相应命令: systemd - 选择4.1 systemd (systemctl) 。 init - 选择4.2 System V Init (service)。 4.1 systemed(systemctl): # 启动MongoDB: sudo systemctl start mongod # 并将其加入开机启动项: sudo systemctl enable mongod # 用以下命令验证MongoDB是否启动运行成功: sudo systemctl status mongod # 停止MongoDB: sudo systemctl stop mongod # 重新启动MongoDB: sudo systemctl restart mongod 若启动时,出现错误:“Failed to start mongod.service: Unit mongod.service not found”,则运行以下命令: sudo systemctl daemon-reload 然后再次运行start命令即可: sudo systemctl start mongod 4.2 System V Init(service): # 启动MongoDB: sudo service mongod start # 用以下命令验证MongoDB是否启动运行成功: sudo service mongod status # 停止MongoDB: sudo service mongod stop # 重新启动MongoDB: sudo service mongod restart 验证MongoDB启动成功是这样的: MongoDB启动之后默认运行在27017端口。其配置文件在“/etc/mongod.conf”,运行端口等信息可在配置文件中修改。 5.管理MongoDB数据库 使用Robo 3T来管理MongoDB数据库,Robo 3T下载地址:Robomongo 开启远程连接之前,我们先要建立一个管理员用户,因为MongoDB默认是没有用户的。在控制台输入命令连接数据库: mongo # 如果更改了默认连接端口,则在连接时还需要指定连接端口 mongo -port 端口号 连接到数据库之后使用以下语句来建立一个管理员用户: # 选择连接admin数据库 use admin # 创建一个用户名为“root”,密码为“1234”管理员用户: db.createUser( { user:"root", pwd:"1234", roles:[{role:"root",db:"admin"}] } ) 创建成功的话会有“successfully”字样提示。使用“db.getUsers()”命令可以查询当前所有用户。 默认情况下,MongoDB是不允许远程连接的,所以需要在/etc/mongod.conf配置文件中进行一些配置。编辑配置文件: sudo nano /etc/mongod.conf 这是官网中对于配置文件mongod.conf每一个选项的详细介绍:Configuration File Options — MongoDB Manual。 配置文件中有一项是”net“,下面的”bindIp“一项的值原来是127.0.0.1,表示只能由本机访问MongoDB数据库,为了能远程访问管理数据库,需要将这项的值修改为0.0.0.0 net: port: 27017 - bindIp: 127.0.0.1 + bindIp: 0.0.0.0 同时,此时的数据库任何人使用任何网络都能连接,极度不安全。因此我们需要开启安全授权,同样的,在配置文件/etc/mongod.conf中添加如下内容: security: authorization: "enabled" 修改完之后保存退出,然后重启mongod服务: sudo systemctl restart mongod 然后我们就可以用这个用户登录管理数据库了。 更多MongoDB数据库用户的操作请参考:MongoDB添加用户 - MongoDB教程™ (yiibai.com) 打开Robo 3T客户端,新建一个Connection。输入服务器的ip地址或域名,端口填写默认的27017(或者修改之后的端口)。然后切换Authentication选项卡,在第一行前打上勾,输入框中输入用户名密码,填写完之后点击下面Test按钮,若是测试连接无误,点击Save保存下来,就能连接到数据库了。 附:在更改MongoDB连接端口时遇到的坑 MongoDB端口可以在配置文件/etc/mongod.conf进行更改,更改net选项下port的值即可。更改完需要重启MongoDB服务,下次用软件连接数据库时就要更换成更改后的端口。但是用mongo命令在控制台上登录数据库时,就会报错: 这是因为在用mongo命令是依然默认连接的是27017端口,而不是修改之后的端口,因此使用此命令时需要指定端口进行连接: mongo -port 新端口 6.卸载MongoDB 首先停止mongod进程: # systemed(systemctl): sudo systemctl stop mongod # System V Init(service): sudo service mongod stop 删除以前安装的任何 MongoDB 包: sudo apt-get purge mongodb-org* 删除 MongoDB 数据库和日志文件: sudo rm -r /var/log/mongodbsudo rm -r /var/lib/mongodb
2021年06月11日
676 阅读
0 评论
0 点赞
2021-06-06
云服务器搭建网易云解锁服务
[Meting] [Music server="netease" id="34341360" type="song"/] [/Meting] 目录: 前言 1.安装node.js和npm 2.启动服务 3.设置服务开机启动 4.设置网易云音乐代理 4.1 Windows端 4.2 Linux端 (1) 设置反向代理 (2) 添加证书 (3) 修改host文件 (4) 添加默认启动参数 环境说明: 服务器:ubuntu 20.04 客户端:Win10 / DeepinV20 社区版 网易云音乐版本:V2.8.1(Win10) / V1.2.1(Deepin) 前言 openwrt上面有一款插件叫“网易云音乐解锁”,可以解锁网易云的所有会员歌曲和没有版权的歌曲,可是要使用这项服务就必须连接到openwrt路由器,如果在外面的话就不行了,所以还是有一定的局限性。 最近在github上发现一个项目,可以利用云服务器来搭建一个网易云解锁服务。项目地址:GitHub - nondanee/UnblockNeteaseMusic: Revive unavailable songs for Netease Cloud Music。 还有另外一个项目:GitHub - meng-chuan/Unlock-netease-cloud-music: 解锁网易云音乐客户端变灰歌曲,这个项目整合了目前各个平台解锁网易云的相关方法,核心就是上面的那个项目。作者写了一个详细的教程,也包括本地搭建和服务器(Linux/Windows)端搭建的教程。服务器环境是直接使用宝塔面板,并不是手动搭建。目前我的服务器并没有使用宝塔面板,不得不手动搭建环境。所以就有了这一篇博客。 下面就是在云服务器上搭建环境并运行项目的整个过程: 1.安装node.js和npm ubuntu中用一句命令就可以安装node.js和npm: sudo apt update sudo apt install nodejs npm 安装完成后,输入以下命令可以查看node.js版本: nodejs --version 2.启动服务 从github上把项目文件拉取下来,然后上传到服务器上的任意一个位置。 git clone https://github.com/nondanee/UnblockNeteaseMusic.git 完成后,进入到服务器上该项目的文件夹里,运行如下命令启动服务: node app.js -p 10000 -f 59.111.181.60 “-p”命令表示设置服务端口,这里选择10000端口。同时,需要在服务器的安全组中放行这个端口。“-f”命令表示强制使用网易服务器ip。 3.设置服务开机启动 此时,如果退出了ssh连接窗口,那么这个服务将会停止,所以我们还需要把这项服务添加到开机启动项目中,使其开机就能启动并在后台运行。 在/etc/init.d目录下新建一个脚本文件: sudo nano /etc/init.d/uncm.sh 输入以下内容,并根据注释更改相关内容: #!/bin/bash ### BEGIN INIT INFO # Provides: unlockmusic # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start unlockmusic # Description: start unlockmusic ### END INIT INFO # 下面这一部分是命令内容,以exit 0结束 # /root/Unlock-netease-cloud-music换成自己的目录 cd /root/Unlock-netease-cloud-music node app.js -p 10000 exit 0 修改完之后ctrl +o保存,ctrl +x退出。执行以下语句给脚本文件足够的执行权限: sudo chmod 755 uncm.sh 最后再将脚本添加到开机启动: sudo update-rc.d uncm.sh defaults 90 # 90表示执行的优先级,数字越大表示越晚执行。 附:移除脚本命令: sudo update-rc.d -f [脚本文件名] remove 做完这些之后,重启一遍服务器,使服务开机运行起来,然后我们就可以放手不用管了。至此,一个安全稳定的网易云解锁服务就搭建好了。只要服务器不挂,解锁服务就能生效。 4.设置网易云音乐代理 4.1 Windows端 注意:请保证网易云音乐的版本不高于 2.9.5,经测试,此代理方式在 2.9.5 以上的版本已经无法使用,原因未知。 网易云音乐 2.9.5 下载地址(安装完成之后务必关闭自动更新):https://image.wlplove.com/download/cloudmusicsetup2.9.5.199424.exe 打开 win10 的网易云音乐,进入“设置”->“工具”选项,选择“自定义代理”,“服务器”填写域名或者ip地址,“端口”填前面启动项目时设置的端口号即可。 然后点击测试按钮,如果配置无误,那么就会提示“该代理可以使用” 点击确定,重启网易云音乐。 4.2 Linux端 此项是解锁Linux端网易云音乐的无版权歌曲,Windows用户直接忽略即可。 还有,请注意此项所述的“Linux”是指客户端,前面的”Linux“是指服务器端。 此处以Deepin系统为例,方法整理自:Linux 客户端食用指南 · Issue #208 · nondanee/UnblockNeteaseMusic (github.com)。 (1) 设置反向代理 Linux端的网易云音乐客户端没有设置代理的选项,也不能指定服务端口,因此这个服务必须要运行在服务器端的80/443端口,但这两个端口一般都是被占用的(因为服务器要提供网站服务),所以还要做反向代理。当然,如果端口没有被占用,就可以跳过设置反向代理这一步了。 添加一个Nginx配置: server { listen 80; listen 443 ssl; server_name music.163.com interface.music.163.com; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_session_timeout 10m; ssl_session_cache shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'AES128+EECDH:AES128+EDH'; ssl_prefer_server_ciphers on; location / { proxy_pass https://127.0.0.1:52000; proxy_set_header HOST 'music.163.com'; } } 然后重新载入Nginx配置文件: nginx -s reload (2) 添加证书 项目目录中默认带有证书文件“ca.crt”。或者也可以选择自己签发证书:进阶配置 · Issue #48 · nondanee/UnblockNeteaseMusic (github.com)。 切换到项目目录,将证书文件复制到/usr/local/share/ca-certificates/目录下: sudo cp ca.crt /usr/local/share/ca-certificates/ 然后刷新: sudo update-ca-certificates 如果要删除已经信任的证书,先将/usr/local/share/ca-certificates/下拷贝的.crt证书文件删除, 然后执行以下命令,刷新配置文件,删除软链接: sudo update-ca-certificates -f (3) 修改host文件 host文件位置为/etc/hosts。向host文件末尾添加如下内容: # host文件格式为“ip地址 网址”,中间有空格 [服务器ip] music.163.com [服务器ip] interface.music.163.com (4) 添加默认启动参数 修改网易云的启动项,位于/usr/share/applications,直接编辑: sudo nano /usr/share/applications/netease-cloud-music.desktop 在“Exec”这一行末尾增加--ignore-certificate-errors 即可。 此时,Linux端的网易云音乐也可以听变灰的歌曲了。
2021年06月06日
1,267 阅读
0 评论
0 点赞
2021-04-01
【踩坑实录】Ubuntu系统解压后的文件出现权限问题,无法查看编辑
[Meting] [Music server="netease" id="165405" type="song"/] [/Meting] 环境说明: ubuntu 20.04 + kubuntu桌面 问题如图: 源自我在配置Tomcat时,从官网上下载的Tomcat8.5压缩包,在KDE桌面环境下解压之后的文件图标上会显示小锁,系统提示文件无法编辑、无法查看 问题原因 下载的文件默认权限是比较低的,系统无法进行相关的操作,只需要更改权限即可 解决办法: 修改权限即可,在终端上输入: # 修改tomcat-8.5文件夹的权限为755: sudo chmod 755 -R tomcat-8.5 修改后即可进行文件操作了。
2021年04月01日
344 阅读
0 评论
0 点赞
2021-03-12
ubuntu系统中的文件权限管理总结
[Meting] [Music server="netease" id="343031" type="song"/] [/Meting] 目录: 思维导图 1.ubuntu中的文件权限介绍 1.1 用户组 1.2 文件权限等级 2.查看文件权限 3.修改文件权限 3.1 用字母表示权限等级 3.2 用数字表示权限等级 思维导图 注:修改文件权限等操作需要一定系统权限,本文的命令默认是在root用户下进行的,如有必要,请在命令前加入sudo 来提升权限。 1.ubuntu中的文件权限介绍 1.1 用户组 对于一个文件或者文件夹来说,与其相关的用户组分为三类: user:该文件或文件夹的拥有者 group:与user在同一个用户组的用户 other:除了user和group的其他所有用户 1.2 文件权限等级 文件权限等级有三种,分别为读、写、执行。有两种表示方法: 用字母表示: 读:r(read) 写:w(write) 执行:x(execute) ——假如这个文件可执行的话 无权限:-(可以理解为占位符) 这个很好理解,表示形式就是对应英文单词的首字母。假设有文件test.txt,user有这个文件的读、写、执行权限,group有读、写权限,other有执行权限,那么它的文件权限就可以用这种方式表示为:rwxrw- - -x。这串字符分为三部分,分别表示了user、group、other这三类用户的权限情况: 用十进制数字表示: 读:4 写:2 执行:1 无权限:0 那么问题来了,表示每个权限的数字为什么是”4“、 ”2“、 ”1“,而不是其他数字呢?其实用二进制来解释就很好理解了。在二进制中只有“0”和“1”两种取值,相对应到文件权限上,有权限是“1”,无权限是“0”。假设用户同时具备读、写、执行三种权限,那么按照读、写、执行的顺序排列,可得到一个二进制数“111”,将这个二进制数转换成十进制数就变成了“421”,所以就可以得到每种文件权限对应的十进制数字了,即:读(4)、写(2)、执行(1)。 以上是数字表示单个权限的情况,当数字来表示组合权限时稍显麻烦,但也并不算复杂。举个栗子说明权限表示的规则:还是文件test.txt,三类用户的权限不同,user有这个文件的读(4)、写(2)、执行(1)权限,group有读(4)、执行(1)权限,other只有这个文件的执行(1)权限,用数字来表示就是:“751”。即每位数字是该用户所拥有权限的和,看下图: 综上所述,这两种方法用一个表格总结下来就是这样: 读(read) 写(write) 执行(execute) 字母 r w x 十进制数字 4 2 1 2.查看文件权限 # 查看文件权限, ls -l [文件名] # 查看文件夹权限 ls -ld [文件夹名] 比如查看当前目录下的test.txt这个文本文件的权限信息: ls -l test.txt 结果如下,图中红框部分就是文件权限信息: 查看当前目录下的test文件夹的权限信息: ls -ld test 执行结果: 最前面的“d”表示文档类型,即文件夹,其他的还有: -:普通文档 l:链接文件(link file); b:装置文件里面的可供储存的接口设备(可随机存取装置); c:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。 后面对应的每一位上,有权限就用权限对应字母表示,若没有权限则用”-“来占位。 查看文件权限时,若省略后面的文件名参数,命令结果就会显示当前目录下的所有文件及文件夹的权限等信息。 查看文件夹权限时,省略文件名参数,命令的执行结果会变成显示当前所在的文件夹的权限信息。 基本介绍完了,接下来就是如何修改文件权限。 3.修改文件权限 修改文件的权限用chmod命令,对于一个文件来说,文件权限的表示方法有字母和数字两种,所以修改权限时就可以有两种方法。 3.1 用字母表示权限等级 举几个例子来说明,假设有一个文件“test”: # 增加group用户的可执行权限 chmod g+x test “+”表示在原来的基础上增加权限 # 删除other用户的可写权限 chmod o-w test “-”表示在原来的基础上删除权限 # 给user用户给test文件的可写、可读、可执行权限 chmod u=rwx test “=”可以给用户直接赋予多个权限 # 假设有文件test,给全部用户增加这个文件的可写权限 chmod a+w test a在这里表示全部用户(user+group+other) 综上来说,这种方式下命令可以简单概括为: chmod [用户]+/-/=[权限] [文件/文件名] [用户]有u(user)、g(group)、o(other)和a(user+group+other) [权限]有r(read)、w(write)、x(execute) 3.2 用数字表示权限等级 继续举例子说明: # 修改文件“test1”的权限为user读、写、执行,group可读,other可执行 chmod 741 test1 # 修改文件夹“test2”的权限为user、group、other均可读写可执行 chmod -R 777 test2 “-R”参数表示对该文件夹下所有的文件及文件夹都执行修改权限操作,即递归执行,一般适用于文件夹操作。 所以这个方式简单概括就是这样的命令形式: chmod [参数选项] [权限] [文件/文件夹] 这里要强调的是,在正式使用的服务器上,请不要给任何一个文件赋予777权限,即任何用户均可读写可执行的权限,会存在较大的安全隐患。
2021年03月12日
994 阅读
2 评论
1 点赞
2021-03-07
ubuntu下zerotier的基本使用教程
[Meting] [Music server="netease" id="139808" type="song"/] [/Meting] 目录: 前言 1.安装 2.创建一个网络 3.加入一个网络 4.其他操作 (1)手动启动zerotier服务: (2)开机启动: (4)查看本机连接的网络: (5)断开当前加入的网络: 环境说明: 设备:树莓派4B 操作系统:ubuntu 20.10 zerotier版本:1.6.3 前言 zerotier官网:https://www.zerotier.com/ 官方文档:https://zerotier.atlassian.net/wiki/spaces/SD/overview 1.安装 输入以下命令在ubuntu中安装zerotier: curl -s https://install.zerotier.com | sudo bash 2.创建一个网络 首先进入zerotier官网,用邮箱注册一个账号。然后进入网络列表,点击Create A Network按钮创建一个网络,下方列表中会出现一个网络ID,点击网络ID进入即可这个网络的设置界面。 该网络的“setting”选项有如下几个项目需要设置: 其他大部分设置可以保持默认选项不做修改 3.加入一个网络 首先在要连接的Linux设备上输入如下命令加入网络,如果连接成功就会出现200的状态码提示: sudo zerotier-cli join 网络ID # 查看当前连接的网络,如果列表中出现网络号说明连接成功 sudo zerotier-cli listnetworks private属性的网络检测到新设备连接时要手动授权,需要在这个网络的控制台授权新设备连接。未授权之前设备列表是这样: 在前面的列表项上打上勾,即完成授权,设备状态变成这样: 那么这个linux设备就加入到了这个网络中,如果再往这个网络中加入一个设备,这两个设备只要保持运行zerotier且都连接到这同一个网络,即使这两个设备不在同一个局域网内,也能互相访问了。 4.其他操作 (1)手动启动zerotier服务: sudo systemctl start zerotier-one.service (2)开机启动: sudo systemctl enable zerotier-one.service (4)查看本机连接的网络: sudo zerotier-cli listnetworks (5)断开当前加入的网络: sudo zerotier-cli leave 网络ID 以上是zerotier的基本操作,本篇只涉及到Linux平台的操作,由于其他平台的zerotier都有图形化的客户端,操作起来还是比较简单的,所以不再赘述(绝对不是因为我懒)。 这里推荐B站的一个up主的视频,关于zerotier他讲的很详细,可以说是包教包会:https://www.bilibili.com/video/BV1VJ411H7Yv {bilibili bvid="BV1VJ411H7Yv" page=""/}
2021年03月07日
6,125 阅读
3 评论
0 点赞
2021-02-28
用frp实现树莓派4B的内网穿透
[Meting] [Music server="netease" id="470759757" type="song"/] [/Meting] 目录: 前言 frp是什么? 为什么使用 frp ? 1.在服务端部署frp 2.配置frp客户端 3.启动frp服务 4.连接服务 5.将frp加入开机启动 5.1服务端 5.2客户端 环境说明: 服务端设备:阿里云轻量应用服务器 服务端系统:ubuntu 20.04 客户端设备:树莓派4B 客户端系统: Debian-Pi-Aarch64 2.0_无桌面增强版-2021-01-03 前言 引用frp项目的部分官方文档对frp进行一个简单的介绍: frp是什么? frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 为什么使用 frp ? 通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括: 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。 代理组间的负载均衡。 端口复用,多个服务通过同一个服务端端口暴露。 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。 服务端和客户端 UI 页面。 这一段文档看不懂?没关系,你只需要知道frp是免费开源的内网穿透工具,这就够了。下面链接可以了解到更多: frp项目官网:https://gofrp.org/ frp的github项目地址:https://github.com/fatedier/frp frp的项目文档:https://gofrp.org/docs/ 进行frp内网穿透需要一台有公网ip的设备作为转发的服务端,本篇用阿里云服务器来作为服务端,给树莓派实现内网穿透,以下是详细步骤: 1.在服务端部署frp 用SSH连接到阿里云服务器,下载amd64架构的frp文件包: sudo wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_amd64.tar.gz 然后用tar命令解压下载的压缩包: sudo tar -zxvf frp_0.35.1_linux_amd64.tar.gz # 文件名可能会有不同,用ls -a命令查看 进入解压后的文件夹,文件夹中包含amd64架构的服务端二进制文件和客户端二进制文件两种。由于阿里云服务器作为服务端,所以在这上面我们只用到服务端的二进制文件及对应的ini配置文件,其他的文件可以选择删除掉。 编辑frps.ini文件: sudo nano frps.ini frps.ini文件内容如下: [common] bind_port = 7000 # 默认端口为7000 其中,bind_port端口修不修改都可以,但是bind_port端口要与客户端配置文件的server_port端口相同。修改完之后ctrl +o保存,ctrl +x退出。记得要在服务器中放行bind_port端口。 2.配置frp客户端 再用SSH连接到树莓派的控制台,下载适用于树莓派的arm64架构的frp文件包: sudo wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_arm64.tar.gz 与上一步类似,解压下载的压缩包: sudo tar -zxvf frp_0.35.1_linux_arm64.tar.gz # 文件名可能会有不同,用ls -a命令查看 同样的,文件夹中包含了服务端和客户端的两种二进制文件。树莓派作为客户端只用到客户端的二进制文件及对应的ini配置文件,其他的文件可以删除。 编辑其中的frpc.ini文件: sudo nano frpc.ini frpc.ini文件内容如下: [common] server_addr = 127.0.0.1 server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 按如下参数说明修改配置文件: server_addr:服务器的IP地址; server_port:服务器端的端口,与服务端配置文件的bind_port端口相同; local_ip:要在公网访问的本地设备的地址,这里指客户端本机,填127.0.0.1即可; local_port:本地设备要暴露的端口,即理解为提供服务的端口 remote_port:在外网的访问端口,此端口上的流量会被转发到本地设备对应的local_port端口上 还有别忘了在服务器防火墙上放行remote_port端口 配置文件中默认有一个ssh的访问配置,如果我们还想让其他的端口在外网访问到,那就可以照猫画虎来添加一个配置。比如在外网用公网ip的8888端口访问本地设备的80端口,就可以这样写: [http] # 名字自定,写在方括号里面 type = tcp local_ip = 127.0.0.1 local_port = 80 remote_port = 8888 类似的,可以根据需求添加更多的访问配置。 3.启动frp服务 设置完毕,就可以启动frp服务了。 先到阿里云服务器控制台窗口中启动服务端frp服务,在frp的目录中执行: ./frps -c ./frps.ini 再连接树莓派的控制台,启动客户端frp服务时同样在frp目录中执行: ./frpc -c ./frpc.ini 需要注意的是,一定要先启动服务端frp,再启动客户端frp。要是先启动客户端frp,就会报错: 4.连接服务 以上配置完成,就可以在外网访问本地的服务了,访问方式是:服务器的IP地址/域名:端口。此处端口为客户端配置文件中的remote_port端口。 5.将frp加入开机启动 5.1服务端 回到阿里云服务端控制台,在/etc/init.d目录下新建一个脚本文件: cd /etc/init.d # 新建脚本文件 sudo nano frp.sh 脚本文件的内容为: #!/bin/bash ### BEGIN INIT INFO # Provides: frp # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start frp # Description: start frp ### END INIT INFO # 上面一部分不可少,下面这一部分是命令内容,以exit 0结束 # /root/frp换成自己的目录,当前目录用pwd命令查看 cd /root/frp ./frps -c ./frps.ini exit 0 修改完之后ctrl +o保存,ctrl +x退出。执行以下语句给脚本文件足够的执行权限: sudo chmod 755 frp.sh # frp.sh为刚才建的脚本文件名称,这个按实际情况来写 最后再将脚本添加到开机启动就行了: sudo update-rc.d frp.sh defaults 90 # frp.sh为刚才建的脚本文件名称,这个按实际情况来写 90表示执行的优先级,数字越大表示越晚执行。 附:移除脚本命令: sudo update-rc.d -f frp.sh remove 5.2客户端 以上方法适用于部分debian系的Linux系统,所以在客户端上也是可以按照上面那种方法实现开机启动frp。可是我到树莓派上试了好像不行,经过多次尝试,基本可以确定问题是由于树莓派上安装的是树莓派爱好者基地的Debian-Pi-Aarch64系统,原来在Debian系Linux上添加开机启动的方法就不太适用了。不过在其官方文档说明中也提供了添加开机自定义脚本的方法: # 编辑脚本文件"/boot/rc-local" sudo nano /boot/rc-local 向脚本文件中添加如下命令,添加在exit 0之前: cd /home/frp ./frpc -c ./frpc.ini # "/home/frp"换成自己的frp目录 添加完之后保存退出。 这时候再分别重启服务端和客户端,frp服务就会自动运行了,不再需要手动运行。如果重启之后无法连接访问,建议再等待一两分钟,因为有可能会是其中一端的开机启动服务还未加载完全。
2021年02月28日
911 阅读
0 评论
0 点赞
2021-02-13
【踩坑实录】安装ubuntu+win10双系统之后,系统时间相差8小时
[Meting] [Music server="netease" id="77211" type="song"/] [/Meting] 环境说明: ubuntu 20.04 + win10 专业版 问题表现 在笔记本上同时安装了win10和ubuntu双系统之后,发现两个系统上的系统时间相差了8个小时, 解决方法 这是我经常用的一个方法,不需要修改配置文件,只需要在系统控制台中输入: sudo timedatectl set-local-rtc 1 执行完之后重启,然后ubuntu和win10系统的时间就一致了。
2021年02月13日
287 阅读
0 评论
0 点赞
2021-02-04
为ubuntu server20.04 连接wifi
[Meting] [Music server="netease" id="276711" type="song"/] [/Meting] 环境说明: Linux:ubuntu server 20.04 简单的上手体验了一下树莓派的32位原生系统RaspberryPi OS之后,直接给树莓派安装了64位的ubuntu server系统,但是在为它连接wifi时,貌似用原来RaspberryPi OS系统连接wifi的方法不管用,所以在查了一些资料之后,便把ubuntu系统连接wifi的方法记录下来,以防忘记。 首先,wifi信息需要进入系统之后,在/etc/netplan的配置文件中更改: cd /etc/netplan # 进入配置文件的目录 ls # 查看配置文件名称,不同机器的配置文件名称不同 sudo nano *****.yaml # 编辑配置文件 按照以下格式补充修改配置文件: network: version: 2 ethernets: eth0: dhcp4: true match: macaddress: b8:27:eb:c6:94:8f set-name: eth0 wifis: wlan0: dhcp4: true access-points: "wifi的ssid": password: "wifi密码" 补充的部分能复制就复制,复制过去直接改成自己的wifi名称和密码就行,因为在实际输入的情况下会出现很多问题(不得不说yaml的语法是真的一言难尽),如果实在没办法去复制的话,在手动输入的情况下要注意以下几个坑: 在yaml语法规则中,要严格按照层次结构进行缩进(在命令行下缩进四个空字符就差不多是下一层); 冒号后面如果不换行的话,那么一定要空一格再输入后面的内容,比如dhcp4: true这句; 关于wifi名称,如果wifi名称不包含空格的话双引号可以省略,否则就必须把wifi名称用双引号括起来 配置完成以后,ctrl+o保存,ctrl+x退出。 # 配置好文件之后 需要执行下面这个命令,查看配置是否有错,如果有错它会自动回滚上次正确配置 sudo netplan try # 没错会让你按enter确认使用这些配置,然后执行这个命令来使配置生效 sudo netplan apply 然后再重启,等到设备连接到wifi就行了。 附上一些更详细的配置:WiFi 配置 ——ubuntu20.04 server
2021年02月04日
1,149 阅读
0 评论
0 点赞
2021-02-01
【踩坑实录】Ubuntu使用apt命令时,报错:无法获得锁(11:资源暂时不可用)
[Meting] [Music server="netease" id="165405" type="song"/] [/Meting] 环境说明: ubuntu 20.04 问题如图: 错误原因: ubuntu终端上强制关闭正在进行的sudo apt-get install/update命令时,此apt-get进程还没有结束。如果再次运行apt-get命令安装软件时,就会出现上述错误,即有一个进程正在占据apt-get进程,由于它在运行时,会占用软件更新时的系统锁(简称系统更新锁),此时资源被锁 解决办法: 1. 方法一 杀死进程,释放系统锁 ps -e|grep apt-get 出现: 然后执行: sudo kill 15298 2. 方法二 强制解锁 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock 3. 方法三 sudo rm /var/lib/dpkg/lock-frontend
2021年02月01日
838 阅读
0 评论
0 点赞
2021-01-28
ubuntu系统部署Tomcat服务
[Meting] [Music server="netease" id="26291187" type="song"/] [/Meting] 目录: 1. 从Tomcat官网下载 2. 解压Tomcat安装文件 3.修改环境变量: 4. 修改文件配置 5. 启动Tomcat服务 6. 创建项目目录 环境说明: 操作系统:ubuntu 18.0.4 Tomcat版本:Tomcat 9 部署Tomcat时,您要确保已成功配置好了Java环境,配置Java环境请参考:Win10系统配置Java开发环境 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 1. 从Tomcat官网下载 Tomcat官网:Apache Tomcat® - Welcome! Tomcat 9:Apache Tomcat® - Apache Tomcat 9 Software Downloads Tomcat 8:Apache Tomcat® - Apache Tomcat 8 Software Downloads Tomcat 7:Apache Tomcat® - Apache Tomcat 7 Software Downloads 这里以Tomcat 9作为例子来说明 2. 解压Tomcat安装文件 找到下载的tomcat9安装文件,解压到/usr/目录下: # 先进入/usr/目录下: cd /usr/ # 解压Tomcat安装包,这里根据自己的情况更改路径,我下载的Tomcat的路径是/home/wlp/Downloads/apache-tomcat-9.0.39.tar.gz: sudo tar -zxvf /home/wlp/Downloads/apache-tomcat-9.0.39.tar.gz 解压后的文件名为apache-tomcat-9.0.39,有点长,为方便配置,这里将文件夹名修改为Tomcat-9: sudo mv apache-tomcat-9.0.39 Tomcat-9 3.修改环境变量: 修改/etc/profile文件: sudo nano /etc/profile 在打开的页面最后加入: export CATALINA_HOME=/usr/Tomcat-9 然后ctrl + o保存,ctrl + x退出 # 使配置生效 source /etc/profile 安装好之后,Tomcat还无法访问,还需要配置两个文件 4. 修改文件配置 进入Tomcat-9安装目录: cd Tomcat-9 修改安装目录下的两个文件,允许访问主机ip地址的正则表达式: #修改webapps/manager/META-INF/context.xml: sudo nano webapps/manager/META-INF/context.xml #修改webapps/host-manager/META-INF/context.xml: sudo nano webapps/host-manager/META-INF/context.xml 打开两个文件找到以下内容: <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> 修改为: <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.\d+\.\d+\.\d+" /> 正则表达式中的点是特殊字符,需要用“\."进行转义 (\写的时候是两个,显示为一个,因为这个字符也是特殊字符) 5. 启动Tomcat服务 # 进入Tomcat安装目录下的bin文件夹中: cd bin 此时可能会出现这样的情况,如果没有即可跳过这步: 这是由于Tomcat-9文件夹读写权限不足,只要设置一下读写权限就可以了,回到上层目录,执行修改权限命令: # 返回上层目录: cd .. # 修改权限: sudo chmod 775 -R Tomcat-9 再重新进入Tomcat-9/bin目录: cd Tomcat-9/bin 运行启动脚本: ./startup.sh 成功启动Tomcat服务,此时打开浏览器输入: localhost:8080 如果前面配置没有错误的话,就会进入到Tomcat首页 6. 创建项目目录 在Tomcat的webapps目录下创建一个test文件夹,就可以作为项目的目录 # 创建test文件夹: sudo mkdir webapps/test cd webapps/test # 在里面创建一个test.html: sudo touch test.html # 编辑test.html sudo nano test.html 向test.html添加以下内容: <html> <meta charset="utf-8"></meta> <title>这是测试项目</title> <body> <h1>项目创建成功!</h1> </body> </html> 然后ctrl + o保存,ctrl + x退出 通过以下地址访问: localhost:8080/test/test.html 即可看到设置的项目文件的显示效果。
2021年01月28日
417 阅读
0 评论
0 点赞
2021-01-27
为ubuntu更新提速:将更新源改为国内源
[Meting] [Music server="netease" id="280761" type="song"/] [/Meting] 目录: step 1:获取ubuntu版本号 step 2:备份原文件(可选) step 3:修改源文件 step 4:更新软件列表和升级 环境说明: 系统版本:ubuntu 18.04 以下方法适用于ubuntu 18.0.4(版本号为bionic),若为ubuntu其他版本,将源链接中的bionic改为其他版本号即可: step 1:获取ubuntu版本号 lsb_release -a 其中的 Codename 一项为版本号 step 2:备份原文件(可选) sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak step 3:修改源文件 ubuntu 的下载源更新源等存放在 /etc/apt/sources.list 中 用nano编辑 /etc/apt/sources.list: sudo nano /etc/apt/sources.list 下面包含了阿里云源和清华大学源,在打开文件后,注释或者清空里面的内容,任选一个国内源复制进去: # 阿里云源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse ##測試版源 deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse # 源碼 deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse ##測試版源 deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse # 清华大学源 deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse ##測試版源 deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse # 源碼 deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse ##測試版源 deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse ctrl + O保存,ctrl + X退出即可 step 4:更新软件列表和升级 在终端上执行以下命令更新软件列表,检测出可以更新的软件: sudo apt-get update 在终端上执行以下命令进行软件更新: sudo apt-get upgrade 换源之后,都是从国内镜像站获取软件包,所以此时更新时的速度会比换源之前快上很多。
2021年01月27日
654 阅读
0 评论
0 点赞
1
2