版權聲明:本文由吳逸翔 原創文章,轉載請註明出處:
文章原文連接:https://www.qcloud.com/community/article/848754001487150669php
來源:騰雲閣 https://www.qcloud.com/communitynode
需求: 以前使用
PHP+Mysql
作開發,近年來NodeJS
有點火,且不須要Apache
、Nginx
、Tomcat
作容器,想在不影響以前PHP
開發環境下,也能體驗NodeJS+Mysql
玩法。國內搜索了不少也沒有發現有關LNMP+Nodejs
的具體部署教程,因而踩了不少坑,終於配出了NodeJS+LNMP+PHPMyAdminmysql
由於NodeJS異步、非阻塞的特性,因此多核CPU對NodeJS算比較浪費吧,因此主要提升內存的大小,因此選了騰訊雲1核、2G 內存的服務器。nginx
這個比較重要,鏡像要是選得好,配置起來各類高效率。這裏我推薦的系統是CentOS 7+ (主要是由於CentOS 6使用的是Python 2.6,yum各類坑,想升級成Python 2.7坑還多)。c++
鏡像選擇 PHP運行環境(CentOS7.1 64位 Nginx | PHP多版本),騰訊雲裏的服務提供商上海微柳這家提供的oneinstack
太強大了,工具和文檔都很詳細,而且和其它的鏡像不同的是,ssh
鏈接時,會有暗紅高亮,至關好用。而後直接買、買、買就好了(較其它主機提供商,騰訊雲的學生機至關給力)。git
而後就配好了,訪問服務器80端口,下載鏡像的文檔(超級方便的各類腳本):github
注意:有些服務器須要在騰訊雲的控制檯上設置安全組,否則22端口將沒法開放,就會致使纔買的服務器經過
ssh
連不上。sql
首先開啓FTP,方便傳文件:mongodb
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進程號
。