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

陳建光發表於2018-08-30

1.購買伺服器跟域名

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

首先購買一臺學生伺服器,選擇這個套餐,挺實惠的,順便買個xin域名。懶人點選這個連結購買購買連結1  購買連結2,預設購買linux系統centos7.4

2.域名解析

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

對域名進行dns解析。購買域名後,點選進入控制檯,然後點選進入域名和網站欄目 點選域名解析,點選新手引導,進行快捷解析即可。伺服器的ip在控制檯,ecs伺服器例項裡面檢視,為公網ip。

3.遠端登入 由於我是用window的,所以肯定用到了xshell神器進行ssh遠端連線,因為這個東西確實好用。

如何使用xshell請自行百度哦。遠端連線登入後後,出現這樣一個介面證明你成功了

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

接下來就是linux命令列的基本操作了,按照配置各種檔案。linux基本命令跟lrsz的按照參照這篇文章linux基礎命令跟lrsz安裝

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

[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映象源切換

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

如果編譯過程中出現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
複製程式碼

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

如果顯示埠占用 執行命令

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埠的配置

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

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

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

按照這個規則配置80跟443埠的安全組(後面https會用到),然後重啟下伺服器,OK,可以通過公網ip跟域名訪問到你的主頁了。

7.https的證書配置

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

在阿里雲控制檯,CA證書那裡,購買私人免費證書,填寫自己的域名,,選擇系統自動生成,選擇域名解析驗證證書。購買連結 等待稽核通過之後,進行證書的下載。

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

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

然後在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
複製程式碼

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

重啟資料庫

restart mysqld.service
複製程式碼

使用命令修改當前使用者的密碼(預設root是沒有密碼的):

mysqladmin -u root password '密碼'
複製程式碼

使用命令進入資料庫:

mysql -u root -p密碼
複製程式碼

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

在資料庫命令列介面下執行:

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

然後再輸入

flush privileges;
複製程式碼

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

讓命令生效。需要注意的是每行命令的最後要加;,不然是不會執行的。 第一個是資料庫,可以改成允許訪問的資料庫名稱 第二個 是資料庫的表名稱,*代表允許訪問任意的表 root代表遠端登入使用的使用者名稱,可以自定義 %代表允許任意ip登入,如果你想指定特定的IP,可以把%替換掉就可以了 password代表遠端登入時使用的密碼,可以自定義

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

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

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

到此MySQL資料庫就完成安裝了,這個時候可以使用某個客戶端連線上資料庫看了(推薦navicat for mysql),也可以直接進入伺服器的命令列模式檢視資料庫。

不過在此之前,我們要先到阿里雲安全組裡面增加安全規則,否則還是無法遠端訪問的,就跟前面的http跟https訪問一樣。這裡給下配置

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

命令列介面遠端登入

mysql -h 伺服器ip地址 -P 3306 -u root -p密碼
複製程式碼

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

客戶端登入(使用navicat)在工作開發中也是使用圖形介面,方便操作

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

這裡是這個軟體的下載地址跟破解補丁 navicat

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

相關文章