需求: 之前使用 PHP+Mysql
做开发,近年来NodeJS
有点火,且不需要Apache
、Nginx
、Tomcat
做容器,想在不影响之前PHP
开发环境下,也能体验NodeJS+Mysql
玩法。国内搜索了很多也没有发现有关LNMP+Nodejs
的具体部署教程,于是踩了很多坑,终于配出了 NodeJS + LNMP + PHPMyAdmin。
因为 NodeJS 异步、非阻塞的特性,所以多核 CPU 对 NodeJS 算比较浪费吧,所以主要提高内存的大小,所以选了腾讯云1核、2G 内存的服务器。
这个比较重要,镜像要是选得好,配置起来各种高效率。这里我推荐的系统是CentOS 7+ (主要是因为CentOS 6使用的是Python 2.6,yum各种坑,想升级成Python 2.7坑还多)。
镜像选择 PHP运行环境(CentOS7.1 64位 Nginx | PHP多版本),腾讯云里的服务提供商上海微柳这家提供的oneinstack
太强大了,工具和文档都很详细,并且和其它的镜像不一样的是,ssh
连接时,会有暗红高亮,相当好用。然后直接买、买、买就行了(较其它主机提供商,腾讯云的学生机相当给力)。
然后就配好了,访问服务器80端口,下载镜像的文档(超级方便的各种脚本):
注意:有些服务器需要在腾讯云的控制台上设置安全组,不然22端口将无法开放,就会导致才买的服务器通过ssh
连不上。
首先开启FTP,方便传文件:
service pureftpd start
开启,这样就可以配置FTP了。 首先进入oneinstack
目录 -> 运行./pureftpd_vhost.sh
-> 添加一个FTP用户。
oneinstack
目录下,运行 ./reset_db_root_password.sh
,输入数据库密码。
执行:yum -y install zlib-devel curl-devel openssl-devel perl cpio expat-devel gettext-devel openssl zlib autoconf tk perl-ExtUtils-MakeMaker gcc make gcc-c++ openssl-devel wget
,主要的目的是为了当npm安装比较"娇气"的模块时不报错。
NodeJS
这里采用nvm
来安装nodejs
,是因为nvm
对nodejs
进行版本管理,这就方便多了,比如我Ghost
博客的Node
版本只能是0.10.x || 0.12.0
。而一般用的,是4.x.x
了。所以非常有必要。
git clone https://github.com/creationix/nvm.git ~/.nvm
;source ~/.nvm/nvm.sh
;~/.bashrc或 ~/.profile或 ~/.zshrc
中,这样的话,下次ssh上去时,才不会发现nvm
未安装;nvm install node版本
,参考nvm的Usage。安装完 node 后,最好更换一下npm 源,这样 npm 比较快些。
npm config set registry https://registry.npm.taobao.org
// 配置后可通过下面方式来验证是否成功
npm config get registry
// 或
npm info express
npm install -g forever
新建后,会在产生2个重要文件(以我的域名test.ycjcl.cc为例)。
虚拟主机的配置文件(到时候运行nodejs时,需要更改成反向代理): /usr/local/nginx/conf/vhost/test.ycjcl.cc.conf
项目目录(node项目,可以通过ftp传上去): /data/wwwroot/test.ycjcl.cc
这里我生成了一个express
项目,端口为3000,但是并不能访问到3000端口。
需要防火墙忽略3000端口,所以执行以下命令:
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT #允许 3000 端口
service iptables save #保存 iptables 规则
就可以ip+端口访问了:
直接vi /usr/local/nginx/conf/vhost/test.ycjcl.cc.conf
,修改配置:(中间的location都删了,直接加这个)。
location /
{
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:3000;
}
然后重启nginx ,service nginx restart
。
然后用域名访问成功!!!
需要 phpMyAdmin,直接用 ip/phpMyAdmin
,可以进行mysql的管理。
vim /etc/yum.repos.d/mongodb.repo
编辑添加以下内容:如果是64位CentOS 7系统
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
如果是32位系统
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/
gpgcheck=0
enabled=1
yum -y update
,然后安装mongodb:yum -y install mongodb-org mongodb-org-server
systemctl {start|status|stop} mongod
注意:从MongoDB“赎金事件”中,建议一定要使用db.addUser
和db.changeUserPassword
更改用户名和密码。
如果重装系统,ssh上去时,出现以下错误,用ssh-keygen -R IP地址
来解决
有时候开启node服务时,提示某个端口被占用。此时要用命令查看端口
fuser -n tcp 端口号
,或查看服务ps -ef | grep 服务名
,kill掉kill -9 pID进程号
。如果大型访问量时,优雅软重启的使用kill -HUP pID进程号
。
相关推荐
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。