WordPress服務(wù)器搭建(centos+nginx+mysql+php)

搭建采用在CentOs7服務(wù)器上,通過nginx,mysql,及php搭建整個(gè)系統(tǒng),wordpress運(yùn)行在nginx指定的根節(jié)點(diǎn)下。

1.準(zhǔn)備網(wǎng)絡(luò)服務(wù)器

wordpress需要一個(gè)網(wǎng)絡(luò)服務(wù)器。經(jīng)過比較后,我選擇了的amazon的aws(amazon web service),aws第一年免費(fèi),正好拿來測試。選擇了EC2服務(wù),并啟動了一個(gè)utunbu的鏡像,折騰了一天,最后雖然wordpress可以使用了,但是在更新themes時(shí),總是顯示創(chuàng)建不了文件夾。各種方案,也沒有解決問題。

不得已重新啟動了一個(gè)centos7的鏡像,通過一番研究試坑,最終搭建成功。
如果用阿里云的服務(wù)器主機(jī),搭建過程相對簡單。

2.編譯安裝nginx

首先升級yum,直接通過 yum install nginx,沒有成功。

參考( https://www.cnblogs.com/lihailin9073/p/11173537.html )。

編譯安裝Nginx

cd /usr/local/src

wget http://nginx.org/download/nginx-1.16.0.tar.gz

tar -zxvf nginx-1.16.0.tar.gz

cd nginx-1.16.0

yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

 ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/run/nginx.pid --lock-path=/usr/local/nginx/run/nginx.lock --http-client-body-temp-path=/usr/local/nginx/run/client_body_temp --http-proxy-temp-path=/usr/local/nginx/run/proxy_temp --http-fastcgi-temp-path=/usr/local/nginx/run/fastcgi_temp --http-uwsgi-temp-path=/usr/local/nginx/run/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/run/scgi_temp --http-log-path=/usr/local/nginx/log/access.log --error-log-path=/usr/local/nginx/log/error.log --with-debug --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module

make

make install 

安裝完畢,啟動/關(guān)閉/重啟Nginx命令如下:

/usr/local/nginx/sbin/nginx //啟動
/usr/local/nginx/sbin/nginx -s stop //關(guān)閉
/usr/local/nginx/sbin/nginx -s reload //重啟

查看啟動狀態(tài)

ps -ef | grep nginx

設(shè)置Nginx開機(jī)啟動

 vi /usr/lib/systemd/system/nginx.service

在文件中寫入啟動腳本

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecReload=/usr/local/nginx/sbin/nginx -s reload
PrivateTmp=true

[Install]
WantedBy=multi-user.target

保存上述腳本文件,并執(zhí)行如下命令,完成Nginx開機(jī)啟動設(shè)置:

systemctl enable nginx.service

重啟系統(tǒng)

reboot

查看Nginx是否開機(jī)啟動成功,在瀏覽器輸入:http://localhost

為了讓nginx命令有效,將nginx添加到系統(tǒng)環(huán)境變量中:

vim /etc/profile

在profile文件中添加如下兩行代碼:

PATH=$PATH:/usr/local/nginx/sbin
export PATH

保存退出/etc/profile文件,執(zhí)行如下命令讓profile立即生效:

source /etc/profile

3.編譯安裝php7.2

直接記錄命令

cd /usr/local/src
wget https://www.php.net/distributions/php-7.2.20.tar.gz
tar -zxvf php-7.2.20.tar.gz
cd php-7.2.20
yum install -y gcc gcc-c++ make automake autoconf gd file bison patch mlocate flex diffutils zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel libcurl libcurl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers openldap-devellibxslt-devel kernel-devel libtool-libs readline-devel gettext-devel libcap-devel php-mcrypt libmcrypt libmcrypt-devel recode-devel gmp-devel icu libxslt libxslt-devel php-devel
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql-sock --with-mysqli --with-libxml-dir --with-openssl --with-mhash --with-pcre-regex --with-zlib --with-iconv --with-bz2 --with-curl --with-cdb --with-pcre-dir --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --with-gettext --with-gmp --with-mhash --with-libmbfl --with-onig --with-pdo-mysql --with-zlib-dir --with-readline --with-libxml-dir --with-xsl --with-pear --enable-fpm --enable-soap --enable-bcmath --enable-calendar --enable-dom --enable-exif --enable-fileinfo --enable-filter --enable-ftp --enable-gd-jis-conv --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --enable-pdo --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-zip --enable-mysqlnd-compression-support
make && make install

創(chuàng)建php-fpm.conf、www.conf配置文件:

cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d
cp www.conf.default www.conf

創(chuàng)建php.ini配置文件:

find /usr/local/src/php-7.2.20 -name php.ini*
cp /usr/local/src/php-7.2.20/php.ini-production /usr/local/php/etc/php.ini

手動啟動和關(guān)閉php:

/usr/local/php/sbin/php-fpm
/usr/bin/pkill -9 php-fpm
pstree -p | grep php

設(shè)置php-fpm開機(jī)啟動:
首先,關(guān)閉php-fpm進(jìn)程:

 /usr/bin/pkill -9 php-fpm

然后,修改php-fpm.conf中的 [pid = /run/php-fpm.pid] 配置項(xiàng),該配置在后續(xù)的php-fpm.service文件中需要用到

vi /usr/local/php/etc/php-fpm.conf

創(chuàng)建php-fpm.service文件:

vi /usr/lib/systemd/system/php-fpm.service

在文件中寫入啟動腳本

[Unit]
Description=php-fpm
After=network.target

[Service]
Type=forking
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm
ExecStop=/usr/bin/pkill -9 php-fpm
PrivateTmp=true

[Install]
WantedBy=multi-user.target

保存上述腳本文件,并執(zhí)行如下命令,完成php-fpm開機(jī)啟動設(shè)置:

systemctl enable php-fpm.service

這樣就可以使用systemctl命令管理php-fpm:

systemctl start php-fpm.service
systemctl stop php-fpm.service

也可以使用如下命令管理php-fpm:

service php-fpm start
service php-fpm stop
service php-fpm restart
service php-fpm reload

4. 安裝mysql

下載mysql源安裝包

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安裝mysql源

yum localinstall mysql57-community-release-el7-8.noarch.rpm

啟動MySQL服務(wù)

systemctl start mysqld

安裝MySQL

yum install mysql-community-server

查看MySQL的啟動狀態(tài)

systemctl status mysqld

開機(jī)啟動

systemctl enable mysqld
systemctl daemon-reload

修改root本地登錄密碼
mysql安裝完成之后,在/var/log/mysqld.log文件中給root生成了一個(gè)默認(rèn)密碼。
通過下面的方式找到root默認(rèn)密碼,然后登錄mysql進(jìn)行修改:

grep ‘temporary password’ /var/log/mysqld.log
mysql -uroot -p

mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘123456’;
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘123456’;

或者

mysql> set password for ‘root’@’localhost’=password(‘123456’);

這里出于安全需求,應(yīng)該為wordpress設(shè)立一個(gè)專門的賬號。
新版本的mysql要求的密碼規(guī)則比較復(fù)雜。

5. 配置nginx+php7.2

編輯nginx.conf

vi /usr/local/nginx/conf/nginx.conf

修改如下部分:

location / {
root html;
index index.php index.html index.htm;
}

location ~ .php$ {
# root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

重啟nginx。

/usr/local/nginx/sbin/nginx //啟動

6. 創(chuàng)建數(shù)據(jù)庫

mysql -u root -p

系統(tǒng)會提示您輸入為MySQL root帳戶設(shè)置的密碼。

登錄MySQL成功后,我們?yōu)閣ordpress 創(chuàng)建wordpress的數(shù)據(jù)庫,另外創(chuàng)建獨(dú)立的用戶,并為遠(yuǎn)程登錄數(shù)據(jù)庫打開權(quán)限,

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'wpUser'@'local' identified by '123456';
GRANT ALL ON wordpress.* TO 'wpUser'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

這樣我們就可以通過navicat等數(shù)據(jù)庫軟件遠(yuǎn)程登錄mysql。

7.下載并配置wordpress

cd /tmp
wget https://wordpress.org/latest.tar.gz
unzip -zxvf latest.tar.gz

將文件夾wordpress拷貝到nginx運(yùn)行的文件夾下。之后為文件夾賦予權(quán)限。

groupadd nginx
useradd -g nginx nginx
sudo chown -R nginx:nginx /usr/local/nginx/html

其中nginx:nginx是nginx的用戶組和用戶名。與ngixn.conf里面設(shè)置的用戶組一致。

user nginx nginx;
worker_processes 1;

另行需要前期先設(shè)置好用戶組和用戶,如何創(chuàng)建這里沒有涉及,可另外查看。

要從WordPress密鑰生成器中獲取安全值,

curl -s https://api.wordpress.org/secret-key/1.1/salt/ > key.txt

您將獲得看起來像這樣的唯一值,內(nèi)容保存在key.txt文件中,類似如下:

define('AUTH_KEY',         'cH?Dp28B5e*+m,fSPI#mhwR%3&>SekkPRh}N-2N1zpA+D~|Q.~}8%|ea8H8njhP[');
define('SECURE_AUTH_KEY',  'OAKV5cDS+H&W|vk7T?ai7XniC&A-X=[#[8{uKWSMnS/,pq603SD/^|;1xFjpXnO#');
define('LOGGED_IN_KEY',    'Gjz#DgEZNoNlk4oy&:^~U0K|PLI~Wd@k4>2~jJiJTz=2{0ONOY;-YzE20lIZB,,2');
define('NONCE_KEY',        ']=m;bAO?Qzz_1f!Z7b+9UYX[6n(>~Q/CBX(Rb.-X;~d2W;LA O`|Z&.ga%u2ML}6');
define('AUTH_SALT',        'V}*d9G6[M)Lv]l*ahbZ}VEfRIH-oK^2%uK(Ck~!*IBhLtU]-;_x]36G ]q^|4-$-');
define('SECURE_AUTH_SALT', '^0z/>{mH],+$c5j{Arn,}n?LyXSkuu}7u|3hhtWkrk+C>j][:n^qY6z-n)Q.lY-1');
define('LOGGED_IN_SALT',   'wHs):;U1o-8~tTI:Z#+]{w+ Dob{eV%8qReJ^d[FRc;Fqqspi+s-P|1]gLje~,>R');
define('NONCE_SALT',       '&?X)Q/+~X? FBG7Oy4iWzDm>)60jMZF-oH|({9?4~jmL3>;4q(WOv,X:5$M-2Dck');

復(fù)制你獲取到保存在key.txt文件中內(nèi)容,替換wp-config.php中類似如下內(nèi)容:

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

替換完成后保存文件。
接下來我們修改wp-config.php文件中的數(shù)據(jù)庫配置內(nèi)容。找到下面內(nèi)容,填寫你實(shí)際的數(shù)據(jù)庫名稱,用戶名,密碼等內(nèi)容。

define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', '123456');
define('DB_HOST','.127.0.0.1');

添加define('FS_METHOD', 'direct'),用來自動更新時(shí),自動設(shè)置ftp,不需要另外在輸入用戶名及密碼。

define('FS_METHOD', 'direct');

另外,在centos系統(tǒng)中,DB_NAME 不能用 localhost,需要具體的host地址才可以。具體原因不明。

8.啟動wordpress

上述情況完成后,就可以在Web瀏覽器的地址欄中輸入域名或IP地址,啟動wordpress了。第一次啟動wp,會有一個(gè)設(shè)置向?qū)ы?,按照向?qū)л斎胂嚓P(guān)信息就可以完成初始化,出現(xiàn)helloworld界面,完成安裝。

