從零搭建nodejs服務器,配置域名解析+https證書 (以阿里雲linux服務器爲例)

1.購買服務器跟域名html

首先購買一臺學生服務器,選擇這個套餐,挺實惠的,順便買個xin域名。懶人點擊這個連接購買購買連接1  購買連接2,默認購買linux系統centos7.4node

2.域名解析mysql

對域名進行dns解析。購買域名後,點擊進入控制檯,而後點擊進入域名和網站欄目 點擊域名解析,點擊新手引導,進行快捷解析便可。服務器的ip在控制檯,ecs服務器實例裏面查看,爲公網ip。linux

3.遠程登陸 因爲我是用window的,因此確定用到了xshell神器進行ssh遠程鏈接,由於這個東西確實好用。nginx

如何使用xshell請自行百度哦。遠程鏈接登陸後後,出現這樣一個界面證實你成功了c++

接下來就是linux命令行的基本操做了,按照配置各類文件。linux基本命令跟lrsz的按照參照這篇文章linux基礎命令跟lrsz安裝git

4.安裝nodejs的快樂時刻到了~github

[root@localhost ~]# cd /         #進入根目錄
[root@localhost /]# mkdir soft && cd soft  #用來放置安裝包
[root@localhost soft]# wget https://nodejs.org/dist/v8.9.4/node-v8.9.4.tar.gz #下載nodejs壓縮包
[root@localhost soft]# tar -zxvf node-v8.9.4.tar.gz  #解壓縮
[root@localhost soft]# cd node-v8.9.4.tar && ./configure #進行配置,使用默認配置
[root@localhost node-v8.9.4]# make && make install #進行編譯
複製代碼

安裝以後就已經自帶npm了,可是國外的鏡像太慢,咱們要換個國內的,參考這篇文章nrm的使用,npm鏡像源切換sql

漫長的等待以後,一個可使用的node環境就安裝好了,能夠經過執行node -v或者npm -v來檢測當前的node/npm安裝是否成功。若是有出現版本號,那麼就是安裝成功了。shell

若是編譯過程當中出現g++: Command not found以及C Compiler能夠升級來解決,執行下列指令

[root@localhost ~]# yum -y install gcc make gcc-c++ openssl-devel wget
複製代碼

5.安裝nginx 進行多端口文件映射啦~

[root@localhost ~]# cd /soft         #進入安裝目錄
[root@localhost soft]# wget -c https://nginx.org/download/nginx-1.11.6.tar.gz #下載nginx安裝壓縮包
[root@localhost soft]# tar -zxvf nginx-1.11.6.tar.gz
[root@localhost soft]# cd nginx-1.11.6
[root@localhost nginx-1.11.6]# yum install -y pcre pcre-devel #安裝PCRE依賴庫
[root@localhost nginx-1.11.6]# yum install -y zlib zlib-devel #安裝zlib 依賴庫
[root@localhost nginx-1.11.6]# yum install -y openssl openssl-devel #安裝OpenSSL安全套接字層密碼庫
[root@localhost nginx-1.11.6]# ./configure
複製代碼

若是報找不到openSSL,那麼能夠指定一下路徑:

[root@localhost nginx-1.11.6]# ./configure --prefix=/usr/local/nginx  --with-openssl=/usr/bin/openssl
[root@localhost nginx-1.11.6]# ./configure  #使用默認配置指令
[root@localhost nginx-1.11.6]# make && make install #從新進行編譯安裝
複製代碼

又是通過漫長的時間等待,終於安裝好了。

[root@localhost ~]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx 
[root@localhost sbin]# ./nginx -s stop
[root@localhost sbin]# ./nginx -s quit
[root@localhost sbin]# ./nginx -s reload
複製代碼

若是顯示端口占用 執行命令

netstat -anp|grep 80 
複製代碼

查看佔用端口的進程,找到這個這個進程的id,通常是aliyundun這個進程佔用了80端口 執行 kill -9 進程id,結束進程。 而後執行 ./nginx -s reload 命令重啓下nginx

若是重啓的時候出現了 nginx: [error] open() /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)錯誤 執行下面命令,使用nginx -c的參數指定nginx.conf文件的位置

