国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷(xiāo)資訊 > 網(wǎng)站運(yùn)營(yíng) > 小白學(xué)習(xí)之路-從零開(kāi)始用SSH在Linux服務(wù)器上構(gòu)建Wordpress網(wǎng)站

小白學(xué)習(xí)之路-從零開(kāi)始用SSH在Linux服務(wù)器上構(gòu)建Wordpress網(wǎng)站

時(shí)間:2023-05-25 01:39:02 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-05-25 01:39:02 來(lái)源:網(wǎng)站運(yùn)營(yíng)

小白學(xué)習(xí)之路-從零開(kāi)始用SSH在Linux服務(wù)器上構(gòu)建Wordpress網(wǎng)站:
最近學(xué)習(xí)網(wǎng)站開(kāi)發(fā),由最簡(jiǎn)單的東西開(kāi)始一步一步入門(mén),不知不覺(jué)一個(gè)月間就學(xué)到了我難以想象多的知識(shí). 雖然Wordpress會(huì)被一些高端開(kāi)發(fā)者鄙視, 尤其是它是基于PHP的(其實(shí)我也不適應(yīng),因?yàn)槲沂侵饕獙W(xué)習(xí)Python研發(fā)的), 但是作為一個(gè)領(lǐng)你入門(mén)的師父,Wordpress毫無(wú)疑問(wèn)是把你從零基礎(chǔ)領(lǐng)到高端的好師父! 本文就是我這幾天以Wordpress為契機(jī),研究在各種網(wǎng)絡(luò)服務(wù)器的成果. 內(nèi)置一些常見(jiàn)的坑及跳坑的方法.
要搭建wordpress,首先得有個(gè)VPS吧.


其實(shí)前些天免費(fèi)在AWS的EC2上面構(gòu)建服務(wù)器,感覺(jué)還是很爽很好玩的.
可是昨天,一想到1年以后就要說(shuō)拜拜了,就心有余悸.
因?yàn)檎绞召M(fèi)貌似很貴不打算續(xù)費(fèi),所以又看了看國(guó)內(nèi)一些既穩(wěn)定又靠譜的VPS商,阿里云之類(lèi).
感覺(jué)他們都還是貴,一年要上千.而且還要備案啥的,麻煩一大堆.
各種搜索后,看到一個(gè)一餐盒飯錢(qián)的VPS

購(gòu)買(mǎi)CloudPowerall服務(wù)器
然后是購(gòu)買(mǎi)環(huán)節(jié)啦,因?yàn)樵谝曨l里看到才.99美元一年,還不是國(guó)內(nèi)那種廉價(jià)空間,
算一個(gè)VPS, 還能通過(guò)SSH把它當(dāng)自己電腦一樣任意操控, 性價(jià)比太高了! 于是我毫不猶豫的打開(kāi)選購(gòu)頁(yè)面.
以前以為國(guó)外服務(wù)器都好高端,我又沒(méi)有國(guó)外銀行卡有沒(méi)有paypal怎么辦? 實(shí)際上一點(diǎn)問(wèn)題都沒(méi)有! CloudPowerall支持支付寶。
接下來(lái)就是創(chuàng)建服務(wù)器實(shí)例了.
花了不到幾十秒鐘就創(chuàng)建了一個(gè)叫"Small"小水滴的服務(wù)器(在AWS和阿里云中叫做實(shí)例),選擇安裝了Ubuntu 20.


用SSH連接服務(wù)器
因?yàn)橹霸贏WS上混了幾天, 又在阿里云上給客戶部署網(wǎng)站, 用SSH控制遠(yuǎn)程主機(jī)已經(jīng)很熟練了.
所以CloudPowerall這里也沒(méi)費(fèi)功夫.
過(guò)程很簡(jiǎn)單,如果是Linux/Mac電腦,直接在終端用SSH命令就可以了.
如果像我一樣用Windows, 那就下載個(gè)綠色/單文件軟件--大名鼎鼎的Putty.exe.用它就ok.
打開(kāi)軟件后,在HostName處輸入服務(wù)器給的公網(wǎng)IP, 選擇SSH連接,然后點(diǎn)擊Open, 連接上了哈哈!
輸入用戶名密碼就可以開(kāi)始隨意操作了,像linux本機(jī)一樣.
這里略過(guò)了很多細(xì)節(jié),是因?yàn)椴幌胫貜?fù)網(wǎng)上各種教程.


