在windows8下安裝Oracle VM VirtualBox虛擬機,虛擬機中安裝的CentOS操作系統,在CentOS中搭建LNMP環境,安裝vsftpd服務器,宿主機在phpStorm編程,將代碼FTP上傳到虛擬機,在宿主機瀏覽器輸入地址,訪問虛擬機中php代碼頁。虛擬機網絡使用橋接方式很方便,但是宿主機進入公司辦公網絡后,FTP出現問題,因此改用網絡采用NAT模式。NAT下虛擬機ip地址10.0.2.15。
安裝過程分為三步,
1,在CentOS安裝vsftpd服務器,配置好,再安裝ftp客戶端,可以利用ftp客戶端訪問vsftpd服務器;
2,在宿主機中通過網頁訪問虛擬機中ftp服務器;
3,在宿主機phpStorm配置ftp服務器,可以連接虛擬機中ftp服務器;將代碼上傳到虛擬機中ftp服務器;
1,在CentOS安裝vsftpd服務器,配置好,再安裝ftp客戶端,可以利用ftp客戶端訪問vsftpd服務器;
1.1,以管理員(root)身份執行以下命令,安裝FTP服務器端
yum install vsftpd
1.2,設置開機啟動vsftpd ftp服務
chkconfig vsftpd on
1.3,啟動vsftpd服務
service vsftpd start
1.4,安裝FTP客戶端
yum install ftp
1.5,為ftp添加用戶
/usr/sbin/adduser -d /opt/ftp1 -g ftp -s /sbin/nologin ftp1
1.6,為ftp1用戶設置密碼
passwd ftp1
輸入新密碼即可
1.7,測試vsftp是否安裝成功
ftp 10.0.2.15
用戶名
密碼
顯示成功,表示vsftpd安裝成功。(有時會出現錯誤,需要去vsftpd.conf禁用默認用戶登錄
vim /etc/vsftpd/vsftpd.conf
anonymous_enable = YES 修改為 anonymous_enable = NO
重啟vsftpd服務,service vsftpd restart
)。
2,在宿主機中通過網頁訪問虛擬機中ftp服務器;
由於虛擬機選用NAT網絡模式,虛擬機可以訪問宿主機,宿主機沒法訪問虛擬機,需要在NAT中配置接口轉換,ftp對應20,21兩個接口,需要NAT配置兩次,比如
127.0.0.10 2020 10.0.2.15 20 127.0.0.10 2021 10.0.2.15 21
在宿主機的瀏覽器輸入ftp://127.0.0.10:2021,會彈出輸入用戶名、密碼窗口,輸入后顯示錯誤。此時通過對ftp了解,知道ftp連接分為兩個過程:客戶端連接服務器的21端口,認證用戶是否合法,驗證通過之后;服務器端會將根目錄下數據通過20端口發送到客戶端。我們可以登陸進去,沒法顯示服務器端數據。說明20接口有問題。將ftp模式設定為PASV被動模式,設定新的接口。
2.1,在vsftpd.conf中將被動模式接口寫進去,
pasv_min_port=2017 pasv_max_port=2020
注意等號左右不能有空格。
2.2,在FTP指令下,將模式設定為PASV。輸入passive,使POR和PASV模式切換。
2.3, 在NAT下調整接口
如圖所示,LNMP和SSH是配置網頁訪問虛擬機代碼,和ssh連接虛擬機的,此處暫且不考慮。
2.4, 在宿主機的瀏覽器輸入ftp://127.0.0.10:2021,會彈出輸入用戶名、密碼窗口,輸入后顯示根目錄內容;
3,在宿主機phpStorm配置ftp服務器,可以連接虛擬機中ftp服務器;將代碼上傳到虛擬機中ftp服務器
3.1,在phpStorm配置ftp,點擊advanced options選擇被動模式;
3.2,mapping需要配置下



3.4.1,確保/opt/ftp1目錄對應ftp1用戶權限是755或777,如果不是修改;
3.4.2,使用命令getsebool -a|grep ftp 查看ftpd_disable_trans ftp_home_dir allow_ftpd_full_access 是否為on。如果不是需要修改。
第一個修改setsebool ftpd_disable_trans 1,此時又會出錯,貌似找不到setsebool ftpd_disable_trans;直接修改setsebool ftp_home_dir 1,只要ftp_home_dir修改成功,就不用管ftpd_disable_trans了。第三個修改setsebool allow_ftpd_full_access 1。至此宿主機可以將代碼上傳到虛擬機了。但是這個修改只是臨時的,關閉虛擬機重啟后失效,每次開機都需要修改很麻煩,因此還有種方式直接關閉selinux,然后重啟即可。
(
vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq #保存,關閉。
shutdown -r now #重啟系統
查看SELinux的狀態:
getenforce
)