[root@localhost sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
複製代碼

若是上述處理後還有端口占用報錯,nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 執行下命令ps -ef | grep nginx 看下主目錄 是哪裏 是否是裝了兩個可惡的 Nginx

執行ps aux|grep nginx 查看到nginx正在運行,OK。

最後再來設置nginx的開機自啓動

執行vi /etc/rc.local

在rc.local增長啓動代碼 /usr/local/nginx/sbin/nginx 就能夠了	

執行chmod 755 /etc/rc.local</pre>

執行命令 curl localhost 出現nginx的歡迎頁面
複製代碼

若是出現curl 訪問內網ip 能夠的話,可是用瀏覽器訪問公網ip不行,多是防火牆的配置問題

執行下面的指令

iptables -F
iptables -F -t nat
iptables -X
iptables -X -t nat
複製代碼

若是仍是瀏覽器訪問不了,那麼請接着看下去。

6.進行安全組的配置

你發現能夠ping得通你的公網ip跟內網ip,甚至也是能夠curl 內網ip的,但是你就是沒法經過瀏覽器訪問你的服務器ip,這裏有兩個坑,關於服務器的安全組對於80端口跟443端口的配置

按照這個規則配置80跟443端口的安全組(後面https會用到),而後重啓下服務器,OK,能夠經過公網ip跟域名訪問到你的主頁了。

7.https的證書配置

在阿里雲控制檯,CA證書那裏,購買私人免費證書,填寫本身的域名,,選擇系統自動生成,選擇域名解析驗證證書。購買連接 等待審覈經過以後,進行證書的下載。

下載壓縮包解壓縮後會有公鑰跟私鑰兩份文件。

而後在xshell軟件

執行

cd /usr/local/nginx/conf
mkdir cert 
cd cert
rz #回車,選擇下載解壓後的.rem跟.key文件,放置於建立的cert文件夾中
cd ..
cp nginx.conf nginx.back
vi nginx.conf  #編輯nginx的映射配置



# HTTPS server
# #server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
#
#
#}
#}
複製代碼

改成

server {
    listen 443;
    server_name localhost;
    ssl on;
    root html;
    index index.html index.htm;
    ssl_certificate   cert/214570829410835.pem;
    ssl_certificate_key  cert/214570829410835.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        root html;
        index index.html index.htm;
    }
}
複製代碼

後綴爲.rem跟.key的文件根據你放置在cert的文件名進行修改。

修改完以後保存

執行

/usr/local/nginx/sbin/nginx -s reload 
複製代碼

重啓nginx

打開瀏覽器訪問https://公網ip跟https://域名,顯示nginx首頁,OK。

ps:curlhttps://域名

SSL received a record that exceeded the maximum permissible length

最後發現是ssl on;沒加

後面若是要更改你映射的文件夾,只須要修改

location / {
    root html;
    index index.html index.htm;
}
複製代碼

root 後面帶的文件夾路徑就能夠了。這裏的html是相對路徑,根據目前的nginx.conf爲路徑基礎的相對路徑,至關於/usr/lcoal/nginx/conf/html

8.mysql服務的配置

cd /soft #進入soft目錄
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm #下載安裝須要用到的源
rpm -ivh mysql-community-release-el7-5.noarch.rpm   #安裝下載的源
yum install mysql-server #安裝mysql
service mysqld start #啓動mysql服務
複製代碼

若是遇到錯誤ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/lib/mysql/mysql.sock'。

在tmp目錄下建立一個軟連接,執行命令爲:

ln -s /tmp/mysql.sock /var/lib/mysql
複製代碼

打開my.cnf並修改配置

vi /etc/my.cnf
複製代碼

重啓數據庫

restart mysqld.service
複製代碼

使用命令修改當前用戶的密碼(默認root是沒有密碼的):

mysqladmin -u root password '密碼'
複製代碼

使用命令進入數據庫:

mysql -u root -p密碼
複製代碼

在數據庫命令行界面下執行:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
複製代碼

而後再輸入

flush privileges;
複製代碼

讓命令生效。須要注意的是每行命令的最後要加;,否則是不會執行的。 第一個是數據庫,能夠改爲容許訪問的數據庫名稱 第二個 是數據庫的表名稱,*表明容許訪問任意的表 root表明遠程登陸使用的用戶名,能夠自定義 %表明容許任意ip登陸,若是你想指定特定的IP,能夠把%替換掉就能夠了 password表明遠程登陸時使用的密碼,能夠自定義

輸入查詢命令來看看最終的結果。

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
複製代碼

到此MySQL數據庫就完成安裝了,這個時候可使用某個客戶端鏈接上數據庫看了(推薦navicat for mysql),也能夠直接進入服務器的命令行模式查看數據庫。

不過在此以前,咱們要先到阿里雲安全組裏面增長安全規則,不然仍是沒法遠程訪問的,就跟前面的http跟https訪問同樣。這裏給下配置

命令行界面遠程登陸

mysql -h 服務器ip地址 -P 3306 -u root -p密碼
複製代碼

客戶端登陸(使用navicat)在工做開發中也是使用圖形界面,方便操做

這裏是這個軟件的下載地址跟破解補丁 navicat

配置到此就結束了,若是在閱讀中遇到什麼配置的問題,歡迎評論以及留言。同時歡迎關注我,以及在下面給我評論

相關文章
相關標籤/搜索