在Linux上安裝Wordpress環(huán)境

按照youtube非常多的教學(xué)視頻指示,一句命令安裝好了所有依賴軟件:

root@username:~# sudo apt-get install php5-fpm nginx mysql-server php5-mysql
雖然不知道這幾個(gè)依賴包的順序有什么講究(看起來(lái)好像有一點(diǎn)點(diǎn)邏輯性?).
但是一句話之后,除了mysql彈出界面輸入密碼外,其他不用管就全部搞定了.
這時(shí)候service nginx start,就啟動(dòng)了nginx服務(wù)器.
打開(kāi)自己的網(wǎng)址, 赫然地顯示著Welcome to nginx!好方便!!

Wordpress安裝 Install Wordpress
這里實(shí)際上非常簡(jiǎn)單,因?yàn)樾乱淮鷑ginx的網(wǎng)站根目錄是默認(rèn)設(shè)置在和apache一樣的地方/var/www/html,所以很好找.


Nginx的配置文件 Nginx Configuaration
Linux小白的我,在之前弄亂了幾個(gè)服務(wù)器后終于小心翼翼的知道,改任何配置文件都需要備份一個(gè)原始出來(lái).
沒(méi)成想,這竟然成了我配置Nginx第一步的大錯(cuò)誤!
剛一開(kāi)始配置Nginx就出錯(cuò)了 Error occured before setting up the nginx config file

具體說(shuō)來(lái)是這樣的:
教學(xué)中說(shuō),先要找到nginx的配置文件,也就是/etc/nginx/sites-available/下的default文件.
我理所當(dāng)然地在改之前復(fù)制出了一個(gè)default-backup文件.
然后為了方便,離開(kāi)終端,直接FTP中用我喜歡的編輯器打開(kāi)了default文件,遵照nginx語(yǔ)法改了幾行.
然后重啟nginx服務(wù)器.借著噩夢(mèng)就開(kāi)始了, 各種報(bào)錯(cuò):

root@username:~# sudo service nginx restartJob for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.然后不管是start還是restart都是這句話.納悶了.就按照出錯(cuò)指示,輸入了systemctl status nginx.service:

root@username:~# systemctl status nginx.service nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Tue 2020-10-23 08:27:51 EST; 22s ago Process: 8508 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS) Process: 8609 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE) Main PID: 7194 (code=exited, status=0/SUCCESS)完全看不懂...當(dāng)然后來(lái)也證明,這個(gè)對(duì)我排除錯(cuò)誤完全沒(méi)作用.于是又照著指示輸入了第二個(gè)命令:

root@username:~# journalctl -xe-- Subject: Session 12 has been terminated-- Defined-By: systemd-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel-- Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat---- A session with the ID 12 has been terminated.Oct 23 08:33:44 username sshd[8792]: Connection closed by 120.92.72.31 [preauth]Oct 23 08:33:45 username sshd[8770]: pam_unix(sshd:session): session closed for user rootOct 23 08:33:45 username systemd-logind[551]: Removed session 13.-- Subject: Session 13 has been terminated-- Defined-By: systemd-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel-- Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat---- A session with the ID 13 has been terminated.Oct 23 08:34:06 username sshd[8795]: Connection closed by 120.92.72.31 [preauth]Oct 23 08:34:54 username sshd[8797]: Connection closed by 106.187.100.177 [preauth]Oct 23 08:35:16 username sshd[8799]: Connection closed by 120.92.72.31 [preauth]Oct 23 08:35:35 username sshd[8801]: Connection closed by 120.92.72.31 [preauth]Oct 23 08:36:33 username sudo[8806]: root : TTY=pts/1 ; PWD=/etc/nginx/sites-available ; USER=Oct 23 08:36:33 username sudo[8806]: pam_unix(sudo:session): session opened for user root by root(Oct 23 08:36:33 username sudo[8806]: pam_unix(sudo:session): session closed for user rootOct 23 08:36:48 username sudo[8829]: root : TTY=pts/1 ; PWD=/etc/nginx/sites-available ; USER=Oct 23 08:36:48 username sudo[8829]: pam_unix(sudo:session): session opened for user root by root(Oct 23 08:36:48 username sudo[8829]: pam_unix(sudo:session): session closed for user rootOct 23 08:36:50 username sshd[8852]: Connection closed by 120.92.72.31 [preauth]Oct 23 08:37:25 username sshd[8854]: Connection closed by 120.92.72.31 [preauth]Oct 23 08:37:57 username sshd[8856]: Connection closed by 101.200.80.28 [preauth]Oct 23 08:38:03 username sshd[8858]: Connection closed by 120.92.72.31 [preauth]換著關(guān)鍵詞關(guān)鍵句搜了好幾種,才搜出來(lái)一種答案比較多的.
看了十來(lái)篇答案吧,有一個(gè)回答中說(shuō)了依據(jù)輸入nginx -t查看什么,忘了.
我看命令很簡(jiǎn)單,也不像會(huì)破壞環(huán)境什么的,就試著輸了一下,返回以下結(jié)果:

