【筆記7-部署發布】從0開始 獨立完成企業級Java電商網站開發(服務端)


阿里雲服務

file

file

購買

file

連接

file

file

購買域名

file

域名備案

file

域名解析

file

file

源配置步驟

資源地址

http://learning.happymmall.com/

配置阿里雲的yum源

file

1、備份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2、下載新的CentOS-Base.repo 到/etc/yum.repos.d/

CentOS 5

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3、之后運行yum makecache生成緩存

新建一個帶有sudo權限的用戶

新建一個帶有sudo權限的用戶,再連接的時候就不用root進行連接了。

執行useradd -d /usr/chen -m chen,這時候用戶添加好了,chen是我自己設置的用戶名,其中-d,-m是用來為登錄名chen產生一個主目錄,及/usr/chen這個目錄。

然后cd /usr/chen,然后重置下chen的密碼,執行passwd chen,因為當前登錄的用戶是root,所以執行的是passwd chen。

如果當前登錄的是chen這個用戶,執行passwd就可以了,不需要進入/usr/chen目錄執行重置密碼

file

賦予chen這個用戶sudo權限

Linux sudo命令以系統管理者的身份執行指令,也就是說,經由 sudo 所執行的指令就好像是 root 親自執行,使用權限:在 /etc/sudoers 中有出現的使用者。

這里可以直接修改sudoers,也可以使用sudo visudo,普通用戶使用前提是開放了sudo權限,但是不確定時候可以通過修改配置改變這種情況,需要輸入密碼,里面內容很多,我們通過查找密令查找,輸入/,然后輸入你要查找的內容

file

查找root這個單詞,輸入/root,在root 一行下面添加chen,根據你自己的用戶名填寫,然后強制保存:wq!就可以了,用戶退出exit,用chen從新連接服務器,可以直接命令行ssh chen@ip,ip換成真實的ip地址,也可以用客戶端工具,

關於sudo權限里面的詳細知識點,有想了解了可以看這篇:Linux–sudo權限講解:https://www.cnblogs.com/wazy/p/8352369.html

線上環境

file

安裝JDK

file

首先先看當前版本的Centos有沒有安裝openjdk,執行rpm -qa| grep jdk,如果安裝了直接刪除,跳轉到根目錄cd /,然后創建個目錄sudo mkdir developer,在創建sudo mkdir setup,將jdk下載到setup目錄下,這個你目錄隨你自己喜歡,執行sudo wget http://learning.happymmall.com/jdk/jdk-7u80-linux-x64.rpm

下載完之后賦予jdk 777權限,執行sudo chmod 777 jdk-7u80-linux-x64.rpm,然后執行安裝sudo rpm -ivh jdk-7u80-linux-x64.rpm,如圖所示就是安裝完成了,然后cd /usr/java/jdk1.8.0_211-amd64/,這就是jdk默認安裝路徑

file

然后配置環境變量,執行sudo vim /etc/profile,在文件的最下面配置環境變量就可以了,保存退出:wq,使配置生效source /etc/profile,JDK就安裝完畢了。

file

補充:(rpm -qa 表示列出所有被安裝的rpm package,q是查詢,a是all

rpm -q <rpm package name>

表示查詢 rpm package name 的包是否被安裝,grep jdk顯示名字中包含字符串jdk的包,|表示將輸出結果(字符串)轉向到后面的命令處理,所以完整的意思是:列出所有已經被安裝的,名字中包含jdk字符串的RPM包)

補充:(-rw-r--r--含義,第一位如果是d表示樹目錄,-是文件,2-4位表示用戶的權限,5-7位表示用戶組權限,8-10位表示其他人,r=4表示讀權限,w=2表示寫權限,x=1表示執行權限)

補充:chmod 命令是賦予哪些用戶對於此文件哪些權限(讀寫執行)

安裝Tomcat

cd /developer,官網下載tomcat,執行sudo wget http://learning.happymmall.com/tomcat/apache-tomcat-7.0.73.tar.gz

然后解壓sudo tar -zxvf apche-tomcat-8.5.40.tar.gz,配置環境變量,使配置生效source /etc/profile,然后將解壓的文件夾移動到setup,sudo mv apche-tomcat-8.5.40.tar.gz setup/

