Centos 7部署Node.js、MySQL、Git、Nginx

1,100 阅读5分钟
原文链接: sine.ink

node.js

导航

  1. 安装可视化桌面
  2. 安装 Node.js
  3. 安装 MySQL 数据库
  4. 部署 Git 服务
  5. 部署 Nginx 服务器

1. 安装可视化桌面

阿里云的Linux Centos7系统镜像是默认没有桌面环境的,像我这样的俗人还是喜欢看得见的东西,所以必须装一个桌面系统。当然,熟悉Linux命令行的同学自然可以不用理会。

首先,安装MATE Desktop

yum groups install "MATE Desktop"

再安装X Window System

yum groups install "X Window System"

设置系统默认启动桌面

systemctl set-default graphical.target

然后重启系统

reboot

重启之后,就能看到桌面化的操作系统了,MATE Desktop默认安装了firefox浏览器和pluma编辑器,有了这两样利器,已经可以很方便的做很多事了。

mate-desktop

如果你想卸载这个桌面系统,执行以下命令就可以了。

yum groupremove 'MATE Desktop' -y

yum groupremove 'X Window System' -y

2. 安装 Node.js

既然是部署Node.js服务器,那么Node.js和npm是必不可少的。

首先,到node.js的官网nodejs.org/en/download…获取最新稳定版的下载链接,注意是Linux版,也就是以 .tar.xz 结尾的文件,比如nodejs.org/dist/v8.9.0…

然后在终端执行下载

wget https://nodejs.org/dist/v8.9.0/node-v8.9.0-linux-x64.tar.xz

如果在默认的/root目录下执行的命令,那么文件就会保存在/root目录

第二步,解压

tar xvf node-v8.9.0-linux-x64.tar.xz

然后,创建node和npm命令符号连接

ln -s /root/node-v8.9.0-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v8.9.0-linux-x64/bin/npm /usr/local/bin/npm

node.js 默认附带 npm 的,因此安装了node也就安装了npm,在命令行输入 node -vnpm -v 如果正确显示版本号,那么说明安装成功了。

安装 cnpm

国内用户访问npm比较慢,因此一般推荐使用cnpm,安装cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

在命令行输入 cnpm 如果出现使用说明,则说明安装成功,如果出现cnpm can not found,则有可能是环境变量没有添加成功,执行以下一行添加node.js脚本命令到系统环境变量中:

PATH="/root/node-v8.9.0-linux-x64/bin:$PATH"

/root/node-v8.9.0-linux-x64/bin 就是脚本命令所在目录


3. 安装 MySQL 数据库

MySQL 是最常见的关系型数据库了,node与mysql也能完美配合使用。

一个 MySQL 数据库服务需要同时安装有 mysql,mysql-devel和mysql-server。

一般来说前两者比较容易安装,在终端执行以下命令:

yum install mysql

yum install mysql-devel

而如果通过同样的方法安装 mysql-server 的话

yum install mysql-server

就会提示没有可用的包,因此需要换一种方式安装mysql-server

首先下载 mysql-server 的社区发行版安装包

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

然后执行安装

rpm -ivh mysql-community-release-el7-5.noarch.rpm

yum install mysql-community-server

安装完成以后,就可以启动mysql服务了

service mysqld restart

启动后,登陆mysql,刚创建好的mysql没有密码,因此输入用户名root登录即可

mysql -u root

由于mysql默认编码是latin,这导致插入中文字符时会出现错误,因此需要修改默认编码以支持中文。

首先,打开这个文件:/etc/my.cnf

在最后一行加上编码配置

[mysql]
default-character-set =utf8

这样,就可以实现对中文的支持了。
不过为了以防万一,建议在每次创建新的数据库的时候,最好还是设置一下utf8字符编码,比如创建一个名为 db1 的数据库:

mysql> create database db1 CHARACTER SET utf8;

最后,安装 Node.js 与 MySQL 的桥梁:

cnpm install -g mysql

这样,你就可以在Node项目中愉快地使用mysql了。


4. 部署 Git 服务

作为最流行的版本控制系统,Git应该属于程序员必备技能吧,尤其在多人合作的项目中,Git更是必不可少。如果不知道git是什么,建议先看看廖雪峰老师的git教程,本文只介绍centos下git的安装与使用。