root@username:~# nginx -tnginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/default-backup: 17nginx: configuration file /etc/nginx/nginx.conf test failed就兩句話,然后都了一下,眼睛瞪大--恍然大悟!
原來(lái)問(wèn)題出在這里: 我為了備份,而創(chuàng)建了一個(gè)叫default-backup的文件,
沒(méi)想到這小子與default文件沖突: nginx會(huì)讀取sites-availabe或sites-enabled文件夾中的每一份文件,如果一個(gè)文件夾下有兩個(gè)這文件,nginx就會(huì)全部讀取.
那文件中第17行是對(duì)80端口的監(jiān)聽(tīng),聲明兩遍,當(dāng)然會(huì)顯示一個(gè)a duplicate default server for 0.0.0.0:80了!
所以....我迅速的....沒(méi)直接刪掉備份文件,而是先下載到了本地桌面,再刪掉.
此時(shí)再輸入nginx -t,大功告成!返回:

nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful簡(jiǎn)單兩句,看著真給力.
這下大概能猜到了,nginx -t大概是測(cè)試nginx配置文件語(yǔ)法的, 也就是debug用的.
如果哪里配置語(yǔ)法或邏輯寫(xiě)錯(cuò)了,這里會(huì)顯示出來(lái).
service nginx start,緊接著打開(kāi)瀏覽器自己的網(wǎng)址, Welcome to nginx!看著激動(dòng)人心啊哈哈!

也許這就是程序世界的樂(lè)趣吧. 這個(gè)世界匯集的都是一些喜歡玩解謎游戲的小孩子.

Real configuration for Nginx
教程里都是Linux老油條們?cè)赟SH里直接Vi或Nano來(lái)編輯這些配置文件的,雖然改動(dòng)不多看起來(lái)不難.
但是我個(gè)性還是有點(diǎn)特別,在我正式學(xué)Vi或Nano之前, 一點(diǎn)都不想碰.
所以還是用簡(jiǎn)單好理解的方法不給自己添堵, 直接在Filezilla這個(gè)多數(shù)人都在用的FTP,
右鍵點(diǎn)擊/etc/nginx/sites-available/default這個(gè)文件,點(diǎn)擊view,
用我默認(rèn)的sublime編輯器打開(kāi),設(shè)好nginx語(yǔ)法高亮.
簡(jiǎn)單瀏覽了下. 除去注釋后,基本就這么幾句話,結(jié)構(gòu)很簡(jiǎn)單:

server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; }}之前看過(guò)兩三集的nginx教程, 有那么一點(diǎn)點(diǎn)印象而已.
反正好像是一個(gè)server{...},代表一個(gè)站點(diǎn).
你并排多寫(xiě)幾個(gè)server{...}塊,就能同時(shí)擁有好幾個(gè)站點(diǎn),比如一個(gè)基于php的wordpress站點(diǎn),一個(gè)基于python的django站點(diǎn).
我猜的哈. 反正對(duì)現(xiàn)在階段來(lái)說(shuō) ,這是真的無(wú)所謂的.
我的經(jīng)驗(yàn)是,

