最近有點(diǎn)迷戀了Linux系統(tǒng)的部署項(xiàng)目躬贡,個(gè)人在整個(gè)安裝部署過(guò)程中遇到各種各樣的坑谆奥,所以在這里我決定寫(xiě)一篇從0開(kāi)始的部署文檔,以供大家參考逗宜。廢話不多說(shuō)雄右,咱們直接切入主題空骚。。擂仍。
? 首先我們有了服務(wù)器囤屹,先把mysql數(shù)據(jù)庫(kù)安裝上,這里就不多說(shuō)了逢渔,如果有不明白的小伙伴肋坚,請(qǐng)進(jìn)入這里。
? 通常數(shù)據(jù)庫(kù)安裝完成之后肃廓,連接時(shí)候還會(huì)遇到一個(gè)坑智厌,在命令行中可以正常登陸使用數(shù)據(jù)庫(kù),但是通過(guò)客戶端連接時(shí)候盲赊,常常會(huì)報(bào)錯(cuò)铣鹏,那么這個(gè)時(shí)候參考一下這篇文章,希望可以幫到你哀蘑。接下來(lái)诚卸,我就來(lái)說(shuō)說(shuō)具體的配置以及部署過(guò)程。
1绘迁、Nginx的安裝以及配置
? nginx是一個(gè)開(kāi)源且高性能合溺、可靠的HTTP中間件和代理服務(wù)器
-
操作系統(tǒng)
CentOS>7.0,位數(shù) X64
-
CentOS系統(tǒng)關(guān)閉防火墻
停止防火墻 systemctl stop firewalld.service 永久關(guān)閉防火墻 systemctl disable firewalld.service
-
確認(rèn)停用selinux
- 安全增強(qiáng)型 Linux(Security-Enhanced Linux)簡(jiǎn)稱 SELinux,它是一個(gè) Linux 內(nèi)核模塊缀台,也是 Linux 的一個(gè)安全子系統(tǒng)棠赛。
- SELinux 主要作用就是最大限度地減小系統(tǒng)中服務(wù)進(jìn)程可訪問(wèn)的資源(最小權(quán)限原則)。
檢查狀態(tài) getenforce 檢查狀態(tài) /usr/sbin/sestatus -V 臨時(shí)關(guān)閉 setenforce 0 永久關(guān)閉 vi /etc/selinux/config 將SELINUX=enforcing改為SELINUX=disabled
-
安裝系統(tǒng)以來(lái)模塊
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake yum -y install wget httpd-tools vim
安裝完成都看到Complete!標(biāo)識(shí)都安裝成功膛腐。
安裝依賴.png -
安裝Nginx
下載地址
-
使用yum安裝
本人安裝使用的第二種方式睛约,使用yum安裝Nginx
首先進(jìn)入yum.repos.d目錄下創(chuàng)建nginx.repo文件,將官網(wǎng)的配置文件粘貼進(jìn)去
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就算安裝上了依疼,至于配置文件先放一放痰腮,等項(xiàng)目都拷貝上來(lái),再進(jìn)行配置律罢。
這里簡(jiǎn)單給大家看一下nginx的默認(rèn)配置信息都代表什么
/etc/nginx/nginx.conf
```
user root; 設(shè)置nginx服務(wù)的系統(tǒng)使用用戶 例:我是用root用戶 所以我配置的是root
worker_processes 1; 工作進(jìn)程數(shù),一般和CPU數(shù)量相同
error_log /var/log/nginx/error.log warn; nginx的錯(cuò)誤日志
pid /var/run/nginx.pid; nginx服務(wù)啟動(dòng)時(shí)的pid
events {
worker_connections 1024;每個(gè)進(jìn)程允許的最大連接數(shù) 10000
}
http {
include /etc/nginx/mime.types;//文件后綴和類型類型的對(duì)應(yīng)關(guān)系
default_type application/octet-stream;//默認(rèn)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;//默認(rèn)訪問(wèn)日志
sendfile on;//啟用sendfile
#tcp_nopush on;//懶發(fā)送
keepalive_timeout 65;//超時(shí)時(shí)間是65秒
#gzip on;gzip壓縮
include /etc/nginx/conf.d/*.conf;//包含的子配置文件
}
```
default.conf
```
server {
listen 80; //監(jiān)聽(tīng)的端口號(hào)
server_name localhost; //用域名方式訪問(wèn)的地址
#charset koi8-r; //編碼
#access_log /var/log/nginx/host.access.log main; //訪問(wèn)日志文件和名稱
location / {
root /usr/share/nginx/html; //靜態(tài)文件根目錄
index index.html index.htm; //首頁(yè)的索引文件
}
#error_page 404 /404.html; //指定錯(cuò)誤頁(yè)面
# redirect server error pages to the static page /50x.html
# 把后臺(tái)錯(cuò)誤重定向到靜態(tài)的50x.html頁(yè)面
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服務(wù)器
#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端口上監(jiān)聽(tīng)的FastCGI服務(wù)
#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
# 不允許訪問(wèn).htaccess文件
#location ~ /\.ht {
# deny all;
#}
}
```
2膀值、Node,npm误辑,cnpm和pm2的安裝
-
使用二進(jìn)制方式安裝Node沧踏,根據(jù)自己的操作系統(tǒng)位數(shù)選擇相應(yīng)的壓縮包。
- 使用下面命令下載到Linux系統(tǒng)中
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
-
進(jìn)入解壓好的node文件的bin目錄下巾钉,會(huì)看到三個(gè)文件node翘狱、npm和npx,在這里可以查看node版本號(hào)來(lái)確認(rèn)是否成功
cd node-v10.16.3-linux-x64/bin ls ./node -v
-
接下來(lái)配置一下node和npm的軟連接方式砰苍,這里因?yàn)槲野惭bnode是在/root目錄下進(jìn)行的潦匈,因?yàn)槠胀ㄓ脩羰菦](méi)有/root下的權(quán)限阱高,所以需要映射出來(lái),可以提供給其他用戶使用茬缩,不行你可以直接在CentOS系統(tǒng)中直接執(zhí)行node -v是報(bào)錯(cuò)的赤惊。一般有兩種方式添加映射連接方式,第一種是軟連接凰锡,第二種就是配置環(huán)境變量未舟。本文中就用第一種方式,有興趣的話可以自己查查第二種方式如何配置掂为。
我們將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
執(zhí)行完之后可以進(jìn)如/usr/local/bin目錄下查看是否有node和npm文件,如果有勇哗,說(shuō)明成功昼扛。
現(xiàn)在再執(zhí)行npm-v和node-v就能看到對(duì)應(yīng)的版本信息了
軟連接.png
* 接下來(lái)使用npm來(lái)安裝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項(xiàng)目和Node(Koa2)服務(wù)
-
vue項(xiàng)目打包部署
- 打包的vue項(xiàng)目中不能存在debugger野揪,否則打包失敗
- 注意自己的項(xiàng)目是否開(kāi)啟路由的history模式访忿,后面配置nginx會(huì)有不同
-
Koa2服務(wù)部署
- 因?yàn)槭莕ode服務(wù)瞧栗,直接把本地的項(xiàng)目除了node_modules文件和自己的一下不需要的文件過(guò)濾到拷貝到服務(wù)器指定的目錄下面就可以,然后再服務(wù)器上運(yùn)行cnpm install 或者npm install命令來(lái)安裝依賴包海铆,安裝完之后迹恐,在此執(zhí)行npm start測(cè)試node服務(wù)時(shí)候啟動(dòng)成功。
-
配置nginx配置文件卧斟,來(lái)代理vue項(xiàng)目和node服務(wù)
直接進(jìn)入nginx的default.conf配置文件來(lái)配置就行
server { listen 52525; # 訪問(wèn)端口 server_name 127.0.0.1; #這里配置的IP為虛擬機(jī)的連接IP 如果是阿里云則改為公網(wǎng)IP #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /home/lvsq/Web; # vue項(xiàng)目存放的靜態(tài)地址 index index.html index.htm; try_files $uri $uri/ /index.html; # vue路由開(kāi)啟history模式 需要這里特殊配置一下 error_page 405 =200 http://$host$request_uri; # 方式部署完成之后報(bào)405錯(cuò)誤 } # 代理node服務(wù) location ~ /api { proxy_pass http://127.0.0.1:2019; # node服務(wù)啟動(dòng)的端口 } #error_page 404 /404.html; //指定錯(cuò)誤頁(yè)面 # redirect server error pages to the static page /50x.html # 把后臺(tái)錯(cuò)誤重定向到靜態(tài)的50x.html頁(yè)面 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服務(wù)器 #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端口上監(jiān)聽(tīng)的FastCGI服務(wù) #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 # 不允許訪問(wèn).htaccess文件 #location ~ /\.ht { # deny all; #} }
配置完之后一定記得重啟nginx
啟動(dòng)nginx systemctl start nginx.service 停止nginx systemctl stop nginx.service 重啟nginx systemctl restart nginx.service 重新加載配置 systemctl reload nginx.service
-
pm2管理node服務(wù)
進(jìn)入Koa2服務(wù)目錄殴边,執(zhí)行啟動(dòng)命令
pm2 start ./bin/www --watch
pm2啟動(dòng).png
pm2常用命令
停止node服務(wù) 根據(jù)項(xiàng)目ID停止 pm2 stop 0
停止node服務(wù) 根據(jù)名稱停止 pm2 stop www
停止node服務(wù) 根據(jù)js文件停止 pm2 stop ./bin/www
除了第一次啟動(dòng)需要用js文件啟動(dòng) 其余啟動(dòng)都可以根據(jù)ID啟動(dòng)了
設(shè)置開(kāi)機(jī)自啟應(yīng)用
1、保存當(dāng)前進(jìn)程狀態(tài) pm2 save
2珍语、生成開(kāi)機(jī)自啟命令 pm2 startup
3锤岸、保存 pm2 save
pm2 list查看是否成功
-
到這里一切配置結(jié)束,接下來(lái)打來(lái)瀏覽器看是否可以正常訪問(wèn)
界面.png
?好了板乙,希望能給大家?guī)?lái)幫助是偷,如果感覺(jué)還可以,麻煩給個(gè)贊募逞!