1. 程式人生 > >服務器代碼部署篇

服務器代碼部署篇

-a store profile root 關於 安裝 reset 表示 ide

技術分享圖片

Linux下, 遠程登錄腳本配置, git 安裝配置, node 安裝, mysql 安裝配置,nginx 安裝配置,從0到1
這篇文章只講講部署吧. 寫代碼沒什麽好說的. 網上有直播寫代碼的..

服務器 aliyun

購買服務器, 服務器備案, 拿到ip, 用戶,密碼

域名

購買域名,然後去備案, 拿到備案號, 把域名解析到對應的IP 上

環境

Telnet 腳本配置(Mac & Linux)

#!/usr/bin/expect -f
set ip 8.8.8.8 #服務器IP地址
set password 123456 #登錄密碼
set timeout 10 #超時時間
set user root #登錄帳號

spawn ssh $user@$ip
expect {
    "*yes/no" { send "yes"; exp_continue}
    "*password:" { send "$password" }
}
interact

登錄提示
@@@@@@@@@@@
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
當服務器相關數據有變動的時候,ssh 無法登錄,只要清除本地的~/.ssh/known_hsots 文件相關的刪除即可

Git
$ yum -y install git  //安裝git
$ git –-version  //驗證
關於git clone 權限的問題
$ cd ~/.ssh
#如果沒有密鑰則不會有此文件夾,有則備份刪除
#生成密鑰:
$ ssh-keygen -t rsa -C "[email protected]"

# 按3個回車,密碼為空。
#最後得到了兩個文件:id_rsa和id_rsa.pub

#添加密鑰到ssh:
$ ssh-add ~/.ssh/id_rsa (需要之前輸入密碼.)

# id_rsa.pub  添加到gitlib or github

Git忽略規則和.gitignore規則不生效的解決辦法

git rm -r --cached .

關於git一些常用的命令

#保存密碼到本地
$ git config credential.helper store
#創建遠程分支
$ git checkout -b dev #新建本地分支
$ git push origin dev:dev #push到遠程分支
#刪除分支
$ git branch -D dev #刪除本地分支 
$ git push origin :dev #刪除遠程分支 ,push一個空到分支到遠程分支上
$ git push origin --delete dev #刪除遠程分支
#切換分支
$ git branch -a #查看分支列表,看不到最新分支,執行git pull
$ git checkout -b dev origin/dev #把遠程的分支搞到本地並切換
$ git checkout dev # 切換到dev
#放棄清理本地更改
$ git checkout . && git clean -xdf
#緩存區操作
$ git add <file> | git add -A  #加入到緩存區
$ git reset HEAD <file>  #緩存區退回工作區,沒有commit之前,已經git add
$ git checkout -- <file> | git checkout . #丟棄工作區修改,沒有git add
#版本退回
$ git reflog #查看commit 版本
$ git reset --soft <版本號> #切回版本,本地代碼不會變,只是改變版本號
$ git reset --hard <版本號> #切回版本,本地會改變,版本號也會變,慎用
$ git reset --soft HEAD~1  #直接切回上一個版本
$ git rm --cached <文件名> | git clean -xdf # 丟棄本地或者其他
$ git push origin <分支> --force #加上--force 覆蓋遠程分支,因為退回版本之後本地版本比線上版本低,無法提交
Node
$ wget https://npm.taobao.org/mirrors/node/v8.7.0/node-v8.7.0-linux-x64.tar.gz //下載git包

$ tar -zxvf node-v8.7.0-linux-x64.tar.gz  // 解壓

$ vi /ect/profile  //編輯配置
#最後一行加入,路徑為解壓相對路徑
export PATH=/node-v8.7.0-linux-x64/bin:$PATH  

$ source /etc/profile 應用
$ node -v //驗證
#npm 註冊淘寶鏡像
npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global
#yarn 

yarn config set registry https://registry.npm.taobao.org --global
yarn config set disturl https://npm.taobao.org/dist --global
Mysql
#1 下載mysql的repo源
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

#2 安裝mysql-community-release-el7-5.noarch.rpm包
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

#假如報錯的話, 先查詢下是不是已經安裝過了
$ rpm -qa | grep mysql
#有的話幹掉他  --nodeps 強制卸載
$ rpm -e xxx (--nodeps) 

#3 安裝這個包後,會獲得兩個mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo

#4 安裝mysql
$ sudo yum install mysql-server
$ service mysql start #啟動
#根據步驟安裝就可以了,不過安裝完成後,沒有密碼,需要重置密碼。

#查看版本
$mysqld -V 
#5 重置密碼
#重置密碼前,首先要登錄

$ mysql -u root
mysql > use mysql;
mysql > update user set password=password(‘123456‘) where user=‘root‘;
mysql > flush privileges; exit;

#6 遠程登錄

需要更改權限才能實現遠程連接MYSQL數據庫  

$ mysql -h localhost -uroot -p
mysql> use mysql;   #此DB存放MySQL的各種配置信息
mysql> select host,user from user; #查看用戶的權限情況
mysql> select host, user, password from user;
mysql> Grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘123456‘ with grant option;
#(%表示是所有的外部機器,如果指定某一臺機,就將%改為相應的機器名;‘root’則是指要使用的用戶名,‘123456‘為密碼)

mysql> flush privileges; #運行此句才生效,或者重啟MySQL

最後一步, 在服務器防火墻配置加入規則 開放3306 端口.

Nginx
$ yum -y install nginx  #安裝nginx
$ nginx -v  #查看版本 
$ sudo nginx  #開啟服務

nginx.pid 失敗問題
執行
sudo nginx -c /usr/local/etc/nginx/nginx.conf
sudo nginx -s reload #重啟
sudo nginx -t #測試配置文件

nginx 轉發node 配置
server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  chuchur.com www.chuchur.com;
    location / {
        proxy_pass http://127.0.0.1:7001;
        proxy_redirect  off;
        proxy_set_header        $Host  sync;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_send_timeout      300;
        proxy_read_timeout      300;
    }
}

nginx 如何開啟https 和http2 (傳送門)

ningx css 字體的支持,需要修改mime.types
加入以下代碼

application/octet-stream eot;
application/font-sfnt ttf;
application/font-otf otf;
application/font-woff2 woff2;
application/font-woff woff;

如果是跨域的話,還需要做跨域配置

location ~* .(eot|ttf|woff|svg|otf)$ {
  add_header Access-Control-Allow-Origin *;
}

[完]

服務器代碼部署篇