Linux部署项目流程

260 阅读4分钟

记录下自己学习经历的一个过程,以便日后查看。

个人github: https://github.com/hwgq2005

一、准备工作

  • web开发
  • 后台开发
  • 一台服务器
  • 一个域名
  • 安装node
  • 安装pm2
  • 安装nginx
  • 安装mysql

二、安装node

从根目录创建data目录,cd data 进入目录,开始执行一下操作

  • 下载包
wget https://nodejs.org/dist/v8.11.1/node-v8.11.1-linux-x64.tar.xz

  • 解压包
xz -d node-v8.11.1-linux-x64.tar.xz 
或者
tar -xzvf node-v8.11.1-linux-x64.tar.gz
tar -xvf node-v8.11.1-linux-x64
  • 将node、npm设为系统全局环境
ln -s /data/node-v8.11.1-linux-x64/bin/node /usr/local/bin/node
ln -s /data/node-v8.10.0-linux-x64/bin/npm /usr/local/bin/npm

三、安装pm2

PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

  • 安装
npm install pm2 -g
  • 设为系统全局环境
ln -s /data/node-v8.11.1-linux-x64/bin/pm2 /usr/local/bin/pm2

用法

  • 启用应用: pm2 start app.js或者 pm2 start start.json
  • 停止:pm2 stop app_name|app_id
  • 删除:pm2 delete app_name|app_id
  • 重启:pm2 restart app_name|app_id
  • 停止所有:pm2 stop all
  • 查看所有的进程:pm2 list
  • 查看所有的进程状态:pm2 status
  • 查看某一个进程的信息:pm2 describe app_name|app_id

四、nginx安装和配置

安装所需环境

  1. gcc 安装

安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:

yum install gcc-c++
  1. PCRE pcre-devel

安装 PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre开发的一个二次开发库。nginx也需要此库。

yum install -y pcre pcre-devel
  1. zlib 安装

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel
  1. OpenSSL 安装

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

yum install -y openssl openssl-devel

安装nginx

  • 下载包
wget https://nginx.org/download/nginx-1.16.0.tar.gz

  • 解压包
tar -xzvf node-v8.11.1-linux-x64.tar.gz
cd nginx-1.10.1
  • 配置

使用默认就好了,如需复制请找相关资料查看

./configure

  • 编译安装
make
make install
  • 启动、停止nginx
cd /usr/local/nginx/sbin/
./nginx 
./nginx -s stop
./nginx -s quit
./nginx -s reload
  • 设为系统全局环境
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx

nginx配置

进入目录/usr/local/nginx/conf/ 打开 vim nginx.conf

http {
	
	#引入服务
    include /etc/nginx/vhost/*.conf;
    
    #开启压缩
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    #gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";
    
    ...
    #更多配置请查看nginx相关文档
}

include /etc/nginx/vhost/*.conf 对应是每个服务。 如:web.conf

server {
	listen       80;                        # 监听端口
	server_name 域名1 域名2;         # 站点域名
	root  /var/www/项目1;              # 站点根目录
	index index.html;   # 默认导航页
	
	#这个是配合vue.js路由模式history,防止刷新页面404
	location / {
	  try_files $uri $uri/ /index.html;
	}
}

如:api.conf

server {
    listen       80;
    server_name 域名3;
    location / {
    	#允许跨域,后台不需要再加Access-Control-Allow-Origin
    	set $origin '*';
	    add_header Access-Control-Allow-Origin $origin;
	    add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
	    add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
		
        proxy_pass http://localhost:3000;
    }
}

开机自动启动

  1. 建立服务文件
vim /usr/lib/systemd/system/nginx.service

Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
参数 说明
Description 描述服务
After 依赖,当依赖的服务启动之后再启动自定义的服务
[Service] 服务运行参数的设置
Type=forking 是后台运行的形式
ExecStart 为服务的具体运行命令(需要根据路径适配)
ExecReload 为重启命令(需要根据路径适配)
ExecStop 为停止命令(需要根据路径适配)
PrivateTmp=True 表示给服务分配独立的临时空间

注意:启动、重启、停止命令全部要求使用绝对路径 [Install]服务安装的相关设置,可设置为多用户

  1. 命令
systemctl disable nginx.service 关闭开机自启
systemctl enable nginx.service 开启开机自启
systemctl status nginx.service 查看状态
systemctl restart nginx.service 重启服务
systemctl list-units --type=service 查看所有服务

五、安装mysql

安装mysql有2种方式,一种是tar.gz包、一种是通过yum安装,我用的是yum方式安装。

  • 安装
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
  • 权限设置
chown mysql:mysql -R /var/lib/mysql
  • 初始化 MySQL:
mysqld --initialize
  • 启动 MySQL:
systemctl start mysqld
  • 查看 MySQL 运行状态:
systemctl status mysqld

Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:

mysqladmin -u root password "new_password";

连接到Mysql服务器

[root@host]# mysql -u root -p
Enter password:*******

遇到的问题

Linux下Mysql操作数据库时中文乱码

  1. 首先进入msyql,然后使用show variables like 'character%',查看编码情况。

  2. 打开 etc/my.cnf 文件,加入以下语句:

[client]
default-character-set=utf8 //添加该语句

[mysqld]
character_set_server=utf8 //添加该语句

[mysql]
default-character-set=utf8 //添加该语句
  1. 使用命令 drop database 数据库名,删除创建的数据库
  2. 重启mysql的服务
systemctl start mysqld