Liunx下部署前端运行环境:Nginx的部署上线

3,133

一、GCC G++开发类库

开始前,请确认gcc g++开发类库是否装好,默认已经安装 ububtu平台编译环境可以使用以下指令

apt-get install build-essential
apt-get install libtool

centos平台编译环境使用如下指令 安装make:

yum -y install gcc automake autoconf libtool make

安装g++:

yum install gcc gcc-c++

二、安装PCRE库

PCRE(Perl Compatible Regular Expressions)是一个轻量级的Perl函数库,包括 perl 兼容的正则表达式库。它比Boost之类的正则表达式库小得多。PCRE十分易用,同时功能也很强大,性能超过了POSIX正则表达式库和一些经典的正则表达式库。

  1. PCRE目前最新版本为8.43,可以在sourceforge.net/projects/pc… 这里进行下载。 没有安装wget,需要首先安装wget:
yum -y install wget
wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz
  1. 使用tar -zxvf pcre-8.43.tar.gz进行解压。
  2. 运行chmod -R 777 pcre-8.43对当前文件夹授予全部读写权限。
  3. 切换到/pcre-8.43目录下,运行./configure进行pcre初始化配置,会在控制台打印出一大堆的输出信息。
  4. 执行make操作,进行编译。
[root@server06 pcre-8.43]# make
rm -f pcre_chartables.c
ln -s ./pcre_chartables.c.dist pcre_chartables.c
make all-am
make[1]: Entering directory /opt/nginx/pcre-8.43
  CC      libpcre_la-pcre_byte_order.lo
  CC      libpcre_la-pcre_compile.lo
  CC      libpcre_la-pcre_config.lo
  CC      libpcre_la-pcre_dfa_exec.lo
  CC      libpcre_la-pcre_exec.lo
  CC      libpcre_la-pcre_fullinfo.lo
  CC      libpcre_la-pcre_get.lo
  CC      libpcre_la-pcre_globals.lo
  CC      libpcre_la-pcre_jit_compile.lo
  CC      libpcre_la-pcre_maketables.lo
  CC      libpcre_la-pcre_newline.lo
  CC      libpcre_la-pcre_ord2utf8.lo
  CC      libpcre_la-pcre_refcount.lo
  CC      libpcre_la-pcre_string_utils.lo
  CC      libpcre_la-pcre_study.lo
  CC      libpcre_la-pcre_tables.lo
  CC      libpcre_la-pcre_ucd.lo
  CC      libpcre_la-pcre_valid_utf8.lo
  CC      libpcre_la-pcre_version.lo
  CC      libpcre_la-pcre_xclass.lo
  CC      libpcre_la-pcre_chartables.lo
  CCLD    libpcre.la
  CC      libpcreposix_la-pcreposix.lo
  CCLD    libpcreposix.la
  CXX      libpcrecpp_la-pcrecpp.lo
  CXX      libpcrecpp_la-pcre_scanner.lo
  CXX      libpcrecpp_la-pcre_stringpiece.lo
  CXXLD    libpcrecpp.la
  CC      pcretest-pcretest.o
  CC      pcretest-pcre_printint.o
  CCLD    pcretest
  CC      pcregrep-pcregrep.o
  CCLD    pcregrep
  CXX      pcrecpp_unittest-pcrecpp_unittest.o
  CXXLD    pcrecpp_unittest
  CXX      pcre_scanner_unittest-pcre_scanner_unittest.o
  CXXLD    pcre_scanner_unittest
  CXX      pcre_stringpiece_unittest-pcre_stringpiece_unittest.o
  CXXLD    pcre_stringpiece_unittest
make[1]: Leaving directory /opt/nginx/pcre-8.43
  1. 运行 [root@server06 pcre-8.43]# make install,进行安装,至此PCRE安装完成。 
[root@server06 pcre-8.43]# make install

三、安装zlib库

zlib.net/zlib-1.2.11… 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:(本文参照下载文件版本:zlib-1.2.8.tar.gz 经过验证未发现这个版本,若想下载最新版本请打开上面网址。本文选择zlib-1.2.11.tar.gz )

