发布于 

Nginx+Mysql+PM2+NODE+GIT+HTTPS开发日记

MySql安装

下载 mysql 源安装包

下载到本地

$ curl -LO http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

安装 mysql 源

本地安装源

$ sudo yum localinstall mysql57-community-release-el7-11.noarch.rpm

检查 yum 源是否安装成功

$ sudo yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community           MySQL Connectors Community              21
mysql-tools-community                MySQL Tools Community                   38
mysql57-community                    MySQL 5.7 Community Server             130

开始安装

$ sudo yum install mysql-community-server

启动

  • 安装服务
    $ sudo systemctl enable mysqld
  • 启动服务
    $ sudo systemctl start mysqld
  • 查看服务状态
    $ sudo systemctl status mysqld

修改 root 默认密码

MySQL 5.7 启动后,在 /var/log/mysqld.log 文件中给 root 生成了一个默认密码。通过下面的方式找到 root 默认密码,然后登录 mysql 进行修改:

$ grep 'temporary password' /var/log/mysqld.log
[Note] A temporary password is generated for root@localhost: **********

登录 MySQL 并修改密码

$ mysql -u root -p
Enter password: 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

添加远程登录用户

MySQL 默认只允许 root 帐户在本地登录,如果要在其它机器上连接 MySQL,必须修改 root 允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,本例添加一个新的帐户:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'secret' WITH GRANT OPTION;

配置默认编码为 utf8

MySQL 默认为 latin1, 一般修改为 UTF-8

$ vi /etc/my.cnf
[mysqld]

// 在myslqd下添加如下键值对

character_set_server=utf8
init_connect='SET NAMES utf8'

重启 MySQL 服务,使配置生效

$ sudo systemctl restart mysqld

开启端口

还要检查一下防火墙, 检查一下腾讯云的安全组

$ sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
$ sudo firewall-cmd --reload

安装 Nginx

使用 yum 命令来安装 Nginx

sudo yum install -y nginx

安装完成的 Nginx 并不会立刻启动,需要我们手动执行命令来开启它:

sudo systemctl start nginx.service

还可以输入以下命令,让 Nginx 可以随系统自动启动:

sudo systemctl enable nginx

相关补充

# 开启 Nginx
service nginx start
# 停止 Nginx
service nginx stop
# 重启 Nginx
service nginx restart
# 查看 Nginx 状态
service nginx status

Nginx 的默认站点根目录为

/usr/share/nginx/html/

默认站点配置在

/etc/nginx/conf.d/default.conf

Nginx 主配置如下

/etc/nginx/nginx.conf

防火墙指令

systemctl start firewalld.service  #启动firewall
systemctl stop firewalld.service  #停止firewall
systemctl disable firewalld.service  #禁止firewall开机启动,enable
firewall-cmd --state  #防火墙状态

firewall-cmd --permanent --zone=public --add-port=80/tcp  #http协议基于TCP传输协议,放行80端口
firewall-cmd --list-all  #查看防火墙规则
firewall-cmd --query-service nginx #查看服务启动的状态

firewall-cmd --add-service=ftp --permanent  #永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent  #永久关闭ftp服务
firewall-cmd --get-service  #查看服务名称   

ssh免登陆

生成密钥对

ssh-keygen -t rsa

将公钥拷贝到目标主机

用ssh登录到目标主机,然后cd /.ssh目录,如果目录不存在,那么要自己创建mkdir -p ~/.ssh。你今后要用哪个帐户登录主机,就在哪个帐户的home目录下操作,如果要免登陆root,就要去/root下操作。使用比较好,不用多想了。

有了.ssh目录后,进去,然后把id_rsa.pub传过去,可以用scp命令,这里要做的一个主要操作,就是将id_rsa.pub,的文件内容,写到一个叫authorized_keys的文件中去,如果目标主机的相应用户名下已经有了.ssh目录和authorized_keys文件,那你操作要小心一点,可能别人也做过免登陆的设置,这个时候你要小心不要把别人的设置给覆盖了。如果没有的话,就创建文件touch ~/.ssh/authorized_keys,然后执行cat id_rsa.pub >> authorized_keys,将你的公钥写入到authorized_keys中,公钥文件.pub里面只有一行信息,上面的命令相当于把那一行信息追加到authorized_keys文件最后一行。

如果.ssh目录是你主机刚刚创建的,那么可能还需要改变一下这个目录的权限,将权限放低,chmod -R 0600 ~/.ssh,到此,所有设置就算做完了,你可以退出登录,在自己的主机上试一下了,现在再敲入ssh命令后,不用密码就可以登录主机了。

pm2部署node应用到服务器

三个概念

  • Git服务器:用来保存你代码的仓库,比如:Github。也可以是你自己搭建的Git服务器。为了统一,后面全部都叫Github。
  • 目标服务器:就是你要将你的项目部署到的那个服务器,以下统一都叫服务器(Server)。
  • 本地环境:就是你开发用的PC,就叫它Local吧。

服务器端(Server)

服务端和本地需要安装node.js、pm2、git

# 更新 yum
$ yum update -y

# 1. 安装node.js
$ yum install nodejs -y

# 2. 安装git
$ yum install git -y

# 3. 安装pm2
$ npm install -g pm2

在Github上添加Deploy Keys

在服务器(Server)上执行:

# 生成ssh key,一路回车即可
$ ssh-keygen -t rsa

# 查看公钥内容
$ cat ~/.ssh/id_rsa.pub
# 然后复制整个内容,并添加到Github上对应的项目仓库Settings下的Deploy keys中。

pm2部署

在项目的根目录下,执行:

$ pm2 ecosystem

接下来就看官方文档更好

http://pm2.keymetrics.io/docs/usage/deployment/


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 @shyiuanchen 创建,使用 Stellar 作为主题。