新手學(xué)東西不能怕錯(cuò),但是不能少了猜.
如果有人看到這里,也請(qǐng)不要嫌我業(yè)余.
我反倒覺(jué)得這代表著一種非常實(shí)際的心理歷程,更容易幫助和我一樣的新人體會(huì)這個(gè)過(guò)程.

繼續(xù)猜上面的語(yǔ)法.

listen 80 default_server; 好像是說(shuō)默認(rèn)服務(wù)器會(huì)監(jiān)聽(tīng)80端口.
但listen [::]:80 default_server;就不知道了,看下一句.
root /var/www/html; 這個(gè)好理解,那就是網(wǎng)站(也叫站點(diǎn), 應(yīng)用, app等)的根目錄位置.
看到一些老視頻,好像過(guò)去nginx的默認(rèn)根目錄在/usr/share/html這里.
新nginx改到這里更好,和apache一樣,省得去記別的了.
server_name _; 這個(gè),估計(jì)是站點(diǎn)名字或者網(wǎng)址吧?
location / {...} 這可能定義根目錄的一些url地址問(wèn)題?
try_files $url $url/ =404, 這個(gè)還真有點(diǎn)不好猜,只知道估計(jì)是和404文件未找到有關(guān).
然后就可以開(kāi)始正式學(xué)習(xí)nginx語(yǔ)法了.

# Upstream 用來(lái)抽象化php的后端連接upstream php { server unix:/tmp/php-cgi.socket; server 127.0.0.1:9000;}server { ## 把你的網(wǎng)址放在這里,如baidu.com server_name baidu.com; ## 只此一處的站點(diǎn)根目錄地址的聲明 root /var/www/wordpress; ## 這句應(yīng)該寫(xiě)在http區(qū)塊(類(lèi)似http {...}這樣的)里, ## 如果你寫(xiě)了http區(qū)塊,就沒(méi)必要放在這. index index.php; ## (設(shè)置網(wǎng)站favicon.ico圖標(biāo)的訪問(wèn)邏輯,) location = /favicon.ico { # (如果沒(méi)找到這個(gè)文件,則不適用規(guī)則) log_not_found off; access_log off; } ## (設(shè)置robots.txt的訪問(wèn)邏輯) ## (允許所有對(duì)它的訪問(wèn)(因?yàn)槊總€(gè)訪問(wèn)者都應(yīng)該遵守嘛)) location = /robots.txt { allow all; # (如果沒(méi)找到這個(gè)文件,則不適用規(guī)則) log_not_found off; access_log off; } ## (根目錄的訪問(wèn)邏輯. 注:"/"代表根目錄) location / { # 這句話巨酷, 因?yàn)闆](méi)有php會(huì)被當(dāng)成靜態(tài)文件訪問(wèn) # 加入"?$args"這部分后, 非默認(rèn)的固定鏈接在使用url查詢字串時(shí)就不會(huì)中斷 try_files $uri $uri/ /index.php?$args; } ## (目錄中所有.php文件的訪問(wèn)邏輯) location ~ /.php$ { #注意: 你應(yīng)該在php.ini中寫(xiě)了"cgi.fix_pathinfo = 0;" 這句話. # (引入fastcgi.conf這個(gè)文件) include fastcgi.conf; # (fastcgi相關(guān)的報(bào)錯(cuò):開(kāi)) fastcgi_intercept_errors on; fastcgi_pass php; } ## (目錄中所有的js|css|png|jpg|jpeg|gif|ico文件訪問(wèn)邏輯) location ~* /.(js|css|png|jpg|jpeg|gif|ico)$ { ## 最大過(guò)期期限 expires max; ## 如果沒(méi)有找到這個(gè)文件 則不適用規(guī)則 log_not_found off; }}上面的中文是我自己翻譯的, 帶括號(hào)的注釋中是我根據(jù)字面意思猜測(cè)的.
簡(jiǎn)單的翻譯官網(wǎng)注釋后,好像有點(diǎn)了解怎么回事了. 頁(yè)面中往下翻,還有一段可選的代碼配置:

