我的網站搭建時linux中的相關配置記錄(mysql,jdk,nginx,redis)

1、開發計劃(包括準備工做,網站大體需求等)html

2、服務器(linux/centos)購買、相應環境配置(jdk),軟件安裝(mysql, nginx, redis)、域名解析前端

3、原型圖、代碼開發(vue.js,  springboot)vue

 

二:java

  1. 安裝mysql(壓縮包形式)記錄(linux)  另外一種快捷安裝,參考:http://www.javashuo.com/article/p-ywzsdybe-bq.htmlnode

    a. 下載mysql安裝包(連接: https://pan.baidu.com/s/1RZzGfEd_AdSMR8UHrFSUjg 密碼: yrw3)mysql

    b. 將壓縮包拷貝至/usr/local中(我用的xftp)linux

    c. 安裝依賴: [root@mufeng local]# yum -y install perl perl-devel autoconf libaionginx

    d. 解壓: [root@mufeng local]# tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz正則表達式

     重命名解壓後的mysql目錄: [root@mufeng local]# mv mysql-5.6.33-linux-glibc2.5-x86_64 mysqlredis

    e. 添加用戶組和用戶: 

        檢查mysql組和用戶是否存在,如無建立  

           [root@mufeng local]# cat /etc/group|grep mysql
           mysql:x:1000:
           [root@mufeng local]# cat /etc/passwd|grep mysql
           mysql:x:997:1000::/home/mysql:/bin/bash

         若無則:添加用戶組:         [root@mufeng local]# groupadd mysql

             添加用戶mysql 到用戶組mysql:[root@mufeng local]# useradd -r -g mysql mysql
     f. 賦予權限:

        [root@mufeng local]# chown -R mysql mysql/
        [root@mufeng local]# chgrp -R mysql mysql/

    g. 安裝和初始化數據庫:[root@mufeng local]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

    h. 設置啓動文件:[root@mufeng local]# cp -a ./support-files/my-default.cnf /etc/my.cnf

            [root@mufeng local]# cp -a ./support-files/mysql.server  /etc/init.d/mysqld

    i. 啓動mysql:   [root@mufeng mysql]# service mysqld start

            Starting MySQL.                                            [  OK  ]

    j. 設置開機啓動:[root@mufeng mysql]# chkconfig --level 35 mysqld on

    k. 創建軟鏈接(可在任何目錄下訪問):[root@mufeng bin]# ln -s /usr/local/mysql/bin/mysql /usr/bin

    l. 登陸mysql並設置密碼(首次無需密碼):[root@mufeng bin]# mysql -uroot -p

                        Enter password:

                       mysql> set password = password("root");

                       mysql> flush privileges;     //刷新權限

    m. 添加遠程鏈接的帳號、並設置權限:mysql> grant all privileges on *.* to 'zhanghao'@'%' identified by "password";

                      mysql> flush privileges;

                      mysql> select user, password, host from mysql.user;  //查看是否添加成功

    n. 本地鏈接測試:  

            [root@mufeng bin]# mysql -u zhanghao -p
            Enter password:
            ERROR 1045 (28000): Access denied for user 'mufeng'@'localhost' (using password: YES)

       發現鏈接不上,但帳號密碼是正確的,緣由:數據庫安裝初始化時,會建立匿名帳戶,在本地登陸時,會默認去匹配匿名帳戶,因此此時輸入密碼,鏈接時,報密碼錯誤,不輸入密碼,反而能夠直接鏈接

      解決方法:登陸root帳號,刪除匿名帳號:mysql> delete from mysql.user where user='';

           更新新帳號的密碼:     mysql> update mysql.user set password =PASSWORD('password') where user = 'zhanghao'; 

              刷新權限:           mysql> flush privileges;

           再次鏈接(輸入密碼):成功

    o. 遠程客戶端鏈接,顯示沒法鏈接:

              

      檢查端口是否開放:tcping ip 3306 結果:ping不通,解決方法:登陸服務器後臺,添加安全組入網規則,打開3306端口,再次鏈接,鏈接成功。

    p. 當更改了配置文件後,須要重啓mysql時,有時會遇到這個問題:

        

      解決方法:查看錯誤文件:[root@mufeng /]# vi /usr/local/mysql/data/mufeng.err

      找到相應的錯誤記錄:個人是,2018-08-06 09:56:16 2573 [ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'default-character-set=utf8'

      而後,編輯配置文件:[root@mufeng /]# vi /etc/my.cnf 

        註釋掉,或改正,再次重啓便可:

         

 

    數據表區分大小寫操做:在配置文件/etc/my.cnf中添加以下(也可參考:http://www.javashuo.com/article/p-kymynssw-dc.html

                #表名大小寫:0爲大小寫敏感,1爲不區分大小寫
                lower_case_table_names=1

    修改數據庫帳號名密碼:https://blog.csdn.net/u013510614/article/details/50506676        5.7版本:https://blog.csdn.net/qq_33472557/article/details/77726094

              root帳號鏈接數據庫: mysql -u root -p  

                        Enter password:***

              更新密碼:     UPDATE mysql.user SET password=PASSWORD("新密碼") WHERE user='你的用戶名';

                          版本高時,會報錯:ERROR 1054 (42S22): Unknown column 'password' in 'field list'

                          緣由:版本不一樣,字段已經更改,使用:

                              update mysql.user set authentication_string=password('新密碼') where user='你的用戶名'

              刷新權限,不然不會生效:  FLUSH PRIVILEGES;

              退出:        quit

    查看當前用戶名密碼等信息:  select user, host, authentication_string from mysql.user;

                        

 
   2. 配置jdk:
     a. 下載相應版本的jdk包: https://www.oracle.com(這裏是個人jdk1.8:連接: https://pan.baidu.com/s/1TpM4vzXNd9hGHI6Rw-84cw 密碼: iucs)
     b. 將壓縮包放在 /usr/local/java中,解壓:[root@mufeng /]# tar -zxvf jdk-8u161-linux-x64.tar.gz
     c. 配置環境變量:vim /etc/profile  
     添加以下:
                 JAVA_HOME=/usr/java/jdk1.8.0_60
          CLASSPATH=$JAVA_HOME/lib/
          PATH=$PATH:$JAVA_HOME/bin
          export PATH JAVA_HOME CLASSPATH                    
     注意jdk路徑,對應本身的路徑
     從新加載配置文件:source /etc/profile
     d. 查看安裝狀況: [root@mufeng /]# javac -version

              javac 1.8.0_161

       配置成功

    

    配置jdk環境變量參考文章:http://www.javashuo.com/article/p-cobwrmaq-bm.html

 
   3. 安裝nginx
     a. 下載相應版本的壓縮包:連接: https://pan.baidu.com/s/16yzxJqYv5qDtsHJh_lkEpQ 密碼: 47bi
     b. 將壓縮包放在 /usr/local/中,解壓:[root@mufeng /]# tar -zxvf nginx- 1.12.2.tar.gz
     c. 配置安裝nginx須要的環境:
      安裝 nginx 的編譯環境 gcc:[root@mufeng /]#  yum install gcc-c++
      nginx的 http模塊使用  pcre 解析正則表達式,因此安裝  perl 兼容的正則表達式庫
                     [root@mufeng /]# yum install -y pcre pcre-devel
       nginx 使用  zlib 對  http 包的內容進行  gzip:
                   [root@mufeng /]# yum install -y zlib zlib-devel
      nginx 不只支持 http 協議,還支持 https(即在 ssl 協議上傳輸 http),若是使用了 https ,須要安裝 OpenSSL 庫:
                      [root@mufeng /]# yum install -y openssl openssl-devel
    d. 配置(使用默認配置):[root@mufeng /]# cd /usr/local/nginx-1.12.2
                [root@mufeng /]# ./configure
       nginx 被安裝到  /usr/local/nginx 下
    e. 編譯安裝:[root@mufeng /]# make && make install
    f. 配置環境變量:[root@mufeng /]# vim /etc/profile
      在文件最後位置添加:     
                 export NGINX_HOME=/usr/local/nginx
          export PATH=$PATH:$NGINX_HOME/sbin        

      從新編譯 /etc/profile 文件,使其生效:source /etc/profile

    g.啓動nginx:nginx -c /usr/local/nginx/conf/nginx.conf
     查看nginx進程:[root@mufeng /]# ps -ef|grep nginx
      成功
   h.設置nginx開機啓動:[root@mufeng /]# vi /etc/rc.local

     在文件最後位置添加:/usr/local/nginx/sbin/nginx

    i.nginx其餘命令:
       重啓:nginx -s reload              
       
關閉:nginx -s stop              
       
查看nginx配置文件的位置:nginx nginx-t

    安裝nginx參考文章:https://blog.csdn.net/qq_30038111/article/details/79410354
 
   4. 搭建redis集羣
        cd /usr/local/redis_cluster
      a. 集羣環境安裝:
        安裝gcc,g++:         [root@mufeng redis_cluster]# yum install gcc g++
        安裝ruby腳本運行環境:    [root@mufeng redis_cluster]# yum install ruby
        安裝wget命令:        [root@mufeng redis_cluster]# yum install wget
      b. 安裝redis:
        下載redis: [root@mufeng redis_cluster]# wget http://download.redis.io/releases/redis-3.2.4.tar.gz
         解壓:        [root@mufeng redis_cluster]#  tar -zxvf redis-3.2.4.tar.gz
         編譯安裝到指定目錄: [root@mufeng redis_cluster]# cd redis-3.2.4  
                    [root@mufeng redis_cluster]# make install PREFIX=/usr/local/redis_cluster/redis 
        測試,前端啓動模式:  [root@mufeng redis_cluster]# /usr/local/redis_cluster/redis/bin/redis-server
        ctrl+c退出
      c. 編輯配置文件,並啓動
        從解壓後的redis源碼目錄中複製redis.conf到redis的安裝目錄:[root@mufeng redis_cluster]# cp ./redis-3.2.4/redis.conf  /usr/local/redis_cluster/redis/bin
        編輯剛複製到安裝目錄的配置文件redis.conf:[root@mufeng redis_cluster]# vi ./redis/bin/redis.conf
        把後臺運行開啓,把原來的NO改爲yes:daemonize yes (# 設置yes,redis能夠後臺運行
        bind 127.0.0.1 改成 bind 0.0.0.0  (# 0.0.0.0 表明外網能訪問)
        protected-mode yes 改成 protected-mode no  (# 改成no,能夠外界遠程訪問,redis 3.2 才追加的一個功能)
        (使用技巧:vim打開後,在非insert狀態下,輸入  /daemonize  回車,即可找到daemonize位置,按n就查找下一個,按下 i鍵 進入編輯狀態,更改後,按下esc鍵,退出編輯狀態,按下shift+; 輸入:wq,保存退出)
        使用配置文件,後臺啓動:[root@mufeng bin]# ./redis-server redis.conf
        打開客戶端:[root@mufeng bin]# ./redis-cli
          退出:quit
      d. 集羣搭建準備:
        建立6個redis實例:  
            持久化文件刪掉:[root@mufeng redis_cluster]# cd redis/bin
                    [root@mufeng bin]# rm -f dump.rdb
            建立多個實例:   [root@mufeng bin]# cd .. //返回上一級目錄

                    [root@mufeng redis]#cp -r bin ../redis_cluster/6379

                    [root@mufeng redis]#cp -r bin ../redis_cluster/6380

                    ......

                    [root@mufeng redis]#cp -r bin ../redis_cluster/6384

        編輯各個實例下面的配置文件,修改兩處,第一修改端口號(port:6379,6380,...,6384),

                          第二打開cluster-enable前面的註釋  (# 開啓集羣,把註釋#去掉)

        複製腳本到redis-cluster目錄下:[root@mufeng redis]# cp /usr/local/redis_cluster/redis-3.2.4/src/*.rb  /usr/local/redis_cluster/

        建立redis集羣啓動的腳本,來便捷的啓動6個實例:[root@mufeng redis_cluster]# vim startall.sh

          內容以下:

cd 6379
./redis-server  redis.conf
cd  ..
cd 6380
./redis-server  redis.conf
cd  ..
cd 6381
./redis-server  redis.conf
cd  ..
cd 6382
./redis-server  redis.conf
cd  ..
cd 6383
./redis-server  redis.conf
cd  ..
cd 6384
./redis-server  redis.conf
cd  ..

        保存並退出  wq!;編輯腳本權限:[root@mufeng redis_cluster]#  chmod +x startall.sh

        利用腳本啓動redis集羣:[root@mufeng redis_cluster]#  ./startall.sh

        查看各個實例的運行狀態:ps aux|grep redis

      e. 集羣正式搭建:

        安裝redis:[root@mufeng redis_cluster]#  gem install redis

          可能:-bash: gem: command not found   則:安裝redis集羣工具和環境

               則 [root@iZbp15h7x6vujtklreqtreZ redis_cluster]# yum install ruby && yum install -y rubygems

          可能:ERROR:  Could not find a valid gem 'redis' (>= 0) in any repository     可參考:https://blog.csdn.net/snowhite91/article/details/78962436

             則 [root@iZbp15h7x6vujtklreqtreZ redis_cluster]# wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem

           有一次安裝時,還出現了:While executing gem ... (Zlib::BufError)     buffer error 錯誤

              沒有找到緣由,但最後 把redis_cluster目錄下的 全部rm -rf redis-3.2.1.gem文件刪除後,此錯誤消失了

          此時可能會報錯(我遇到了):Redisredis requires Ruby version >= 2.2.2

          解決方法參考:https://blog.csdn.net/FengYe_YuLu/article/details/77628094    https://blog.csdn.net/zhaoyahui_666/article/details/78716511

        開放端口:6379-6384,集羣總線端口16379-16384

        建立集羣(下邊的ip地址改成本身的公網ip,不要寫127.0.0.1,不然外部沒法訪問): 

             [root@mufeng redis_cluster]# ./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

       運行上面命令後會出現,詢問:輸入 yes,便可

        --replicas 1表示主從複製比例爲 1:1,即一個主節點對應一個從節點;而後,默認給咱們分配好了每一個主節點和對應從節點服務,以及 solt 的大小,由於在 Redis 集羣中有且僅有 16383 個 solt ,默認狀況會給咱們平均分配,固然你能夠指定,後續的增減節點也能夠從新分配。

      f. 集羣設置密碼,實現外部安全訪問

          首先上一步的IP必須是公網的ip

          更改各個實例的配置文件redis.conf,分別添加:requirepass  yourpassword

             6個實例添加的要相同
           刪除掉每一個實例中的nodes.conf文件,
           查看全部redis進程:[root@mufeng redis_cluster]# ps aux|grep redis
           kill掉這6個進程:kill -9 pid
           而後從新啓動6個redis實例:[root@mufeng redis_cluster]# ./startall.sh
           測試:不輸入密碼時,會提醒須要密碼,
              

              輸入密碼,再次測試,成功;

               

      其餘問題:有時須要從新搭建時,遇到此問題:[ERR] Node 39.108.145.103:6381 is not empty. Either the node already knows other nodes (check with C

           解決方法:刪除掉節點下 aof、rdb結尾的文件,從新執行e中的建立集羣命令便可

      g. 鏈接測試  [root@mufeng 6379]# ./redis-cli -c -h 127.0.0.1 -p 6379 -a Passw0rd

        只有加入 「-c」 纔會啓動集羣模式,否則會報錯:(error) MOVED 5798 39.108.145.103:6380

        

       安裝也可參考:http://www.javashuo.com/article/p-hkcwwniy-bd.html

  5. 因爲服務器配置過低,現將redis集羣改成reids單機版,以減小內存

    具體參考:https://blog.csdn.net/makang456/article/details/54947193

              
   6. 遇到的問題:
          數據表區分大小寫: https://blog.csdn.net/wangshuai6707/article/details/52168467
            登陸mysql時-bash: mysql: command not found: https://blog.csdn.net/TROY_Musou/article/details/80336059
         搭建redis集羣時:e中遇到的問題: https://blog.csdn.net/zhaoyahui_666/article/details/78716511
                 f中遇到的問題: http://www.javashuo.com/article/p-hjehbeth-et.html   
相關文章
相關標籤/搜索