细节个人博客
细节个人博客
  • 首页
  • 前端开发
  • 后端开发
  • 其它
  • 关于我们

友情链接

  • 滑手佬的博客
  • 长歌的博客
  • _芋头丶Blog
  • 月落个人博客

CentOS8安装Web相关服务

其它
细节
2022-04-29
2292
linux
## nginx ### 安装 nginx ```shell dnf install nginx ``` ![image-20220429103833719.png](https://img-squad-prod.humandetail.com/inner/20220429de79EONy.png) 输入 `y` 回车就可以安装了。 安装完毕后,控制台输入`nginx -v`,如果有版本号输出,证明我们的 nginx 已经安装完成。 ![image-20220429104043113.png](https://img-squad-prod.humandetail.com/inner/20220429FLuN927Q.png) ### 启动 nginx ```shell # 启动 nginx systemctl start nginx # 设置开机自动启动 nginx systemclt enable nginx ``` 上面两条命令可以简化成一条 ```shell # 设置开机自动启动 nginx,通过 --now 参数让 nginx 立即启动 systemctl enable --now nginx ``` 通过 `systemctl status nginx` 来查看 nginx 的运行状态,出现以下界面,证明我们的 nginx 服务成功地运行起来了: ![image-20220429104425101.png](https://img-squad-prod.humandetail.com/inner/202204297I5F0GPb.png) `active(running)` 表示 nginx 当前的状态是运行中。 ### nginx 简单配置 web 服务 使用 `whereis nginx` 查看 nginx 服务所在目录。 ![image-20220429104642204.png](https://img-squad-prod.humandetail.com/inner/20220429vcjgWb6D.png) 其中 `/etc/nginx` 是 nginx 配置相关的目录,`/etc/nginx/.conf` 是 nginx 的默认配置文件。我们可以看到在配置文件中,他会引入所有在 `/etc/nginx/conf.d/` 目录下所有的 `.conf` 相关的配置文件: ![image-20220429105011841.png](https://img-squad-prod.humandetail.com/inner/20220429vH7YFZVW.png) 所以,我们可以直接在 `/etc/nginx/conf.d` 目录下管理我们的 web 服务。 ```shell cd /etc/nginx/conf.d vi test.conf ``` 输入以下内容: ``` 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` 可以查看配置是否正确 ![image-20220429112812486.png](https://img-squad-prod.humandetail.com/inner/20220429JAkF5pBI.png) 出现上面的提示,就说明 nginx 的配置没有问题,使用 `systemctl restart nginx` 重启 nginx 服务,这样我们就能正常访问了。 ## MySQL ### 使用 dnf 安装 mysql-server ```shell # 使用 -y 表示所有询问都直接确认 # 默认会安装最新版本的 mysql dnf install mysql-server -y # 安装完成之后启动 mysqld systemctl enable --now mysqld ``` ![image-20220429113308709.png](https://img-squad-prod.humandetail.com/inner/20220429SiySp8fA.png) ### 设置 启动完之后,使用 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 ``` 添加以下配置内容并保存 ```  [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 ``` ![image-20220429113749995.png](https://img-squad-prod.humandetail.com/inner/20220429cUvS3aE2.png) 我们需要根据MongoDB软件的要求在centos8服务器中设置资源限制。 为此,为MongoDB创建资源限制配置文件,如下: ```shell vi /etc/security/limits.d/mongod.conf ``` 添加以下内容并保存 ``` 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"`,将其替换成 ``` Environment="OPTIONS=--auth -f /etc/mongod.conf" ``` 重载 systemd 并重启 MongoDB 服务器以更改应用 ```shell systemctl daemon-reload systemctl restart mongod ``` 检测是否启用了访问控制 ```shell mongo use admin; show users; ``` ![image-20220412140741582.png](https://img-squad-prod.humandetail.com/inner/202204296BUEek8v.png) 这次 `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` 1. 允许远程连接访问:找到 `bind 127.0.0.1` 这一行,注释掉`# bind 127.0.0.1`,如果还是无法访问,那就改成 `bind: 0.0.0.0` 2. 启用密码访问:找到 `# 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 ``` ![image-20220429134313709.png](https://img-squad-prod.humandetail.com/inner/20220429E87xfsfs.png) ## 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 ``` anonymous_enable=NO local_enable=YES ``` 授予用户运行任何 FTP 命令和进行更改的权限 ``` write_enable=YES ``` 出于安全目的,你可以选择限制用户访问其主目录之外的任何文件和目录。 ``` chroot_local_user=YES ``` 授予用户对其各自主目录的读写权限 ``` allow_writeable_chroot=YES ``` 最后保存文件,重启 vsftpd 服务 ```shell systemctl restart vsftpd ``` ## 配置 swap 我们在安装系统的时候已经建立了 swap 分区。swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。 也就是说,当内存不够用时,我们使用 swap 分区来临时顶替。这种“拆东墙,补西墙”的方式应用于几乎所有的操作系统中。 使用 swap 交换分区,显著的优点是,通过操作系统的调度,应用程序实际可以使用的内存空间将远远超过系统的物理内存。由于硬盘空间的价格远比 RAM 要低,因此这种方式无疑是经济实惠的。当然,频繁地读写硬盘,会显著降低操作系统的运行速率,这也是使用 swap 交换分区最大的限制。 使用以下命令来查看 swap 配置情况 ```shell free -m ``` ![image-20220429140848407.png](https://img-squad-prod.humandetail.com/inner/202204299auaNdjf.png) 从上图我们可以看到 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 里面有值就说明配置成功了。 ![image-20220429142212250.png](https://img-squad-prod.humandetail.com/inner/20220429R9cv4Gdc.png) 最后编辑 `/etc/fstab` 文件,把 swap 配置写入,防止重启后 swap 变为0 ```shell vi /etc/fstab ``` 在最后一行写入 ``` /var/newswap swap swap defaults 0 0 ``` 为了防止写错,我们用 `mount -a` 命令校验一下,如果没报错,那就证明没有问题。 **卸载 swap** ```shell swapoff /var/newswap rm -rf /var/newswap ```
移动端1px边框解决方案Nuxt3项目安装配置

