最近有点迷恋了Linux系统的部署项目,个人在整个安装部署过程中遇到各种各样的坑,所以在这里我决定写一篇从0开始的部署文档,以供大家参考。废话不多说,咱们直接切入主题。。。
首先我们有了服务器,先把mysql数据库安装上,这里就不多说了,如果有不明白的小伙伴,请进入这里。
通常数据库安装完成之后,连接时候还会遇到一个坑,在命令行中可以正常登陆使用数据库,但是通过客户端连接时候,常常会报错,那么这个时候参考一下这篇文章,希望可以帮到你。接下来,我就来说说具体的配置以及部署过程。
1、Nginx的安装以及配置
nginx是一个开源且高性能、可靠的HTTP中间件和代理服务器
-
操作系统
CentOS>7.0,位数 X64
-
CentOS系统关闭防火墙
停止防火墙 systemctl stop firewalld.service 永久关闭防火墙 systemctl disable firewalld.service
-
确认停用selinux
- 安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
- SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。
检查状态 getenforce 检查状态 /usr/sbin/sestatus -V 临时关闭 setenforce 0 永久关闭 vi /etc/selinux/config 将SELINUX=enforcing改为SELINUX=disabled
-
安装系统以来模块
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake yum -y install wget httpd-tools vim
安装完成都看到Complete!标识都安装成功。
-
安装Nginx
下载地址
-
使用yum安装
本人安装使用的第二种方式,使用yum安装Nginx
首先进入yum.repos.d目录下创建nginx.repo文件,将官网的配置文件粘贴进去
vi /etc/yum.repos.d/nginx.repo
贴入官方配置信息
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key
安装
```
yum install nginx -y
查看安装好的Nginx信息
nginx -v
nginx -V
```
好了到这里Nginx就算安装上了,至于配置文件先放一放,等项目都拷贝上来,再进行配置。
这里简单给大家看一下nginx的默认配置信息都代表什么
/etc/nginx/nginx.conf
```
user root; 设置nginx服务的系统使用用户 例:我是用root用户 所以我配置的是root
worker_processes 1; 工作进程数,一般和CPU数量相同
error_log /var/log/nginx/error.log warn; nginx的错误日志
pid /var/run/nginx.pid; nginx服务启动时的pid
events {
worker_connections 1024;每个进程允许的最大连接数 10000
}
http {
include /etc/nginx/mime.types;//文件后缀和类型类型的对应关系
default_type application/octet-stream;//默认content-type
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; //日志记录格式
access_log /var/log/nginx/access.log main;//默认访问日志
sendfile on;//启用sendfile
#tcp_nopush on;//懒发送
keepalive_timeout 65;//超时时间是65秒
#gzip on;gzip压缩
include /etc/nginx/conf.d/*.conf;//包含的子配置文件
}
```
default.conf
```
server {
listen 80; //监听的端口号
server_name localhost; //用域名方式访问的地址
#charset koi8-r; //编码
#access_log /var/log/nginx/host.access.log main; //访问日志文件和名称
location / {
root /usr/share/nginx/html; //静态文件根目录
index index.html index.htm; //首页的索引文件
}
#error_page 404 /404.html; //指定错误页面
# redirect server error pages to the static page /50x.html
# 把后台错误重定向到静态的50x.html页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
# 代理PHP脚本到80端口上的apache服务器
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
# 把PHP脚本9000端口上监听的FastCGI服务
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
# 不允许访问.htaccess文件
#location ~ /\.ht {
# deny all;
#}
}
```
2、Node,npm,cnpm和pm2的安装
-
使用二进制方式安装Node,根据自己的操作系统位数选择相应的压缩包。
- 使用下面命令下载到Linux系统中
wget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
-
解压下载好的文件:
xz -d node-v10.16.3-linux-x64.tar.xz tar -xvf node-v10.16.3-linux-x64.tar
-
进入解压好的node文件的bin目录下,会看到三个文件node、npm和npx,在这里可以查看node版本号来确认是否成功
cd node-v10.16.3-linux-x64/bin ls ./node -v
-
接下来配置一下node和npm的软连接方式,这里因为我安装node是在/root目录下进行的,因为普通用户是没有/root下的权限,所以需要映射出来,可以提供给其他用户使用,不行你可以直接在CentOS系统中直接执行node -v是报错的。一般有两种方式添加映射连接方式,第一种是软连接,第二种就是配置环境变量。本文中就用第一种方式,有兴趣的话可以自己查查第二种方式如何配置。
我们将node和npm连接到/usr/local/bin目录下,操作如下
ln -s /node-v10.16.3-linux-x64/bin/node /usr/local/bin/node ln -s /node-v10.16.3-linux-x64/bin/npm /usr/local/bin/npm
执行完之后可以进如/usr/local/bin目录下查看是否有node和npm文件,如果有,说明成功。
现在再执行npm-v和node-v就能看到对应的版本信息了
* 接下来使用npm来安装cnpm和pm2,安装成功之后同样需要软连接配置到/usr/local/bin目录下。
```
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm install -g pm2
```
软连接cnpm和pm2
```
ln -s /node-v10.16.3-linux-x64/bin/cnpm /usr/local/bin/cnpm
ln -s /node-v10.16.3-linux-x64/bin/pm2 /usr/local/bin/pm2
```
3、部署vue项目和Node(Koa2)服务
-
vue项目打包部署
- 打包的vue项目中不能存在debugger,否则打包失败
- 注意自己的项目是否开启路由的history模式,后面配置nginx会有不同
-
Koa2服务部署
- 因为是node服务,直接把本地的项目除了node_modules文件和自己的一下不需要的文件过滤到拷贝到服务器指定的目录下面就可以,然后再服务器上运行cnpm install 或者npm install命令来安装依赖包,安装完之后,在此执行npm start测试node服务时候启动成功。
-
配置nginx配置文件,来代理vue项目和node服务
直接进入nginx的default.conf配置文件来配置就行
server { listen 52525; # 访问端口 server_name 127.0.0.1; #这里配置的IP为虚拟机的连接IP 如果是阿里云则改为公网IP #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /home/lvsq/Web; # vue项目存放的静态地址 index index.html index.htm; try_files $uri $uri/ /index.html; # vue路由开启history模式 需要这里特殊配置一下 error_page 405 =200 http://$host$request_uri; # 方式部署完成之后报405错误 } # 代理node服务 location ~ /api { proxy_pass http://127.0.0.1:2019; # node服务启动的端口 } #error_page 404 /404.html; //指定错误页面 # redirect server error pages to the static page /50x.html # 把后台错误重定向到静态的50x.html页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # 代理PHP脚本到80端口上的apache服务器 #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # 把PHP脚本9000端口上监听的FastCGI服务 #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # 不允许访问.htaccess文件 #location ~ /\.ht { # deny all; #} }
配置完之后一定记得重启nginx
启动nginx systemctl start nginx.service 停止nginx systemctl stop nginx.service 重启nginx systemctl restart nginx.service 重新加载配置 systemctl reload nginx.service
-
pm2管理node服务
进入Koa2服务目录,执行启动命令
pm2 start ./bin/www --watch
pm2常用命令
停止node服务 根据项目ID停止 pm2 stop 0
停止node服务 根据名称停止 pm2 stop www
停止node服务 根据js文件停止 pm2 stop ./bin/www
除了第一次启动需要用js文件启动 其余启动都可以根据ID启动了
设置开机自启应用
1、保存当前进程状态 pm2 save
2、生成开机自启命令 pm2 startup
3、保存 pm2 save
pm2 list查看是否成功
-
到这里一切配置结束,接下来打来浏览器看是否可以正常访问
好了,希望能给大家带来帮助,如果感觉还可以,麻烦给个赞!