安装篇
这里我们会开始安装部署 web 服务器需要的应用了,暂时以 ubuntu20 为例
管理软件
登录服务器后,可以使用 apt-get 包管理工具管理软件包使用命令:
sudo apt-get update更新 ubuntu 的包管理工具(更新软件列表)sudo apt-get upgrade更新已经安装的软件包到源列表最新(必须先执行 update 再执行 upgrade,以便使包管理工具获取需要更新的软件索引)sudo apt-get install xxx升级/安装 xxx 软件包sudo apt-get remove xxx移除软件包,注意只是软件包,配置仍然会留在系统里sudo apt-get purge xxx移除软件包 xxx,注意会把包和相关配置全部删除sudo apt-cache search xxx当你不确切知道要安装的软件包名称可以使用加关键字来模糊搜索包名,关键字可以加多个sudo apt list --installed列出当前安装的软件,与grep一起使用来查询是否安装过的软件
这些指令需要 root 权限,如果你已经使用 root 账户登录,可以不需要加 sudo,当然加也不会有什么影响 在命令后加 -y 选项可以默认回应 y, 建议不加
TIP
dist-upgrade 除执行升级功能外,dist-upgrade 还智能地处理与新版本包的依赖关系的变化。apt-get 有一个 "智能" 的冲突解决系统,如果有必要,它将尝试升级最重要的包,以牺牲不那么重要的包为代价。因此,dist-upgrade 命令可能会删除一些包。因此在更新系统中的包时,建议按顺序执行下面的命令: $ apt-get update$ apt-get upgrade -y$ apt-get dis-upgrade -y
然后开始安装工具包
我个人运维方面的经验还不足,目前只使用这些还过得去
- tmux
- git
- ranger(非必要)
- htop(非必要)
tmux 是用来管理后台进程的,因为在 linux 中窗口经常与进程(或者说 session)绑定在一起的,如果窗口关闭,进程就关闭,那么当我们运行一个服务端后,就无法操作其他事情了,而当你结束这次 session(断开与服务器的链接),服务端就会关闭,当然你可以以守护进程的方式执行,但是使用 tmux 可以更高效地更统一地管理,简单来说 tmux 可以把 window 和 session解绑,后面的小节可能才会较详细地写
git 主要用来获取需要部署的项目,或者安装其他工具,它不是本节重点
其实这两个软件在 unbuntu20 里已经安装了(如果没安装请先安装)
因此,我们暂且跳过它们
前端环境
一般来说前端需要这些基础环境:
- nodejs
- npm
- nginx
接下来你可以选择从官网获取最新的版本安装,也可以使用包管理安装它们,尽管它们版本或许不是最新的,我这里仅以包管理为例介绍我认为方便的方法安装
TIP
因为 ubuntu 源内的软件包都属于最为稳定而非最新的版本,因此部分软件版本或许比较低,但也不一定需要更新到最新的版本,所以在满足兼容问题的条件下,服务器的软件包应当选择更为稳定的版本为佳
apt-get install nginx
# nginx -v
# nginx version: nginx/1.18.0 (Ubuntu) 足够用了
apt-get install nodejs
apt-get install npm
# 默认低版本
更新 nodejs
root@VM-20-15-ubuntu:~# npm --version
6.14.4
root@VM-20-15-ubuntu:~# node --version
10.4
发现 nodejs 和 npm 的版本很低
先使用 npm 安装 n
sudo npm i -g n
再使用 n 把 nodejs 更新为稳定版
sudo n stable
# 更新后
# node --version
# v16.16.0
用 npm 把自己更新为最新
sudo npm i -g npm@latest
# 更新后
# npm --version
# 8.17.0
使用 nvm 管理 nodejs/npm 未尝不是一个好的选择
后端环境
后端一般需要安装编程语言的环境,数据库,及 apache 服务器(tomcat hadoop)
我比较懒,java 直接使用 jar 包部署,连 tomcat 都不用整了(自行学习吧)
需要安装:
- java
- mysql
仅以 java 和 mysql 为例
java 环境
你发现无论使用apt-get install java, 还是apt-get install jdk 都没有找到包,这是因为包名 不正确,那么我们可以使用apt-cache search java jdk 来模糊搜索包名,结果有很多,仅挑选有用的信息:
openjdk-16-jdk - OpenJDK Development Kit (JDK)
openjdk-16-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-17-jdk - OpenJDK Development Kit (JDK)
openjdk-17-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-8-jdk - OpenJDK Development Kit (JDK)
openjdk-8-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-13-jdk - OpenJDK Development Kit (JDK)
openjdk-13-jdk-headless - OpenJDK Development Kit (JDK) (headless)
原来在 linux 中 jdk 被叫做openjdk,我们选择一个合适的版本安装(与项目兼容)
sudo apt-get install openjdk-8-jdk-headless
TIP
headless 的是用来运行不包含 GUI 的 java 程序的,不带 headless 的可以运行带 GUI 的 java 程序
安装完成确认版本:
java -version
openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-8u342-b07-0ubuntu1~20.04-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)
mysql
安装 mysql 最简单快速的方法,四触碰璧后终于找到家了
这里可以快一点,使用命令:
sudo apt-get install mysql-server
确认版本:
mysql --version
mysql Ver 8.0.30-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
初始化配置
sudo mysql_secure_installation
这些是推荐的选项,当然你可以自己配置
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (选择 N ,不会进行密码的强校验)
Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y (选择 Y,删除匿名用户)
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N (选择 N,允许 root 远程连接)
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (选择 N,不删除 test 数据库)
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (选择 Y,修改权限立即生效)
检查 mysql 服务状态
systemctl status mysql.service
| 状态 |
|---|
![]() |
配置远程访问
在 Ubuntu 下 MySQL 缺省是只允许本地访问的
如果你要其他机器也能够访问的话,需要进行配置;
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
vim 打开 mysqld.cnf ,找到bind-address, 默认参数应该为127.0.0.1, 把参数改为0.0.0.0(如果需要远程访问)
TIP
这里如果你的后端与数据库部署同一个服务器,且那么短时间内不会分开部署,并且不需要远程调试,为了安全起见可以不需要更改
重启 mysql 命令:sudo /etc/init.d/mysql restart
到这里没什么问题的话, mysql 安装基本告一段落了,下面的都是常规操作
设置账户
登录:sudo mysql -uroot -p
切换数据库:mysql> use mysql; 查询用户表:mysql>select User, authentication_string, Host from user; 查看状态:select host, user, plugin from user;
设置权限与密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; #使用 mysql_native_password 修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER; #更新一下用户的密码
UPDATE user SET host = '%' WHERE user = 'root'; #允许远程访问
#刷新 cache 中配置 刷新权限
flush privileges;
quit;
开放端口
在服务商管理面板加就好了