推荐文章

  1. CentOS8安装Web相关服务

    CentOS8安装Web相关服务

  2. 灵魂拷问:0.1+0.2===0.3吗?

    灵魂拷问:0.1+0.2===0.3吗?

  3. Vue3.0初体验(Composition API)

    Vue3.0初体验(Composition API)

  4. Event Loop 我感觉我又行了(浏览器篇)

    Event Loop 我感觉我又行了(浏览器篇)

  5. 观察者模式 VS 发布订阅者模式

    观察者模式 VS 发布订阅者模式

标签归档

  • monorepo (1)
  • pnpm (1)
  • JSDoc (1)
  • 手写源码 (1)
  • Event Loop (2)
  • Vite (1)
  • Linux (1)
  • nuxt (2)
  • axios (2)
  • 设计模式 (2)
  • markdown (1)
  • vue3.0 (2)
  • element-ui (2)
  • React (1)
  • 页面渲染 (2)
  • TypeScript (9)
  • webpack (3)
  • Git (2)
  • canvas (3)
  • 网络 (7)
  • ES6 (27)
  • VueJS (9)
  • 事件 (3)
  • HTML (2)
  • 布局技巧 (4)
  • 用户体验 (2)
  • 性能优化 (1)
  • 火狐插件 (1)
  • 微信支付 (1)
  • ThinkPHP (2)
  • 移动端 (2)
  • cookie (1)
  • 算法 (1)
  • 富文本编辑器 (2)
  • 面向对象 (3)
  • jQuery (3)
  • 递归 (1)
  • JavaScript (65)
  • 正则表达式 (2)
  • Apache (1)
  • MySQL (8)
  • CSS (12)
  • PHP (11)
© 2014 - 2023 Humandetail. All Rights Reserved.
粤ICP备14074910号 粤公网安备44010602007739