记录一次ubuntu /mysql/redis/nginx等 系统安装

没想到还会做一次系统安装配置类的工作,没办法,碰到问题了,总得解决。

安装 &网络配置

从网上下载了ubuntu 18.04.6的安装包,用UltraISO做安装盘,到服务器上修改了下启动顺序,ubuntu的安装非常简单,点几次next就完成了。

安装完成后用安装过程中创建的用户登录,直接到了桌面,默认是自动获取IP地址的,插了网线或者有wifi的话,启动后就直接能上网了。网络配置功能在桌面右上角,和windows类似,操作非常简单。

系统默认使用networkManager进行网络管理,通过桌面进行网络配置,你会发现通过脚本查看/etc/netplan下的yaml配置文件,里面是空的。网上大概看了下(没做验证),脚本方式配置和左面配置网络是二选一的,如果要启用脚本方式配置网络,是需要停掉桌面配置的。既然有了桌面,就没必要通过脚本方式配置网络了,所以,也没有验证过手工写入yaml文件后是否能直接生效。

如果安装了server版ubantu,就只能通过脚本进行配置了,修改/etc/netplan下的yaml文件:

network:
  version: 2
  ethernets:
    eno1:
      dhcp4: true
    eno2:
      dhcp4: no
      addresses: [xxx.xxx.x.xxx/xx]

启用root用户远程登录

默认情况下,root用户没有启用,启用root用户需要:

  1. 设置root用户密码
    这个需要打开shell脚本窗口,尚未开启远程(ssh尚未安装)的话,通过ctl+alt+T打开脚本窗口。

首先修改root密码:

