geerlingguy / jeffgeerling-com

Drupal Codebase for JeffGeerling.com
https://www.jeffgeerling.com
GNU General Public License v2.0
39 stars 2 forks source link

Agenda for May 12 Livestream #73

Closed geerlingguy closed 4 years ago

geerlingguy commented 4 years ago

See previous agenda: #63

Video link: https://www.youtube.com/watch?v=SxR4N9inlYA

geerlingguy commented 4 years ago

So had a bit of an outage after deploying the new d8.jeffgeerling.com site...

The first problem was I had forgotten to add ssl_enabled: false to the vhost configuration I use to determine whether or not HTTPS config is added to the server in Nginx:

  - server_name_canonical: d8.jeffgeerling.com
    drupal_docroot: /home/geerlingguy/domains/drupal8
    ssl_enabled: false

So after I deployed that fix (so the broken SSL config that was trying to load a dhparam.pem file that existed but couldn't be loaded twice by Nginx for some reason, causing an error like: nginx: [emerg] BIO_new_file("/path/to/dhparam.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/path/to/dhparam.pem','r')), I started getting a different error:

nginx: [emerg] host not found in upstream "d8.jeffgeerling.com" in /etc/nginx/sites-enabled/d8.jeffgeerling.com.conf:46

To fix that, I added an alias to the local hosts file (/etc/hosts) since the DNS was not pointed at this server (I'm just using it for testing):

127.0.0.1 d8.jeffgeerling.com

Now I'm getting a 404 but all my other Nginx sites are working properly, so I'm over that hump :) — a 404 I can deal with!

geerlingguy commented 4 years ago

I added a task to make sure all the Nginx hosts are listed in the hosts file, in case DNS has issues:

- name: Ensure all the vhost hosts are listed in /etc/hosts
  lineinfile:
    dest: /etc/hosts
    regexp: '.*{{ item.server_name_canonical }}$'
    line: "{{ ansible_default_ipv4.address }} {{ item.server_name_canonical }}"
    state: present
  with_items: "{{ mm_nginx_vhosts }}"
geerlingguy commented 4 years ago

The 404 is because in D8, my codebase has a web folder where the docroot exists, so I had to update the docroot setting:

drupal_docroot: /home/geerlingguy/domains/drupal8/web

And now I'm also realizing I have to do a composer install since the codebase doesn't include the composer dependencies :D

geerlingguy commented 4 years ago

So I've added:

- name: Ensure Drupal 8 codebase is present and updated.
  git:
    repo: https://github.com/geerlingguy/jeffgeerling-com.git
    version: master
    dest: /home/geerlingguy/domains/drupal8
    accept_hostkey: true
  become: true
  become_user: geerlingguy
  register: drupal8_codebase

- name: Make sure all Drupal 8 composer dependencies are installed.
  composer:
    command: install
    working_dir: /home/geerlingguy/domains/drupal8
  when: drupal8_codebase is changed
geerlingguy commented 4 years ago

Now I'm getting The provided host name is not valid for this server. so I have to add some trusted host settings :)

geerlingguy commented 4 years ago

Well now I'm getting a weird error:

RuntimeException: Zend Diactoros must be installed to use the DiactorosFactory. in Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory->__construct() (line 37 of /home/geerlingguy/domains/drupal8/vendor/symfony/psr-http-message-bridge/Factory/DiactorosFactory.php).

Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory->__construct()
ReflectionClass->newInstanceArgs(Array) (Line: 1176)
Symfony\Component\DependencyInjection\ContainerBuilder->createService(Object, Array, 1, 'psr7.http_message_factory') (Line: 634)
Symfony\Component\DependencyInjection\ContainerBuilder->doGet('psr7.http_message_factory', 1, Array, 1) (Line: 1281)
Symfony\Component\DependencyInjection\ContainerBuilder->doResolveServices(Object, Array, 1) (Line: 1238)
Symfony\Component\DependencyInjection\ContainerBuilder->doResolveServices(Array, Array, 1) (Line: 1149)
Symfony\Component\DependencyInjection\ContainerBuilder->createService(Object, Array, 1, 'controller_resolver') (Line: 634)
Symfony\Component\DependencyInjection\ContainerBuilder->doGet('controller_resolver', 1, Array, 1) (Line: 1281)
Symfony\Component\DependencyInjection\ContainerBuilder->doResolveServices(Object, Array, 1) (Line: 1238)
Symfony\Component\DependencyInjection\ContainerBuilder->doResolveServices(Array, Array, 1) (Line: 1149)
Symfony\Component\DependencyInjection\ContainerBuilder->createService(Object, Array, 1, 'renderer') (Line: 634)
Symfony\Component\DependencyInjection\ContainerBuilder->doGet('renderer', 1) (Line: 588)
Symfony\Component\DependencyInjection\ContainerBuilder->get('renderer') (Line: 89)
Drupal\Core\TempStore\Element\BreakLockLink::create(Object, Array, 'break_lock_link', Array) (Line: 21)
Drupal\Core\Plugin\Factory\ContainerFactory->createInstance('break_lock_link', Array) (Line: 83)
Drupal\Component\Plugin\PluginManagerBase->createInstance('break_lock_link', Array) (Line: 141)
Drupal\Core\Render\ElementInfoManager->createInstance('break_lock_link') (Line: 111)
Drupal\Core\Render\ElementInfoManager->buildInfo('seven') (Line: 77)
Drupal\Core\Render\ElementInfoManager->getInfo('form') (Line: 812)
Drupal\Core\Form\FormBuilder->prepareForm('install_select_language_form', Array, Object) (Line: 278)
Drupal\Core\Form\FormBuilder->buildForm('Drupal\Core\Installer\Form\SelectLanguageForm', Object) (Line: 955)
install_get_form('Drupal\Core\Installer\Form\SelectLanguageForm', Array) (Line: 1375)
install_select_language(Array) (Line: 702)
install_run_task(Array, Array) (Line: 577)
install_run_tasks(Array, NULL) (Line: 117)
install_drupal(Object) (Line: 44)

And trying to run Drush commands, I also get:

In DiactorosFactory.php line 37:

  Zend Diactoros must be installed to use the DiactorosFactory.  
geerlingguy commented 4 years ago

Moved that into a new issue: https://github.com/geerlingguy/jeffgeerling-com/issues/85

geerlingguy commented 4 years ago

New agenda #86.