CentOS7 + nodejs + nginx + MySQL搭建服务器
最近项目要求,需要一台服务器,阿里和腾讯都不错,我选择了腾讯云,系统为CentOS 7(linux)。记录搭建服务器的过程,方便以后再次搭建是借鉴和给第一次搭建服务器的朋友借鉴之用。
安装git
执行:
sudo yum install git
安装nodejs
使用EPEL安装
EPEL(Extra Packages for Enterprise Linux)企业版Linux的额外软件包,是Fedora小组维护的一个软件仓库项目,为RHEL/CentOS提供他们默认不提供的软件包。
先安装epel-release包:
sudo yum install epel-release
安装完后,就可以使用yum命令安装nodejs了,安装的一般会是较新的版本,并且会将npm作为依赖包一起安装
sudo yum install nodejs
安装完成后,验证是否正确的安装
node -v
v6.9.4
源码安装
官网查看最新版本
下载
先进入/usr/src文件夹,这个文件夹通常用来存放软件源代码:
cd /usr/local/src/
wget https://nodejs.org/dist/v4.6.0/node-v4.6.0.tar.gz
版本自己替换
解压
tar zxvf node-v4.6.0.tar.gz
编译安装
cd node-v4.6.0/
./configure // 执行 Node.js 安装包自带的脚本,修改相关的系统配置文件
发现报错了,提示系统中没有安装C编译器,接下来先安装C编译器
安装gcc
yum install gcc
安装g++
yum install gcc-c++
安装gfortran
yum install gcc-gfortran
重新执行:
1 | cd node-v4.6.0/ |
好慢啊。。。。。。难道是我买的最低配置的原因么。。。。。。
终于跑完了😂,全程大约十几分钟,所以大家要耐心等待哦。。。。。。
1 | sudo make install // 安装文件 |
现在已经安装了Node.js, 可以开始部署应用程序, 首先要使用Node.js的模块管理器npm安装Express middleware 和forever(一个用来确保应用程序启动并且在需要时重启的非常有用的模块),其中g参数是把express安装到NodeJS的lib目录,d参数表示同时安装依赖模块包:
1 | npm install -gd express-generator forever |
建立测试项目并执行
在/home
文件夹下执行:
1 | express testapp |
上面,第一条命令是创建express框架通用项目,第三条命令是安装依赖包,第四条是执行。
执行:
1 | cat package.json |
第四条命令就相当于执行了node ./bin/www
。
这样就运行成功了。
但是当我们关闭终端之后,进程就将结束,现在刚安装的forever
就派上用场了,forever
可以让进程在终端关闭之后继续运行:
1 | forever start ./bin/www |
我们可以使用下面命令查看forever
运行的程序:
1 | forever list |
现在我们就可以在浏览器中输入:公网IP + :3000,来访问我们的程序。
如果要修改3000
端口,我们可以修改./bin/www
文件中关于监听3000端口的字段。
停止运行:
1 | forever stop 0 //0代表前面[0],这是当前进程的ID |
停止所有:
1 | forever stopall |
安装Nginx
HTTP请求是80端口,但是在Linux上非root权限是无法使用1024以下端口的,并且因为安全原因,最好不要使用root权限登录服务器,所以无法直接用node.js程序监听80端口。因此我们需要使用Nginx给node.js做反向代理,将80端口指向应用程序监听的端口(如node.js默认的3000端口)。
添加Nginx仓库
1 | yum install epel-release |
下载Nginx
1 | yum install nginx |
启用nginx服务
1 | service nginx start |
添加开机启动
1 | systemctl enable nginx |
修改Nginx配置文件
1 | vim /etc/nginx/nginx.conf //使用lnpm意见安装,Nginx 目录: /usr/local/nginx/ |
添加:
1 | server { |
测试配置文件是否能够正确运行
1 | nginx -t |
这样就是配置成功
重启nginx
1 | service nginx restart |
现在直接在浏览器中输入我们配置的域名就可以访问我们的项目了。
安装MySQL
查看可用版本
1 | yum list | grep mysql |
在centOS 7中不能使用yum -y install mysql mysql-server mysql-devel
安装,这样会默认安装mysql的分支mariadb。
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的
的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
正确的安装方法
众所周知,Linux系统自带的repo是不会自动更新每个软件的最新版本(基本都是比较靠后的稳定版),所以无法通过yum方式安装MySQL的高级版本。所以我们需要先安装带有当前可用的mysql5系列社区版资源的rpm包。
1 | rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm |
从上面的列表可以看出, mysql56-community/x86_64 和 MySQL 5.6 Community Server 可以使用。
因此,我们就可以直接用yum方式安装了MySQL5.6版本了。
1 | yum -y install mysql-community-server |
MySQL基础配置
1 | systemctl enable mysqld //添加到开机启动 |
1 | NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL |
操作MySQL
配置远程连接
1 | grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; |
检测是否开启3306端口
netstat -tunlp
看到3306端口被开启之后,我们就可以使用本地客户端远程访问数据库了
数据库备份与还原
备份
连接数据库
1 | mysql -u root -p |
查看数据库
1 | show databases; |
退出数据库进行备份
1 | mysqldump -u root -p rap_db > rap.sql |
备份完成
还原数据库
1 | mysqldump -u root -p rap_db < rap.sql |