location /wordpress { try_files $uri $uri/ /wordpress/index.php?$args;}location ~ /.php$ { fastcgi_split_path_info ^(/wordpress)(/.*)$;}上面說(shuō)是,如果你想把wordpress作為一個(gè)子目錄(而不是網(wǎng)站的根目錄)使用,那你應(yīng)該在上面總配置中相應(yīng)位置加上這幾句代碼.
根據(jù)字面意思理解, 應(yīng)該是加入了一個(gè)/wordpress子目錄的訪問(wèn)邏輯, 并為所有php文件的訪問(wèn)邏輯中加入了/wordpress子目錄專(zhuān)門(mén)的地址解析規(guī)則.
往下翻, 有一段Rewrite相關(guān)配置. 玩過(guò)Wordpress的都知道Rewrite重寫(xiě)規(guī)則的重要性.
在Apache服務(wù)器中, 如果.htaccess文件和apache的rewrite模塊文件沒(méi)有寫(xiě)對(duì)的話,wordpress就無(wú)法使用固定鏈接或稱偽鏈接這種好玩意了.
官網(wǎng)對(duì)于重寫(xiě)的完整配置(包括剛才的主配置)如下:

map $uri $blogname{ ~^(?P<blogpath>/[^/]+/)files/(.*) $blogpath ;}map $blogname $blogid{ default -999; #Ref: http://wordpress.org/extend/plugins/nginx-helper/ #include /var/www/wordpress/wp-content/plugins/nginx-helper/map.conf ;}server { server_name example.com ; root /var/www/example.com/htdocs; index index.php; location ~ ^(/[^/]+/)?files/(.+) { try_files /wp-content/blogs.dir/$blogid/files/$2 /wp-includes/ms-files.php?file=$2 ; access_log off; log_not_found off; expires max; } #avoid php readfile() location ^~ /blogs.dir { internal; alias /var/www/example.com/htdocs/wp-content/blogs.dir ; access_log off; log_not_found off; expires max; } if (!-e $request_filename) { rewrite /wp-admin$ $scheme://$host$uri/ permanent; rewrite ^(/[^/]+)?(/wp-.*) $2 last; rewrite ^(/[^/]+)?(/.*/.php) $2 last; } location / { try_files $uri $uri/ /index.php?$args ; } location ~ /.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass php; } #add some rules for static content expiry-headers here}這里官網(wǎng)的注釋解釋不多,而且很難字面上理解了, 所以先跳過(guò).
到這里, 就不是我能簡(jiǎn)單猜出來(lái)的了.
而且看起來(lái)也不像是復(fù)制粘貼能行的?
所以還是帶著問(wèn)題回到y(tǒng)outube, 看看別人都是怎么配置的.
現(xiàn)在,感覺(jué)自己離"真相"已經(jīng)不太遠(yuǎn)了.
其實(shí)youtube上專(zhuān)門(mén)為了wordpress配置nginx的視頻并不多,這點(diǎn)令我好奇.
之前國(guó)內(nèi)翻閱文章時(shí)看到恩多次在ngingx上配置wordpress的文章,可是國(guó)外并不流行?
總之,看了幾個(gè)靠譜的視頻后發(fā)現(xiàn),他們的配置到我這里都用不了.
于是修改關(guān)鍵詞搜索, 搜php與nginx, 學(xué)到了幾個(gè)最簡(jiǎn)單方法的配置.
當(dāng)然還是不管用,不過(guò)當(dāng)我再回頭看官網(wǎng)的這段專(zhuān)為wordpress的配置, 就明白了需要修改哪里了.
簡(jiǎn)單修改后,終于成功! 默認(rèn)的最簡(jiǎn)單最靠譜的配置如下(這里面你哪句話都不用改就可以用):

# Upstream to abstract backend connection(s) for phpupstream up_php { server unix:/var/run/php5-fpm.sock; server 127.0.0.1:9000;}server { server_name _; root /var/www/html; index index.php; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location / { try_files $uri $uri/ /index.php?$args; } location ~ /.php$ { include fastcgi.conf; fastcgi_pass up_php; } location ~* /.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; }}然后重啟nginx.噠噠噠!經(jīng)典的wordpress配置頁(yè)面出現(xiàn)啦!剩余步驟30秒內(nèi)全部完成!哈哈,太高興了.



關(guān)鍵詞:服務(wù),學(xué)習(xí)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