linux节点安装必要的前端项目环境
当前linux(centos7)服务器节点用于部署前端项目
安装 Nodejs
- 将node的安装包,例如:node-v12.16.3-linux-x64.tar.xz 上传至服务器的root目录下
tips: 借助git bash的scp命令上传本地文件至服务器
scp ./node-v12.16.3-linux-x64.tar.xz root@192.168.10.6:/root/
- 在/usr/local下新建node目录, 并将node的压缩包解压到 /usr/local/node 目录下
cd /usr/local
mkdir node
cd node
tar -xvf /root/node-v12.16.3-linux-x64.tar.xz -C ./
- 编辑 ~/.bash_profile, 追加如下配置Node环境变量的内容至文件末
# Nodejs
export PATH=/usr/local/node/node-v12.16.3-linux-x64/bin:$PATH
- 刷新环境变量并验证Node环境变量的配置
source ~/.bash_profile
node -v
npm version
npx -v
- 将前端项目源码压缩上传至服务器(本地打包好上传压缩的dist也可)
tips1: 前端项目压缩上传是为了防止一些隐藏文件丢失
tips2: 服务器端解压上传的rar压缩包
# 安装unar
yum install epel-release -y
yum install unar -y
# 解压文件到当前目录
unar example.rar
# 带密码解压
unar -p 123456 example.rar
tips3: npm安装前端项目依赖时报错:request to https://registry.npm.taobao.org failed, reason certificate has expired,原因是原先的淘宝镜像过期,需要更新npm镜像源
# 清缓存
npm cache clean --force
# 设置新镜像源
npm config set registry https://registry.npmmirror.com
# 检测新配置
npm config list
# 进入前端项目根路径,并安装前端项目依赖
npm i --unsafe-perm
# 打包得到dist
npm run build
tips4: 将dist文件夹的路径配置到nginx中,使得客户端浏览器可以访问到前端项目
安装 Nginx
- 将nginx的安装包: nginx-1.17.10.tar.gz 上传至服务器的/root/下
- 在/usr/local/下新建nginx目录并进入该文件夹
- 将安装包解压至nginx目录
tar -xzvf /root/nginx-1.17.10.tar.gz -C ./
- 预先安装额外的依赖并编译安装nginx
yum -y install pcre-devel
yum -y install openssl openssl-devel
cd nginx-1.17.10
./configure --prefix=/usr/local/nginx (指定安装路径,不然安装完找不到sbin目录)
make && make install
tips: 安装完nginx之后,nginx的可执行文件位于/usr/local/nginx/sbin/nginx
- nginx的常用命令
# 启动nginx
/usr/local/nginx/sbin/nginx
# 停止nginx
/usr/local/nginx/sbin/nginx -s stop
# 修改了nginx配置后重新加载nginx
/usr/local/nginx/sbin/nginx -s reload
tips1: nginx配置文件位于 /usr/local/nginx/conf/nginx.conf
tips2: 通过客户端浏览器访问nginx服务器验证是否将nginx配置成功时,若访问失败,需检查nginx所在服务器的防火墙端口是否开放
# nginx是否启动
ps -aux | grep nginx
# 防火墙开放端口
firewall-cmd --zone=public --add-port=待开放的端口号/tcp --permanent
# 重启防火墙
systemctl restart firewalld.service
-
通过客户端浏览器访问nginx所在服务器,验证nginx是否安装成功
-
为Centos7 配置nginx开机自启
- 在系统服务目录里创建nginx.service文件
vim /usr/lib/systemd/system/nginx.service 并写入如下配置内容
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 允许开启自启
systemctl enable nginx.service
- 关闭nginx
pkill -9 nginx
- 启动nginx并查看其运行状态
systemctl start nginx
systemctl status nginx.service
- 重启服务器并再次查看nginx状态,检测nginx开机自启是否配置成功
reboot
systemctl status nginx
安装 Mysql
- 卸载centos7自带的Mariadb(如果有)
# 查看存在的mariadb
rpm -qa | grep mariadb
# 删除存在的mariadb相关(例如)
yum -y remove mariadb-5.5.56-2.el7.x86_64
- 准备好mysql的安装包,例如: mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz, 上传并解压至 /usr/local/下,将解压得到的文件夹重命名为mysql
scp ./mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz root@192.168.10.6:/root/
cd /usr/local
tar -xzvf /root/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C ./
mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql
# 新建/usr/local/mysql/data目录备用
mkdir /usr/local/mysql/data
# 新建 /var/lib/mysql目录并修改权限以备用
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
- 创建mysql用户组和用户
groupadd mysql
useradd -g mysql mysql
# 修改mysql目录的归属用户
cd /usr/local/mysql
chown -R mysql:mysql ./
- 准备mysql配置文件, 在/etc下新建my.cnf文件:vim /etc/my.cnf,并写入如下简化配置
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
# 设置3306端⼝
port = 3306
socket=/var/lib/mysql/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
lower_case_table_names=1
max_allowed_packet=16M
- 正式安装mysql
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --
datadir=/usr/local/mysql/data
tips: 上述执行过程中输出的root密码(通常在输出信息的最后一行)需要记得,首次登录mysql时需要使用
5. 复制启动脚本到系统资源目录
cp ./support-files/mysql.server /etc/init.d/mysqld
# 检查和编辑mysqld文件中的basedir和datadir目录为实际需要指定的目录
vim /etc/init.d/mysqld
# 确保上述文件中 basedir=/usr/local/mysql, datadir=/usr/local/mysql/data
- 设置Mysql系统服务并设置自启动
# 增加mysqld服务控制脚本执行权限
chmod +x /etc/init.d/mysqld
# 将mysqld加入系统服务
chkconfig --add mysqld
# 检测mysqld服务是否已经生效
chkconfig --list mysqld
- 启动mysqld
service mysqld start
- 为mysql配置环境变量, 在~/.bash_profile末追加如下内容(保存并退出后要刷新环境变量使之生效)
# Mysql
export PATH=$PATH:/usr/local/mysql/bin
- 首次登录Mysql
# 密码为之前安装Mysql时输出的初始密码
mysql -u root -p
# 登录成功后修改root密码
mysql> alter user user() identified by "new password";
# 刷新
mysql> flush privileges;
- 为root设置远程登录
# root登录
mysql -u root -p
# 进入数据库后
mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;
- 新建用户并为该用户指定可对某数据库进行远程数据访问
# root登录
mysql -u root -p
# root登录成功后新建数据库
mysql> create database new_database;
# 将该数据库指定给某用户可以在远程访问
mysql> grant all privileges on new_database.* to wangxun@'%' identified by 'password'
tips1: 此时可以'wangxun'为用户名在任何机器上以'password'为密码,访问'new_database'数据库
tips2: 需要防火墙对外开启3306端口
# 开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
systemctl restart firewalld.service
安装 Mongodb
- 准备好Mongodb的安装包,解压至/usr/local/下并改名为mongodb
wget -P /root/ https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.27.tgz
cd /usr/local
tar -xzvf /root/mongodb-linux-x86_64-rhel70-4.0.27.tgz -C ./
mv mongodb-linux-x86_64-rhel70-4.0.27 mongodb
- 为mongodb创建数据文件夹(data), 并细分为数据库文件夹(data/db)和日志文件夹(data/log)
cd /usr/local/mongodb
mkdir data data/db data/log
# 设置读写权限
chmod 666 data/db data/log
- 在/usr/local/mongodb下新建mongodb.conf文件并写入如下基本配置内容
# 数据库数据存放目录
dbpath=/usr/local/mongodb/data/db
# 日志文件存放目录
logpath=/usr/local/mongodb/data/log/mongodb.log
# 日志追加方式
logappend=true
# 端口
port=27017
# 是否认证
auth=true
# 以守护进程方式在后台运行
fork=true
# 远程连接要指定ip,否则无法连接;0.0.0.0代表不限制ip访问
bind_ip=0.0.0.0
- 为mongodb设置环境变量: vim ~/.bash_profile, 追加如下内容
# mongodb
export PATH=$PATH:/usr/local/mongodb/bin
tips: 保存并退出后刷新环境变量
source ~/.bash_profile
- 启动mongo服务并测试连接
# 查看mongod和mongo命令的位置
which mongod
which mongo
# 启动mongo服务
mongod --config /usr/local/mongodb/mongodb.conf
# 测试连接
mongo
- 对外开放访问端口
# 开放端口
firewall-cmd --zone=public --add-port=27017/tcp --permanent
# 重新加载配置
firewall-cmd --reload
# 查看已对外开放的端口
firewall-cmd --zone=public --list-ports
- 查看mongo服务状态
# 查看进程状态
ps aux | grep mongo
# 查看端口启动状态
netstat -lanp | grep 27017
- 先停止mongo服务,再进行系统级mongo服务配置(如:开机自启等)
# 停止服务方式 1
kill -9 pid
# 停止服务方式 2
mongod -f /usr/local/mongodb/mongodb.conf --shutdown
- 配置mongo服务开机自启: vim /lib/systemd/system/mongodb.service, 写入如下内容
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf -- shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target
tips1: 保存并退出后执行如下命令(需先完成上述第8步,停止mongo服务后,才能执行如下命令),使mongo系统级配置生效
# 启动mongo服务
systemctl start mongodb.service
# 检查服务状态
systemctl status mongodb.service
# 允许开机自启
systemctl enable mongodb.service
# 以后如果修改mongodb.service文件,则需要重新加载配置
systemctl daemon-reload
tips2: 以后启动重启和停止mongodb服务可以通过下述系统级命令
systemctl start mongodb.service
systemctl restart mongodb.service
systemctl stop mongodb.service
- 为mongodb创建管理员认证账号
# 登录mongodb数据库
mongo
# 使用admin
> use admin
switched to db admin
# 创建管理员角色
> db.createUser({user:"admin",pwd:"111111",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
tips: 当用命令连接上mongodb时,需要使用如下命令认证,否则无法执行命令,每一个用户都需要在创建这个用户的认证库下进行认证
db.auth('username', 'password')
- 为单个数据库创建用户和密码
# 先使用有创建用户权限的用户登录
> use admin
switched to db admin
> db.auth("admin","111111")
1
# 新用户的认证库
> use new_database_name
switched to db new_database_name
# 创建wangxun用户,密码111111,对new_database_name数据库有读写权限
> db.createUser({user:'wangxun',pwd:'111111',roles:[{role:'readWrite',db:'new_database_name'}]})
tips: 当使用mongodb.js在express框架中远程连接上述mongodb数据库时,serverUrl应为
const serverUrl = 'mongodb://wangxun:111111@192.168.10.6:27017/new_database_name';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)