9.遇到的問題

1.啟動wordpress后,更新下載themes時(shí),顯示無法創(chuàng)建文件夾。查了相關(guān)問題解決方案,大概率是因?yàn)槲募?quán)限問題。

在centos中將wp-content文件夾設(shè)置為777,另外將文件夾賦予權(quán)限。我將整個(gè)文件夾都賦予相應(yīng)權(quán)限。

sudo chown -R nginx:nginx /usr/local/nginx/html /
sudo chmod -R 777 /usr/local/nginx/html /
捕獲.png

再次更新themes,可以正常下載了。

2.刷新后臺頁面時(shí),有幾次網(wǎng)頁讀取一半中斷,刷新幾次,有可以度過去。查看console信息,顯示

VM3162 customize.php:1573 GET http://18.163.73.15/wp-admin/load-scripts.php?c=1&load%5Bchunk_0%5D=wp-hooks,heartbeat,customize-base,customize-controls,customize-widgets,thickbox,media-upload,mce-view,imgareaselect,image-edit,a&load%5Bchunk_1%5D=ccordion,wp-sanitize,customize-nav-menus,customize-models,customize-views,jquery-ui-slider,jquery-touch-punch,iris,wp-color-pick&load%5Bchunk_2%5D=er,updates,quicktags,wplink,jquery-ui-position,jquery-ui-menu,jquery-ui-autocomplete&ver=5.3.2 net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)

檢查了nginx的error.log

# vim error.log
2020/02/05 07:35:28 [crit] 25290#0: *1858 open() “/var/temp/nginx/fastcgi/1/17/0000000171” failed (13: Permission denied) while reading upstream, client: 35.241.77.171, server: localhost, request: “POST /wp-admin/admin-ajax.php HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “18.163.73.15”, referrer: “http://18.163.73.15/wp-admin/customize.php?url=http%3A%2F%2F18.163.73.15%2F”

將/var/temp/nginx/fastcgi文件夾權(quán)限設(shè)置成777,問題解決。

參考鏈接

http://m.itdecent.cn/p/d1316588fc4a
https://www.cnblogs.com/lihailin9073/p/11173537.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容