美文网首页
WordPress服务器搭建(centos+nginx+mysq

WordPress服务器搭建(centos+nginx+mysq

作者: mwolf122 | 来源:发表于2020-03-20 18:42 被阅读0次

    搭建采用在CentOs7服务器上,通过nginx,mysql,及php搭建整个系统,wordpress运行在nginx指定的根节点下。

    1.准备网络服务器

    wordpress需要一个网络服务器。经过比较后,我选择了的amazon的aws(amazon web service),aws第一年免费,正好拿来测试。选择了EC2服务,并启动了一个utunbu的镜像,折腾了一天,最后虽然wordpress可以使用了,但是在更新themes时,总是显示创建不了文件夹。各种方案,也没有解决问题。

    不得已重新启动了一个centos7的镜像,通过一番研究试坑,最终搭建成功。
    如果用阿里云的服务器主机,搭建过程相对简单。

    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 
    

    安装完毕,启动/关闭/重启Nginx命令如下:

    /usr/local/nginx/sbin/nginx //启动
    /usr/local/nginx/sbin/nginx -s stop //关闭
    /usr/local/nginx/sbin/nginx -s reload //重启
    

    查看启动状态

    ps -ef | grep nginx
    

    设置Nginx开机启动

     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
    

    保存上述脚本文件,并执行如下命令,完成Nginx开机启动设置:

    systemctl enable nginx.service
    

    重启系统

    reboot
    

    查看Nginx是否开机启动成功,在浏览器输入:http://localhost

    为了让nginx命令有效,将nginx添加到系统环境变量中:

    vim /etc/profile
    

    在profile文件中添加如下两行代码:

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

    保存退出/etc/profile文件,执行如下命令让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
    

    创建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
    

    创建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
    

    手动启动和关闭php:

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

    设置php-fpm开机启动:
    首先,关闭php-fpm进程:

     /usr/bin/pkill -9 php-fpm
    

    然后,修改php-fpm.conf中的 [pid = /run/php-fpm.pid] 配置项,该配置在后续的php-fpm.service文件中需要用到

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

    创建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
    

    保存上述脚本文件,并执行如下命令,完成php-fpm开机启动设置:

    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服务

    systemctl start mysqld
    

    安装MySQL

    yum install mysql-community-server
    

    查看MySQL的启动状态

    systemctl status mysqld
    

    开机启动

    systemctl enable mysqld
    systemctl daemon-reload
    

    修改root本地登录密码
    mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。
    通过下面的方式找到root默认密码,然后登录mysql进行修改:

    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’);
    

    这里出于安全需求,应该为wordpress设立一个专门的账号。
    新版本的mysql要求的密码规则比较复杂。

    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. 创建数据库

    mysql -u root -p

    系统会提示您输入为MySQL root帐户设置的密码。

    登录MySQL成功后,我们为wordpress 创建wordpress的数据库,另外创建独立的用户,并为远程登录数据库打开权限,

    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等数据库软件远程登录mysql。

    7.下载并配置wordpress

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

    将文件夹wordpress拷贝到nginx运行的文件夹下。之后为文件夹赋予权限。

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

    其中nginx:nginx是nginx的用户组和用户名。与ngixn.conf里面设置的用户组一致。

    user nginx nginx;
    worker_processes 1;
    

    另行需要前期先设置好用户组和用户,如何创建这里没有涉及,可另外查看。

    要从WordPress密钥生成器中获取安全值,

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

    您将获得看起来像这样的唯一值,内容保存在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');
    

    复制你获取到保存在key.txt文件中内容,替换wp-config.php中类似如下内容:

    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文件中的数据库配置内容。找到下面内容,填写你实际的数据库名称,用户名,密码等内容。

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

    添加define('FS_METHOD', 'direct'),用来自动更新时,自动设置ftp,不需要另外在输入用户名及密码。

    define('FS_METHOD', 'direct');
    

    另外,在centos系统中,DB_NAME 不能用 localhost,需要具体的host地址才可以。具体原因不明。

    8.启动wordpress

    上述情况完成后,就可以在Web浏览器的地址栏中输入域名或IP地址,启动wordpress了。第一次启动wp,会有一个设置向导页,按照向导输入相关信息就可以完成初始化,出现helloworld界面,完成安装。

    9.遇到的问题

    1.启动wordpress后,更新下载themes时,显示无法创建文件夹。查了相关问题解决方案,大概率是因为文件权限问题。

    在centos中将wp-content文件夹设置为777,另外将文件夹赋予权限。我将整个文件夹都赋予相应权限。

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

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

    2.刷新后台页面时,有几次网页读取一半中断,刷新几次,有可以度过去。查看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文件夹权限设置成777,问题解决。

    参考链接

    https://www.jianshu.com/p/d1316588fc4a
    https://www.cnblogs.com/lihailin9073/p/11173537.html

    相关文章

      网友评论

          本文标题:WordPress服务器搭建(centos+nginx+mysq

          本文链接:https://www.haomeiwen.com/subject/ycfsyhtx.html