首先安装git

yum install -y git

然后新建一个名为git的用户

adduser git

接着,在根目录下创建名为git的目录,然后进入git目录,命令如下

cd /
mkdir git
cd git

然后初始化git服务,learngit 可以换成其他名字

git init --bare learngit.git 
chown git:git learngit.git  
sudo chown -R git:git learngit.git

到这里,服务器上的git服务就部署完了,接下来就把客户端的ssh公钥添加到git服务器中,具体操作如下:

在客户端(或服务器主机或另一台个人电脑都行),用户主目录下看看有没有 .ssh 目录和目录内有没有id_rsaid_rsa.pub这两个文件, 如果有可以直接跳到下一步,如果没有则要创建 SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

然后去 git 服务器添加客户端的公钥:

在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,如果本来就已经打开的,那么就无需理会,即:

1.RSAAuthentication yes
2.PubkeyAuthentication yes     
3.AuthorizedKeysFile  .ssh/authorized_keys

这里我们可以看到公钥存放在.ssh/authorized_keys文件中。所以我们在/home/git下创建.ssh目录,然后创建authorized_keys文件,并将刚才在客户端生成的公钥复制粘贴进去。

接着,回到客户端,进入项目所在目录,然后克隆服务器上的仓库,把120.78.188.182换成你的服务器地址,/git/learngit.git就是服务器上的git仓库路径。

git clone git@120.78.188.182:/git/learngit.git

到这里,客户端和服务端的git就连接上了,你可以在客户端新建一个文件测试一下:

touch a.txt
git add a.txt
git commit -m 'remark'
git push origin master

如果出现类似 8c0778d..1bcc4f9 master -> master的提示则说明成功了


5. 部署 Nginx 服务器

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。虽然node.js本身也可以提供服务器的功能,但是从性能以及灵活性来说,node.js在端口转发,正、反向代理,负载均衡等方面不如更为强劲的Nginx,因此常见的做法是 Nginx 用作 Web 服务器,而node用作应用服务器。

首先,添加添加Nginx到YUM源:

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

然后安装Nginx

sudo yum install -y nginx

刚安装的Nginx不会自行启动,需要启动命令运行Nginx:

sudo systemctl start nginx.service

如果一切进展顺利的话,现在你可以通过你的域名或IP来访问你的Web页面来预览一下Nginx的默认页面。
设置开机启动Nginx:

sudo systemctl enable nginx.service

以下是 Nginx 配置文件目录:

网站文件存放默认目录
/usr/share/nginx/html

网站默认站点配置
/etc/nginx/conf.d/default.conf

自定义Nginx站点配置文件存放目录
/etc/nginx/conf.d/

Nginx全局配置
/etc/nginx/nginx.conf

以下是 Nginx 常用命令:

通过配置文件启动
nginx -c nginx.conf

退出
nginx -s quit

停止
nginx -s stop

重启(因为改变了配置,需要重启)
nginx -s reload

端口转发

如果你想实现相同主域名下的不同子域名对应同一主机的不同端口的话,你需要使用nginx的端口转发。

上面那句话有点绕,举个例子,我的主机的4000端口部署了hexo博客,8000端口部署了一个影评项目后台管理,如果没有端口转发,那么其他人需要通过http://sine.ink:4000进入我的博客,通过http://sine.ink:8000进入影评后台,而通过端口转发,其他人就可以通过http://sine.ink进入我的博客,通过http://dbb-admin.sine.ink进入影评后台,这样就去掉了丑陋的端口号了。

通过nginx可以很轻松的实现这一点,打开/etc/nginx/nginx.conf,添加server配置,如下:

server {
listen       80;
server_name  sine.ink;
        location /
        {
            proxy_pass http://localhost:4000/;
        }
 }

server {
listen       80;
server_name  dbb-admin.sine.ink;
        location /
        {
            proxy_pass http://localhost:8000/;
        }
 }


至此,我的第一篇技术博客写完了。写这篇文章的目的很简单,因为自己走过不少弯路,所以希望其他的新手少走弯路。如果文章中有疏漏之处,欢迎指出。如果文章对你有帮助,也欢迎你请我吃糖果。