說明一下,setup/文件夾是自己放置一些安裝包,壓縮包的,你可以隨便放,然后進入tomcat,編輯sudo vim /conf/server.xml,目的是為了修改字符集,加入URIEncoding="UTF-8",保存退出:wq

file

cd bin,執行sudo ./startup.sh,tomcat 就啟動了,通過公網ip和8080就可以訪問tomcat首頁了

如果tomcat啟動成功,但是連接不上,目前想到兩種1.環境變量有沒有配置,2.阿里雲安全組沒有開放8080端口

tomcat到此就安裝完成了。

安裝Maven

同樣官網下載到/developer目錄(http://learning.happymmall.com/maven/apache-maven-3.0.5-bin.tar.gz)

下載完解壓,移動壓縮包到setup,配置環境變量(關於環境變量的配置,JDK圖片都中給出來了),使配置生效source /etc/profile,驗證mvn -version,顯示版本信息就安裝成功了,到此Maven就安裝ok了。

安裝Vsftpd

http://learning.happymmall.com/vsftpdconfig/

直接執行sudo yum -y install vsftpd,安裝完之后創建ftpuser,他沒有登錄雲服務器的權限,但是呢他有ftp的權限,cd /,創建product文件夾(線上的意思),然后里面再創建ftpfile(ftp相關的文件)

sudo mkdir product , cd product, sudo mkdir ftpfile,然后執行useradd ftpuser -d /product/ftpfile -s /sbin/nologin

修改一下ftpfile文件夾權限 sudo chown -R ftpuser.ftpuser ./ftpfile/

然后重置ftpuser的密碼,sudo passwd ftpuser

然后跳轉到cd /etc/vsftpd,編輯sudo vim chroot_list,將我們剛剛的匿名用戶添加到里面,然后修改安全策略sudo vim /etc/selinux/config ,修改成disabled ,也可以sudo setsebool -p ftp_home_dir 1

file

下面修改conf文件,你可以配置,也可以下載上面鏈接提供的下載文件支付覆蓋,我這兒直接覆蓋了,先備份一 下自己的sudo mv vsftpd.conf vsftpd.conf.bak,然后執行 sudo wget http://learning.happymmall.com/vsftpdconfig/vsftpd.conf ,上面命令是正確的,還要修改防火牆,防火牆最后一起修改。

安裝nginx

cd setup/, 因為nginx 是需要編譯的,下載到哪里都可以,不像maven,tomcat是綠色的,直接解壓就可以了

執行sudo wget http://learning.happymmall.com/nginx/linux-nginx-1.10.2.tar.gz

安裝nginx 之前需要安裝一些依賴,執行sudo yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

然后解壓nginx,sudo tar -zxvf linux-nginx-1.10.2.tar.gz

進入nginx目錄,執行sudo ./configure編譯,再執行 sudo make,然后執行sudo make install,nginx 同樣需要配置防火牆,后面一起

輸入whereis nginx 查找nginx 默認安裝目錄/usr/local/nginx,進入nginx/conf,然后編輯sudo vim nginx.conf,添加include vhost/*.conf;記得加;

file

然后再conf/文件夾下面創建sudo mkdir vhost,然后從上面提供的地址下載配置,也可以自己配置

file

然后啟動下nginx,測試連接,直接瀏覽器打開公網ip就可以了,如果沒鏈接成功,可能是阿里雲安全組策略沒有開放80端口,修改一下就可以了,到此nginx 就安裝完成了。

安裝Mysql

先查看一下又沒有安裝Mysql,sudo rpm -qa | grep mysql-server,如果沒有就安裝sudo yum -y install mysql-server,but,出問題了,不加-server成功了,也就是執行sudo yum -y install mysql

file

貌似安裝過程有些差異,參考
阿里雲CentOS7使用yum安裝mysql

然后編輯my.cnf,sudo vim /etc/my.cnf,修改mysql字符集

file

然后配置mysql的自啟動,sudo chkconfig mysqld on,執行到這兒出錯了
參考帖子:阿里雲CentOS 7.1使用yum安裝MySql5.6.24

由於上面已經安裝了MariaDB,所以應該先卸載,檢查mariadb是否已安裝,執行yum list installed | grep mariadb

file

發現已經安裝了,下面開始卸載,執行sudo yum -y remove mariadb*,可以再執行上面的查看是否卸載成功,然后下載mysql的yum源(這里注意一下,下載並不是mysql,而是mysql yum repo , 地址:https://dev.mysql.com/downloads/repo/yum/)

file

執行,sudo wget https://repo.mysql.com//mysql80-community-release-el7-2.noarch.rpm ,版本自己選擇自己的

我下載到了/developer/setup·mu目錄下面,然后執行安裝這個源 sudo rpm -ivh mysql80-community-release-el7-2.noarch.rpm ,然后執行yum update,然后執行sudo yum -y install mysql-server,等待下載安裝就可以了

安裝完之后,從新去配置字符集,執行sudo vim /etc/my.conf,配置mysql的自啟動,執行sudo systemctl enable mysqld.service,執行sudo chkconfig mysqld on 也是可以的,他會自動指向上面哪個指令來執行,執行chkconfig --list mysqld,發現沒有找到mysqld,應該centos 7的原因
參考:Centos7下chkconfig設置MySql自動啟動

查看mysql狀態執行sudo systemctl status mysqld,發現出問題了

file

我們可以通過執行cat /var/log/mysqld.log,查看錯誤日志

file

說明剛才配置的my.conf文件,這行是有問題的,應該是這行代碼識別不了,所以注釋掉,然后重啟mysql,就啟動成功了。

file

登錄Mysql,第一次登錄時不需要密碼的mysql -u root ,先查看用戶 ,又出現問題了,找不到mysql.user表,發現安裝的mysql是8.0 然后又沒找到怎么解決這個問題,所以卸載,安裝mysql5.7
參考:Mysql yum安裝指定版本

過了一段時間裝完,又有問題,啟動不了其實是上一個版本的數據沒刪除掉,注釋了下圖這段,然后重啟就可以了

file

重啟完之后再把注釋回來,再重啟,我是這么操作的,然后mysql 啟動成功,登錄mysql,又遇見問題,應該是mysql的密碼錯誤,我顯示跳過驗證

file

當然了,上面那段不要注釋掉喲,然后直接mysql 進入里面,重置密碼

重置密碼這塊需要注意的是update user set password=password("你的新密碼") where user="root"

對於5.7版本執行時又問題的,password 字段已經沒有了,換成了authentication_string,所以完整的是 update mysql.user set authentication_string=password('') where user='';

就修改成功了,然后quit,把上面添加的跳過驗證注釋,再登錄就沒問題了

登錄完還有問題,總是提示,You must reset your password using ALTER USER statement before executing this statement

執行下這個mysql> ALTER USER USER() IDENTIFIED BY 'Xiaoming250';引號里面是你的密碼,然后FLUSH PRIVILEGES;,然后quit,重新登錄就可以了。

參考:密碼策略

下面添加用戶,因為用root操作太危險了,GRANT USAGE ON . TO 'user01'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;

上面添加 用戶名 user01 ,host 為localhost,密碼 123456,不需要開放外網權限,因為程序也是運行在阿里雲都是屬於本地操作,防火牆3306也不要設置

然后創建數據庫,grant all privileges on mmall.* to chen@localhost identified by '*****';,然后倒入sql文件,先退出mysql,將sql文件下載到阿里雲,然后登錄mysql

導入之前要進入mmall database; 輸入use mmall; 然后輸入 source /developer/mmall.sql

file

就導入進來了,可以使用 select * from mmall_user\G; ,\G 表示格式化

file

這就是導入進來的數據,安裝Mysql出現了這么多問題,總算完成了。

安裝Git

cd /developer/setup 下載到這兒,wget http://learning.happymmall.com/git/git-v2.8.0.tar.gz

然后安裝git 依賴,執行sudo yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils- MakeMaker

file

依賴安裝完成之后,解壓git,tar -zxvf git-v2.8.0.tar.gz ,cd git ,然后執行 make prefix=/user/local/git all 命令,prefix 指向編譯之后存放的目錄,然后執行make prefix=/user/local/git install ,執行完之后查看下版本 git -version

file

git config --global user.name "username"

git config --global user.email "1111111111@qq.com"

git config --global core.autocrlf false 讓git不要管windows 和linux 換行符轉換的事情

git config --global core.quotepath off 避免中文亂碼

git config --global gui.encoding utf-8 gui編碼配置,這個可以不用配置

ssh-keygen -t rsa -C "394722003@qq.com" 配置ssh ,然后一路回車

ssh-add ~/.ssh/id_rsa 出現這個錯誤,面向的是認證代理,執行
eval ssh-agent 其中ssh-agent 要鍵盤tab 上面的斜點,然后再執行 ssh-add ~/.ssh/id_rsa

查看id_rsa公鑰,cat ~/.ssh/id_rsa.pub ,將公鑰復制添加到github上就可以了,然后git安裝就完成了。

配置防火牆

cd /etc/sysconfig/ , 查找iptables,執行 ll | grep ipt,發現只有iptables-config,以前這兒就困惑過,CentOS 7.0默認使用的是firewall作為防火牆,改為iptables防火牆步驟如下

a.
關閉firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
firewall-cmd --state #查看默認防火牆狀態(關閉后顯示notrunning,開啟后顯示running)

b.
yum install iptables-services -y 安裝iptables

c.
iptables防火牆(這里iptables已經安裝,下面進行配置)

vi /etc/sysconfig/iptables #編輯防火牆配置文件
sampleconfiguration for iptables service
you can edit thismanually or use system-config-firewall
please do not askus to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT[0:0]
:OUTPUT ACCEPT[0:0]
-A INPUT -m state--state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -jACCEPT
-A INPUT -i lo -jACCEPT
-A INPUT -p tcp -mstate --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -jACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080-j ACCEPT
-A INPUT -j REJECT--reject-with icmp-host-prohibited
-A FORWARD -jREJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出

備注:這里使用80和8080端口為例。一般添加到“-A INPUT -p tcp -m state --state NEW -m tcp–dport 22 -j ACCEPT”行的上面或者下面,切記不要添加到最后一行,否則防火牆重啟后不生效。

systemctlrestart iptables.service #最后重啟防火牆使配置生效
systemctlenable iptables.service #設置防火牆開機啟動

然后將線上的iptables 直接下載下來覆蓋,當然你可以自己寫 ,先備份mv iptables iptables.bak,然后下載wget http://learning.happymmall.com/env/iptables

然后修改,vim iptables ,將圖中的三個注視掉,不需要開放,保存退出,重啟防火牆systemctl restart iptables,防火牆就配置完成了。

file

自動化發布腳本,

下載 wget http://learning.happymmall.com/deploy/deploy.sh 到/developer文件下面,

echo "===========進入git項目happymmall目錄============="
cd /developer/git-repository/mmall


echo "==========git切換分之到mmall-v1.0==============="
git checkout mmall-v1.0

echo "==================git fetch======================"
git fetch

echo "==================git pull======================"
git pull


echo "===========編譯並跳過單元測試===================="
mvn clean package -Dmaven.test.skip=true


echo "============刪除舊的ROOT.war==================="
rm /developer/apache-tomcat-7.0.73/webapps/ROOT.war


echo "======拷貝編譯出來的war包到tomcat下-ROOT.war======="
cp /developer/git-repository/mmall/target/mmall.war  /developer/apache-tomcat-7.0.73/webapps/ROOT.war


echo "============刪除tomcat下舊的ROOT文件夾============="
rm -rf /developer/apache-tomcat-7.0.73/webapps/ROOT



echo "====================關閉tomcat====================="
/developer/apache-tomcat-7.0.73/bin/shutdown.sh


echo "================sleep 10s========================="
for i in {1..10}
do
        echo $i"s"
        sleep 1s
done


echo "====================啟動tomcat====================="
/developer/apache-tomcat-7.0.73/bin/startup.sh

git clone 項目,然后腳本編譯執行 cd /developer,mkdir git-repository

cd git-repository ,sudo chown -R chen /developer/ 賦予用戶chen 操作/developer的權限

修改腳本的路徑,要跟項目一致,執行./deploy.sh,就會上線了

參考:
https://blog.csdn.net/zc_2016/article/details/89361565


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM