从0开始配置服务器PHP + Nginx

用的是阿里云ECS云服务器,不过应该都是些通用的指令,差不了多少,无图形化界面
基本上是用来搭在一些php项目,其余配置后续再说,本次先记录Nginx+PHP+mysql配置

在电脑上远程登录服务器

ssh -p[端口号] [用户名]@[IP]

// 如 ssh -p22 root@8.888.888.888

若是在清空云盘后重新进行ssh连接,可能会遇到

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

解决方案

ssh-keygen -R [IP]

选择yes,重新连接即可

进行远程连接后,就可以直接远程操作系统,操作逻辑上和自己电脑上打开cmd是一样的

创建web用户

在php与nginx中都需要使用,因此优先配置

创建用户命令,存在root用户产生bug的可能性,最好建个其他的

groupadd [group name]
useradd -g [group name] [user name]

// ykark - yukiaruki

php配置

首先从php官网下载php安装包,这里使用的是8.1.10版本

wget https://www.php.net/distributions/php-8.1.10.tar.gz
tar -xzvf php-8.1.10.tar.gz 

进入解压后的文件夹,进行configure编译,这里附带了一些会用到的库,也可以自行查找添加其他的

./configure --prefix=/usr/local/php --with-mysqli --with-openssl --with-pdo-mysql --enable-fpm

如果之前没有进行过环境配置,就会提示

Package 'libxml-2.0', required by 'virtual:world', not found

这时就用yum search libxml能找到libxml2.x86_64,再使用yum install libxml2-devel

其他的类似问题也都安装好就完事,可能会用到的一些:

// libxml-2.0
yum install libxml2-devel

// sqlite3
yum install sqlite-devel

进行make & make install

sapi/cli/php错误:在MakeFile中的EXTRA_LIBS 最后加上 -liconv

PHP配置文件

因为php-fpm中,php-fpm.conf的默认路径基本完全没有,所以要自己配置好piderror_log

复制www.conf并且修改group和user选项,改成之前创建的用户和组

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

启用php-fpm.conf最后一行的include,写/usr/local/php/etc/php-fpm.d/*.conf或者自己的文件位置

运行后没有报错就是成功了,可以ps aux|grep php-fpm查询进程,需要关闭时就kill进程号

nginx 服务器配置

一些相关的依赖库

// C/C++编译器
yum  install  gcc  gcc-c++ -y

// zlib压缩
yum  install  zlib  zlib-devel -y

// 正则
yum install  pcre  pcre-devel -y

// openssl
yum  install  openssl  openssl-devel -y

安装nginx

nginx下载页面下载压缩包解压,注意不要把解压后的文件夹命名为nginx

这里以nginx-1.22.0.tar.gz为例,解压后进入文件夹

./configure --prefix=[安装位置](默认是/usr/local/nginx) --with-http_ssl_module

之后进行makr & make install

make中的踩坑,如果版本比较高可能不会出现这些问题

ngx_murmurhash.o出错

/nginx/objs/Makefile中CFLAGS = … 删除其中的 -Werror

‘struct crypt_data’没有名为‘current_salt’的成员

进入相应文件注释掉出错的内容

最后如果像⬇️一样,就是成功了

make[1]: 进入目录“/usr/local/nginx”
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
	-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
	-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
	-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
	< man/nginx.8 > objs/nginx.8
make[1]: 离开目录“/usr/local/nginx”

之后进行make install安装

*如果出现cp: “conf/koi-win” 与"/usr/local/nginx/conf/koi-win" 为同一文件报错,就是命名的问题,改改重装就好

至此nginx已经安装完成,在新创建的nginx/sbin中./nginx可以启动

停止运行就kill进程号

修改nginx/conf/nginx.conf配置

用户名的配置与php相同

user [用户名] [用户组];
worker_processes  1;

绑定域名,配置虚拟主机的ssl与php

域名绑定等内容根据网站提示的来就好,这里不多做讲解,假设已经备案了域名并且获取了免费ssl证书(阿里云搜索ssl就可以找到免费的)

SSL证书管理页面下载nginx版本的证书,并且在nginx/conf下新建cert目录储存证书,方便管理

conf下新建sites-enabled目录用来储存,新建域名命名的文件并配置以下内容,记得把注释部分去掉

server {
    listen 443 ssl;
    // 域名
    server_name example.com;
    // 部署的web项目所在目录
    root /var/www/html;
    index index.html index.htm index.php;
    // 这里指向证书位置
    ssl_certificate  /usr/local/nginx/conf/cert/example.com.pem;
    ssl_certificate_key /usr/local/nginx/conf/cert/example.com.key;
    ssl_session_timeout 5m;
    // ssl加密
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

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

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

http重定向,可以使http直接跳转到https(我没试过,先记着

server {
    listen 80;
    server_name dawnguo.cn;
    rewrite ^(.*)$ https://dawnguo.cn;
}

在nginx.conf的http内写入

include /etc/nginx/conf.d/*.conf;

修改后重启nginx

./nginx -s reload

// 如果之前没有启动过就直接
./nginx

安装mysql

下载安装包地址:mysqlDownload

这里可以查看一下yum内glibc库的最新版本,如果没有到2.34以上的版本,建议下载旧版本的mysql安装包,不然很多依赖库需要手动编译

解压后按顺序安装:

// 这里只打前缀,后面的部分自己补全就可
rpm -ivh mysql-community-common
rpm -ivh mysql-community-devel
rpm -ivh mysql-community-client
rpm -ivh mysql-community-server

最后可能会出现这个提示

references path below legacy directory /var/run/, updating /var/run/mysqld → /run/mysqld; please update the tmpfiles.d/ drop-in file accordingly

在相应文件夹中的mysql.conf内把最后一行的/var/run/mysqld改成/run/mysqld即可

完成rpm安装后,service mysqld start即可启动mysql服务

连接mysql

首先获取初始密码

more /var/log/mysqld.log |grep password

使用这个密码登录数据库

mysql -uroot -p

查看密码难易度,可以修改复杂度,这样就可以设置简单密码(也可以不改)

// 查看密码设置
 SHOW VARIABLES LIKE 'validate_password%';

 // 修改密码难度示例,其他选项的修改方法相同
 set global validate_password_policy = 0;

 // 修改密码
  alter user 'root'@'localhost' identified by 'NewPassword'

这样就完成密码修改和初始化了

如果使用防火墙,烦请自行查阅如何开启端口,同时需要设置服务器内端口允许访问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值