CentOS8安装Web相关服务
nginx
安装 nginx
shell
dnf install nginx
输入 y
回车就可以安装了。
安装完毕后,控制台输入nginx -v
,如果有版本号输出,证明我们的 nginx 已经安装完成。
启动 nginx
shell
# 启动 nginx
systemctl start nginx
# 设置开机自动启动 nginx
systemclt enable nginx
上面两条命令可以简化成一条
shell
# 设置开机自动启动 nginx,通过 --now 参数让 nginx 立即启动
systemctl enable --now nginx
通过 systemctl status nginx
来查看 nginx 的运行状态,出现以下界面,证明我们的 nginx 服务成功地运行起来了:
active(running)
表示 nginx 当前的状态是运行中。
nginx 简单配置 web 服务
使用 whereis nginx
查看 nginx 服务所在目录。
其中 /etc/nginx
是 nginx 配置相关的目录,/etc/nginx/.conf
是 nginx 的默认配置文件。我们可以看到在配置文件中,他会引入所有在 /etc/nginx/conf.d/
目录下所有的 .conf
相关的配置文件:
所以,我们可以直接在 /etc/nginx/conf.d
目录下管理我们的 web 服务。
shell
cd /etc/nginx/conf.d
vi test.conf
输入以下内容:
plain-text
server {
listen 443 ssl;
server_name test.humandetail.com;
root /home/www/test/dist;
# ssl 证书
ssl_certificate /home/cert/test.humandetail.com.pem;
ssl_certificate_key /home/cert/test.humandetail.com.key;
# ssl 验证相关
ssl_session_timeout 5m; # 缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 安全链接可选的加密协议
ssl_prefer_server_ciphers on; # 使用服务器端的首选算法
# gzip
gzip on;
#需要压缩的常见静态资源
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
#由于nginx的压缩发生在浏览器端而微软的ie6很坑爹,会导致压缩后图片看不见所以该选项是禁止ie6发生压缩
gzip_disable "MSIE [1-6]\.";
#如果文件大于1k就启动压缩
gzip_min_length 1k;
#以16k为单位,按照原始数据的大小以4倍的方式申请内存空间,一般此项不要修改
gzip_buffers 4 16k;
#压缩的等级,数字选择范围是1-9,数字越小压缩的速度越快,消耗cpu就越大
gzip_comp_level 2;
#启用应答头"Vary: Accept-Encoding"
gzip_vary on;
location / {
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://127.0.0.1:10086;
}
}
server {
listen 80;
server_name test.humandetail.com;
return 301 https://$server_name$request_uri;
}
输入 nginx -t
可以查看配置是否正确
出现上面的提示,就说明 nginx 的配置没有问题,使用 systemctl restart nginx
重启 nginx 服务,这样我们就能正常访问了。
MySQL
使用 dnf 安装 mysql-server
shell
# 使用 -y 表示所有询问都直接确认
# 默认会安装最新版本的 mysql
dnf install mysql-server -y
# 安装完成之后启动 mysqld
systemctl enable --now mysqld
设置
启动完之后,使用 root 账户登入
shell
mysql -u root -p
因为我们还没设置 root 账户的密码,所以在输入密码时,直接回车便可以登录。
接下来我们需要先给 root 账户设置一个密码
mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD';
然后创建远程访问
mysql
use mysql;
-- 更新数据,授权外部访问
UPDATE user SET host = '%' WHERE user = 'root' AND host='localhost';
-- 刷新权限
FLUSH PRIVILEGES;
MySQL8 以上更改密码认证插件
mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password by 'root';
创建管理员账号
mysql
-- 创建
CREATE user 'YOUR_USER_NAME'@'%' IDENTIFIED BY 'YOUR_PASSWORD';
-- ALL 表示所有权限
-- *.* 第一个*表示所有数据库,第二个*表示所有表
GRANT ALL ON *.* TO 'YOUR_USER_NAME'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
输入 exit
退出 mysql,回到控制台。
MongoDB
在 /etc/yum.repos.d
目录中创建一个回购文件,以在 CentOS 8 服务器中安装 MongoDB yum 存储库。
shell
vi /etc/yum.repos.d/mongodb-org-5.0.repo
添加以下配置内容并保存
plain-text
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/6/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
为 MongoDB yum 存储库构建缓存。
shell
dnf clean all
dnf makecache
dnf repolist
我们需要根据MongoDB软件的要求在centos8服务器中设置资源限制。
为此,为MongoDB创建资源限制配置文件,如下:
shell
vi /etc/security/limits.d/mongod.conf
添加以下内容并保存
plain-text
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000
然后我们可以从新添加的yum存储库在 CentOS 8 服务器上安装 MongoDB。
使用以下 dnf 命令安装 MongoDB 服务器的最新稳定版本。
shell
dnf list -y mongodb-org
dnf install -y mongodb-org
创建管理员用户
默认情况下, MongoDb服务器从未启用访问控制,因此任何人都可以访问 MongoDB 服务器并执行管理操作。所以我们需要创建一个 admin 用户并在 MongoDB 服务器中启用访问控制。
shell
# 连接 MongoDB
mongo
# 连接管理数据库
use admin;
# 创建管理员用户
db.createUser(
{
user: "admin",
pwd: "YOUR_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
);
# 列出 MongoDB 数据库中所有用户
show users;
创建完用户之后,我们需要为 MongoDB.service 编辑 system 单元文件。
shell
vi /usr/lib/systemd/system/mongod.service
在文件中找到 Environment=``"OPTIONS=-f /etc/mongod.conf"
,将其替换成
plain-text
Environment="OPTIONS=--auth -f /etc/mongod.conf"
重载 systemd 并重启 MongoDB 服务器以更改应用
shell
systemctl daemon-reload
systemctl restart mongod
检测是否启用了访问控制
shell
mongo
use admin;
show users;
这次 show users;
命令引发身份验收错误,它确认在我们的 MongoDB 服务器中已启用访问控制。
现在,以管理员身份连接
shell
db.auth("admin", passwordPrompt());
show users;
这时就应该可以看到用户列表。
开启外网访问
shell
vi /etc/mongod.conf
找到 bindIp: 127.0.0.1
这一行改成 bindIp: 0.0.0.0
Redis
shell
dnf install redis
systemctl enable --now redis
修改配置/etc/redis.conf
- 允许远程连接访问:找到
bind 127.0.0.1
这一行,注释掉# bind 127.0.0.1
,如果还是无法访问,那就改成bind: 0.0.0.0
- 启用密码访问:找到
# requirepass foobared
把前面的#
去掉,然后把foobared
改为你自己的密码。
然后重启 redis systemclt restart redis
git
shell
dnf install git -y
Node
使用 n
来管理 Node
安装 n
来管理 Node,因为我们服务器上还没有安装 npm
,所以通过以下方式来安装 n
shell
curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n
bash n lts
# Now node and npm are available
npm install -g n
pm2
shell
npm i -g pm2
jenkins
因为Jenkins是使用Java编写的,所以需要安装Java环境,Jenkins需要Java8或更高版本。
这里使用OpenJDK,首先通过一下命令安装OpenJDK.
shell
dnf install java-1.8.0-openjdk-devel
启用 Jenkins 存储库,运行以下命令并导入 GPG 密钥:
shell
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
安装最新稳定版本 Jenkins
shell
dnf install jenkins
启用 Jenkins
shell
systemctl enable --now jenkins
修改 Jenkins 默认端口
shell
vi /etc/sysconfig/jenkins
找到 JENKINS_PORT=8080
这一行,把端口改成你想要的。
然后重启一下 Jenkins
shell
systemctl restart jenkins
如果修改端口还是失效,则用以下方法进一步修改
vi /usr/lib/systemd/system/jenkins.service
找到 Environment="JENKINS_PORT=8080"
把 8080 改成你想要的端口,之后重新加载配置文件 systemctl daemon-reload
,最后重启 jenkins
vsftpd
shell
dnf install vsftpd
systemctl enable --now vsftpd
安装完后,我们需要创建一个用于访问 FTP 服务器的用户。YOUR_USER_NAME
替换成你想创建的用户名
shell
adduser YOUR_USER_NAME
passwd YOUR_USER_NAME
FTP 用户就位后,我们将继续创建 FTP 目录,并分配以下权限
shell
mkdir -p /home/ftp
chmod -R 750 /home/ftp
chown -R YOUR_USER_NAME /home/ftp
我们还需要将 FTP 用户添加到 /etc/vsftpd/user_list
中,以允许用户访问 vsftp 服务器
shell
bash -c 'echo YOUR_USER_NAME >> /etc/vsftpd/user_list'
进一步配置
允许本地用户远程访问 FTP 服务器并阻止匿名用户
shell
vi /etc/vsftpd/vsftpd.conf
找到 anonymous_enable
这一行,设置为NO, local_enable
这一行设置为 YES
plain-text
anonymous_enable=NO
local_enable=YES
授予用户运行任何 FTP 命令和进行更改的权限
plain-text
write_enable=YES
出于安全目的,你可以选择限制用户访问其主目录之外的任何文件和目录。
plain-text
chroot_local_user=YES
授予用户对其各自主目录的读写权限
plain-text
allow_writeable_chroot=YES
最后保存文件,重启 vsftpd 服务
shell
systemctl restart vsftpd
配置 swap
我们在安装系统的时候已经建立了 swap 分区。swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。
也就是说,当内存不够用时,我们使用 swap 分区来临时顶替。这种“拆东墙,补西墙”的方式应用于几乎所有的操作系统中。
使用 swap 交换分区,显著的优点是,通过操作系统的调度,应用程序实际可以使用的内存空间将远远超过系统的物理内存。由于硬盘空间的价格远比 RAM 要低,因此这种方式无疑是经济实惠的。当然,频繁地读写硬盘,会显著降低操作系统的运行速率,这也是使用 swap 交换分区最大的限制。
使用以下命令来查看 swap 配置情况
shell
free -m
从上图我们可以看到 swap 是还没有配置的
通过 dd 命令增加 swap 空间
shell
# 增加 5G 的 swap 空间
dd if=/dev/zero of=/var/newswap bs=1M count=5120
# 设置权限
chown root:root /var/newswap
chmod 0600 /var/newswap
创建 swap 文件
shell
mkswap /var/newswap
加载 swap
shell
swapon /var/newswap
然后运行 free -m
查看 swap 是否生效,看到 swap 里面有值就说明配置成功了。
最后编辑 /etc/fstab
文件,把 swap 配置写入,防止重启后 swap 变为0
shell
vi /etc/fstab
在最后一行写入
plain-text
/var/newswap swap swap defaults 0 0
为了防止写错,我们用 mount -a
命令校验一下,如果没报错,那就证明没有问题。
卸载 swap
shell
swapoff /var/newswap
rm -rf /var/newswap