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
接下来就看官方文档更好