Linux部署專案流程

Hwg發表於2019-05-30

記錄下自己學習經歷的一個過程,以便日後檢視。

個人github: https://github.com/hwgq2005
複製程式碼

一、準備工作

  • web開發
  • 後臺開發
  • 一臺伺服器
  • 一個域名
  • 安裝node
  • 安裝pm2
  • 安裝nginx
  • 安裝mysql

二、安裝node

從根目錄建立data目錄,cd data 進入目錄,開始執行一下操作

  • 下載包
wget https://nodejs.org/dist/v8.11.1/node-v8.11.1-linux-x64.tar.xz

複製程式碼
  • 解壓包
xz -d node-v8.11.1-linux-x64.tar.xz 
或者
tar -xzvf node-v8.11.1-linux-x64.tar.gz
複製程式碼
tar -xvf node-v8.11.1-linux-x64
複製程式碼
  • 將node、npm設為系統全域性環境
ln -s /data/node-v8.11.1-linux-x64/bin/node /usr/local/bin/node
複製程式碼
ln -s /data/node-v8.10.0-linux-x64/bin/npm /usr/local/bin/npm
複製程式碼

三、安裝pm2

PM2是node程式管理工具,可以利用它來簡化很多node應用管理的繁瑣任務,如效能監控、自動重啟、負載均衡等,而且使用非常簡單。

  • 安裝
npm install pm2 -g
複製程式碼
  • 設為系統全域性環境
ln -s /data/node-v8.11.1-linux-x64/bin/pm2 /usr/local/bin/pm2
複製程式碼

用法

  • 啟用應用: pm2 start app.js或者 pm2 start start.json
  • 停止:pm2 stop app_name|app_id
  • 刪除:pm2 delete app_name|app_id
  • 重啟:pm2 restart app_name|app_id
  • 停止所有:pm2 stop all
  • 檢視所有的程式:pm2 list
  • 檢視所有的程式狀態:pm2 status
  • 檢視某一個程式的資訊:pm2 describe app_name|app_id

四、nginx安裝和配置

安裝所需環境

  1. gcc 安裝

安裝 nginx 需要先將官網下載的原始碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝:

yum install gcc-c++
複製程式碼
  1. PCRE pcre-devel

安裝 PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 相容的正規表示式庫。nginx 的 http 模組使用 pcre 來解析正規表示式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre開發的一個二次開發庫。nginx也需要此庫。

yum install -y pcre pcre-devel
複製程式碼
  1. zlib 安裝

zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫。

yum install -y zlib zlib-devel
複製程式碼
  1. OpenSSL 安裝

OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證照封裝管理功能及 SSL 協議,並提供豐富的應用程式供測試或其它目的使用。 nginx 不僅支援 http 協議,還支援 https(即在ssl協議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。

yum install -y openssl openssl-devel
複製程式碼

安裝nginx

  • 下載包
wget https://nginx.org/download/nginx-1.16.0.tar.gz

複製程式碼
  • 解壓包
tar -xzvf node-v8.11.1-linux-x64.tar.gz
cd nginx-1.10.1
複製程式碼
  • 配置

使用預設就好了,如需複製請找相關資料檢視

./configure

複製程式碼
  • 編譯安裝
make
make install
複製程式碼
  • 啟動、停止nginx
cd /usr/local/nginx/sbin/
./nginx 
./nginx -s stop
./nginx -s quit
./nginx -s reload
複製程式碼
  • 設為系統全域性環境
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
複製程式碼

nginx配置

進入目錄/usr/local/nginx/conf/ 開啟 vim nginx.conf

http {
	
	#引入服務
    include /etc/nginx/vhost/*.conf;
    
    #開啟壓縮
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    #gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";
    
    ...
    #更多配置請檢視nginx相關文件
}
複製程式碼

include /etc/nginx/vhost/*.conf 對應是每個服務。 如:web.conf

server {
	listen       80;                        # 監聽埠
	server_name 域名1 域名2;         # 站點域名
	root  /var/www/專案1;              # 站點根目錄
	index index.html;   # 預設導航頁
	
	#這個是配合vue.js路由模式history,防止重新整理頁面404
	location / {
	  try_files $uri $uri/ /index.html;
	}
}
複製程式碼

如:api.conf

server {
    listen       80;
    server_name 域名3;
    location / {
    	#允許跨域,後臺不需要再加Access-Control-Allow-Origin
    	set $origin '*';
	    add_header Access-Control-Allow-Origin $origin;
	    add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
	    add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
		
        proxy_pass http://localhost:3000;
    }
}
複製程式碼

開機自動啟動

  1. 建立服務檔案
vim /usr/lib/systemd/system/nginx.service

Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
複製程式碼
引數 說明
Description 描述服務
After 依賴,當依賴的服務啟動之後再啟動自定義的服務
[Service] 服務執行引數的設定
Type=forking 是後臺執行的形式
ExecStart 為服務的具體執行命令(需要根據路徑適配)
ExecReload 為重啟命令(需要根據路徑適配)
ExecStop 為停止命令(需要根據路徑適配)
PrivateTmp=True 表示給服務分配獨立的臨時空間

注意:啟動、重啟、停止命令全部要求使用絕對路徑 [Install]服務安裝的相關設定,可設定為多使用者

  1. 命令
systemctl disable nginx.service 關閉開機自啟
systemctl enable nginx.service 開啟開機自啟
systemctl status nginx.service 檢視狀態
systemctl restart nginx.service 重啟服務
systemctl list-units --type=service 檢視所有服務
複製程式碼

五、安裝mysql

安裝mysql有2種方式,一種是tar.gz包、一種是通過yum安裝,我用的是yum方式安裝。

  • 安裝
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
複製程式碼
  • 許可權設定
chown mysql:mysql -R /var/lib/mysql
複製程式碼
  • 初始化 MySQL:
mysqld --initialize
複製程式碼
  • 啟動 MySQL:
systemctl start mysqld
複製程式碼
  • 檢視 MySQL 執行狀態:
systemctl status mysqld
複製程式碼

Mysql安裝成功後,預設的root使用者密碼為空,你可以使用以下命令來建立root使用者的密碼:

mysqladmin -u root password "new_password";
複製程式碼

連線到Mysql伺服器

[root@host]# mysql -u root -p
Enter password:*******
複製程式碼

遇到的問題

Linux下Mysql運算元據庫時中文亂碼

  1. 首先進入msyql,然後使用show variables like 'character%',檢視編碼情況。

  2. 開啟 etc/my.cnf 檔案,加入以下語句:

[client]
default-character-set=utf8 //新增該語句

[mysqld]
character_set_server=utf8 //新增該語句

[mysql]
default-character-set=utf8 //新增該語句
複製程式碼
  1. 使用命令 drop database 資料庫名,刪除建立的資料庫
  2. 重啟mysql的服務
systemctl start mysqld
複製程式碼

相關文章