cd /usr/local/src
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install

四、安装openssl(某些vps默认没装ssl)

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.0.2t.tar.gz
tar -zxvf openssl-1.0.2t.tar.gz
cd openssl-1.0.2t
mkdir /usr/local/openssl
./config --prefix=/usr/local/openssl
make
make install

五、安装nginx

Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:

进入/usr/local的目录

wget http://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
./configure
make install

注:这里可能会出现报错

image.png ubuntu下:

apt-get install openssl
apt-get install libssl-dev

centos下:

yum -y install openssl openssl-devel

六、Nginx常用命令

(一)、启动

启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如:

[root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

(二)、停止

 nginx的停止有三种方式:

从容停止

1、查看进程号
[root@LinuxServer ~]# ps -ef|grep nginx

image.png

2、杀死进程
[root@LinuxServer ~]# kill -QUIT 2072

image.png 快速停止

1、查看进程号
[root@LinuxServer ~]# ps -ef|grep nginx

image.png

2、杀死进程
[root@LinuxServer ~]# kill -TERM 2132
或 [root@LinuxServer ~]# kill -INT 2132

image.png

image.png

强制停止

[root@LinuxServer ~]# pkill -9 nginx

(三)、重启

1、验证nginx配置文件是否正确

方法一:进入nginx安装目录sbin下,输入命令./nginx -t 看到如下显示:

nginx.conf syntax is ok
nginx.conf test is successful

说明配置文件正确!

image.png

方法二:在启动命令-c前加-t

image.png

2、重启Nginx服务

方法一:进入nginx可执行目录sbin下,输入命令./nginx -s reload 即可

image.png

方法二:查找当前nginx进程号,然后输入命令:kill -HUP 进程号 实现重启nginx服务

image.png

七、环境变量的配置

1:进入 vim /etc/profile 文件 image.png 2:添加配置 如下  创建添加一个 PATH(PATH 和windows上配置环境变量差不多) export 就是导入、启用的作用。

image.png

3:配置.bashrc文件,如下 这个时候,你只需要执行下面操作即可:

vim ~/.bashrc

然后最后一行添加

source /etc/profile

然后我们再来看看效果  ./nginx -s reload 发现没有出错

image.png

然后我就再次启动了 nginx  表示也成功了。

image.png

八、配置文件

nginx.conf配置文件:

worker_processes  auto;
events {
    worker_connections 102400;
    accept_mutex on;
    multi_accept on;
    use epoll;
}
http {
    log_format main '$remote_addr - $remote_user [$time_local] $request'
      '$status $body_bytes_sent $http_referer' 
      '$http_user_agent $http_x_forwarded_for';
    include  mime.types;
    keepalive_timeout  65;
	limit_req_zone $binary_remote_addr zone=one:200m rate=2000r/s;
    gzip on;
   #gzip_static on;
    gzip_min_length 1k;
    gzip_buffers  4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    gzip_types  text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
	gzip_proxied expired no-cache no-store private auth;
    server_tokens off;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log debug;
    client_header_timeout 10;
    client_body_timeout 10;
	client_max_body_size 200m;
    reset_timedout_connection on;
    send_timeout 10;
    limit_conn_zone $binary_remote_addr zone=addr:5m;
    limit_conn addr 100;
    default_type text/html;
    charset UTF-8;
    open_file_cache max=100000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;
    include vhosts/*.conf;
}

vhosts下的配置:

server {
    listen 80;
    server_name 127.0.0.1;
    location / 
    {
        root   /home/www/jdz;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
		proxy_set_header X-Real-IP $remote_addr;
		limit_req zone=one burst=5000 nodelay;
    }
    location /api/ 
    {
        proxy_pass http://192.168.0.85:8301/;
        proxy_redirect default;
		proxy_set_header X-Real-IP $remote_addr;
		limit_req zone=one burst=5000 nodelay;
	}
}

https配置:

server {
    listen 443 ssl;
    server_name sincerity-group.greatedu.net.cn;
    ssl_certificate /etc/ssl/4437701_sincerity-group.greatedu.net.cn.pem;
    ssl_certificate_key /etc/ssl/4437701_sincerity-group.greatedu.net.cn.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_timeout 10m;
    ssl_session_cache shared:SSL:10m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
        root   /home/www/pc_trustcms;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
		proxy_set_header X-Real-IP $remote_addr;
		limit_req zone=one burst=5000 nodelay;
    }

    location /api/
    {
        proxy_pass http://127.0.0.1:8888/;
        proxy_redirect default;
		proxy_set_header X-Real-IP $remote_addr;
		limit_req zone=one burst=5000 nodelay;
    }
}

server {
    listen          80;
    server_name     www.js7e.com;
    rewrite ^(.*)$  https://$host$1 permanent;
}

九、项目打包

git clone http://192.168.0.205:8880/baosheng/jdzsoftware.git
npm install
npm start(为了确认项目是否能够正常运行)
npm run build:pro
npm run upload:pro

十、设置nginx开机自启动

第一步:进入到/lib/systemd/system/目录

[root@iz2z init.d]# cd /lib/systemd/system/

第二步:创建nginx.service文件,并编辑

# vim nginx.service

内如如下:

[Unit]
Description=nginx service
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

Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking是后台运行的形式 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

保存退出。

第三步:加入开机自启动

systemctl enable nginx

如果不想开机自启动了,可以使用下面的命令取消开机自启动

# systemctl disable nginx

第四步:服务的启动/停止/刷新配置文件/查看状态

# systemctl start nginx.service          启动nginx服务

# systemctl stop nginx.service           停止服务

# systemctl restart nginx.service        重新启动服务

# systemctl list-units --type=service     查看所有已启动的服务

# systemctl status nginx.service          查看服务当前状态

# systemctl enable nginx.service          设置开机自启动

# systemctl disable nginx.service         停止开机自启动

十一、常见问题

1、出现nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)?

可能是端口号被占用,切换到/usr/local/nginx/conf/目录下,更改nginx.conf下的端口号。也有可能是不小心nginx重启了多次,关闭nginx进程,重启即可。

关闭Nginx 使用 ps -ef|grep nginx 查看nginx的进程,可以看到nginx有两个进程:

[root@linuxidc sbin]# ps -ef|grep nginx 
root      7276    1  0 14:21 ?        00:00:00 nginx: master process ./nginx
www      7277  7276  0 14:21 ?        00:00:00 nginx: worker process
root      7279  5197  0 14:21 pts/1    00:00:00 grep nginx

快速停止nginx kill - QUIT nginx 主进程号

停止nginx所有进程

[root@linuxidc sbin]# pkill -9 nginx

2、运行./configure进行初始化配置出错

运行./configure进行初始化配置。如出现下面的提示,说明该机器没有安装PCRE,而Nginx需要依赖PCRE,需要手动安装PCRE

image.png

在安装完PCRE后,再次运行./configure进行初始化即可。注意这里生成的配置文件,尤其箭头所指的方向,是启动nginx时的路径

image.png

3、杀死进程后重启,出现ginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid" 这个错误

使用/usr/local/nginx/sbin/nginx -s reload 重新读取配置文件出错:

[root@localhost nginx]/usr/local/nginx/sbin/nginx -s reload

提示:

nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
[root@localhost nginx]# cd logs
[root@localhost logs]# ls
access.log  error.log  nginx-access.log  nginx_error.log

果然没有/usr/local/nginx/logs/nginx.pid 文件

解决方法:

[root@localhost nginx]/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

十二、离线安装GCC与GCC-C++

包下载地址:已测试可用

链接: pan.baidu.com/s/1j5-yzDbp… 密码: teta

image.png

把centos上传到linux服务器,进入centos目录

执行

rpm -Uvh *.rpm --nodeps --force

安装成功,查看gcc版本和g++版本,会看到详细的版本信息,离线环境下安装GCC和GCC-C++就完成了。

gcc -v
g++ -v