Liunx下部署前端运行环境:Nginx的部署上线
一、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正则表达式库和一些经典的正则表达式库。
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 复制代码
使用
tar -zxvf pcre-8.43.tar.gz
进行解压。运行
chmod -R 777 pcre-8.43
对当前文件夹授予全部读写权限。切换到/pcre-8.43目录下,运行
./configure
进行pcre初始化配置,会在控制台打印出一大堆的输出信息。执行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 复制代码
运行 [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 复制代码
注:这里可能会出现报错
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 复制代码
2、杀死进程
[root@LinuxServer ~]# kill -QUIT 2072 复制代码
快速停止
1、查看进程号
[root@LinuxServer ~]# ps -ef|grep nginx 复制代码
2、杀死进程
[root@LinuxServer ~]# kill -TERM 2132 或 [root@LinuxServer ~]# kill -INT 2132 复制代码
强制停止
[root@LinuxServer ~]# pkill -9 nginx 复制代码
(三)、重启
1、验证nginx配置文件是否正确
方法一:进入nginx安装目录sbin下,输入命令./nginx -t 看到如下显示:
nginx.conf syntax is ok nginx.conf test is successful 复制代码
说明配置文件正确!
方法二:在启动命令-c前加-t
2、重启Nginx服务
方法一:进入nginx可执行目录sbin下,输入命令./nginx -s reload 即可
方法二:查找当前nginx进程号,然后输入命令:kill -HUP 进程号 实现重启nginx服务
七、环境变量的配置
1:进入 vim /etc/profile 文件 2:添加配置 如下 创建添加一个 PATH(PATH 和windows上配置环境变量差不多) export 就是导入、启用的作用。
3:配置.bashrc文件,如下 这个时候,你只需要执行下面操作即可:
vim ~/.bashrc 复制代码
然后最后一行添加
source /etc/profile 复制代码
然后我们再来看看效果 ./nginx -s reload 发现没有出错
然后我就再次启动了 nginx 表示也成功了。
八、配置文件
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
在安装完PCRE后,再次运行./configure进行初始化即可。注意这里生成的配置文件,尤其箭头所指的方向,是启动nginx时的路径
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
把centos上传到linux服务器,进入centos目录
执行
rpm -Uvh *.rpm --nodeps --force 复制代码
安装成功,查看gcc版本和g++版本,会看到详细的版本信息,离线环境下安装GCC和GCC-C++就完成了。
作者:侠名风
链接:https://juejin.cn/post/7047800362501144613