Centos7.4 安裝/管理httpd-vsftp-Mysql-PHP7

  1. 安裝OS   若是使用雲端AWS或AZure 或Google Platform Cloud, 則在instant映象檔more裡找看看是否有centos7.如果要在本機跟Hyper-V安裝, 取得Centos 7 光碟ISO檔: (選DVD ISO), mini DVD功能較少,DVD裡也可以選mini安裝.  官網下載:  https://www.centos.org/download/CentOS基本不會用ROOT來直接操作, 建議另外建一個Admin然後設給他管理權限, 這樣子管理上安全性比較高. 平時都用Admin的密碼登入. 需要ROOT權限時, 再輸入su 換到root,再輸入密碼.

    以下 nmtui & ip addr list 可以換順序, 依您實際網路情形操作

    [user]# ip addr list  <-取得主機的IP位址, 供putty連線進入用
    [user]# nmtui 出現網路設定(文字模式)
    [user]# systemctl restart network 重啟網卡(設定網路後一定要做)
    [user]# yum update   <-更新所有套件
  2. 安裝套件指令語法 AWS的centos 預設登入是用centos , 登入密碼同 .ppk設的,  執行指令若遇到權限不足時, 請下 : # sudo su  , 即可切到root使用者.
    1. RPM <–舊安裝指令,不會自動安裝相依性套件
    2. YUM <–在套件名後加*會自動檢查並安裝相關套件, 很好用如:# yum install httpd*如:# yum install sendmail*
    3. # yum check-update <-有哪些套件需要更新
    4. # yum update <-更新所有套件
    5. # yum remove 套件名, 移除套件
    6. # yum clean 套件名  , 清除套件相關檔案及目錄
    7. # wget 下載檔案, 若無法執行wget就下 : yum install wget
  3. 文書編輯指令語法[user]# vi 檔名
    1. :wq  寫入並跳出
    2. :q  跳出
    3. :q! 強制跳出
  4. 安裝Apache (httpd)
    # yum install httpd
    # systemctl start httpd
    # systemctl enable httpd
    # firewall-cmd --add-port=80/tcp --permanent
    # firewall-cmd --reload
  5. 安裝VSFTP輸入以下指令
    # yum install vsftpd  <-安裝FTP
    # systemctl start vsftpd   <-啟用
    # systemctl enable vsftpd  <-設成開機服務自動啟用

    開防火牆 20,21 埠

    # firewall-cmd --add-port=21/tcp --permanent
    # firewall-cmd --add-port=20/tcp --permanent
    # firewall-cmd  --permanent --add-service=ftp
    # firewall-cmd --reload
    =============================================================
    若要更改21 port 到 2121
    =>修改vi /etc/vsftpd/vsftpd.conf 新增一行 listen_port=2121
    =>重啟 system restart vsftpd
    =>開防火牆 如下二行
    #firewall-cmd --add-port=2121/tpc --permanent
    #firewall-cmd --reload
    修改根目錄

    先建一組網站使用者(ftps) 跟家目錄 (/home/ftps)

    # echo /usr/sbin/nologin >> /etc/shells <--允許 FTP 登入的 shell 版本
    # useradd -d /home/ftps -s /usr/sbin/nologin -m ftps

    刪除不必要的預設檔案

    # rm -f /home/ftps/.[a-z]*

    變更 ftps 的權限, 因為VSFTP的chroot目錄不允寫入, 所以要改成rx

    # chmod a=rx /home/ftps

    建立一個子目錄, 可以供使用者上傳用的, 可以寫入

    # mkdir /home/ftps/html

    把 ftps 設成 /home/ftpsd/html 擁有者

    # chown ftps.ftps /home/ftps/html  
    # chmod g+ws /home/ftps/html  同群組有ws權限

    以上ftps 群組己有FTP 目錄 /home/ftps 的權限

    接下來建一個user供filezilla登入用

    # useradd -d /home/ftps -s /usr/sbin/nologin user1
    # passwd user1  (設密碼)
    # usermod -a -G ftps user1 
    (把user1加入ftps群組,若要移除=> # usermod -G user1 user1)

    修改user1預設的家目錄

    # usermod -d /home/ftps user1

    最後修改vsftp的設定檔, 並重啟vsftpd

    # vi /etc/vsftpd/vsftpd.conf

    修改如下

    anonymous_enable=YES 改成 NO

    local_enable=YES      <–取消#註解

    write_enable=YES    <–取消#註解

    local_umask=022    <–取消#註解

    chroot_local_user=YES  <–取消#註解

    :wq 儲存離開, 重啟vsfptd

    # systemctl restart vsftpd

    最後, 把httpd的目錄連結到ftpd我們建立的上述/ftps/html/目錄

    #rm -R /var/www/html (若/var/www/html己存在,請先# rm -R /var/www/html 刪子目錄)
    #ln -s /home/ftps/html /var/www

    最後, 記得還有一個關卡 SElinux 安全性設定, 這個可讓小編查了好久, 會導致filezilla軟體無法連線成功。

    在瀏覽器一直出現你沒有權限存取 /index.html. 設好就OK了

    可以先下以下二個指令暫時開關SElinux , 試不試因為SElinux影响結果.

    # setenforce 0 關

    # setenforce 1 開
    可以先下 getsebool -a | grep ftp 來看看SELINUX 對FTP的限制

  6. # chcon -R -t httpd_sys_content_t /home/ftps/html  (針對http 403)
    
    如果 VSFTPD被SElinux擋住, 導致filezilla無法寫入則加下例
    # setsebool -P ftpd_full_access 1
    # setsebool ftpd_connect_all_unreserved 1

    大功告成~
    若filezillza登入出現 530
    1、查看/etc/ftpusers ,确保账号没有在这个文件内。
    2、修改/etc/pam.d/vsftpd
    将auth required pam_shells.so修改为->auth required pam_nologin.so 或者将auth required pam_shells.so注释
    3、重启vsftpd

  7. 安裝 Mariadb (取代Mysql, 功能跟Mysql一模一樣)
    sudo yum install mariadb-server mariadb
    sudo systemctl start mariadb.service
    sudo systemctl enable mariadb.service
    
    ---------------------------------------------------------------
    登入mysql 下指令:# mysql -u root -p
    然後會看到類似 “MariaDB [(none)]>”, 輸入以下指令修改root密碼:
    use mysql;
    update user set password=PASSWORD(“new_password”) where User=’root’;
    flush privileges;
    quit
    
    狀況一:
    如果第一次登入mysql出現 Access denied for user 'root'@'localhost' (using password: NO)
    則做以下步驟:
    1.停止 MySQL 服務。 # sudo systemctl stop mysqld
    2.加入自訂環境變數,暫時不檢查權限。# sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
    3.啟動 MySQL 服務。# sudo systemctl start mysqld
    4.免密碼直接登入 # MySQL。mysql -u root
    5.更新 root 的新密碼,這邊是用 P@ssw0rd,別忘了修改成自訂密碼。
    UPDATE mysql.user SET authentication_string = PASSWORD('P@ssw0rd') WHERE User = 'root' AND Host = 'localhost';
    6.重新載入權限。# flush privileges;
    7.退出 MySQL。# quit
    --------------------------------------------------------------------
    然後再重新啟動mysql並登入root , 如下:
    1.停止 MySQL 服務。 # sudo systemctl stop mysqld
    2.取消自訂環境變數。 # sudo systemctl unset-environment MYSQLD_OPTS
    3.啟動 MySQL 服務。 # sudo systemctl start mysqld
    4.這樣子就可以正常登入了。# mysql -u root -p
    出現 mysql>    就表示登入mysql 的 root 帳號成功.
    
    --------------------------------------------------------------------
    最後, 我們再加強一下mysql的安全性設定, 
    下指令# mysql_secure_installation
    .........
    Remove anonymous users? Y
    Disallow root login remotely? N
    Remove test database and access to it ? Y
    Reload privilege tables now? Y
    !!收工
  8. 安裝PHP7.3 (單獨安裝PHP)先下載套件  epel (centos7版本)
    #yum install epel-release
    #rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    #yum --enablerepo=remi-php73 install php
    
    #yum –enablerepo=remi-php73 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt php-mysql
    #php -v
     
  1. 開防火牆
  2. # sudo firewall-cmd --permanent --zone=public --add-service=http 
    # sudo firewall-cmd --permanent --zone=public --add-service=https 
    # sudo firewall-cmd --reload

    最後記得#  sudo systemctl restart httpd ,即完成

驗證版本  php -v

PHP連遠端mysql DB., 若php出現 權限不足, 請開防火牆

getsebool -a | grep httpd 查目前設定值
setsebool httpd_can_network_connect_db 1 重開機就要重來
setsebool -P httpd_can_network_connect_db 1 加-P 重開機會保留

ZIP 壓縮/解壓縮

1.安裝zip /unzip
# yum install zip unzip

2.把 htdocs/* 所有檔案及目錄製成 myfile.zip , -r是含目錄 -x是排除檔案
# zip -r myfile.zip htdocs/* -x “htdocs/main/wp-content/updraft/*"

3.將檔案解壓縮
# unzip myfile.zip

安裝SSL服務

先下載及安裝
# yum -y install httpd mod_ssl

安裝好後, 會在 /etc/httpd/conf.d/裡多一個 ssl.conf , 修改裡面憑證檔路徑

#vi /etc/httpd/conf.d/ssl.conf
…………….
DocumentRoot “/var/www/html"
ServerName http://www.yourdomain.com:443
……….中間略過不動
SSLCertificateFile /etc/pki/tls/certs/你的憑證.crt
SSLCertificateKeyFile /etc/pki/tls/private/您的.key
……………….
最後下: wq 存檔後, 重啟httpd即可
#systemctl restart httpd

最後記得把firewallD的 443port打開即可,可參考前述ftp 21 port…

One comment

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.