說在前面
今天在騰訊雲的CVM服務器搭建了一下環境【主機:標准型S2,Unbuntu18.04的LST版本】
采用了nginx服務器(Nginx 靜態處理性能比 Apache高3倍以上,不過apache仍然是目前的主流,有很多豐富的特性)[百度Nginx與Apache區別]
PHP7.2 + MySQL5.7
常用命令
查看系統版本
cat /etc/issue
更新apt-get的源(定期使用該命令,確保自己的新下載的軟件包是最新版本)
apt-get update
安裝軟件
apt-get install 軟件名
編輯文件內容 (輸入以下命令訪問要修改的文件后,按(字母i)進入編輯模式,退出編輯模式,退出編輯后輸入后回車保存,強制保存)
vim 路徑
文件內查詢
/要查詢的內容
正文
1 安裝MySQL
apt-get -y install mysql-server mysql-client
中間會詢問兩次root的密碼,輸入即可。沒密碼/新版本可能不會詢問。(其中 -y 是表示安裝過程中的問題自動回答yes,即默認安裝。也可以不寫-y,直接apt-get install 軟件名)
數據庫安全配置
mysql_secure_installation
沒有密碼則在輸入命令后按回車,然后設置密碼。接着如下:
此處會依次用英文詢問(紫色為建議填寫)
1 是否重置密碼,Set root password? [Y/n]
y重置,n不重置 (記得密碼不必重置)
2 刪除匿名用戶,Remove anonymous users? [Y/n]
y刪除,n不刪除 (禁止匿名用戶訪問)
3 關閉遠程登陸,Disallow root login remotely? [Y/n]
y關閉,n不關閉 (允許后可以使用遠程軟件管理)
4 刪除測試數據庫,Remove test database and access to it? [Y/n]
y刪除,n不刪除 (不必刪除)
5 重新加載權限表,Reload privilege tables now? [Y/n]
y重載,n不重載 (刷新)
提示 All done! 則成功安裝配置完MySQL。
2 安裝PHP7
這里我用的是PHP7.2,當然有的是7.0或者以后更多新版本,要根據版本不同可能路徑不同,但是大體配置思路是一樣的。
安裝前可以先用以下命令
查看最新版本是什么,如下[可能有更簡單辦法,但這樣也看得出]
apt-cache search package | php
如下可以看到源提供的包中大部分是7.2的軟件包
所以我們安裝php7.2-fpm(為什么是要裝帶fpm的安裝包,因為-fpm的安裝包使用了FastCGI可以提升CGI性能,CGI可以規范數據傳輸)【根據自己的情況安不同的包,如php7.0就安裝7.0,不要也寫個7.2就裝不了】
安裝php7.2-fpm的命令如下
apt-get -y install php7.2-fpm
success安裝完成
3 安裝Nginx
如果安裝了Apache,要先卸載Apache或者能夠更換Apache的端口?
卸載命令如下(新系統/沒安裝不必卸載)
service apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2
安裝Nginx命令如下
apt-get -y install nginx
完成后,啟動Nginx命令如下
service nginx start
輸入IP地址或域名在瀏覽器訪問,顯示如下頁面則成功安裝Nginx
4 配置Nginx
三個軟件都裝好了,這一步我們要進行配置,配置后nginx服務器才可以顯示PHP頁面。
打開配置文件nginx.conf 命令如下
vim /etc/nginx/nginx.conf
找到nginx.conf配置文件里的keepalive_timeout變量把它的值改成2,如下(如何修改文件內容,見本文開頭常用命令vim)
接下來打開配置文件sites-available/default 命令如下
vim /etc/nginx/sites-available/default
打開后,按照如下部分修改(主要就是把前面"#"注釋標志刪掉,讓PHP生效。注意函數的大括號“}”不要忘了取消注釋)
兩個文件都修改完后,重新加載一下nginx 命令如下
service nginx reload
5 配置PHP
這里要注意:php的配置文件php.ini,路徑會隨PHP版本而不同,所以首先查找php.ini文件位置 命令如下
php -i | grep php.ini
命令的意思是:php -i 即顯示php的詳細信息,然后在其中匹配php.ini的信息,如上圖找到了路徑是 /etc/php/7.2/cli/php.ini,接下來就是打開這個文件
打開php.ini文件 命令如下
vim /etc/php/7.2/cli/php.ini
然后輸入\cgi.fix_pathinfo 查詢,找到后回車,按 進入編輯模式,修改文件內容cgi.fix_pathinfo = 0如下圖,記得前面的分號 ; (注釋!)要刪掉。
修改完成后重新加載PHP服務命令如下(還是一樣,根據自己版本號確定服務名。不知道自己服務名的輸入 service --status-all 查看)
service php7.2-fpm reload
檢測配置是否成功 我們要創建一個php文件在服務器根目錄下,再用IP地址或域名訪問
創建文件命令如下
vim /var/www/html/info.php
然后同樣的按 進入編輯模式輸入文件內容如下
<?php phpinfo(); ?>
保存修改,然后在瀏覽器訪問 IP地址/info.php 出現如下頁面即成功
補充
FileZila遠程管理文件(上傳自己寫好的代碼到服務器上跑)
默認用戶Ubuntu不具有創建目錄功能
只有系統超級用戶root(sudo su進入)才有創建目錄功能,為了服務器安全,不給默認普通用戶這個更改目錄等權限。
所以使用root用戶遠程登錄管理系統文件
1) 使用用戶名ubuntu登錄
2) 修改root密碼,密碼輸入不可見,需要再次確認密碼。命令如下
sudo passwd root
3) 打開ssh配置。命令如下
sudo vi /etc/ssh/sshd_config
4) 命令行輸入i進行編輯
修改文件中的PermitRootLogin no為PermitRootLogin yes。
Esc退出編輯模式,輸入:wq , 然后回車保存修改。
5) 重啟ssh服務。命令如下
sudo service ssh restart
6) 在FileZilla站點管理中新建一個站點。
主機填寫你服務器的外網IP地址,端口寫22,協議選擇sftp,用戶名寫root,密碼就填上面第(2)步改的密碼。
連接成功,列出目錄了,接下來就是看你nginx服務器指定目錄在哪就把代碼傳到哪,指定目錄也就是剛剛上面創建info.php文件那里(var/www/html)
【注意:root用戶進入后默認在root目錄,ubuntu用戶進入后在home/ubuntu目錄。記得點回上級目錄才能看到var文件夾,然后依次進入var/www/html。】
Navicat遠程管理MySQL(這個和我之前寫的阿里雲那篇類似)
首先登陸mysql 命令如下
mysql -u root -p
輸入密碼(初始為0)登錄后前綴變成mysql>,然后我們進入默認數據庫 命令如下
mysql> use mysql
接下來顯示user表關鍵信息 命令如下
mysql> select user,host,plugin,authentication_string from user
顯示如下圖,root用戶的host我已經把它由原來的localhost改為“%”了,
首先看我圈的紅圈,如果你的還不是%,就輸入如下SQL語句更改host值
mysql> update user set host="%" where user="root"
然后為了安全,我們要給root加個密碼(新安裝的密碼默認是空),看最后一列,我這個版本的mysql密碼字段的名字是authentication_string(可以輸入show tables看出來)ChaosBlog原創
mysql> update user set authentication_string="這里換成新密碼" where user="root"
要注意的是,MySQL要求密碼必須是一串字符串並包含:大小寫字母,符號,數字。不然會報錯【正確示范:例如:Abc#123】
然后看下我圈的藍色圈,plugin列代表密碼是否是native_password,不是的話密碼可能是明文顯示的,而且用Navicat等軟件連接的時候會報錯(1251錯誤)連不上。
所以我們要用另一種命令修改密碼,如下
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '這里換成新密碼';
加了密碼以后,習慣性刷新權限...命令如下
mysql> flush privileges
然后我們就可以輸入exit命令回車退出MySQL了。
最后,
檢查是否綁定了IP,命令如下(訪問配置文件mysqld.cnf)
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
把該配置文件中的 bind-address =127.0.0.1前面加上 # 注釋掉
完成后基本都可以用Navicat登錄數據庫,若還不能則檢查3306端口是否開啟。
方法1:安裝firewalld強行開啟;
sudo apt-get install firewalld
firewall-cmd --add-port=3306/tcp
方法2:騰訊雲安全組里面開啟全部端口,或者自己設置安全策略,控制端口號的進出。
若使用Apache中不能解析php,要安裝如下
sudo apt-get install libapache2-mod-php
若頁面只顯示:目前無法處理該請求。HTTP ERROR 500
首先都要修改php.ini中如下,
display_errors = On
error_reporting = E_ALL | E_STRICT
若是Apache中首先找到httpd.conf文件(ubuntu系統,apache2配置文件在/etc/apache2/apache2.conf中)
vim /etc/apache2/apache2.conf
如果你的不是在這個目錄下,可以通過此命令查詢:
find / -name apache2.conf
最后按I進入編輯模式,在該文件最下面添加如下規則,
php_flag display_errors on
php_value error_reporting 2039
若是nginx也是修改配置文件
記得,操作完用重啟大法更新一下,每個service都restart一下。如service mysql restart 、service php7.2 restart 、 service nginx restart ......
大功告成:)