静看光阴荏苒
不管不顾不问不说也不念

openSUSE安装LNMP以及Redis

本文记录一下在openSUSE上安装LNMP的整个过程,最后会搭建一个WordPress用于测试。

openSUSE Tumbleweed作为滚动发行的版本,Nginx/MariaDB/PHP这些软件基本上可以说你只要用包管理器装那就是最新版。

当然PHP这东西有点特殊,生产用的环境可能并不想总是升级它,这个也可以用包管理器把它hold住,后续再详细说这个。

要说这个发行版装LNMP和Debian上装LNMP比较一下的话,这个稍微麻烦一点,不能像Debian那样开箱即用,有些东西需要你自己手动配置,比如PHP-FPM/Nginx的权限等。

安装/启动nginx:

sudo zypper in -y nginx 
sudo systemctl start nginx
sudo systemctl enable nginx

安装/启动mariadb:

sudo zypper in -y mariadb
sudo systemctl start mariadb
sudo systemctl enable mariadb

初次安装mariadb,你需要执行下面的命令配置一下:

sudo mysql_secure_installation

第一个提示回车设置你的数据库root密码,后面的这些如无特殊需求全部选择Y:

Enter current password for root (enter for none)
Switch to unix_socket authentication [Y/n]
Change the root password? [Y/n]
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]

登录mariadb:

mysql -u root -p

创建一个名为wordpress的数据库和用户:

CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost IDENTIFIED BY '设置你的用户密码';
FLUSH PRIVILEGES;
quit

安装php:

sudo zypper in php7 php7-fpm php7-mysql php7-gd php7-imagick \
php7-gettext php7-mbstring php7-intl php7-bcmath php7-openssl \
php7-exif php7-zip php7-curl php7-fileinfo php7-opcache php7-redis

openSUSE默认把php-fpm的配置文件都重命名为.default了,你需要自己复制一份:

sudo cp /etc/php7/fpm/php-fpm.conf.default  /etc/php7/fpm/php-fpm.conf 
sudo cp /etc/php7/fpm/php-fpm.d/www.conf.default /etc/php7/fpm/php-fpm.d/www.conf

然后编辑php-fpm.conf:

sudo nano /etc/php7/fpm/php-fpm.conf

在这里你需要启用日志记录:

pid = run/php-fpm.pid
error_log = log/php-fpm.log

接下来编辑www.conf:

sudo nano /etc/php7/fpm/php-fpm.d/www.conf

这里的用户和组需要改为nginx:

user = nginx 
group = nginx

在www.conf内还可以调整php-fpm的进程数什么的,这些根据自己的需要来就行,例如这些配置:

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500

编辑php.ini:

sudo nano /etc/php7/cli/php.ini

安全起见,把这个注释去掉改为0:

cgi.fix_pathinfo=0

以上配置确认无误后,启动php-fpm:

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

你可能需要检查一下php-fpm是否在运行,使用下面的命令查看,显示是active说明正常:

sudo systemctl status php-fpm

接下来配置nginx,编辑主配置文件:

sudo nano /etc/nginx/nginx.conf

用户和组改为nginx与php-fpm内的设置对应,进程数改为auto,建议打开gzip:

user  nginx nginx;
worker_processes auto;
gzip  on;

接下来尝试安装一个wordpress,进到/srv/www目录内下载解压wordpress的压缩包:

cd /srv/www
sudo wget https://wordpress.org/latest.zip
sudo unzip latest.zip
sudo rm -rf latest.zip

目录的用户和组设置为nginx,与之前在php-fpm/nginx内的配置对应:

sudo chown -R nginx:nginx wordpress/

接下来新建一个nginx站点配置文件:

sudo nano /etc/nginx/vhosts.d/wordpress.conf

写入如下配置:

server {
    listen       80;
    server_name  opensuse.imlala.best;
    root   /srv/www/wordpress;
    index  index.html index.php;
    client_max_body_size 100M;

    location / {
	try_files $uri $uri/ /index.php?$args;
    }

    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;
    }
}

测试nginx配置是否正常:

sudo nginx -t

如果正常,重载nginx使你的配置生效:

sudo systemctl reload nginx

打开你的域名开始wordpress的安装:

安装redis优化wordpress:

sudo zypper in -y redis

openSUSE的redis有点蛋疼,如果你直接用systemd启动的话,会发现服务是起不来的。

正确的步骤是,首先你要复制一份配置文件,同时要保证连同文件的用户和组等属性都一致:

cp -a /etc/redis/default.conf.example /etc/redis/default.conf

上面的cp命令后面带了个a,这个a就是保留文件的原始属性。

如果你之前直接用root权限的命令行启动过或者复制配置文件的时候没保留原始属性之后用systemd启动过,你会发现现在服务还是起不来,因为日志文件的所有者变成root了,redis没有权限向这个文件写数据。

删除这个日志文件,让redis自己重新创建一个:

rm -rf /var/log/redis/default.log

再次启动,并且注意后面你需要指定一个实例,我这里就用default了:

sudo systemctl start redis@default
sudo systemctl enable redis@default
sudo systemctl status redis@default

在wordpress后台安装redis对象缓存的插件启用即可:

配置SSL证书,安装certbot的nginx插件:

sudo zypper in -y python3-certbot-nginx

执行下面的命令会自动帮你签发证书:

certbot --nginx

你可能不想经常升级php,防止程序出现一些不兼容的问题,可以通过下面的方式把php相关的软件包锁定,这样它就不会随系统更新了:

sudo zypper al php7
sudo zypper al php7-*

查看是否锁定成功:

sudo zypper ll

应该有类似回显:

# | 名称   | 类型    | 软件源
--+--------+---------+---------
1 | php7   | package | (任意)
2 | php7-* | package | (任意)
赞(1)
未经允许不得转载:荒岛 » openSUSE安装LNMP以及Redis
分享到: 更多 (0)

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