sudo passwd root
  1. 修改/etc/ssh/sshd_config文件(用vi就可以,注意是sshd_config文件,不是ssh_config文件
    # 找到这一行
    #PermitRootLogin prohibit-password
    # 修改为
    PermitRootLogin yes
    # To disable tunneled clear text passwords, change to no here!
    PasswordAuthentication yes
    PermitEmptyPasswords no
    
  2. 重启ssh
systemctl restart ssh

如果默认没有安装ssh服务的话,需要提前安装一下ssh服务:

sudo apt-get update

sudo apt-get install openssh-server

sudo systemctl start ssh

时区配置

设置北京时间:

sudo timedatectl set-timezone Asia/Shanghai
# 检查
timedatectl status
# 启动NTP
sudo timedatectl set-ntp true

配置NTP之后,还需要修改/etc/timezone文件,否则虽然操作系统date命令显示时间是正确的,但是java等应用获取系统时间是错误的。

/etc/timezone 修改为Asia/Shanghai

安装Mysql

有两种可选的方式,一种是通过apt在线安装,另外一种是从官网下载安装包,上传到ubuntu服务器之后,手动安装。

第一种方式非常简单,一条命令就能完成,开机自启等等一切都ok了。但是我不太喜欢这种方式(可能是我对ubuntu太不熟悉的缘故),因为安装之后配置文件并没有在我熟悉的位置。我主要说一下手动安装,包括下面的ng和redis。

先去官网下载安装包,我安装的是5.7.31,下载完成后上传到服务器上,比如上传到/usr/local下,解压后修改一下目录名:

mv mysql-5.7.31 mysql

之后添加用户、用户组:

groupadd mysql
useradd -r -g mysql mysql

配置my.cnf文件(vim /etc/my.cnf,加入以下内容)

[mysql]  
# 设置mysql客户端默认字符集  
default-character-set=utf8   
socket=/tmp/mysql.sock
 
[mysqld]  
#skip-name-resolve  
 
#设置3306端口  
port=3306   
 
socket=/tmp/mysql.sock
# 设置mysql的真正的安装目录 (看自己的是在哪里)
basedir=/usr/local/mysql  
 
# 设置mysql数据库的数据的存放目录 (看自己的是在哪里)
datadir=/usr/local/mysql/data  
 
# 允许最大连接数  
 
max_connections=200  
 
# 服务端使用的字符集默认为8比特编码的latin1字符雿 
character-set-server=utf8  
 
# 创建新表时将使用的默认存储引擿 
default-storage-engine=INNODB  

#大小写敏感要加,否则有些应用生成的sql语句表名称是大写的,会找不到表
# mysql8之后不存在这个问题了而且不认识这个命令,要去掉
lower_case_table_name=1  
 
# 非必要,如果你的应用中的groupby语句不是严格遵守SQL规范的话,必须加,要么就修改应用,而且,mysql8不认识这个命令,不能要
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

创建data文件夹(my.cnf文件中指定的、数据库文件存放路径。mysql8不需要、不能手动创建data文件夹,初始化的时候自动创建):

cd mysql
#进入到/usr/local/mysql路径下
mkdir data

修改data路径的所属组、访问权限:

chown -R mysql:mysql ./
chmod -R 755 /usr/local/mysql/data

初始化数据库,非常重要的关键步骤,如果缺少依赖包的话,会报错,根据报错的提示信息,用apt install命令安装缺失的依赖包,绝大部分错误都可以解决。

安装可能报错的是缺少libaio.so.1,Ubantu24安装后就没有这个libaio.so.1,需要如下处理:

apt search libaio

root@jc-server2:/usr/lib/x86_64-linux-gnu# ls -lrt libaio*
-rw-r--r-- 1 root root 14336 Oct  2  2024 libaio.so.1t64.0.2
lrwxrwxrwx 1 root root    18 Oct  2  2024 libaio.so.1t64 -> libaio.so.1t64.0.2

没有libaio.so.1,但是有libaio.so.1t64.0.2,创建一个链接就可以了:

root@jc-server2:/usr/lib/x86_64-linux-gnu# ln -s libaio.so.1t64.0.2 libaio.so.1

之后再检查:

root@jc-server2:/usr/lib/x86_64-linux-gnu# ls -lrt libaio*
-rw-r--r-- 1 root root 14336 Oct  2  2024 libaio.so.1t64.0.2
lrwxrwxrwx 1 root root    18 Oct  2  2024 libaio.so.1t64 -> libaio.so.1t64.0.2
lrwxrwxrwx 1 root root    18 May  8 13:48 libaio.so.1 -> libaio.so.1t64.0.2

这样就OK了。

sudo bin/mysqld --initialize --user=mysql

初始化成功的话,会有类似的提示信息。一定要记录下初始密码,后面要用到,没有这个密码的话,可能还得修改my.cnf文件免密登录、重新设置密码。

这个时候,通过/usr/local/mysql/support-file/mysql.server脚本可以启动服务:

./mysql.server start

之后第一步需要用刚才的临时密码登录mysql后修改mysql的root密码,但是发现mysql命令不能用,报错缺少libtinfo5,和上面同样的处理:

root@jc-server2:/usr/lib/x86_64-linux-gnu# ls -lrt libtinfo*
-rw-r--r-- 1 root root 208328 Apr  9  2024 libtinfo.so.6.4
lrwxrwxrwx 1 root root     15 Apr  9  2024 libtinfo.so.6 -> libtinfo.so.6.4

没有libtinfo.so.5,但是有 libtinfo.so.6.4,同样创建链接:

root@jc-server2:/usr/lib/x86_64-linux-gnu#ln -s libtinfo.so.6.4 libtinfo.so.5

修改之后再检查一下:

root@jc-server2:/usr/lib/x86_64-linux-gnu# ls -lrt libtinfo*
-rw-r--r-- 1 root root 208328 Apr  9  2024 libtinfo.so.6.4
lrwxrwxrwx 1 root root     15 Apr  9  2024 libtinfo.so.6 -> libtinfo.so.6.4
lrwxrwxrwx 1 root root     15 May  8 14:03 libtinfo.so.5 -> libtinfo.so.6.4

mysql命令就OK了,可以登录到mysql了,但是临时密码不修改的话,还是会报错,所以第一步需要修改初始密码,用mysqladmin:

cd /usr/local/mysql/bin
mysqladmin -uroot -p'oldpassword' password 'newpassword'

mysql8默认的远程鉴权方式从mysql_native_password修改成了caching_sha2_password,

use mysql;
 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
 FLUSH PRIVILEGES;

另外,mysql8增加了system user权限,默认情况下root用户没有system_user权限,需要开启一下:

grant system_user on *.* to 'root';

接下来配置Mysql开机启动,可能会稍稍麻烦一点,因为Ubuntu属于Debian阵营,和我以前大多数情况下用的centos(是红帽阵营)是有区别的。

进入/etc/systemd/system目录,创建mysql.service文件:

[Unit]
Description= Mysql Server
After=network.target

[Service]
ExecStart=/usr/local/mysql/bin/mysqld_safe
Restart=always
User=mysql
Group=mysql
RuntimeDirectory=mysql
RuntimeDirectoryMode=2755

[Install]
WantedBy=multi-user.target

重新加载systemd配置:

sudo systemctl daemon-reload

启用mysql.service服务:

sudo systemctl enable mysql

启动服务(如果之前通过/usr/local/mysql/support-files/mysql.service脚本启动了mysql,最好再用mysql.service stop停掉服务):

sudo systemctl start mysql

检查mysql状态:

root@xxxxx:/etc/systemd/system# systemctl status mysql
● mysql.service - Mysql Server
   Loaded: loaded (/etc/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2024-09-20 15:53:35 CST; 23h ago
 Main PID: 1164 (mysqld_safe)
    Tasks: 38 (limit: 4915)
   CGroup: /system.slice/mysql.service
           ├─1164 /bin/sh /usr/local/mysql/bin/mysqld_safe
           └─1349 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/li

9月 20 15:53:35 rx-UniServer-R4900-G3 systemd[1]: Started Mysql Server.
9月 20 15:53:35 rx-UniServer-R4900-G3 mysqld_safe[1164]: 2024-09-20T07:53:35.502057Z mysqld_safe Logging to '/usr/local/mysql/data/rx-Uni
9月 20 15:53:35 rx-UniServer-R4900-G3 mysqld_safe[1164]: 2024-09-20T07:53:35.585258Z mysqld_safe Starting mysqld daemon with databases fr

如果看到以上信息的话,恭喜,安装、配置开机自启动成功了!

接下来就是通过上面说过的初始化命令登录mysql,修改root密码、新增用户、配置远程访问等等,都是mysql的常规操作了。

安装Redis

把下载的安装包上传到服务器上,然后解包(我放在/usr/local下):

tar -xzf redis-5.0.7.tar.gz
mv redis-5.0.7 redis

编译:

make

make过程中如果有报错,基本就是缺失依赖包的,apt install下载缺失的依赖包就可以。

安装:

make install PREFIX=/usr/local/redis

PREFIX指定安装路径,不指定的话安装完成后的bin直接放在/usr/local下了,比较散乱。

配置文件:

cp /usr/local/redis/redis.conf /etc/redis

配置文件保留在/usr/local/redis路径下其实也可以,启动的时候指定配置文件所在路径就可以。

接下来配置开机自启动:

cd /etc/systemd/system
vi redis.service

然后把下面内容copy到redis.service中:

[Unit]
Description=Redis Server
After=network.target

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
User=root
Group=root
RuntimeDirectory=redis
RuntimeDirectoryMode=2755

[Install]
WantedBy=multi-user.target

其中 ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf 指定了启动redis的路径和配置文件。

之后就和mysql的启动一样了:

sudo systemctl daemon-reload
sudo systemctl enable redis

安装Nginx

安装、配置方法和redis几乎一样。但是有一个小小的需要注意的地方是,如果你解压nginx之后放在/usr/local/nginx路径下,那么在生成编译脚本的时候需要稍加注意。

比如下载nginx-1.19.9.tar.gz后,上传到/usr/local下,解压:

tar -xzf nginx-1.19.9.tar.gz
mv nginx-1.19.9 nginx

可以看到解压后的安装包就放在了/usr/local/nginx下了。

生成编译脚本:

./configure --prefix=/usr/local/nginx1 --with-http_ssl_module

prefix如果指定为/usr/local/nginx的话,会报错,原因是nginx解包之后通过命令mv nginx-1.19.9 nginx 修改安装包路径为/usr/local/nginx了,所以就不允许安装到相同路径下。所以,要么就不修改安装包路径名称为nginx,要么就向上面的方式,prefix指定为另外一个路径,安装到另外一个路径下。推荐第一种,prefix指定安装路径的/usr/local/nginx下。

如果有报错,最大的可能还是依赖包缺失,按照提示apt install安装依赖包即可。

编译:

make

安装:

make install

之后查看/usr/local/nginx,看到sbin、conf等路径,说明安装成功,默认情况下,配置文件在/usr/local/nginx/conf下。

最后,配置开机自启动:

cd /etc/systemd/system
vi nginx.service 

把一下内容copy到nginx.service文件中:

Description=nginx Server
After=network.target

[Service]
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PIDFile=/usr/local/nginx/logs/nginx.pid
PrivateTmp=true
Restart=always
RuntimeDirectory=nginx
RuntimeDirectoryMode=2755

[Install]
WantedBy=multi-user.target

需要注意的是,nginx不是通过start stop restart status等参数进行启动、停止操作的,所以,需要额外指定ExecReload、ExecStop等参数。

最后:

sudo systemctl daemon-reload
sudo systemctl enable nginx

万事大吉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值